¿Por qué los cuaterniones representan rotaciones en 3D?

Advertencia: La siguiente explicación está dirigida a estudiantes universitarios de física que han completado un primer curso en mecánica cuántica.

Los físicos deberían estar muy familiarizados con los cuaterniones, pero no con ese nombre. Las llamamos las “matrices Pauli”:

[matemática] \ sigma_1 \ equiv \ left (\ begin {array} {cc} 0 & 1 \\ 1 & 0 \ end {array} \ right), ~ \ sigma_2 \ equiv \ left (\ begin {array} {cc } 0 & -i \\ i & 0 \ end {array} \ right), ~ \ sigma_3 \ equiv \ left (\ begin {array} {cc} 1 & 0 \\ 0 & -1 \ end {array} \ derecha) ~ [/ math].

Si multiplica cada una de estas matrices complejas [matemáticas] 2 \ por 2 [/ matemáticas] por [matemáticas] i [/ matemáticas] (la raíz cuadrada de [matemáticas] -1 [/ matemáticas]), encontrará que obedecer la tabla de multiplicación de Hamilton para cuaterniones:

(Solo reemplace Hamilton [math] k [/ math] por la matriz [math] i \ sigma_1 [/ math], su [math] j [/ math] por [math] i \ sigma_2 [/ math], y su [ matemática] i [/ matemática] por [matemática] i \ sigma_3 [/ matemática], o una permutación cíclica de la misma).

Los libros de texto de mecánica cuántica introducen las matrices de Pauli para escribir operadores de momento angular que actúan sobre estados spin- [matemáticos] 1/2 [/ matemáticos]. En un lenguaje más matemático, las matrices de Pauli dan la representación fundamental del álgebra de Lie para [matemáticas] SO (3) [/ matemáticas], el grupo de rotaciones en tres dimensiones.

Históricamente, Hamilton introdujo los cuaterniones a mediados de la década de 1840 para expresar cantidades que tenían magnitud y dirección en un espacio tridimensional, sin darse cuenta de que Grassmann (un genio poco apreciado que solo podía encontrar trabajo como maestro de secundaria) ya había definido más Concepto general de un vector en cualquier cantidad de dimensiones.

En una notación moderna, lo que hizo Hamilton fue representar lo que ahora llamamos el vector [math] \ vec a [/ math] por

[matemáticas] \ vec a = a_i (i \ sigma_i) ~ [/ matemáticas],

donde los [math] a_i [/ ​​math] son ​​números reales y se entiende una suma de los posibles valores (1, 2 y 3) del índice repetido [math] i [/ math]. (El número [math] i = \ sqrt {-1} [/ math] no debe confundirse con el índice [math] i [/ math], escrito como un subíndice. Pido disculpas por la notación, pero así es como todo el mundo escribe cosas hoy en día).

La tabla de multiplicar para las matrices de Pauli se puede expresar mediante la fórmula

[math] \ sigma_i \ sigma_j = \ delta_ {ij} + i \ epsilon_ {ijk} \ sigma_k ~ [/ math],

donde [math] \ delta_ {ij} [/ math] es el delta de Kronecker, y [math] \ epsilon_ {ijk} [/ math] es el símbolo de Levi-Civita totalmente antisimétrico (de nuevo, la suma se entiende en repetidas ocasiones índice [matemática] k [/ matemática]). Por lo tanto, el producto de dos cuaterniones es

[matemáticas] {\ vec a} {\ vec b} = – a_i b_j \ sigma_i \ sigma_j = – a_i b_i – a_i b_j \ epsilon_ {ijk} (i \ sigma_k) ~ [/ math].

Modernamente, escribiríamos esto como menos la suma de un “producto escalar” escalar [math] \ vec a \ cdot \ vec b = a_i b_i [/ ​​math], y un “producto cruzado” vectorial [math] \ vec a \ times \ vec b [/ math] con componentes [math] \ left (\ vec a \ times \ vec b \ right) _i = \ epsilon_ {ijk} a_j b_k ~ [/ math].

