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
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.