/ Konverzia lonlat na xyz a naopak - matematika, three.js

Konverzia lonlatu na xyz a naopak - math, three.js

Tento kód používam na preklad lonlatu na x, y, z, ale neviem zistiť, ako postupovať opačne.

var phi = (this.lat)*Math.PI/180;
var theta = (this.lon-180)*Math.PI/180;

x = -(this.R) * Math.cos(phi) * Math.cos(theta);
y = -(this.R) * Math.sin(phi);
z = (this.R) * Math.cos(phi) * Math.sin(theta);

Teraz prevádzame z x, y, z na lonlat

lat = THREE.Math.radToDeg(Math.asin(rotation.y / this.R));
lon = THREE.Math.radToDeg(Math.atan2(rotation.z, rotation.x));

Ale to nefunguje správne, čo robím zle?

odpovede:

0 pre odpoveď č. 1

dobre, nie ste prevod z xyz na lon lat, snažíte sa niečo urobiť s euler uhly:

skúste niečo také

lon = Math.atan2( x , z ); //horizontal angle, just two components
lon = Math.atan2( Math.sqrt(x*x,z*z) , y ); //vertical angle, length of the diagonal between xz components and y component