幾何ライブラリの整備

式変形が大変だったりするのでメモ用。

2つの直線の交点

位置ベクトル$(s_1, t_1)$、$(s_2, t_2)$、方向ベクトル$(a_1, b_1)$、$(a_2, b_2)$としたときの交点座標。 方程式に直すと、 $$ y - t_1 = \frac{b_1}{a_1} (x - s_1) $$ $$ y - t_2 = \frac{b_2}{a_2} (x - s_2) $$ となる。これらの交点を求める。 $y$ について第1式と第2式をつなげる $$ \frac{b_1}{a_1} (x - s_1) + t_1 = \frac{b_2}{a_2} (x - s_2) + t_2 $$ $$ a_2b_1(x - s_1) + a_1a_2t_1 = a_1b_2(x - s_2) + a_1a_2t_2 $$ $$ -(a_1b_2 - a_2 b_1)x = (a_2b_1s_1-a_1b_2s_2) + a_1a_2(t_2 - t_1) $$ $$ x = \frac{a_1b_2s_2 - a_2 b_1 s_1 + a_1a_2(t_1 - t_2)}{a_1 b_2 - a_2 b_1} $$ これを第1式に代入してみる。 $$ y = \frac{b_1}{a_1} \left( \frac{a_1b_2s_2 - a_2 b_1 s_1 + a_1a_2(t_1 - t_2)}{a_1 b_2 - a_2 b_1} - s_1 \right) + t_1 $$ $$ y = \frac{b_1}{a_1} \left( \frac{a_1b_2s_2 - a_2 b_1 s_1 + a_1a_2(t_1 - t_2) - s_1({a_1 b_2 - a_2 b_1})}{a_1 b_2 - a_2 b_1} \right) + t_1 $$ $$ y = \frac{b_1}{a_1} \left( \frac{a_1b_2s_2 - a_2 b_1 s_1 + a_1a_2(t_1 - t_2) - a_1 b_2s_1 + a_2 b_1s_1}{a_1 b_2 - a_2 b_1} \right) + t_1 $$ $$ y = \frac{b_1}{a_1} \left( \frac{a_1b_2s_2 - a_1 b_2s_1 + a_1a_2(t_1 - t_2)}{a_1 b_2 - a_2 b_1} \right) + t_1 $$ $$ y =\frac{b_1b_2s_2 - b_1 b_2s_1 + b_1a_2(t_1 - t_2)}{a_1 b_2 - a_2 b_1} + t_1 $$ $$ y =\frac{b_1b_2(s_2 - s_1) + b_1a_2(t_1 - t_2) + t_1 (a_1 b_2 - a_2 b_1)}{a_1 b_2 - a_2 b_1} $$ $$ y =\frac{b_1b_2(s_2 - s_1) + a_1 b_2 t_1 - a_2 b_1t_2}{a_1 b_2 - a_2 b_1} $$