@tenaro

Как определить координаты клика по вращающейся сфере?

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; это объект в котором находится сама земля, метки на ней итд), считает совсем не правильно, подскажите что делать?
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 1
@GreatRash
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы