Descargo de responsabilidad: soy un programador profesional de juegos, y uso cuaterniones la mayoría de los días, pero para mí están cerca de la magia negra. Estoy relativamente en casa con las matemáticas, pero los números imaginarios siempre me confundieron. Tiendo a tratar los quats como útiles y terminar invirtiendo las multiplicaciones más de una vez. Trato de razonar sobre ellos como lo haría con matrices con éxito limitado.
De todos modos....
Lo que me desconcierta es lo siguiente. Cuando quiero rotar un objeto alrededor de su eje local, multiplico su rotación con el cuaternión que representa la rotación que quiero aplicar. Por lo tanto, es una rotación en el espacio local.
Ahora, si quiero rotarlo alrededor de un eje en el espacio mundial, mi razonamiento sería: tomar la rotación en el espacio mundial como un cuaternión. Multiplique el inverso de la rotación de mi objeto con este cuaternión. Esto traerá mi rotación mundial en el espacio local. Multiplique mi rotación con este nuevo cuaternión. es decir: newRot = oldRot * (inversa oldRot * worldRot)
Sin embargo, lo que necesito hacer es newRot = oldRot * (inverso oldRot * worldRot) * oldRot.
¿Por qué, después de multiplicar con el quat inverso, aún necesito multiplicar con mi propio quat antes de aplicarlo? Sé que debe haber una razón válida perfecta, pero no puedo razonar mi salida y es frustrante para mí. Probé las diversas preguntas frecuentes y demás, pero la mayoría profundiza en las matemáticas, haciéndolo menos claro.
¿Alguien que me pueda explicar esto como si tuviera 5 años?
I try to reason about them like I would with matrices
- Entonces estás en el camino correcto. Si entendió cómo rotar alrededor de los ejes de los objetos y los ejes del mundo usando matrices, puede hacer lo mismo usando los cuaterniones. El orden de multiplicación es el mismo para ambas, matrices y cuaterniones.