Точка пересечения луча и поверхности Земли

11

Скажем, у меня есть лучевой вектор, происходящий из космоса. Примером может служить луч света от солнца. Как я могу рассчитать точку пересечения (если она существует) между лучом и поверхностью Земли? Я использую декартовы координаты (ECEF) и хотел бы, чтобы геометрия эллипсоида Земли учитывалась при расчете.

Прис
источник

Ответы:

12

Это просто, но грязно.

Поскольку вы работаете в ECEF, возможно, у вас есть начало луча (x, y, z) и вектор направления (u, v, w) в координатах ECEF. На данный момент давайте предположим, что во время путешествия к поверхности Земли, Земля не движется заметно. (Самая быстрая часть вращающейся земли, Экватор, движется со скоростью около 0,45 км / с, а свет движется со скоростью около 300 000 км / с, поэтому луч, исходящий, скажем, на 1000 км над землей и направленный более или менее прямо вниз к экватору, примет 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 метра). Вставьте первую формулу во вторую и решите для t в терминах x, y, z, u, v, w . Это квадратное уравнение, поэтому вы получаете до двух решений: одно для входа на Землю и другое для ее повторного ухода (что могло бы произойти, например, для нейтрино). Выберите решение, для которого расстояние самое короткое. Это дает

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 метров или около того из-за использования расчетного времени. Если это имеет значение, повторно оценить прошедшее время , основываясь на этой точке пересечения и повторить вычисление с новым значением Т .

Whuber
источник
Ух ты. Большое спасибо за невероятно подробный ответ!
Прис
Этот вопрос кажется слишком близким к этому другому: gis.stackexchange.com/questions/86031/… Однако я не использую ECEF. Может быть решена аналогичным образом @whuber? Thx
alvarolb
1
@alvarolb Ссылка, показывающая, как конвертировать между ECEF и (lon, lat, altitude), приведена на gis.stackexchange.com/questions/20714 .
whuber
Нельзя рассчитать напрямую, не переходя от геодезической к EFEC и обратно к геодезической?
alvarolb