El “producto de puntos” y el “producto cruzado”, con sus correspondientes anotaciones, fueron introducidos por Willard Gibbs a fines del siglo XIX y popularizados en un libro publicado en 1901 por su alumno Edwin Wilson. El punto de Gibbs fue que uno siempre necesita extraer uno u otro del producto cuaterniónico, en el que se agregan inútilmente.

Gibbs también señaló que los cuaterniones no son generalizables a rotaciones en espacios de más de tres dimensiones. En el lenguaje de Grassmann, esto se debe a que el “producto de cuña” de dos vectores es en sí mismo un vector solo en tres dimensiones, cuando corresponde al producto cruzado. Gibbs, un hombre por lo demás excepcionalmente reservado y modesto, terminó en un debate público con algunos científicos matemáticos británicos sobre la superioridad del enfoque de Grassmann sobre el de Hamilton.

Para los cognitivos matemáticos, el hecho de que las matrices cuaterniones / Pauli se puedan usar para representar rotaciones en tres dimensiones se deduce del hecho de que los grupos [matemáticas] SO (3) [/ matemáticas] y [matemáticas] SU (2) [/ matemáticas ], aunque globalmente distintas, comparten el mismo álgebra de Lie. Hay una historia análoga pero más complicada sobre octonions y [math] SO (7) [/ math]; ver Producto cruzado de siete dimensiones.

Números complejos

Un número complejo [matemático] x + iy [/ matemático] puede representar un punto [matemático] (x, y) [/ matemático] en dos dimensiones. Entonces podemos rotar ese punto por un ángulo [matemático] \ theta [/ matemático] multiplicándolo por [matemático] \ cos \ theta + i \ sin \ theta [/ matemático], o [matemático] e ^ {i \ theta }[/matemáticas].

Entonces, en dos dimensiones, las rotaciones provienen de la multiplicación por números complejos de longitud 1, y se representan fácilmente por exponenciales. Podemos suponer que rotar un cuaternión en 3D implicará multiplicarlo por una unidad de cuaternión que de manera similar puede representarse por un exponencial.

Cosas para notar

Los números complejos son bidimensionales y representan rotaciones en 2D. Los cuaterniones son de 4 dimensiones. ¿Por qué no representan rotaciones en 4D?

Los números complejos que representan rotaciones son los del círculo unitario, por lo que puede especificarlos con un solo número: el ángulo de rotación. En 2D solo hay una forma de girar. Los cuaterniones de la unidad se especifican por tres números. Esto debería funcionar bien, ya que hay tres formas diferentes de rotar las cosas en 3D (rodar, inclinar, guiñar).

Los cuaterniones no son conmutativos, y también lo son las rotaciones. Ese es un buen comienzo. Nos gustaría encontrar algún aspecto de las rotaciones que se parezca al álgebra de los cuaterniones. Si podemos encontrar ese paralelo, debería ser una pista de cómo están conectados.

Matrices de rotación

Quizás las [matemáticas] i, j, k [/ matemáticas] de los cuaterniones corresponden a rotaciones alrededor de los ejes [matemáticas] x, y, z [/ matemáticas]. ¿Cómo son estas rotaciones? Son solo las matrices de rotación ordinarias

de: matriz de rotación

Si intentas multiplicarlos, quizás arreglando [math] \ theta = \ pi / 2 [/ math], no obtendrás relaciones como [math] R_xR_y = R_z [/ math] que tenemos para los cuaterniones. Puede verificar esto colocando un libro frente a usted y volteándolo.

Sin embargo, el ángulo [matemáticas] \ theta = \ pi / 2 [/ matemáticas] es algo arbitrario. Quizás lo que tiene más sentido es mirar ángulos muy pequeños. Esto es un buen augurio porque eventualmente queremos ver los exponenciales, y los exponenciales se acumulan multiplicando una gran cantidad de cosas muy pequeñas.

