思いつき例題
後で確認してみるが、とりあえずメモ。
先に、z-w空間内での計算 [P1, P2] = [(z1, w1), (z2, w2)] として、次の方程式を解く。
w2 + t*(w2 - w1) = 0 t = w1/(w1 - w2) s = z1 + (w1/(w1 - w2))*(z2 - z1)
話は前後するが、座標変換の行列Tを定義する。
Tの成分を、ta, tb, tc, td とする。ただし、R式に列優先で配置。
ta = a2 - a1 tb = b2 - b1 tc = b1 - b2 td = a2 - a1 z1 = (x1 - a1)*ta - (y1 - b1)*tc w1 = (x1 - a1)*tb - (y1 - b1)*td z2 = (x2 - a1)*ta - (y2 - b1)*tc w2 = (x2 - a1)*tb - (y2 - b1)*td
([(a1, b1), (a1, b2)], [(x1, y1), (x2, y2)]) の空間から (w1, w2, s) へ写像して、次の条件を考える。
- w1*w2 ≦ 0 and 0 ≦ s ≦ 1
([(a1, b1), (a2, b2)], [(x1, y1), (x2, y2)]) から計算した s があると、交点の座標は、次で与えられる。
- ( a1 + (a2 - a1)*s, b1 + (b2 - b1)*s )
変数がイッパイ出てくる。
- a1, b1, a2, b2 基準となる線分
- x1, y1, x2, y2 もう一方の線分
- ta, tb, tc, td 座標変換行列
- z1, w1, z2, w2 変換後のもう一方の線分の座標
- mx, my 交点の座標
うまく組織化しないとワケワカになる。