6 votos

Quaternion para un objeto que apunte en una dirección

Dados dos vectores, una dirección y un ascendente: ¿cómo construyo un cuaternión para que cuando un sistema de coordenadas sea transformado por él, su eje X apunte al vector de dirección original?

0 votos

Los cuaterniones codifican la matriz de rotación, por lo que hay que encontrar la matriz de rotación necesaria y transcribirla a la representación de cuaterniones.

7voto

Jakob Gade Puntos 6006

Se puede construir un cuaternión para rotar un determinado normalizado vector $\mathbf{v}$ en un normalizado vector $\mathbf{w}$ tomando el eje del producto cruzado y el ángulo del producto punto

$\mathbf{a}=\mathbf{v}\times\mathbf{w},\quad\quad\quad \theta = \arccos(\mathbf{v}\cdot\mathbf{w})$

y, por supuesto, la habitual conversión de eje-ángulo a cuaternión

$\mathbf{q}=(\cos\frac{\theta}{2}, \mathbf{a}\sin\frac{\theta}{2})$

Pero tenga en cuenta que esto gira a lo largo del camino más corto y por lo tanto no necesita mantener el vector ascendente de su objeto. Si quieres rotar alrededor del normalizado eje ascendente $\mathbf{u}$ entonces este es, por supuesto, el eje de rotación. Pero entonces hay que calcular el ángulo en el plano perpendicular al eje superior, por lo que primero hay que proyectar los vectores origen y destino en este plano antes de tomar su producto punto, utilizando

$\mathbf{v}=\mathbf{v}-(\mathbf{v}\cdot\mathbf{u})\mathbf{u},\quad\quad\quad \mathbf{v}=\frac{\mathbf{v}}{\|\mathbf{v}\|}$

y lo mismo para $\mathbf{w}$ . A continuación, se puede calcular la rotación como en el caso anterior.

0 votos

Gracias. Esto es mucho más sencillo de lo que esperaba.

0 votos

No debería $\mathbf{q}$ sea un cuaternión unitario?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X