To proste, ale bałagan.
Ponieważ pracujesz w ECEF, prawdopodobnie masz również początek promienia (x, y, z) i wektor kierunku (u, v, w) we współrzędnych ECEF. Na razie załóżmy, że w czasie podróży na powierzchnię ziemi Ziemia nie porusza się znacznie. (Najszybsza część obracającej się ziemi, równik, porusza się około 0,45 km / s, a światło porusza się około 300 000 km / s, więc promień pochodzący, powiedzmy, 1000 km nad ziemią i skierowany mniej więcej prosto w kierunku równika 1/300 sekundy, aby go osiągnąć, podczas którego równik przesunie się o 1,5 metra: to prawdopodobnie dopuszczalny błąd).
Musimy tylko obliczyć przecięcie sparametryzowanej linii
t --> (x,y,z) + t*(u,v,w)
z powierzchnią ziemi, którą można uznać za zerowy zbiór funkcji
(x/a)^2 + (y/a)^2 + (z/b)^2 - 1
gdzie a jest pół-główną osią (6 378 137 m), a b jest półmałą osią elipsoidy WGS84 (6 356 752,3142 m). Podłącz pierwszą formułę do drugiej i rozwiąż t dla x, y, z, u, v, w . Jest to równanie kwadratowe, więc otrzymujesz dwa rozwiązania: jedno do wejścia na ziemię, a drugie do ponownego jej opuszczenia (co mogłoby się zdarzyć na przykład dla neutrina). Wybierz rozwiązanie, dla którego odległość jest najkrótsza. To daje
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)])
Podłącz tę wartość do pierwszego równania, aby uzyskać punkt przecięcia.
W przypadku promienia pochodzącego daleko, ale niezbyt daleko ( np. Od Słońca, ale nie spoza Układu Słonecznego), zacznij od przybliżonego oszacowania czasu T, jaki powinien zająć dotarcie do Ziemi (w sekundach): możesz użyj na przykład odległości od (x, y, z) do centrum ziemi. Zmodyfikuj współrzędne początkowe (x, y, z), aby uwzględnić wielkość obrotu Ziemi w tym czasie: spowoduje to zmianę współrzędnych początkowych na
(x*c + y*s, -x*s + y*c, z)
(punkt wydaje się przesuwać do tyłu ), gdzie c i s oznaczają sinus i cosinus 0,000072921150 * T radianów . Oblicz przecięcie promienia rozpoczynającego się w tej zaktualizowanej lokalizacji. Możesz być nieobecny nawet o 10 metrów ze względu na wykorzystanie szacowanego czasu. Jeżeli ma to znaczenie, ponowne oszacowanie czasu, który upłynął w oparciu o ten punkt przecięcia i powtórzyć obliczenia z nową wartością T .