Рендеринг точек на земном шаре с правильной долготой и широтой в OpenGL

Я большую часть дня ломал голову над получением правильного вывода из данных о долготе и широте. Я знаю, что эти данные верны, нанося их на карты Google. Например, я покажу данные для этих широтных и длинных координат: Долгота: 4.905396 Широта: 52.364643

При нанесении на карты Google он показывает правильное местоположение, которое Амстердам в Нидерландах: PLotting location of amsterdam on gmaps

Теперь, когда я рисую это в своем приложении, это выглядит следующим образом: selfmade app showing location

И да, Google Maps - это двухмерное представление, а мое - 3D, но это было только для того, чтобы доказать правильность значений долготы и широты, поэтому, если моя формула преобразования их в трехмерное пространство верна, они должны появиться в одном месте.

Я читал много статей в Интернете, а также сам стекопоток. Я прошел через эти статьи и применил все различные типы формул, которые я видел:

Преобразование широты и долготы в точку в трехмерном пространстве

а также

3D координаты на сфере в широту и долготу

Эти два, казалось, имели ясное объяснение с хорошими примерами, но, похоже, ничего не работает. То, что я сейчас делаю, - это вычисление положения в трехмерном пространстве, а затем его нормализация и использование его в качестве направления для рисования линии с точкой на конце, как вы можете видеть на скриншоте моего приложения. Это не отличается от простого рисования линии от центра до расчетного положения при использовании радиуса Земли, который используется в большинстве примеров.

Моя текущая формула:

X = r * cos(latitude) * cos(lontitude);
Y = r * cos(latitude) * sin(longitude);
Z = r * sin(latitude);

Что не так, я знаю, но я просмотрел все примеры, которые я видел в Интернете, и ни один из них не показал мне правильные данные. Протестировав его с данными из карт Google, я знаю, что, по крайней мере, ввод правильный.

Update1:

Я проверил топологию моей текстуры, вот что происходит, когда ее широта и долгота равны 0,0000 и 0,0000: Latitude and longitude check with 0.0000 and 0.0000

Таким образом, это означает, что это уже неправильно, но отключено с нечетным смещением, как показывает карта Google, это должно быть так: google maps latitude and longitude 0.0000, 0.0000

Зеленая стрелка обозначает 0,0000, 0,0000. Так что мой выключен, что очевидно, его нет в стороне. Я думаю, что это может быть (не думаю / надеюсь на это) текстура, я использую эту: http://naturalearth.springercarto.com/ne3_data/16200/textures/2_no_clouds_16k.jpg

Который я получил от:Shadedrelief Естественные текстуры Земли

Обновление 2: Я проверил топологию моей сферы с помощью текстуры, кажется, что она отключена для 0,0 и 0,0, но я также сомневаюсь в моей формуле. Я пробовал много разных из Интернета, и некоторые из них получают те же 0.0 0.0, что и моя первая формула, но много не делают. Моя долгота и широта в градусах с -180 ~ 180 и -90 ~ 90.

Обновление 3: Это вид на участок в Амстердаме, немного отклоненный, как у пионта 0,0 0,0 лат / лонг. Где-то или карта или расчеты не верны, я думаю. Я постараюсь адаптировать текстуру, чтобы она немного сдвинулась. almost fixed

Ответы на вопрос(2)

Ваш ответ на вопрос