Таким образом, у вас есть начальная точка (0,0) в одной (произвольной) системе координат и соответствующая (широта, долгота) точка в другой (геоцентрической) системе координат. Ваша проблема в том, что, учитывая набор известных (x, y) смещений от вашего источника, как вы находите соответствующие (широта, долгота) точки? (Я понимаю ваш вопрос до сих пор?)
Простой ответ - использовать формулу:
lat2 = asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(θ))
lon2 = lon1 + atan2(sin(θ)*sin(d/R)*cos(lat1), cos(d/R)−sin(lat1)*sin(lat2))
d/R is the angular distance (in radians), where d is the distance travelled and R is the earth’s radius
По этой ссылке: http://www.movable -type.co.uk / scripts / latlong.html
Редактировать 2: (О, я забыл упомянуть: эта формула предполагает, что у вас есть полярные координаты (R, θ) вместо декартовых координат (x, y). Но преобразование между ними не слишком сложно .)
Немного более длинный ответ: если вы делаете это на достаточно большом пространстве, математика становится очень сложной из-за того, как измеряется высота и как формируется поверхность земли. Вы, вероятно, хотите прочитать о географических системах координат; эта статья в Википедии является хорошей отправной точкой. Вы также можете найти полезной библиотеку PROJ.4 .
* * 1020 Изменить: * * 1021
Если вам нужно учесть измерения высоты (z), математика становится еще более сложной. Простое (простое) решение состоит в том, чтобы выполнить 2,5-мерную математику, то есть вычислить координату (x, y) с одним набором формул, а затем выполнить координату (z) отдельно. Это работает только на достаточно небольшой площади, поскольку вы, по сути, предполагаете, что поверхность Земли плоская для пространства, в котором вы работаете. Однако этого может быть достаточно для вашего приложения.