# Fórmula de rotación de Rodrigues

    Este artículo trata sobre la fórmula de rotación de Rodrigues, relacionada con los parámetros de Euler-Rodrigues y con la fórmula de Euler-Rodrigues de una rotación 3D.
En la teoría del grupo de rotación SO(3), la fórmula de rotación de Rodrigues, que lleva el nombre de Olinde Rodrigues (1795-1851), es un algoritmo eficiente para rotar un vector en el espacio, dado un eje y un ángulo de rotación. Por extensión, esto se puede usar para transformar los tres vectores de una base para calcular una matriz de rotación en SO(3), el grupo de todas las matrices de rotación, utilizando una notación axial-angular. En otras palabras, la fórmula de Rodrigues proporciona un algoritmo para calcular la aplicación exponencial de so(3) (el álgebra de Lie de SO(3)), sobre SO(3) sin calcular realmente la matriz exponencial completa.

## Definición

Si v es un vector en ℝ$^3$ y k es un vector unitario que describe un eje de rotación sobre el cual v gira en un ángulo θ según la regla de la mano derecha, la fórmula de Rodrigues para el vector girado v$_{rot}$ es
    $\mathbf {v} _{\mathrm {rot} }=\mathbf {v} \cos \theta +(\mathbf {k} \times \mathbf {v} )\sin \theta +\mathbf {k} ~(\mathbf {k} \cdot \mathbf {v} )(1-\cos \theta )\,.$
Una definición alternativa es escribir el vector del eje como un producto vectorial a × b de cualquiera de los dos vectores distintos a cero a y b que definen el plano de rotación, y el sentido del ángulo θ se mide desde a y hacia b. Al dejar que α denote el ángulo entre estos vectores, los dos ángulos θ y α no son necesariamente iguales, pero se miden en el mismo sentido. Entonces el vector del eje unitario se puede escribir
    $\mathbf {k} ={\frac {\mathbf {a} \times \mathbf {b} }{|\mathbf {a} \times \mathbf {b} |}}={\frac {\mathbf {a} \times \mathbf {b} }{|\mathbf {a} ||\mathbf {b} |\sin \alpha }}\,.$
Esta forma puede ser más útil cuando están involucrados dos vectores que definen un plano. Un ejemplo en física es la precesión de Thomas, que incluye la rotación dada por la fórmula de Rodrigues, en términos de dos incrementos de velocidad no colineales, y del eje de rotación que es perpendicular al plano definido por ambas.

## Deducción

Sea k un vector unitario definiendo un eje de rotación, y sea v un vector para rotar sobre k por el ángulo θ (según la regla de la mano derecha, en sentido contrario a las agujas del reloj en la figura).
Usando el producto escalar y el producto vectorial, el vector v se puede descomponer en componentes paralelos y perpendiculares al eje k,
    $\mathbf {v} =\mathbf {v} _{\parallel }+\mathbf {v} _{\perp }\,,$
donde el componente paralelo a k es
    $\mathbf {v} _{\parallel }=(\mathbf {v} \cdot \mathbf {k} )\mathbf {k}$
llamado vector proyección de v en k, y el componente perpendicular a k es
    $\mathbf {v} _{\perp }=\mathbf {v} -\mathbf {v} _{\parallel }=\mathbf {v} -(\mathbf {k} \cdot \mathbf {v} )\mathbf {k} =-\mathbf {k} \times (\mathbf {k} \times \mathbf {v} )$
llamado vector rechazo de v de k.
El vector k × v se puede ver como una copia de v$_⊥$ girada 90° en sentido antihorario alrededor de k, por lo que sus magnitudes son iguales pero las direcciones son perpendiculares. Del mismo modo, el vector k × (k × v) es una copia de v$_⊥$ girada 180° en sentido contrario a las agujas del reloj a través de k, de modo que k × (k × v) y v$_⊥$ son iguales en magnitud pero en direcciones opuestas (es decir, son negativos entre sí, por lo tanto, de signos contrarios). Al expandir el producto mixto se establece la conexión entre los componentes paralelo y perpendicular. La fórmula resultante es a × (b × c) = (a · c)b − (a · b)c dado cualquiera de los tres vectores a, b, c.
La componente paralela al eje no cambiará la magnitud ni la dirección bajo la rotación,
    $\mathbf {v} _{\parallel \mathrm {rot} }=\mathbf {v} _{\parallel }\,,$
