Я пытаюсь рассчитать долготу точки по долготе другой точки.Они имеют одинаковую широту и расстояние между ними известно.Я пытаюсь использовать формулу закона косинусов .
# 'lat' short for 'latitude', 'lng' short for 'longitude'.
# EARTH_RADIUS = 6371000.0, unit is meter.
#
distance = Math.acos( Math.sin(lat1)*Math.sin(lat2) +
Math.cos(lat1)*Math.cos(lat2) *
Math.cos(lng2-lng1)) * EARTH_RADIUS
Если широта двух точек равна (lat1 == lat2), я могу вычислить lng2 из lng1 с расстоянием.Поэтому я рассуждаю по формуле сферического закона косинусов формула
# lat1 == lat2 == lat
# 'distance' and 'lng' are known
lng2 = Math.acos((Math.cos(distance/EARTH_RADIUS) - Math.sin(lat)*Math.sin(lat))/(Math.cos(lat)*Math.cos(lat))) + lng
Эта формула работает очень хорошо, за исключением некоторых ситуаций.1015 * Это приведет к ошибке
Math::DomainError: Numerical argument is out of domain - "acos"
Поскольку значение в Math.acos (value) равно -2.5100189069914602, которое меньше -1.Я понятия не имею об этом.Является ли производное неверным?