Вы нигде не используете пункт 1, не так ли? Скажем, наша точка P = (широта, долгота)
Первое правило таких проблем: нарисуй картинку! Из поперечного сечения Земли вы можете видеть, что радиус окружности с центром на оси Земли, проходящей через ваши две точки, равен R*cos(lat)
. (R
- радиус Земли. Надеюсь, вам не нужно считать Землю эллипсоидом здесь.) Следовательно, длина x
занимает угол (в градусах) 360*x/(2*pi*R*cos(lat))
. Тогда вы хотите новую точку:
P' = ( lat, lon +- 180*x/(2Rcos(lat)) )
Я предполагаю, что вы используете -180 до 0 для западной долготы, поэтому у вас есть +/- для востока / запада. Вы должны проверить, если вам нужно обернуть вокруг. Псевдо-код:
if (lon < -180)
lon += 360
else if (long > 180)
lon -= 360
Просто для удовольствия: если вы заботитесь о том, чтобы земля была эллипсоидальной, радиус круга (вместо R * cos (lat)):
1/sqrt(tan^2 lat / Rp^2 + 1 / Re^2)
где Rp - полярный радиус, а Re - экваториальный радиус. Если Rp = Re, это сводится к исходной формуле, поскольку 1 + tan^2 lat = sec^2 lat