Para primer orden, podemos escribir

[matemáticas] R_x (\ epsilon) = 1 + \ epsilon g_x [/ matemáticas]

con

[math] g_x = \ begin {bmatrix} 0 & 0 & 0 \\\\ 0 & 0 & -1 \\\\ 0 & 1 & 0 \ end {bmatrix} [/ math]

y de manera similar para [matemáticas] y, z [/ matemáticas]

Simplemente escribiendo lo que obtienes cuando multiplicas los distintos [math] g [/ math] entre sí, puedes encontrar

[matemáticas] g_xg_y – g_yg_x = g_z [/ matemáticas]

y permutaciones cíclicas. Esto está empezando a parecerse mucho a los cuaterniones, para lo cual podemos escribir, por analogía.

[matemáticas] ij – ji = 2k [/ matemáticas]

Pequeñas rotaciones

Veamos las rotaciones alrededor del eje [math] z [/ math]. Estos son dados por

[math] \ mathbf {r} ‘= R_z (\ theta) \ mathbf {r} [/ math]

donde [math] \ mathbf {r} ‘[/ math] es la versión rotada de un vector arbitrario [math] \ mathbf {r} [/ math] sobre el eje [math] z [/ math] por un ángulo [ matemáticas] \ theta [/ matemáticas]. Para pequeñas rotaciones, esto se convierte en

[math] \ mathbf {r} ‘= (1 + \ epsilon g_z) \ mathbf {r} [/ math]

Queremos convertir esto en una ecuación en cuaterniones. Primero, necesitamos una forma de representar [math] \ mathbf {r} [/ math]. Como es tridimensional, lo más obvio es escribir un cuaternión cuyos tres componentes imaginarios representan el vector,

[matemáticas] q = 0 + xi + yj + zk [/ matemáticas]

nos gustaría multiplicar esto por algo como [math] 1 + \ epsilon k [/ math], ya que anteriormente encontramos una analogía entre [math] k [/ math] y [math] g_z [/ math]. Sin embargo, no está del todo bien. Usted obtiene

[matemáticas] q ‘= q (1 + \ epsilon k) [/ matemáticas]
[matemáticas] q ‘= – \ epsilon z + (x + \ epsilon y) i + (y – \ epsilon x) j + zk [/ matemáticas]

al primer orden en [math] \ epsilon [/ math]. Gira en la dirección incorrecta, lo cual es fácil de arreglar, pero también agrega una pequeña pieza al frente. Para deshacernos de eso, elegimos

[matemáticas] q ‘= (1 + \ frac {\ epsilon k} {2}) q (1 – \ frac {\ epsilon k} {2}) [/ matemáticas]

esto da una [matemática] q ‘[/ matemática] que es la versión rotada de [matemática] q [/ matemática]

Rotaciones Finitas

Las rotaciones finitas se componen de muchas rotaciones pequeñas seguidas, por lo que para rotaciones sobre [matemáticas] z [/ matemáticas], obtenemos

[matemáticas] q ‘= \ left (1 + \ frac {\ theta k} {2n} \ right) ^ nq \ left (1 – \ frac {\ theta k} {2n} \ right) ^ n [/ math]

que en el límite va a

[matemáticas] q ‘= e ^ {\ theta k / 2} qe ^ {- \ theta k / 2} [/ matemáticas]

Para rotaciones finitas alrededor de alguna otra dirección, simplemente cambiamos [matemática] k [/ matemática] en [matemática] ai + bj + ck [/ matemática] donde [matemática] a ^ 2 + b ^ 2 + c ^ 2 = 1 [ / math] para rotar alrededor del eje representado por esa unidad quaternion.

