Common point(s) shared by two lines in Euclidean geometry
交差する2本の線 ユークリッド幾何学 において 、 直線と直線の交点は、 空集合 、一 点 、あるいは 直線 (一致する場合) のいずれかとなります。これらの場合を区別し、 交点 を求めることは、例えば コンピュータグラフィックス 、 動作計画 、 衝突検出 などに応用できます。
ユークリッド空間 において、2本の直線が 同一平面 上にない場合 、それらの直線には交点がなく [1] 、 斜直線 と呼ばれます 。しかし、それらの直線が同一平面上にある場合、3つの可能性が存在します。2本の直線が一致する(同じ直線である)場合、それらの直線には 無限個ある 点がすべて共通しています。2本の直線は異なっているが同じ方向を向いている場合、それらは 平行で あるとされ、共通点はありません。そうでない場合、それらの直線には1つの交点があり、 例えば、 単集合 として表されます。 { A } {\displaystyle \{A\}}
非ユークリッド幾何学は 、球面など、1 本の直線が他のどの直線とも平行ではない空間や、1 つの点を通る複数の直線がすべて別の直線と平行になる空間を記述します。 [ さらなる説明が必要 ]
2直線が交差するための必要条件 は 、それらが同一平面上にあること、つまり斜交直線ではないことです。この条件を満たすことは、 一方の直線上の2点ともう一方の直線上の2点を頂点とする四面体が、 体積 が 0であるという意味で 退化していることと等価です。この条件の代数的表現については、 「斜交直線」§「歪度の判定」を 参照してください 。
各線上に2点ずつある場合 まず、 2次元空間における2本の直線 L1 と L2の交点 を 考える 。直線 L1 は2つ の異なる 点 ( x1 、 y1 ) と ( x2 、 y2 ) で定義され 、直線 L2 は 2 つ の 異なる点( x3 、 y3 ) と ( x4 、 y4 ) で 定義される 。 [ 2]
直線 L 1 と L 2 の交点 Pは、 行列式 を使用して定義できます 。
P x = | | x 1 y 1 x 2 y 2 | | x 1 1 x 2 1 | | x 3 y 3 x 4 y 4 | | x 3 1 x 4 1 | | | | x 1 1 x 2 1 | | y 1 1 y 2 1 | | x 3 1 x 4 1 | | y 3 1 y 4 1 | | P y = | | x 1 y 1 x 2 y 2 | | y 1 1 y 2 1 | | x 3 y 3 x 4 y 4 | | y 3 1 y 4 1 | | | | x 1 1 x 2 1 | | y 1 1 y 2 1 | | x 3 1 x 4 1 | | y 3 1 y 4 1 | | {\displaystyle P_{x}={\frac {\begin{vmatrix}{\begin{vmatrix}x_{1}&y_{1}\\x_{2}&y_{2}\end{vmatrix}}&{\begin{vmatrix}x_{1}&1\\x_{2}&1\end{vmatrix}}\\\\{\begin{vmatrix}x_{3}&y_{3}\\x_{4}&y_{4}\end{vmatrix}}&{\begin{vmatrix}x_{3}&1\\x_{4}&1\end{vmatrix}}\end{vmatrix}}{\begin{vmatrix}{\begin{vmatrix}x_{1}&1\\x_{2}&1\end{vmatrix}}&{\begin{vmatrix}y_{1}&1\\y_{2}&1\end{vmatrix}}\\\\{\begin{vmatrix}x_{3}&1\\x_{4}&1\end{vmatrix}}&{\begin{vmatrix}y_{3}&1\\y_{4}&1\end{vmatrix}}\end{vmatrix}}}\,\!\qquad P_{y}={\frac {\begin{vmatrix}{\begin{vmatrix}x_{1}&y_{1}\\x_{2}&y_{2}\end{vmatrix}}&{\begin{vmatrix}y_{1}&1\\y_{2}&1\end{vmatrix}}\\\\{\begin{vmatrix}x_{3}&y_{3}\\x_{4}&y_{4}\end{vmatrix}}&{\begin{vmatrix}y_{3}&1\\y_{4}&1\end{vmatrix}}\end{vmatrix}}{\begin{vmatrix}{\begin{vmatrix}x_{1}&1\\x_{2}&1\end{vmatrix}}&{\begin{vmatrix}y_{1}&1\\y_{2}&1\end{vmatrix}}\\\\{\begin{vmatrix}x_{3}&1\\x_{4}&1\end{vmatrix}}&{\begin{vmatrix}y_{3}&1\\y_{4}&1\end{vmatrix}}\end{vmatrix}}}\,\!} 行列式は次のように記述できます。
P x = ( x 1 y 2 − y 1 x 2 ) ( x 3 − x 4 ) − ( x 1 − x 2 ) ( x 3 y 4 − y 3 x 4 ) ( x 1 − x 2 ) ( y 3 − y 4 ) − ( y 1 − y 2 ) ( x 3 − x 4 ) P y = ( x 1 y 2 − y 1 x 2 ) ( y 3 − y 4 ) − ( y 1 − y 2 ) ( x 3 y 4 − y 3 x 4 ) ( x 1 − x 2 ) ( y 3 − y 4 ) − ( y 1 − y 2 ) ( x 3 − x 4 ) {\displaystyle {\begin{aligned}P_{x}&={\frac {(x_{1}y_{2}-y_{1}x_{2})(x_{3}-x_{4})-(x_{1}-x_{2})(x_{3}y_{4}-y_{3}x_{4})}{(x_{1}-x_{2})(y_{3}-y_{4})-(y_{1}-y_{2})(x_{3}-x_{4})}}\\[4px]P_{y}&={\frac {(x_{1}y_{2}-y_{1}x_{2})(y_{3}-y_{4})-(y_{1}-y_{2})(x_{3}y_{4}-y_{3}x_{4})}{(x_{1}-x_{2})(y_{3}-y_{4})-(y_{1}-y_{2})(x_{3}-x_{4})}}\end{aligned}}} 2 つの線が平行または一致する場合、分母は 0 になります。
各線分上の2点が与えられる 上記の交点は、点間の 線分 ではなく、点によって定義される無限長の直線の交点であり、2つの線分のいずれにも含まれない交点を生成する可能性があります。線分に対する交点の位置を求めるために、直線 L 1 と L 2 を1次ベジェ曲線 パラメータ で定義します。
L 1 = [ x 1 y 1 ] + t [ x 2 − x 1 y 2 − y 1 ] , L 2 = [ x 3 y 3 ] + u [ x 4 − x 3 y 4 − y 3 ] {\displaystyle L_{1}={\begin{bmatrix}x_{1}\\y_{1}\end{bmatrix}}+t{\begin{bmatrix}x_{2}-x_{1}\\y_{2}-y_{1}\end{bmatrix}},\qquad L_{2}={\begin{bmatrix}x_{3}\\y_{3}\end{bmatrix}}+u{\begin{bmatrix}x_{4}-x_{3}\\y_{4}-y_{3}\end{bmatrix}}} (ここで t と u は実数である)。直線の交点は、 t または u が以下のいずれかの値である点にある。
t = | x 1 − x 3 x 3 − x 4 y 1 − y 3 y 3 − y 4 | | x 1 − x 2 x 3 − x 4 y 1 − y 2 y 3 − y 4 | = ( x 1 − x 3 ) ( y 3 − y 4 ) − ( y 1 − y 3 ) ( x 3 − x 4 ) ( x 1 − x 2 ) ( y 3 − y 4 ) − ( y 1 − y 2 ) ( x 3 − x 4 ) {\displaystyle t={\frac {\begin{vmatrix}x_{1}-x_{3}&x_{3}-x_{4}\\y_{1}-y_{3}&y_{3}-y_{4}\end{vmatrix}}{\begin{vmatrix}x_{1}-x_{2}&x_{3}-x_{4}\\y_{1}-y_{2}&y_{3}-y_{4}\end{vmatrix}}}={\frac {(x_{1}-x_{3})(y_{3}-y_{4})-(y_{1}-y_{3})(x_{3}-x_{4})}{(x_{1}-x_{2})(y_{3}-y_{4})-(y_{1}-y_{2})(x_{3}-x_{4})}}} そして
u = − | x 1 − x 2 x 1 − x 3 y 1 − y 2 y 1 − y 3 | | x 1 − x 2 x 3 − x 4 y 1 − y 2 y 3 − y 4 | = − ( x 1 − x 2 ) ( y 1 − y 3 ) − ( y 1 − y 2 ) ( x 1 − x 3 ) ( x 1 − x 2 ) ( y 3 − y 4 ) − ( y 1 − y 2 ) ( x 3 − x 4 ) , {\displaystyle u=-{\frac {\begin{vmatrix}x_{1}-x_{2}&x_{1}-x_{3}\\y_{1}-y_{2}&y_{1}-y_{3}\end{vmatrix}}{\begin{vmatrix}x_{1}-x_{2}&x_{3}-x_{4}\\y_{1}-y_{2}&y_{3}-y_{4}\end{vmatrix}}}=-{\frac {(x_{1}-x_{2})(y_{1}-y_{3})-(y_{1}-y_{2})(x_{1}-x_{3})}{(x_{1}-x_{2})(y_{3}-y_{4})-(y_{1}-y_{2})(x_{3}-x_{4})}},} と
( P x , P y ) = ( x 1 + t ( x 2 − x 1 ) , y 1 + t ( y 2 − y 1 ) ) or ( P x , P y ) = ( x 3 + u ( x 4 − x 3 ) , y 3 + u ( y 4 − y 3 ) ) {\displaystyle (P_{x},P_{y})={\bigl (}x_{1}+t(x_{2}-x_{1}),\;y_{1}+t(y_{2}-y_{1}){\bigr )}\quad {\text{or}}\quad (P_{x},P_{y})={\bigl (}x_{3}+u(x_{4}-x_{3}),\;y_{3}+u(y_{4}-y_{3}){\bigr )}} 0 ≤ t ≤ 1 かつ 0 ≤ u ≤ 1 の場合には交点が存在する 。交点は 0 ≤ t ≤ 1の場合には最初の線分内にあり、 0 ≤ u ≤ 1 の場合には2番目の線分内に収まる 。これらの不等式は割り算を必要とせずに検定できるため、正確な点を計算する前に線分の交点の存在を迅速に判定することができる。 [3]
2つの線分がx軸と を共有し、 と 簡約する 場合 、 x 2 = x 1 + 1 {\displaystyle x_{2}=x_{1}+1} t {\displaystyle t} u {\displaystyle u} t = u = y 1 − y 3 y 1 − y 2 − y 3 + y 4 , {\displaystyle t=u={\frac {y_{1}-y_{3}}{y_{1}-y_{2}-y_{3}+y_{4}}},} ( P x , P y ) = ( x 1 + t , y 1 + t ( y 2 − y 1 ) ) or ( P x , P y ) = ( x 1 + t , y 3 + t ( y 4 − y 3 ) ) . {\displaystyle (P_{x},P_{y})={\bigl (}x_{1}+t,\;y_{1}+t(y_{2}-y_{1}){\bigr )}\quad {\text{or}}\quad (P_{x},P_{y})={\bigl (}x_{1}+t,\;y_{3}+t(y_{4}-y_{3}){\bigr )}.}
2つの直線方程式が与えられた場合 2 本の非垂直線の交点の x 座標 と y座標は、次の置換と並べ替えを使用して簡単に見つけることができます。
2本の直線がy = ax + c と y = bx + d という方程式を持つとします。 ここで、aとbは直線の傾き ( 勾配 ) 、 c と d は 直線の y 切片です 。2本の直線が交差する点(もし交差するなら)では、両方の y 座標は同じになります。したがって、次の等式が成り立ちます。
a x + c = b x + d . {\displaystyle ax+c=bx+d.} この式を変形してx の値を抽出すると 、
a x − b x = d − c , {\displaystyle ax-bx=d-c,} など、
x = d − c a − b . {\displaystyle x={\frac {d-c}{a-b}}.} y 座標を見つけるには、 2 つの直線方程式のいずれか、たとえば最初の方程式に x の値を代入するだけです。
y = a d − c a − b + c . {\displaystyle y=a{\frac {d-c}{a-b}}+c.} したがって、交点は
P = ( d − c a − b , a d − c a − b + c ) . {\displaystyle P=\left({\frac {d-c}{a-b}},a{\frac {d-c}{a-b}}+c\right).} a = b の場合、 2 つの線は 平行で あり、交差しません。ただし、 c = d の場合は、2 つの線は一致し、すべての点で交差します。
同次座標の使用 同次座標 を用いることで 、暗黙的に定義された2本の直線の交点を非常に簡単に決定することができます。2次元では、すべての点は3次元点の投影として定義でき、これは順序付けられた3つの組 ( x , y , w ) として与えられます。3次元座標から2次元座標へのマッピングは、 ( x ′, y ′) = ( × / わ 、 y / わ 2D の点を( x , y ,1)と定義することで同 次 座標に変換できます 。
2次元空間において、 a 1 x + b 1 y + c 1 = 0 および a 2 x + b 2 y + c 2 = 0 と定義される2本の無限直線の交点を求めたいとします。これらの2本の直線は、 直線座標において U 1 = ( a 1 , b 1 , c 1 ) および U 2 = ( a 2 , b 2 , c 2 ) と 表すことができます 。2本の直線の交点 P ′ は、単純に [4]で与えられます。
P ′ = ( a p , b p , c p ) = U 1 × U 2 = ( b 1 c 2 − b 2 c 1 , a 2 c 1 − a 1 c 2 , a 1 b 2 − a 2 b 1 ) {\displaystyle P'=(a_{p},b_{p},c_{p})=U_{1}\times U_{2}=(b_{1}c_{2}-b_{2}c_{1},a_{2}c_{1}-a_{1}c_{2},a_{1}b_{2}-a_{2}b_{1})} c p = 0 の場合 、線は交差しません。
2行以上 2本の直線の交差は、他の直線も含むように一般化できます。n本の 直線の交差問題の存在と表現は 以下のとおりです。
2次元では 二次元では、2本以上の直線が 1点で交差することは ほぼありません。交差するかどうか、また交差する場合はその交点を求めるには、 i 番目の方程式( i = 1, …, n )を次のように
書きます。
[ a i 1 a i 2 ] [ x y ] = b i , {\displaystyle {\begin{bmatrix}a_{i1}&a_{i2}\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}=b_{i},} これらの方程式を行列形式にまとめると、
A w = b , {\displaystyle \mathbf {A} \mathbf {w} =\mathbf {b} ,} ここで、 n × 2 行列 A の i行目は [ a i 1 , a i 2 ] であり 、 w は2 × 1ベクトル [ x y ] であり、 列ベクトル b のi 番目の要素はb i である 。A が 独立な列を持つ場合、その 階数 2 である。そして 拡張行列 [ A | b ] の階数 場合にのみ n の交点が存在する 。交点が存在する場合、それは次のように与えられる。
w = A g b = ( A T A ) − 1 A T b , {\displaystyle \mathbf {w} =\mathbf {A} ^{\mathrm {g} }\mathbf {b} =\left(\mathbf {A} ^{\mathsf {T}}\mathbf {A} \right)^{-1}\mathbf {A} ^{\mathsf {T}}\mathbf {b} ,} ここで、 A gは A の ムーア・ペンローズ一般逆行列 です( A は 列フルランクである ため、図示の形になります)。あるいは、任意の2つの独立方程式を連立解くことで解を求めることもできます。ただし、 A のランクが1の場合、拡張行列のランクが2であれば解は存在しませんが、ランクが1であればすべての直線は互いに一致します。
3次元で 上記のアプローチは3次元にも容易に拡張できます。3次元以上の場合、たとえ2本の直線であっても、交差することはほぼありません。交差しない非平行な直線のペアは、 斜交線 と呼ばれます。しかし、交差が存在する場合は、以下のようにして見つけることができます。
3次元では、直線は2つの平面の交点として表され、それぞれの平面は次の式の方程式を持つ。
[ a i 1 a i 2 a i 3 ] [ x y z ] = b i . {\displaystyle {\begin{bmatrix}a_{i1}&a_{i2}&a_{i3}\end{bmatrix}}{\begin{bmatrix}x\\y\\z\end{bmatrix}}=b_{i}.} したがって、 n 本の直線の集合は、 3 次元座標ベクトル w の2n 方程式で表すことができます 。
A w = b {\displaystyle \mathbf {A} \mathbf {w} =\mathbf {b} } ここで、 A は 2 n × 3 、 b は2 n × 1 である。前述と同様に、 Aが フルランクで拡張行列 [ A | b ] がフルランクでない場合に限り 、交点が一意に存在する。そして、交点が存在する場合の交点は次のように与えられる。
w = ( A T A ) − 1 A T b . {\displaystyle \mathbf {w} =\left(\mathbf {A} ^{\mathsf {T}}\mathbf {A} \right)^{-1}\mathbf {A} ^{\mathsf {T}}\mathbf {b} .}
斜線に最も近い点 PQ、2つの斜線ABとCDの間の最短距離はABとCDの両方に垂直です 2 次元以上の場合、通常、最小二乗法の 意味で 2 つ以上の線に相互に最も近い点を見つけることができます 。
2次元では 2次元の場合、まず直線 iを 、直線上の 点 p i とその直線に垂直な単位 法線ベクトル n̂ i で表します。つまり、 直線1上の点 x 1 と x 2であれば、 p 1 = x 1 とし、
n ^ 1 := [ 0 − 1 1 0 ] x 2 − x 1 ‖ x 2 − x 1 ‖ {\displaystyle \mathbf {\hat {n}} _{1}:={\begin{bmatrix}0&-1\\1&0\end{bmatrix}}{\frac {\mathbf {x} _{2}-\mathbf {x} _{1}}{\|\mathbf {x} _{2}-\mathbf {x} _{1}\|}}} これは、直線に沿った単位ベクトルを直角に回転させたものです。
点 x から直線 ( p , n̂ ) までの距離は次のように与えられる。
d ( x , ( p , n ^ ) ) = | ( x − p ) ⋅ n ^ | = | ( x − p ) T n ^ | = | n ^ T ( x − p ) | = ( x − p ) T n ^ n ^ T ( x − p ) . {\displaystyle d{\bigl (}\mathbf {x} ,(\mathbf {p} ,\mathbf {\hat {n}} ){\bigr )}={\bigl |}(\mathbf {x} -\mathbf {p} )\cdot \mathbf {\hat {n}} {\bigr |}=\left|(\mathbf {x} -\mathbf {p} )^{\mathsf {T}}\mathbf {\hat {n}} \right|=\left|\mathbf {\hat {n}} ^{\mathsf {T}}(\mathbf {x} -\mathbf {p} )\right|={\sqrt {(\mathbf {x} -\mathbf {p} )^{\mathsf {T}}\mathbf {\hat {n}} \mathbf {\hat {n}} ^{\mathsf {T}}(\mathbf {x} -\mathbf {p} )}}.} そして点 x から直線までの距離の2乗は
d ( x , ( p , n ^ ) ) 2 = ( x − p ) T ( n ^ n ^ T ) ( x − p ) . {\displaystyle d{\bigl (}\mathbf {x} ,(\mathbf {p} ,\mathbf {\hat {n}} ){\bigr )}^{2}=(\mathbf {x} -\mathbf {p} )^{\mathsf {T}}\left(\mathbf {\hat {n}} \mathbf {\hat {n}} ^{\mathsf {T}}\right)(\mathbf {x} -\mathbf {p} ).} 多くの線までの距離の二乗の合計が コスト関数 です。
E ( x ) = ∑ i ( x − p i ) T ( n ^ i n ^ i T ) ( x − p i ) . {\displaystyle E(\mathbf {x} )=\sum _{i}(\mathbf {x} -\mathbf {p} _{i})^{\mathsf {T}}\left(\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)(\mathbf {x} -\mathbf {p} _{i}).} これは次のように並べ替えることができます。
E ( x ) = ∑ i x T n ^ i n ^ i T x − x T n ^ i n ^ i T p i − p i T n ^ i n ^ i T x + p i T n ^ i n ^ i T p i = x T ( ∑ i n ^ i n ^ i T ) x − 2 x T ( ∑ i n ^ i n ^ i T p i ) + ∑ i p i T n ^ i n ^ i T p i . {\displaystyle {\begin{aligned}E(\mathbf {x} )&=\sum _{i}\mathbf {x} ^{\mathsf {T}}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {x} -\mathbf {x} ^{\mathsf {T}}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}-\mathbf {p} _{i}^{\mathsf {T}}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {x} +\mathbf {p} _{i}^{\mathsf {T}}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}\\&=\mathbf {x} ^{\mathsf {T}}\left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)\mathbf {x} -2\mathbf {x} ^{\mathsf {T}}\left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}\right)+\sum _{i}\mathbf {p} _{i}^{\mathsf {T}}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}.\end{aligned}}} 最小値を見つけるには、 x について微分し 、その結果をゼロベクトルに設定します。
∂ E ( x ) ∂ x = 0 = 2 ( ∑ i n ^ i n ^ i T ) x − 2 ( ∑ i n ^ i n ^ i T p i ) {\displaystyle {\frac {\partial E(\mathbf {x} )}{\partial \mathbf {x} }}={\boldsymbol {0}}=2\left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)\mathbf {x} -2\left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}\right)} それで
( ∑ i n ^ i n ^ i T ) x = ∑ i n ^ i n ^ i T p i {\displaystyle \left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)\mathbf {x} =\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}} など
x = ( ∑ i n ^ i n ^ i T ) − 1 ( ∑ i n ^ i n ^ i T p i ) . {\displaystyle \mathbf {x} =\left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)^{-1}\left(\sum _{i}\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\mathbf {p} _{i}\right).}
2次元以上 n̂ i は 2次元以上では明確に定義されないが、n̂ i n̂ i T は単に対称行列であり、直線に沿う方向の固有値が0で、その方向の固有値が1であることに注意すれば、任意の次元に一般化できる。この固有値 は 、 p i と 他 の 点 との間の距離の半ノルムを与え、 直線 まで の 距離 を与える。任意の次元において、 v̂ i が i 番目の直線 に 沿った 単位ベクトルである場合、
n ^ i n ^ i T {\displaystyle \mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}} なる I − v ^ i v ^ i T {\displaystyle \mathbf {I} -\mathbf {\hat {v}} _{i}\mathbf {\hat {v}} _{i}^{\mathsf {T}}} ここで I は 単位行列 であり、 [5]
x = ( ∑ i I − v ^ i v ^ i T ) − 1 ( ∑ i ( I − v ^ i v ^ i T ) p i ) . {\displaystyle x=\left(\sum _{i}\mathbf {I} -\mathbf {\hat {v}} _{i}\mathbf {\hat {v}} _{i}^{\mathsf {T}}\right)^{-1}\left(\sum _{i}\left(\mathbf {I} -\mathbf {\hat {v}} _{i}\mathbf {\hat {v}} _{i}^{\mathsf {T}}\right)\mathbf {p} _{i}\right).}
一般的な導出 直線の交点を求めるには、それらの直線から最短距離にある点を計算します。各直線は原点 a i と単位方向ベクトル n̂ i で定義されます。点p から直線のいずれかまで の距離の2乗は、ピタゴラスの定理から与えられます。
d i 2 = ‖ p − a i ‖ 2 − ( ( p − a i ) T n ^ i ) 2 = ( p − a i ) T ( p − a i ) − ( ( p − a i ) T n ^ i ) 2 {\displaystyle d_{i}^{2}=\left\|\mathbf {p} -\mathbf {a} _{i}\right\|^{2}-\left(\left(\mathbf {p} -\mathbf {a} _{i}\right)^{\mathsf {T}}\mathbf {\hat {n}} _{i}\right)^{2}=\left(\mathbf {p} -\mathbf {a} _{i}\right)^{\mathsf {T}}\left(\mathbf {p} -\mathbf {a} _{i}\right)-\left(\left(\mathbf {p} -\mathbf {a} _{i}\right)^{\mathsf {T}}\mathbf {\hat {n}} _{i}\right)^{2}} ここで 、( p − a i ) T n̂ i は直線 iへの p − a i の射影である 。すべての直線に対する正方形までの距離の合計は
∑ i d i 2 = ∑ i ( ( p − a i ) T ( p − a i ) − ( ( p − a i ) T n ^ i ) 2 ) {\displaystyle \sum _{i}d_{i}^{2}=\sum _{i}\left({\left(\mathbf {p} -\mathbf {a} _{i}\right)^{\mathsf {T}}}\left(\mathbf {p} -\mathbf {a} _{i}\right)-{\left(\left(\mathbf {p} -\mathbf {a} _{i}\right)^{\mathsf {T}}\mathbf {\hat {n}} _{i}\right)^{2}}\right)} この式を最小化するには、 p に関して微分します 。
∑ i ( 2 ( p − a i ) − 2 ( ( p − a i ) T n ^ i ) n ^ i ) = 0 {\displaystyle \sum _{i}\left(2\left(\mathbf {p} -\mathbf {a} _{i}\right)-2\left(\left(\mathbf {p} -\mathbf {a} _{i}\right)^{\mathsf {T}}\mathbf {\hat {n}} _{i}\right)\mathbf {\hat {n}} _{i}\right)={\boldsymbol {0}}} ∑ i ( p − a i ) = ∑ i ( n ^ i n ^ i T ) ( p − a i ) {\displaystyle \sum _{i}\left(\mathbf {p} -\mathbf {a} _{i}\right)=\sum _{i}\left(\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)\left(\mathbf {p} -\mathbf {a} _{i}\right)} その結果
( ∑ i ( I − n ^ i n ^ i T ) ) p = ∑ i ( I − n ^ i n ^ i T ) a i {\displaystyle \left(\sum _{i}\left(\mathbf {I} -\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)\right)\mathbf {p} =\sum _{i}\left(\mathbf {I} -\mathbf {\hat {n}} _{i}\mathbf {\hat {n}} _{i}^{\mathsf {T}}\right)\mathbf {a} _{i}} ここで、 I は単位行列 です 。これは行列 Sp = C であり、解 p = S + C となります。ここで、 S +は S の 擬似逆行列 です 。
非ユークリッド幾何学 左から右へ:ユークリッド幾何学、球面幾何学、双曲幾何学 球面幾何学 では 、任意の2つの大円は交差します。 [6]
双曲幾何学 では 、任意の直線と任意の点が与えられたとき、その点を通り、その直線と交わらない直線は無限に存在する。 [6]
参照
参考文献 ^ Cook, Jeremy (2023年11月21日). 「幾何学における共面線|定義、図、例」 . 2024年 11月1日 閲覧 。 ^ Weisstein, Eric W. 「Line-Line Intersection」. MathWorld . 2008年1月10日 閲覧。 ^ アントニオ・フランクリン (1992). 「第IV章6: 線分の交差の高速化」. カーク・デイビッド (編). 『 グラフィックス・ジェムズIII 』 . アカデミック・プレス, pp. 199– 202. ISBN 0-12-059756-X 。 ^ Birchfield, Stanley (1998-04-23). 「同次座標」. robotics.stanford.edu . 2000年9月29日時点のオリジナルよりアーカイブ。 2015年8月18日 閲覧 。 ^ Traa, Johannes (2013). 「Least-Squares Intersection of Lines」 (PDF) . cal.cs.illinois.edu . オリジナル (PDF) から2017年9月12日にアーカイブ。 2018年8月30日 閲覧 。 ^ ab 「双曲空間の探究」 (PDF) . math.berkeley.edu . 2022年6月3日 閲覧 。
外部リンク 2 次元、3 次元、またはそれ以上の次元に適用可能な、最近接ポイントを持つ線分とセグメント間の距離。