Un cuaternión es una forma de representar una rotación. Al principio es un poco difícil entenderlo, en comparación con la versión habitual de rotaciones XYZ Euler, pero tiene algunas ventajas importantes.
La familiar rotación XYZ Euler es fácil de entender: es solo una serie de rotaciones unidimensionales en serie. Pero, debido a que están en serie, cada número cambia el significado de lo que viene después: una rotación de Euler de (0, 45, 0) se rota claramente 45 grados en Y: pero un Euler de (90,45,0) es en realidad girado 45 grados en Z. Esto significa que Eulers son vulnerables al bloqueo de cardán y la mezcla entre diferentes rotaciones de Euler es a menudo muy tambaleante e impredecible:
Los cuaterniones son una forma diferente de representar rotaciones. Son un poco más difíciles de visualizar, pero puedes imaginar los primeros 3 números como vectores y el cuarto número como rotación (hay mucho más en juego, piensa en esto como una versión de cuento de hadas).
- ¿Cuáles son los comportamientos humanos populares que las matemáticas pueden explicar?
- ¿Qué significa '=:' en matemáticas?
- Cómo sacar las variables del denominador de 1 / X + 1 / y + 1 / Z
- ¿Qué queremos decir cuando decimos que "el número mínimo de vectores coplanares desiguales cuya suma es cero es tres"?
- ¿Qué es un subconjunto adecuado con un ejemplo?
Afortunadamente, en Unity puedes convertir rotaciones hacia y desde cuaterniones usando Quaternion.Euler (x, y, z) para hacer un cuaternión desde ángulos legibles por humanos y el método .eulerAngles () de un cuaternión para recuperar los ángulos de Euler.
Quaternion.lerp () y Quaternion.slerp () son dos formas de interpolar entre cuaterniones. Si las dos rotaciones son bastante similares, son visualmente idénticas. Si los dos cuaterniones están muy separados (para mí, lo veo después de unos 80 grados), el método slerp () proporciona una interpolación más suave y predecible. lerp () es menos preciso pero más barato de calcular.