Para comprender la conexión entre los cuaterniones y las rotaciones, me resultó muy útil conectar las matemáticas de los cuaterniones con las matemáticas de las rotaciones con las que estoy familiarizado. Un lugar rápido y fácil para comenzar es la fórmula de rotación Rodrigues. Esta fórmula representa una rotación del vector [math] \ boldsymbol {v} [/ math] por un ángulo [math] \ theta [/ math] alrededor de un vector unitario [math] \ boldsymbol {u} [/ math].

[matemáticas] \ boldsymbol {v} _ {rot} = \ boldsymbol {v} + (\ boldsymbol {u} \ times \ boldsymbol {v}) \ sin \ theta + (\ boldsymbol {u} \ times (\ boldsymbol { u} \ times \ boldsymbol {v})) [/ math] [math] (1 – \ cos \ theta) [/ math]

La derivación de esta fórmula es un ejercicio geométrico directo y, bajo y claro, incluso tiene su propio artículo wiki [1]

Ok, ahora si expresamos un cuaternión como

[matemática] \ bold {q} = r + k_1i + k_2j + k_3k = (r, \ boldsymbol {k}) [/ math]

la regla de composición multiplicativa para cuaterniones es [2]

[matemáticas] (r_1, \ boldsymbol {k} _1) (r_2, \ boldsymbol {k} _2) = [/ math] [matemáticas] (r_1r_2- \ boldsymbol {k} _1 \ cdot \ boldsymbol {k} _2, r_1 \ boldsymbol {k} _2 + r_2 \ boldsymbol {k} _1 + \ boldsymbol {k} _1 \ times \ boldsymbol {k} _2) [/ math]

Podemos representar una unidad general de cuaternión como

[matemáticas] \ boldsymbol {q} = (\ cos \ tfrac {\ theta} {2}, \ boldsymbol {u} \ sin \ tfrac {\ theta} {2}) [/ math]

Entonces, podemos ver el producto quaternion

[matemáticas] \ boldsymbol {q} \ boldsymbol {v} \ bold {q} ^ {*} [/ math] = [matemáticas] (\ cos \ tfrac {\ theta} {2}, \ boldsymbol {u} \ sin \ tfrac {\ theta} {2}) (0, \ boldsymbol {v}) (\ cos \ tfrac {\ theta} {2}, – \ boldsymbol {u} \ sin \ tfrac {\ theta} {2}) [/matemáticas]

Aplicar la regla de composición y un par de identidades trigonométricas nos da

[matemáticas] \ boldsymbol {q} \ boldsymbol {v} \ boldsymbol {q} ^ {*} = [/ math] [math] (0, \ boldsymbol {v} + (\ boldsymbol {u} \ times \ boldsymbol { v}) \ sin \ theta + (\ boldsymbol {u} \ times (\ boldsymbol {u} \ times \ boldsymbol {v})) [/ math] [math] (1- \ cos \ theta)) [/ math]

La fórmula de rotación Rodrigues!

[1] Fórmula de rotación de Rodrigues
[2] Quaternion
[3] Cuaterniones y rotación espacial

Representan rotaciones porque queremos que lo hagan.

En otras palabras, no necesariamente representan rotaciones, pero hemos descubierto que si las considera representaciones de rotaciones, encontrará que tienen algunas cualidades que las hacen bastante convenientes para esa tarea.

O, puedes usar los ángulos de Euler para representar rotaciones. Son solo números, con diferentes reglas para mapearlos en rotaciones, pero también pueden representar rotaciones convenientemente. Hasta o a menos que te encuentres con un bloqueo de cardán … después de eso, puedes encontrar que quieres otro medio para representar rotaciones, y los cuaterniones son bastante útiles para eso, entonces ¿por qué no?

Algo así como que hemos encontrado que los escalares son útiles para representar cantidades. Realmente son solo vectores unidimensionales. * Pero si elijo representar la cantidad de manzanas en mi refrigerador como “1.5”, entonces puedo multiplicar eso por mi tasa promedio de consumo de manzana y determinar con gran confianza que debo comprar comestibles este fin de semana.

* Eso fue una mentira. A veces queremos que los escalares representen vectores unidimensionales, porque a veces eso es conveniente. No hay “realmente”.

