如何通过单击旋转球体(three.js)来获取LatLng?

时间:2016-08-15 09:06:20

标签: javascript three.js

1)创建地球对象

self.earth = new THREE.Mesh(new THREE.SphereGeometry(50, 32, 32), new THREE.MeshBasicMaterial({map: tex}));

THREE.ImageUtils.crossOrigin = '';
self.obj = new THREE.Object3D();
self.obj.add(self.earth);
// self.obj.rotation.y = 34.3;

2)相交

var mouse3D = new THREE.Vector3(  );    

var raycaster = new THREE.Raycaster(); 
mouse3D.set( ( (event.clientX) / window.innerWidth ) * 2 - 1, -( (event.clientY) / window.innerHeight ) * 2 + 1, 0.5 ).unproject(self.camera);raycaster.set(self.camera.position, mouse3D.sub(self.camera.position ).normalize());

var intersects = raycaster.intersectObject( self.earth );

if (intersects.length > 0) {

   object = intersects[0];

   r = 50; // radius   
   x = object.point.x ;
   y = object.point.y ;
   z = object.point.z ;

3)coords

var lat =  ( 90 - (Math.acos(y / r)) * 180 / Math.PI ) - 10;

var lon =  ((270 + (Math.atan2(x , z)) * 180 / Math.PI) % 360) - 10;

它的工作,但旋转(self.obj.rotation.y = 34.3;)打破计算,为什么?

0 个答案:

没有答案