このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

思いつき例題

後で確認してみるが、とりあえずメモ。

先に、z-w空間内での計算 [P1, P2] = [(z1, w1), (z2, w2)] として、次の方程式を解く。
 \begin{bmatrix} z_1 \\ w_1\end{bmatrix} + t\begin{bmatrix} z_2 - z_1 \\ w_2 - w_1 \end{bmatrix} = \begin{bmatrix} s \\ 0 \end{bmatrix}

w2 + t*(w2 - w1) = 0
t = w1/(w1 - w2)

s = z1 + (w1/(w1 - w2))*(z2 - z1)

話は前後するが、座標変換の行列Tを定義する。
 T = \begin{bmatrix} a_2 - a_1 & b_1 - b_2 \\ b2 - b1 & a2 - a1 \end{bmatrix}
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 交点の座標

うまく組織化しないとワケワカになる。