1) есть глобус, сделанный на three.js
self.earth = new THREE.Mesh(new THREE.SphereGeometry(50, 32, 32), new THREE.MeshBasicMaterial({map: tex}));
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());
.
.
r = 50; // radius
x = object.point.x ;
y = object.point.y ;
z = object.point.z ;
3) вычисляем координаты
var lat = ( 90 - (Math.acos(y / r)) * 180 / Math.PI );
var lon = ((270 + (Math.atan2(x , z)) * 180 / Math.PI) % 360);
работает не четко, но хоть так, при добавлении вращения (например при добавлении земли в сцену: self.obj.rotation.y = 34.3; это объект в котором находится сама земля, метки на ней итд), считает совсем не правильно, подскажите что делать?
Вопрос задан
более трёх лет назад
460 просмотров