solo la componente perpendicular cambiará de dirección pero conservará su magnitud, de acuerdo con
    ${\begin{aligned}\left|\mathbf {v} _{\perp \mathrm {rot} }\right|&=\left|\mathbf {v} _{\perp }\right|\,,\\\mathbf {v} _{\perp \mathrm {rot} }&=\cos \theta \mathbf {v} _{\perp }+\sin \theta \mathbf {k} \times \mathbf {v} _{\perp }\,,\end{aligned}}$
y como k y v$_∥$ son paralelos, su producto cruzado es cero k × v$_∥$ = 0, por lo que
    $\mathbf {k} \times \mathbf {v} _{\perp }=\mathbf {k} \times \left(\mathbf {v} -\mathbf {v} _{\parallel }\right)=\mathbf {k} \times \mathbf {v} -\mathbf {k} \times \mathbf {v} _{\parallel }=\mathbf {k} \times \mathbf {v}$
y se sigue que
    $\mathbf {v} _{\perp \mathrm {rot} }=\cos \theta \mathbf {v} _{\perp }+\sin \theta \mathbf {k} \times \mathbf {v} \,.$
Esta rotación es propia, ya que los vectores v$_⊥$ y k × v tienen la misma longitud, y k × v es v$_⊥$ girado 90° en sentido contrario a las agujas del reloj sobre k. Un escalado de v$_⊥$ y k × v utilizando las funciones trigonométricas seno y coseno da el componente perpendicular girado. La forma del componente girado es similar al desarrollo de un vector radial en el plano en coordenadas polares (r, θ) expresado en una base cartesiana 2D
    $\mathbf {r} =r\cos \theta \mathbf {e} _{x}+r\sin \theta \mathbf {e} _{y}\,,$
donde e$_x$, e$_y$ son vectores unitarios en sus direcciones indicadas.
Ahora el vector rotado completo es
    $\mathbf {v} _{\mathrm {rot} }=\mathbf {v} _{\parallel \mathrm {rot} }+\mathbf {v} _{\perp \mathrm {rot} }\,,$
Al sustituir las definiciones de v$_{∥rot}$ y v$_{⊥rot}$ en los resultados de la ecuación en
    ${\begin{aligned}\mathbf {v} _{\mathrm {rot} }&=\mathbf {v} _{\parallel }+\cos \theta \,\mathbf {v} _{\perp }+\sin \theta \,\mathbf {k} \times \mathbf {v} \\&=\mathbf {v} _{\parallel }+\cos \theta \left(\mathbf {v} -\mathbf {v} _{\parallel }\right)+\sin \theta \,\mathbf {k} \times \mathbf {v} \\&=\cos \theta \,\mathbf {v} +(1-\cos \theta )\mathbf {v} _{\parallel }+\sin \theta \,\mathbf {k} \times \mathbf {v} \\&=\cos \theta \,\mathbf {v} +(1-\cos \theta )(\mathbf {k} \cdot \mathbf {v} )\mathbf {k} +\sin \theta \,\mathbf {k} \times \mathbf {v} \end{aligned}}$

## Notación matricial

Al representar v y k × v como matrices columna, el producto vectorial se puede expresar como una multiplicación de matrices
    ${\begin{bmatrix}(\mathbf {k} \times \mathbf {v} )_{x}\\(\mathbf {k} \times \mathbf {v} )_{y}\\(\mathbf {k} \times \mathbf {v} )_{z}\end{bmatrix}}={\begin{bmatrix}k_{y}v_{z}-k_{z}v_{y}\\k_{z}v_{x}-k_{x}v_{z}\\k_{x}v_{y}-k_{y}v_{x}\end{bmatrix}}={\begin{bmatrix}0&-k_{z}&k_{y}\\k_{z}&0&-k_{x}\\-k_{y}&k_{x}&0\end{bmatrix}}{\begin{bmatrix}v_{x}\\v_{y}\\v_{z}\end{bmatrix}}\,.$