Un Quaternion es una abstracción matemática diseñada para encapsular elegantemente detalles de rotación: eje de rotación y ángulo de rotación.

Como tal, Quaternion es una 4 tupla [SW] donde S representa una cantidad escalar y W representa un vector 3D. Como un espacio 3d es un subespacio de un espacio 4D, por lo tanto, cualquier vector 3d [abc] puede considerarse un Quaternion puro con valor escalar cero, es decir, S = 0 y el vector W = [abc].

Además, define las reglas del álgebra de quaternion, algunas de las cuales se han inspirado en el álgebra de vectores 3D: suma, multiplicación, conjugado, norma, cuaternión de unidad e inversión que son válidas para un operador 4d Quaternion.

La parte más interesante de las matemáticas de Quaternion es su capacidad de encapsular con elegancia los detalles de la rotación deseada en una Unidad de cuaternión y luego usar esta Unidad de Cuaternión para lograr la rotación deseada de un vector. Digamos que queremos rotar un vector en un ángulo A alrededor de un eje de rotación representado por el vector de unidad de dirección u = [xyz]. Entonces la Unidad Quaternion que captura los parámetros de rotación requeridos es

[cosA / 2 xsinA / 2 ysinA / 2 zsinA / 2] = [cosA / 2 u * sinA / 2] = [sw]

Los cuaterniones de la unidad tienen la propiedad de que sus normas son iguales a 1, es decir

s ^ 2 + | w | ^ 2 = 1

donde | w | = norma del vector 3d

Además, cualquier Quaternion de forma [SW] puede convertirse en una unidad quaternion

[S / (S ^ 2 + | W | ^ 2) W / (S ^ 2 + | W | ^ 2)] = [sw]

Para rotar un vector v (representado como un cuaternión p = [0 v]) por un ángulo A dado sobre un eje de rotación cuyo vector de dirección u = [xyz], primero combinamos A y u en una unidad de cuaternión q = [cosA / 2 u * sinA / 2]. Posteriormente, la rotación deseada del cuaternión p (o vector v) alrededor de la unidad de cuaternión q (alrededor del eje u por un ángulo A) se puede lograr aplicando el siguiente operador de rotación de Quaternion a p:

Rot (p, q) = q * p * inverso (q)

Para una unidad quaternion q:

inverso (q) = conjugado (q)

Así,

Rot (p, q) = q * p * conjugado (q)

donde p = [0 v]

q = [cosA / 2 u * sinA / 2]

El operador Rot (p, q) es igual a la representación en cuaternión del vector que resulta cuando el vector v gira por el ángulo A sobre el vector unitario u

El operador Rot (p, q) anterior permite la composición de series de rotaciones de una manera elegante e intuitiva, que no es el caso de las rotaciones realizadas con matrices de rotación. Por ejemplo, la rotación de p por q1 seguido de q2 es simplemente

Rot (Rot (p, q1), q2)

= q2 * Rot (p, q1) * conjugado (q2)

= q2 * q1 * p * conjugado (q1) * conjugado (q2)

= (q2 * q1) * p * conjugado (q2 * q1)

= Rot (p, q2 * q1)

Así, la rotación de p primero por unidad de cuaternión q1 y luego por unidad de cuaternión q2 es, por lo tanto, equivalente a la rotación de p por unidad de cuaternión (q2 * q1).

Como se menciona en una respuesta, este tipo de composición es muy similar al uso exponencial complejo para rotar vectores complejos en un plano complejo. De hecho, cualquier Quaternion Q = | Q | [cosA / 2 u * sinA / 2] puede reescribirse en forma exponencial compleja de la siguiente manera:

Q = | Q | exp ^ [u (A / 2)]

