前回の記事がわかりにくいという指摘があったので図を作りました。
池袋北口さんのアニメーションGIFの記事を真似てGIMPでアニメーションをマスターしました。

文章は前記事のコピペですので、すでにわかってしまった方は読み飛ばしてください。

----------ここからコピペ開始------------

方法はシンプルで、2つの平面を求め回転、交点は外積を使ってピンポイントで球面上の地点を求めます。

千葉の撮影地点と地球の中心を結んだ軸を中心に子午線平面を方位角だけ回転させます。
同様に池袋の撮影地点と地球の中心を結んだ軸を中心に子午線平面を方位角だけ回転させます。2平面の交線を求め、さらに球面上の交点を求めます(2つのうちひとつが正解)。


1.地球を単位球として千葉撮影地の座標を求めます。
  右手系なのでy軸が北極、z軸が経度0度。
  E140.163、N35.351 ⇒
    cx = sin(140.163) * cos(35.351) = 0.522493
    cy = sin(35.351) = 0.578584
    cz = cos(140.163) * cos(35.351) = -0.62629                            

2.千葉撮影地を通る子午線平面の法線ベクトルを求めます。
  cnx = sin(140.163 - 90) = 0.767870
    cny = 0
    cnz = cos(140.163 - 90) = 0.640606

図解説:北極を軸にしてある角度回転させて平面が千葉観測地を通るようにする。平面は法線だけで決まるため、(0,0,1)法線ベクトルを(149.163-90)度回転させた結果がこの図↓


北極を軸に、平面を少しずつ回転させるアニメーション


3.千葉撮影地-球心を軸に上記で求めた法線ベクトルを方位角(245.8533)分回転させます。
    t = cos((180 - 245.8533)/2)、s = sin((180 - 245.8533)/2) として 
  q = t, s * cx, s * cy, s * cz = (0.839367, -0.28401, -0.3145, 0.340431)
    cv = q * (cnx, cny, cnz) * q' = (-0.0241, 0.744257, 0.667459)
    千葉撮影地と蒸発点と球心を通る平面の法線ベクトル cv が求まりました。

図解説:千葉撮影地を軸に方位角だけ回転させる。重要なのは法線ベクトルを求めること。
流星の方向を矢印で記入。矢印は円盤内に張り付いていることになる。


千葉撮影地を軸に平面を回転させるアニメーション




4.同様に池袋撮影地の座標を求めます。
  E139.711、N35.731 ⇒
  ix = 0.524924
    iy = 0.583981
    iz = -0.61921

5.池袋撮影地を通る子午線平面の法線ベクトルを求めます。
  inx = sin(139.711 - 90) = 0.76279249
    iny = 0
    inz = cos(139.711 - 90) = 0.646643

図解説:角度が違うだけで千葉撮影地と同様の北極を軸にした回転操作。



6.池袋撮影地-球心を軸に上記で求めた法線ベクトルを方位角(213.42888)分回転させます。
    t = cos((180 - 213.42888)/2)、s = sin((180 - 213.42888)/2) として
  q = t, s * ix, s * iy, s * iz = (0.95775, -0.15097, -0.16795, 0.178086)
    iv = q * (inx, iny, inz) * q' = (0,428568, 0.447204, 0.785072)
    池袋撮影地と蒸発点と球心を通る平面の法線ベクトル iv が求まりました。

図解説:池袋を軸として千葉とはかなり違う方位角の分を回転する。重要なのは赤い法線ベクトル。



7.2平面の交線は法線同士の外積で求まります。
  lv = cv x iv = 略 = (0.285805, 0.30497, -0.32974)

図解説:千葉と池袋の平面が交わって線ができる。この線は2つの法線ベクトルと垂直なので外積をとれば求まる。その線が球面と交わる点が求める流星の蒸発地点直下

地球が透明なままだと2平面が交わる場所がわかりにくいので、木製の球にしてみる。



8. 交線が単位球で交わるところを求めます。
  ベクトルの長さが1になるよう係数を求めて掛け算するだけ。
  √(1/|lv^2|) = √(1/(0.285805^2 + 0.30497^2 + 0.32974^2)) = 1.8783867
    蒸発点座標 = 1.8783867 * (0.285805, 0.30497, -0.32974)

上の図から後ろにまわって交点近傍まで寄ってみる。この球が地球サイズだと千葉-池袋間はとても短い距離。

2つの青い棒状のものは池袋と千葉それぞれの回転軸。もっと寄ってみる。


9.単位球の座標を東経・北緯に変換します
  北緯 = asin(1.8783867 * 0.30497) = 34.94928
    東経 = 180 - asin(1.8783867 * 0.285805/cos(34.94928)) = 139.0827



私の頭にあった流星座標の求め方をできるだけ忠実にCG化してみました。とてもシンプルなのにCG化の腕がいまひとつ;;。少しでも読まれた方の理解の助けになるといいなぁ。