回答:
シンプルですが面倒です。
ECEFで作業しているため、おそらく、ECEF座標にも光線の原点(x、y、z)と方向ベクトル(u、v、w)があります。今のところ、地球の表面への旅行中に、地球はあまり移動しないと仮定しましょう。(回転する地球の最速部分である赤道は約0.45 km /秒で移動し、光は約300,000 km /秒で移動するため、たとえば地球から1000 km上で赤道に向かってほぼ真っ直ぐ下に向かう光線は、 1/300秒で到達し、その間に赤道が1.5メートル移動します。これはおそらく許容可能なエラーです。)
パラメータ化されたラインの交差部分を計算するだけです
t --> (x,y,z) + t*(u,v,w)
関数のゼロセットと考えることができる地球の表面で
(x/a)^2 + (y/a)^2 + (z/b)^2 - 1
ここで、aは半長軸(6,378,137メートル)、bはWGS84楕円体の半短軸(6,356,752.3142メートル)です。最初の式を2番目の式に差し込み、x、y、z、u、v、wに関してtを解きます。これは二次方程式なので、最大2つの解が得られます。1つは地球への進入、もう1つは地球からの退出です(たとえば、ニュートリノの場合)。距離が最短のソリューションを選択してください。これは与える
t = -(1/(b^2 (u^2 + v^2) + a^2 w^2)) * (b^2 (u x + v y) + a^2 w z + 1/2 Sqrt[
4 (b^2 (u x + v y) + a^2 w z)^2 -
4 (b^2 (u^2 + v^2) + a^2 w^2) (b^2 (-a^2 + x^2 + y^2) + a^2 z^2)])
この値を最初の方程式に代入して、交点を取得します。
遠くから発生するが、それほど遠くない(たとえば、太陽系からではなく、太陽系外からではない)光線の場合、地球に到達するのに要する時間Tの大まかな推定値から開始します(秒単位)。たとえば、(x、y、z)から地球の中心までの距離を使用します。この間の地球の回転量を考慮して、開始座標(x、y、z)を変更します。これにより、開始座標が次のように変更されます。
(x*c + y*s, -x*s + y*c, z)
(ポイントは後方に移動するように見えます)cとsは0.000072921150 * Tラジアンのサインとコサインです。この更新された位置から開始する光線の交差を計算します。推定時間を使用しているため、10メートルほど離れている場合があります。これが問題になる場合は、この交点に基づいて経過時間を再推定し、Tの新しい値を使用して計算を繰り返します。