Hace poco me encontré con la hermosa representación matemática de la serie de Fourier como una serie de vectores giratorios que trazan epiciclos que pueden utilizarse para aproximar cualquier curva 2D cerrada. Mi comprensión de este tema y de otros que trato aquí (como los cuaterniones) proviene de algunas fuentes que encontré en Internet, a las que me remito al final de esta descripción. Primero explicaré mi pensamiento y luego presentaré mi pregunta al final.
Después de aprender sobre los dibujos epicicloidales en 2D, traté de pensar en cómo extender esto a las 3 dimensiones. Mi idea actual es que el resultado final sería algo así:
La idea es acabar con una serie de vectores (representados como flechas negras rectas en la imagen) que giran cada uno sobre su propio eje designado (representado como líneas de puntos marrones) en el sentido de las agujas del reloj o en sentido contrario para trazar círculos en el espacio (la dirección de la rotación está representada por las pequeñas puntas de flecha en los círculos grises). Si se suman los vectores de cabeza a cola y se traza la suma de los vectores a lo largo del tiempo, se obtendrá la curva espacial deseada.
Después de pensar un poco, me di cuenta de que hay tres formas en que estos vectores pueden sumarse entre sí:
- Todo de forma independiente de tal manera que la rotación de un vector no tiene ningún efecto sobre las orientaciones de los ejes de rotación de los vectores siguientes. Esto permitiría añadir los vectores en cualquier orden sin afectar a la curva final dibujada, ya que no hay composición de rotaciones 3D de la que hablar.
- Todo depende de tal manera que la rotación de un vector hace que el eje de rotación del siguiente vector también gire alrededor del eje de ese primer vector. Dado que las rotaciones en tres dimensiones no son conmutativas, el orden de los vectores importa aquí. Además, incluso si un vector tiene una magnitud de cero pero todavía tiene un eje de rotación asignado y una frecuencia de rotación distinta de cero, esa rotación seguirá afectando a la rotación de los vectores siguientes.
- Algunos de forma independiente y otros de forma dependiente. Algunos vectores de la cadena no afectarían a los ejes de rotación de los vectores siguientes, mientras que otros sí. Que el orden de los vectores añadidos sea importante o no depende de la sección de la cadena que nos interese.
Además de esta complejidad en la forma de sumar los vectores, ya no podemos utilizar números imaginarios para describirlos como habríamos podido hacer en el caso 2D. En su lugar, utilizaríamos los cuaterniones como una extensión 4D de los números imaginarios.
Podemos tomar cualquier curva parametrizada del espacio 3D y escribirla como una función de cuaterniones q(t) donde: q(t) = 0 + x(t) i + y(t) j + z(t) k .
Si q(t) puede aproximarse como una suma discreta de vectores de cuaterniones que se rotan en el espacio tridimensional como se visualiza en mi figura anterior, teóricamente debería haber una forma de calcular una transformada de Fourier de cuaterniones discreta que nos permitiera deconstruir la curva en esos vectores.
Ya he empezado a pensar en formas de hacer esto que no he probado ni comprobado, pero para que esta descripción no se alargue mucho más, me lanzaré directamente a la pregunta:
Mi pregunta es triple : ¿Cómo se calcula esta propuesta de transformada de fourier de cuaterniones discretos? ¿Cuál de las tres formas de sumar los vectores sería la más idónea (de forma independiente, dependiente o una mezcla de ambas)? Además, ¿sería considerablemente más caro computacionalmente que el caso 2d?
Recursos que han informado mi pensamiento (principalmente del canal de Youtube 3Blue1Brown):
- Series de Fourier y dibujos de epiciclos: https://www.youtube.com/watch?v=r6sGWTCMz2k
- Transformada de Fourier: https://www.youtube.com/watch?v=spUNpyF58BY
- Cuaterniones y rotaciones 3D: https://www.youtube.com/watch?v=d4EgbgTm0Bg , https://www.youtube.com/watch?v=zjMuIxRvygQ , https://eater.net/quaternions