Otro resultado interesante es que si reemplazamos la unidad quaternion q por su conjugado (q) en Rot (p, q), es decir, Rot (p, conjugado (q)), la acción resultante del operador es rotar el marco de referencia que contiene p por el ángulo A sobre el eje u mientras p no está girado. Esto puede entenderse como equivalente a rotar p por el ángulo -A aproximadamente q, mientras que el marco de referencia que contiene p no gira.

Si intenta resolver la ecuación matemática simplificando el operador de rotación Quaternion Rot (p, q) en términos de ángulo A y vector unitario u, la ecuación final es idéntica a la fórmula de rotación de Rodrigues y la fórmula de Euler-Rodrigues.

Se proporciona un tratamiento más detallado en el siguiente documento http://www.essentialmath.com/GDC

Solo escribiré la versión corta:
Las rotaciones pueden describirse mediante un vector (eje de rotación) y un escalar (el ángulo de rotación).
Un quaternion es un escalar y un vector 3d.
Estas descripciones se pueden conectar mediante la representación del ángulo del eje de las rotaciones. Wikipedia tiene un buen artículo al respecto.

Maxwell escribió Escalares y Vectores como SQ y VQ, de la misma manera que uno podría dividir números reales en números reales e imaginarios.

Una multiplicación por un cuarto hace en cuatro dimensiones, una ‘rotación de clifford’, donde todos los puntos van alrededor del centro. Un par de rotaciones clifford de paridad opuesta, hacen una rotación simple, en tres o cuatro dimensiones. Si el eje escalar se mantiene constante, entonces el producto está solo en el espacio vectorial.

No lo sé. Pero no estoy completamente sorprendido. Los números complejos representan rotaciones en 2D. Así que puedo imaginar cómo los cuaterniones, que son extensiones de números complejos, podrían representar rotaciones en 3D, que es una extensión de 2D.

More Interesting

Problemas de competencia matemática: ¿Cuál es la solución a la pregunta número 4 de INMO (Olimpiada nacional india de matemática) 2014 (ver detalles de la pregunta)?

¿Cómo pueden [matemáticas] a = 1, b = \ frac {n} {n + 1} [/ matemáticas] y [matemáticas] \ izquierda (ab ^ {n + 1} \ derecha) ^ {\ frac {1} { n + 2}} \ left (1 + \ frac {1} {n + 1} \ right) ^ {n + 2}? [/ math]

Deje que [matemáticas] \ frac {a_ {1}} {b_ {1}}, \ frac {a_ {2}} {b_ {2}}, \ ldots, \ frac {a_ {n}} {b_ {n} } [/ math] be [math] n [/ math] fracciones con [math] b_ {i}> 0 [/ math] para [math] i = 1,2, \ ldots n [/ math]. ¿Se puede demostrar que [matemáticas] \ frac {a_ {1} + a_ {2} + \ ldots + a_ {n}} {b_ {1} + b_ {2} + \ ldots + b_ {n}} [/ matemáticas] es un número entre la más grande y la más pequeña de estas fracciones? ¿Si es así, cómo?

¿Por qué la “geometría algebraica” tiene geometría en su nombre?

Álgebra: Dados dos vectores u = 2i + 6j y v = 3i + 5j, ¿cuál es el valor de u dot v?

¿Cuál es la ecuación para la mitad inferior de un círculo centrado en (0, 0) con un radio de 7?

¿Por qué los seis elementos del grupo simétrico [matemáticas] \ {1, x, y \} [/ matemáticas] [matemáticas] \ {1, x, x ^ 2, y, yx, yx ^ 2 \}? / / matemáticas]

0 / n = 0 yn / 0 no está definido, entonces 0/0 =?

Pregunta de tarea: Tengo esta fórmula [10 = x – (1.29 + 4.99% de x)]. ¿Cómo calculo x?

¿Cómo uso la inducción matemática para demostrar que para todos los números naturales [matemática] n [/ matemática] contiene [matemática] 1 + 2 + 2 ^ 2 + \ puntos + 2 ^ {n-1} = 2 ^ n – 1? [/matemáticas]