我刚刚开始钻研ThreeJS。目前我试图在一个球体上绘制一个点,但它似乎是在南半球而不是北半球。在垂直方向上,它看起来位于球体底部而不是顶部的正确位置。我从这个答案中抓取了一些代码:https://stackoverflow.com/a/8982005/738201
在图像中,带有红色框的黄线是我的绘图点。它应该在纽约州北部而不是现在的地方。
最后,代码。
function xyz(lat, lon){
var cosLat = Math.cos(lat*Math.PI/180.00);
var sinLat = Math.sin(lat*Math.PI/180.00);
var cosLon = Math.cos(lon*Math.PI/180.00);
var sinLon = Math.sin(lon*Math.PI/180.00);
var r = sphere.geometry.radius; //50
var coords = {};
coords.x = r * cosLat * cosLon;
coords.y = r * cosLat * sinLon;
coords.z = r * sinLat;
console.log(coords);
return coords;
}
// Lat/Lon from GoogleMaps
var coords = xyz(42.654162, -73.699830);
// returns {x: 10.321018160637124, y: -35.29474079777381, z: 33.878575178802286}
我怀疑问题可能是在3D球体上使用2D坐标,但如果是这样,我不太清楚如何纠正它。