15.8.23

Bloqueos

La "suspensión cardán" recuerda a La Máquina de Contact: es un anillo que puede rotar sobre cierto eje dentro de otro anillo que puede rotar sobre cierto eje dentro de un tercer anillo. Los ejes de rotación son perpendiculares entre sí, cubriendo el "arriba/abajo", "izquierda/derecha" y "inclinado a izquierda/inclinado a derecha" (los giros que un avión puede hacer). Hay una flecha suspendida en el centro del anillo interior, apuntando en perpendicular a él. El sistema se puede modelar como un vector tridimensional que represente los grados de rotación en cada eje, la llamada "rotación euleriana".

Intuitivamente, diríamos que esa flecha puede apuntar en cualquier dirección: basta con rotarlo tan hacia arriba como queramos, luego tan a la izquierda como queramos, y luego inclinarlo tanto como queramos. Y, en principio, así es, pero en cuanto queremos pasar de cierto punto a cierto punto usando este sistema, nos encontramos con que hay giros que resultan en bloqueos de dos anillos que hacen imposible ciertas transiciones entre rotaciones. Es el denominado "Gimbal lock", el "bloqueo del cardán".

¿Qué importancia tiene esto? Bueno, a menos que estés moviendo un robot, o un avión, o algún dispositivo real o virtual (o un personaje de videojuegos) que implemente su rotación echando mano de esta representación, más bien ninguna. Pero, claro, hay gente que sí está interesada en que su sistema de navegación no se vuelva chalado a la hora de interpolar entre dos rotaciones tridimensionales, así que, ¿cómo solucionamos esto? La solución es compleja. Literalmente.

Hay palabros matemáticos que usamos que parecen sacados directamente de la ciencia ficción. "Cuaterniones" (quaternions) es una de ellas. Explicarlos es, de nuevo, algo complejo, tanto en el sentido de complicado, como porque tienen mucho que ver con el uso de los números complejos. Asumo que el hecho de que se pueda asignar un valor a la raíz negativa de -1 y que la manipulación matemática de ese concepto ha dado pie a toda una eclosión de modelos y aplicaciones es conocido por todos.

Un cuaternión (el nombre no significa más que "conjunto de cuatro elementos") es un vector de cuatro "coordenadas" que, en lugar de ser las clásicas x, y, z de las coordenadas base cartesianas de un vector (ax, by, cz), utiliza otra base i, j, k, que cumple que i^2=j^2=k^2=i*j*k=-1. No te preocupes si no lo visualizas. Por un lado, justo lo difícil es visualizarlo, pero, irónicamente, por otro lado es lo que nos permite, aparte de otras muchas aplicaciones, visualizar la rotación de un objeto como un vector (a, bi, cj, dk), con la particularidad de que esta representación con una "dimensión extra" (¡una hiperesfera!) nos ayuda, al igual que sucede en ámbitos como los de la optimización lineal, a "movernos" por el espacio de soluciones sin la limitación a la que nos condena mantenernos sin esa dimensión extra. 

Esa libertad de desplazamiento es la que consigue que la interpolación entre dos rotaciones tridimensionales dadas se puedan hacer sin los bloqueos que obstaculizan el uso de las rotaciones eulerianas. Una vez hecha la rotación concreta con cuaterniones, hay una fórmula para pasar de este cuarternión a nuestro cómodo sistema de rotación euleriano, permitirnos entender intuitivamente el resultado final de la rotación.

Normalmente escribo alguna narración para explicar estas cosas para Café Hypatia, pero más allá de contar la anécdota de que una vez intentamos gastarle una broma que ya ni recuerdo a alguien sobre la existencia de quintiriones (y aprovecho para decir que hay una extensión de los cuaterniones, los "octoniones"), tampoco se me ocurría nada. Hace mucho calor, y estoy bloqueado (y sin hiperesferas que me ayuden). Pero el tema de cómo las complejidades nos permiten sobrepasar los bloqueos me ha parecido suficientemente bonito de contar sin más adornos.


Esta entrada participa en Café Hypatia.