Estoy experimentando con el uso de vectores de ejes y rotaciones en mi motor de juegos de hobby. Este es un vector de 3 componentes a lo largo del eje de rotación con una longitud de la rotación en radianes. Me gustan porque:Combinar vectores de rotación de ejes
- A diferencia de las matrices quats o de rotación, de hecho me puedo ver los números y visualizar la rotación en mi mente
- Son un poco menos memoria que los cuaterniones o matrices.
- puedo representar valores fuera del rango de -Pi a Pi (Esto es importante si almaceno una velocidad angular)
Sin embargo, tengo un bucle estrecho que actualiza la rotación de todos mis objetos (decenas de miles) en función de su velocidad angular. Actualmente, la única forma que conozco de combinar dos vectores de ejes de rotación es convertirlos en cuaterniones, multiplicarlos y luego convertir el resultado a un eje/ángulo. A través del perfil, he identificado esto como un cuello de botella. ¿Alguien sabe un enfoque más directo?
¿Quiere decir que 3 valores representan rotaciones secuenciales alrededor de 3 ejes ortogonales? Básicamente, los ángulos de Euler tales que '[phi, psi, theta]' pueden representar 'RX (phi) * RY (psi) * RZ (theta)'. Si ese es el caso, debe encontrar una forma de construir la matriz de rotación de 3x3 y extraer el ángulo del eje. – ja72
No, no estoy usando ángulos de Euler. Este es el ángulo del eje donde la longitud del vector es el ángulo. – Dwayne