Ich habe eine Kugel, und ich brauche Mausklick zu konvertieren und Länge zur BreiteConvert Maus auf gedrehtem Kugel auf Breite und Länge klicken
Alles funktioniert gut, solange die Kugel keine Rotation aufweist, aber wenn es eine Drehung haben - ich falschen Ergebnissen
Hier erhalten ist mein Code:
var mouse = new THREE.Vector2();
mouse.x = (event.pageX/window.innerWidth) * 2 - 1;
mouse.y = -(event.pageY/window.innerHeight) * 2 + 1;
var raycaster = new THREE.Raycaster();
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObject(EarthSphere);
if (intersects.length!=1) return;
var pointOnSphere = new THREE.Vector3();
pointOnSphere.x = intersects[0].point.x;
pointOnSphere.y = intersects[0].point.y;
pointOnSphere.z = intersects[0].point.z;
var EarthRadius = 20;
var lat = 90 - (Math.acos(pointOnSphere.y/EarthRadius)) * 180/Math.PI;
var lon = ((90 + (Math.atan2(pointOnSphere.x , pointOnSphere.z)) * 180/Math.PI) % 360) - 180;
ich Güssing bin, dass ich irgendwie die pointOnSphere basierend auf Earthsphere, irgendwelche Ideen manipulieren müssen?
EDITED
earth.updateMatrixWorld (true); pointOnSphere = erde.localToWorld (pointOnSphere.clone());
Ich dachte, so etwas wie die folgenden funktionieren würde:
EarthSphere.updateMatrixWorld(true);
pointOnSphere = EarthSphere.localToWorld(pointOnSphere.clone());
Aber es funktioniert nicht ..
Haben Sie eine Rotationsmatrix? – Rabbid76
Die EarthSphere ist ein Mesh, also EarthSphere.matrix? – user1732451