Почему я не могу просто использовать скалярное произведение углов, чтобы получить спутниковое изображение точки на Земле?

Сейчас я использую MATLAB и могу легко получить координаты ECEF спутника и точки на Земле. Поскольку ECEF является декартовым, почему я не могу просто изменить порядок:

р е с р п с "=" р е с р п с потому что ( ф )
получить:
ф "=" арккос ( р е с р п с р е с р п с )
а потом сразу сказать, когда фи меньше полуугла конуса датчика на спутнике, точка в поле зрения? Когда я тестировал этот метод, я обнаружил, что в зависимости от широты точки (с круговой орбитой спутника на высоте = 1000, полуугол конуса = 60) фи находится между 38 и 45 как максимум, когда точка впервые видна на край конуса.

Чтобы учесть этот метод без учета того, что Земля мешает обзору точки, я также использую тот же метод для получения угла места от точки до спутника, где

е л "=" 180 ю "=" арккос ( р е п р п с р е п р п с )
и в коде я реализую это

if phi < 60 && el < 90
    vision = True

Однако при некоторых тестах мне нужно установить el < 95-105 (в зависимости от широты точки), чтобы получить точные результаты (проверено с помощью STK).

Для меня так много смысла в том, что этот метод с углами скалярного произведения должен работать так, как я объяснил, но я понятия не имею, почему он не работает таким образом.

Ссылка на вектор

земля не идеальная сфера. Помимо того, что он грушевидный и сплюснутый, у него есть долины и горы?
Я понимаю, что на моей диаграмме это сфера (в основном, потому что я использовал Paint для этого). Моя модель использует сплющенную Землю, но не принимает во внимание горы или долины, как и мой сценарий проверки с STK, который также является сплющенной Землей.

Ответы (1)

На самом деле вы можете это сделать, если правильно установите угол относительно Земли, чтобы спутники не «видели» точку через Землю. Мои ошибки в точности произошли из-за того, что я не установил орбиту точно так, как ее установил STK. Это допустимый метод для использования, который также имеет быстрое время выполнения.

Чтобы сделать это еще быстрее, сравните аргумент arccos в исходном посте с косинусом угла полуконуса. Это устраняет дорогостоящий обратный вызов триггера, который добавляется, если вы делаете это много.