vendredi 6 février 2015

Three js Latitude Longitude to xyz on perfect sphere


Vote count:

0




i´m playing arround with three.js


i want to display little spheres on specific geocoordinates on a bigger sphere, i´m pretty near to the solution, but i dont get it correct xyz position from lat lon


i have set up a test case on jsfiddle, there are two coordinates



latlons = [[40.7142700,-74.0059700], [52.5243700,13.4105300]];


its New York and Berlin


and this is my function to calc xyz from lat lon and radius



function calcPosFromLatLonRad(lat,lon,radius){

// Attempt1
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 = radius;
y = rad * cosLat * sinLon;
x = rad * cosLat * cosLon;
z = rad * sinLat;

// Attempt2
// x = radius * Math.sin(lat) * Math.cos(lon)
// y = radius * Math.sin(lat) * Math.sin(lon)
// z = radius * Math.cos(lat)

// Attempt3
// latitude = lat * Math.PI/180
// longitude = lon * Math.PI/180
// x = -radius * Math.cos(latitude) * Math.cos(longitude)
// y = radius * Math.sin(latitude)
// z = radius * Math.cos(latitude) * Math.sin(longitude)

// Attempt4
// var phi = (90-lat)*(Math.PI/180);
// var theta = (lng+180)*(Math.PI/180);
// x = ((rad) * Math.sin(phi)*Math.cos(theta));
// z = ((rad) * Math.sin(phi)*Math.sin(theta));
// y = ((rad) * Math.cos(phi));

console.log([x,y,z]);
return [x,y,z];
}


but all attempts return different xyz, and they are all not correct ( z is always correct)


could someone pleas guide me to the right way ? i have no idea what could be wrong


heres the fiddle to play with


jsfiddle



asked 31 secs ago







Three js Latitude Longitude to xyz on perfect sphere

Aucun commentaire:

Enregistrer un commentaire