Haciendo que K denote el "producto vectorial matricial" para el vector unitario k,
    $\mathbf {K} =\left[{\begin{array}{ccc}0&-k_{z}&k_{y}\\k_{z}&0&-k_{x}\\-k_{y}&k_{x}&0\end{array}}\right]\,,$
La ecuación matricial es, simbólicamente,
    $\mathbf {K} \mathbf {v} =\mathbf {k} \times \mathbf {v}$
para cualquier vector v. (De hecho, K es la matriz única con esta propiedad. Tiene valores propios 0 y ±i).
Iterar el producto cruzado a la derecha equivale a multiplicar por la matriz de productos cruzados a la izquierda, en particular
    $\mathbf {K} (\mathbf {K} \mathbf {v} )=\mathbf {K} ^{2}\mathbf {v} =\mathbf {k} \times (\mathbf {k} \times \mathbf {v} )\,.$
Además, como k es un vector unitario, K se expresa en función de la unidad de la norma matricial. La fórmula de rotación previa en lenguaje matricial es por lo tanto
    $\mathbf {v} _{\mathrm {rot} }=\mathbf {v} +(\sin \theta )\mathbf {K} \mathbf {v} +(1-\cos \theta )\mathbf {K} ^{2}\mathbf {v} \,,\quad \|\mathbf {K} \|_{2}=1\,.$
Téngase en cuenta que el coeficiente del término principal es ahora 1, en esta notación.
Factorizando v se obtiene la expresión compacta
    ${\begin{aligned}\mathbf {v} _{\mathrm {rot} }&=\mathbf {R} \mathbf {v} \end{aligned}}$
donde
    $\mathbf {R} =\mathbf {I} +(\sin \theta )\mathbf {K} +(1-\cos \theta )\mathbf {K} ^{2}$
es la matriz de rotación a través de un ángulo θ en sentido antihorario sobre el eje k, y I es la matriz identidad 3 × 3. Esta matriz R es un elemento del grupo de rotación SO(3) de ℝ$^3$, y K es un elemento del álgebra de Lie ${\mathfrak {so}}(3)$ que genera ese grupo de Lie (téngase en cuenta que K es asimétrico, lo que caracteriza a ${\mathfrak {so}}(3)$).
En términos de la matriz exponencial,
    $\mathbf {R} =\exp(\theta \mathbf {K} )\,.$
Para ver que la última identidad se mantiene, se observa que
    $\mathbf {R} (\theta )\mathbf {R} (\phi )=\mathbf {R} (\theta +\phi ),\quad \mathbf {R} (0)=\mathbf {I} \,,$
característica de un grupo uniparamétrico, es decir, exponencial, y que las fórmulas coinciden con θ infinitesimal.
Para una deducción alternativa basada en esta relación exponencial, véase aplicación exponencial de ${\mathfrak {so}}(3)$ sobre SO(3). Para la asignación inversa, véase aplicación desde SO(3) sobre ${\mathfrak {so}}(3)$.
Téngase en cuenta que el dual de Hodge de la rotación $\mathbf {R}$ es $\mathbf {R} ^{*}=-\sin(\theta )\mathbf {k}$, lo que permite extraer tanto el eje de rotación como el seno del ángulo de rotación de la rotación misma, con la ambigüedad habitual:
    $\sin(\theta )=\sigma |\mathbf {R} ^{*}|$
    $\mathbf {k} =-\sigma \mathbf {R} ^{*}/|\mathbf {R} ^{*}|$
donde $\sigma =\pm 1$. La expresión simple anterior resulta del hecho de que el dual de Hodge $\mathbf {I}$ y $\mathbf {K} ^{2}$ es cero, y $\mathbf {K} ^{*}=-\mathbf {k}$.