En Three.js tengo 2 vectores 3d y quiero encontrar el eje x y el ángulo del eje y entre ellos.
Para el eje x encontré esto
toDegrees(atan2(Az, Ay) - atan2(Bz, By))de El ángulo X entre dos vectores 3D?
que funciona, pero para el eje y, estoy intentando
toDegrees(atan2(Az, Ax) - atan2(Bz, Bx))pero me da el valor equivocado. ¿Cómo puedo arreglar esto?
Gracias
Puede usar Vector3.angleTo directamente, le dará el ángulo en radianes, como es habitual en las funciones matemáticas, aquí lo imprimo en grados (multiplicando por 180 degrees/pi rad= 1 )
// notice that v1 is pointing to the x-axis direction. const v1 = new THREE.Vector3(10,0,0); const v2 = new THREE.Vector3(3,3,0); const v3 = new THREE.Vector3(0, 50, 23); // Alngle between v1 and v2 console.log(v1.angleTo(v2)*180/Math.PI) // The operation is comutative console.log(v2.angleTo(v1)*180/Math.PI) // An example at 90 degree console.log(v1.angleTo(v3)*180/Math.PI) <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> Esto hace posible encontrar ángulos en cualquier dirección, si quieres un ángulo en un plano, por ejemplo, está dado por ans(a - 90) donde a es el ángulo en grados al vector normal del plano.