球と直線/線分の交点 ~公式と具体例~
球と直線の交点
位置 $\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_{+}$ の場合のみであり、
その位置は、
である。