Ответ 1
Я получаю большинство этих типов формул из Авиационный формуляр
Формула, которую он дает, равна:
Lat/lon, заданный радиальной и дистанционной точкой A {lat, lon}, является расстоянием d на tc радиальный из точки 1, если:
lat=asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc)) IF (cos(lat)=0) lon=lon1 // endpoint a pole ELSE lon=mod(lon1-asin(sin(tc)*sin(d)/cos(lat))+pi,2*pi)-pi ENDIF
Этот алгоритм ограничен расстояниями, так что dlon < pi/2, т.е. те, которые охватывают менее одного четверть окружности земля в долготе. Полностью общий, но более сложный алгоритм необходим, если расстояния разрешены:
lat =asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
dlon=atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(lat))
lon=mod( lon1-dlon +pi,2*pi )-pi
Обратите внимание, что он использует "tc" для обозначения истинного курса (в радианах по часовой стрелке с севера), а расстояния, которые он дает, находятся в радианах дуги вдоль поверхности земли. Это объясняется (вместе с формулами для преобразования назад и вперед из морских миль) в первом разделе Формула. Кроме того, ознакомьтесь с "Замечаниями по реализации" и "Рабочими примерами" на этой странице.