球と直線/線分の交点 ~公式と具体例~

球と直線の交点
- 公式と証明
- 具体例

球と線分の交点
- 公式と証明
- 具体例
球と直線の交点
  位置 $\mathbf{a}$ を中心とする半径 $r$ の球は
$$ \tag{1} $$ と表される。 ここで $\| \cdot \|$ はノルム表す記号である。
  位置 $\mathbf{x}_{0}$ を通り、 (規格化された)方向ベクトルが $\mathbf{m}$ である直線は、
$$ \tag{2} $$ と表される。 ここで $t$ はパラメータである。
以下では $(1)$ と $(2)$ の両者の交点の座標を求める。
求め方
  $(1)$ の $\mathbf{x}$ に $(2)$ を代入すると、
である。右辺は内積の性質により、
と表せる。 ここで $(\cdot, \cdot)$ は内積を表す記号である。 また、 最後の等号では方向ベクトル $\mathbf{m}$ が規格されていること ($\| \mathbf{m} \|^2 =1 $) を用いた。 以上から、
$$ \tag{3} $$ を得る。これは $t$ についての二次方程式である。 そこで (解の公式を用いて) これを解くと、
である。ここで $D$ は判別式
である。 よく知られているように、 解は $D$ によって場合分けされる。

(i) $D \lt 0$ の場合
  この場合、 $(3)$ に解は存在しない。 これは球と直線が交差しないことを表す。
(ii) $D = 0$ の場合
  この場合、 $(3)$ に解が一つだけ存在する。 これは球と直線が接することを表す。 このとき、
であり、$(2)$ より接点の位置は、
である。
(iii) $D \gt 0$ の場合
  この場合、 $(3)$ に解が二つ存在する。 これは球と直線が二点で交差することを表す。 このとき、
であり、 $(2)$ より交点の位置は、
である。

具体例
$(1)$   点 $(1,0,1)$ を通り、方向ベクトルが $(0,0,1)$ の直線と、 中心が $(0,2,0)$ であり、 半径が $4$ の球との交点を求めよ。
$(2)$   点 $(1,0,1)$ を通り、方向ベクトルが $(0,0,1)$ の直線と、 中心が $(0,0,0)$ であり、 半径が $1$ の球との交点を求めよ。

解答例
(1)
  点 $(1,0,1)$ を通り、方向ベクトルが $(0,0,1)$ の直線上の点は、
と表される。ここで $t$ はパラメータである。 中心が $(0,2,0)$ であり、 半径が $4$ の球は
と表される。 上の議論を用いると、 判別式が
であるので、 この直線と球は二点で交差する。 また、交点のパラメータ $t$ は
である。これより交点の位置は
である。


(2)
  点 $(1,0,1)$ を通り、 方向ベクトルが $(0,0,1)$ の直線上の点は、
と表される。 ここで $t$ はパラメータである。 中心が $(0,0,0)$ であり、 半径が $1$ の球は
と表される。 これらと上の議論を用いると、 判別式が
であるので、 直線と球は接する。 また、交点のパラメータ $t$ は
である。これより接点の位置は
である。

球と線分の交点
  二点 $\mathbf{v}_{1}$ と $\mathbf{v}_{2}$ を両端とする線分と、 点 $\mathbf{a}$ を中心とする半径 $r$ の球
との交点を求めよ。
求め方
  二点 $\mathbf{v}_{1}$ と $\mathbf{v}_{2}$ を通る直線を $L$ とする。 $L$ の規格化された方向ベクトル $\mathbf{m}$ は、
である。 $L$ は点 $\mathbf{v}_{1}$ を通り、 方向ベクトルが $\mathbf{m}$ の直線であるので、 $L$ 上の任意の点 $\mathbf{p}(t)$ は
と表せる。ここで $t$ は直線上の位置を表すパラメータであり、 $t=0$ の場合が $\mathbf{v}_{1}$ を表し、 $t= \|\mathbf{v}_{2} - \mathbf{v}_{1} \|$ の場合が $\mathbf{v}_{2}$ を表す。 すなわち、
である。したがって、 $\mathbf{v}_{1}$ と $\mathbf{v}_{2}$ を両端とする線分上の点は、
$$ \tag{4} $$ と表せる。
  さて、上の議論にあるように、 直線 $L$ と点 $\mathbf{a}$ を中心とする半径 $r$ の球との交点は、 判別式
によって場合分けされる。 この議論を今回の線分の場合に応用する。

(i) $D \lt 0$ の場合
  この場合、球と直線が交差しない。 したがって、球と線分も交差しない。
(ii) $D = 0$ の場合
  この場合、球と直線が接する。 接点におけるパラメータ $t$ は
である。 $(4)$ から分かるように、 この $t$ が
の範囲である場合には、 線分内に接点を持つ。 そうでない場合には、 線分は接点を持たない。 接点を持つ場合、 接点の位置は、
である。

(iii) $D \gt 0$ の場合
  この場合、 球と直線が二点で交差する。 交点におけるパラメータ $t$ はそれぞれ
である。 それぞれの $t_{\pm}$ が
の範囲である場合には、 それぞれに対応する交点を存在する。 より詳しく表すと、

(iii-1) $$t_{+} \lt 0$$ の場合この場合、交点はない。
(iii-2)
の場合、交点は一つだけあり、その位置は、
である。
(iii-3)
の場合、交点は二つあり、その位置は、
である。
(iii-4)
の場合、交点は一つだけあり、その位置は、
である。
(iii-5) \begin{eqnarray} \left\{ \begin{array}{ll} \|\mathbf{v}_{2} - \mathbf{v}_{1} \| \lt t_{+} \\ t_{-} \lt 0 \end{array} \right. \end{eqnarray} の場合、交点はない。
(iii-6) \begin{eqnarray} \begin{array}{ll} \|\mathbf{v}_{2} - \mathbf{v}_{1} \| \lt t_{-} , t_{+} \end{array} \end{eqnarray} の場合、交点はない。

このように球と線分の交点は、球と直線の交点を求め、 それが線分の上にあるかどうか (交点のパラメータ $t$ が $(4)$ の範囲に入っているかどうか) をチェックすれば、求められる。

具体例
$(1)$   点 $(1,0,1)$ と 点 $(1,0,5)$ を両端に持つ線分と、 中心が $(0,2,0)$ であり、 半径が $4$ の球との交点を求めよ。

解答例
  線分の両端を成す二点を
とすると、
であるので、線分を含む直線 $L$ の方向ベクトル $\mathbf{m}$ は、
である。球の中心を
と表すと、 上の議論にあるように、 点 $\mathbf{a}$ を中心とする半径 $r$ の球と直線 $L$ との交点に関する判別式は、
であるので (正であるので)、 直線 $L$ は球と二点で交差する。 交点におけるパラメータ $t$ はそれぞれ
である。 これらはそれぞれ
を満たすので、 交点は $t_{+}$ の場合のみであり、 その位置は、
である。