Ответ 1
Ваша формула немного отличается от геодезического расчета ECEF. См. Формулы на Dr Math Широта и долгота, Преобразование GPS и Википедия Геодезические в/из координат ECEF. Это проектирует широту, долготу к сплющенной сфере (т.е. Реальная Земля не является абсолютно сферической).
var cosLat = Math.cos(lat * Math.PI / 180.0);
var sinLat = Math.sin(lat * Math.PI / 180.0);
var cosLon = Math.cos(lon * Math.PI / 180.0);
var sinLon = Math.sin(lon * Math.PI / 180.0);
var rad = 6378137.0;
var f = 1.0 / 298.257224;
var C = 1.0 / Math.sqrt(cosLat * cosLat + (1 - f) * (1 - f) * sinLat * sinLat);
var S = (1.0 - f) * (1.0 - f) * C;
var h = 0.0;
marker_mesh.position.x = (rad * C + h) * cosLat * cosLon;
marker_mesh.position.y = (rad * C + h) * cosLat * sinLon;
marker_mesh.position.z = (rad * S + h) * sinLat;
В вашем сценарии, потому что кажется, что вы стреляете в идеальную сферу, вам нужно будет вместо этого поставить f = 0.0 и rad = 500.0. Это приведет к тому, что C и S станут 1.0, поэтому упрощенная версия формулы сводится к:
var cosLat = Math.cos(lat * Math.PI / 180.0);
var sinLat = Math.sin(lat * Math.PI / 180.0);
var cosLon = Math.cos(lon * Math.PI / 180.0);
var sinLon = Math.sin(lon * Math.PI / 180.0);
var rad = 500.0;
marker_mesh.position.x = rad * cosLat * cosLon;
marker_mesh.position.y = rad * cosLat * sinLon;
marker_mesh.position.z = rad * sinLat;
N.B. Я не подтвердил синтаксис примеров Java-кода.