Tutorial de Álgebra Geométrica Conforme

“…for geometry, you know, is the gate of science, and the gate is so low and small that one can only enter it as a little child.” — William Kingdon Clifford (1845–1879)

El Álgebra Geométrica es un subconjunto de lo que hoy se conoce como Álgebras de Clifford. Se puede afirmar que es la parte del Álgebra de Clifford que tiene sentido geométrico. Citando a David Hestenes:

“When a geometric interpretation is attached to a Clifford Algebra, I prefer to call it a Geometric Algebra, which is the name originally suggested by Clifford himself.”

El Álgebra Geométrica Conforme es la fusión del Álgebra Geométrica de Clifford con la Geometría Hiperbólica. Un importante resultado de la geometría hiperbólica es que se pueden encontrar superficies cuya métrica hiperbólica es isomorfa a la del espacio Euclidiano. Básicamente, el espacio vectorial 3D (i.e., Euclidiano) es embebido en un espacio proyectivo 5D en el cual se cumple que los vértices en el espacio Euclidiano 3D se corresponden con vértices en la superficie de un hiperparaboloide en el espacio hiperbólico 5D. Como veremos más adelante esta representación algebraica tiene muchas ventajas para el Modelado Geométrico, ya que las transformaciones no lineales en el espacio 3D (e.g., transformaciones conformes) son lineales en el espacio 5D.

El Álgebra Geométrica Conforme de Hestenes tiene la ventaja de que las primitivas geométricas como son: puntos, líneas, planos, círculos y esferas, pueden ser representadas directamente como “objetos” algebraicos que pueden ser comparados, intersecados y transformados (i.e., trasladados, rotados y escalados) sin necesidad de especificar sus coordenadas, obteniendo una correspondencia inmediata entre objetos algebraicos y objetos geométricos con un gran nivel de abstracción. Además posee un álgebra de transformaciones conformes propiamente dicha sobre la cual se puede aplicar Cálculo Geométrico. Citando a Alan McDonald:

“How Geometric Algebra Works: Algebraic operations on blades correspond to geometric operations on the subspaces they represent”

En la última década el Álgebra Geométrica y el Cálculo Geométrico han recibido más atención de la comunidad académica, perfilándose como alternativas de (entre otras) al álgebra vectorial, tensorial, compleja y cuaterniónica por un lado y al cálculo vectorial, análisis complejo, geometría diferencial y otras teorías avanzadas por el otro. La razón es que se trata de una teoría matemática que unifica varias teorías matemáticas de forma consistente y es por lo tanto un lenguaje unificado para la física y la ingeniería. Y eso la hace inmensamente poderosa. Un lenguaje que hace accesibles las investigaciones de máximo nivel en ciencias para los no especialistas en matemáticas, ya que codifica los fundamentos matemáticos subyacentes de diversas teorías matemáticas y facilita relacionarlos y transportarlos hacia nuevas áreas de estudio. En última instancia, el Álgebra y Cálculo Geométricos son la puerta de entrada hacia las matemáticas avanzadas y aceleran el aprendizaje de teorías matemáticas para la física y la ingeniería.

Diversos artículos demuestran el poder de síntesis del Álgebra y Cálculo Geométricos y sus aplicaciones en Visión Computacional y Robótica. En esos campos, el álgebra de motores y de transformaciones conformes (y su correspondiente algebra de Lie) son usados rutinariamente para reformular diversos problemas geométricos de forma algebraica y resolverlos de forma eficiente. Como veremos más adelante, AGC (Álgebra Geométrica Conforme) es la teoría matemática idónea para el modelado geométrico. También veremos que, usando el AGC evitamos completamente los inconvenientes que tienen las coordenadas homogéneas y sus transformaciones rígidas y además tenemos nuevas herramientas más generales y poderosas a nuestra disposición.

A pesar del enorme potencial que poseen el Álgebra y Cálculo Geométricos hoy en día son teorías relativamente desconocidas, inclusive para matemáticos y físicos. Por supuesto también es desconocido por la mayor parte de la comunidad de Ciencias de la Computación y es por eso que su aplicación en modelado geométrico resulta un poco esotérica. Parte de la razón es porque aún no se enseña en el pregrado de la mayoría de universidades. La enseñanza de estas teorías recién está empezando a expandirse ya que se cree que es posible enseñarla desde el colegio. Citando a los Lasenby:

“While providing an immensely powerful mathematical framework in which the most advanced concepts of quantum mechanics, relativity, electromagnetism, etc. can be expressed, it is claimed that GA [Geometric Algebra] is also simple enough to be taught to school children!”

Álgebra Geométrica de Clifford

No es mi intención hacer una introducción minuciosa ni rigurosa del Álgebra Geométrica, sino mas bien hacer una introducción intuitiva y comprensible de los conceptos básicos para lectores que no conocen nada del Álgebra Geométrica pero que han culminado sus cursos de álgebra lineal y análisis matemático a nivel universitario. Una introducción amplia y muy accesible para graduados en Ciencias de la Computación se puede encontrar en el excelente libro: “Geometric Algebra for Computer Science” de Dorst, Mann y Fontijne.

Nota: ante cualquier duda o vacío encontrado durante la lectura de este post, sugiero complementar con wikipedia.

Álgebra Geométrica Universal

En principio, un álgebra geométrica se construye a partir de un espacio vectorial sobre el campo de los números reales \mathbb{R}^{r, s} con dimensiones r + s = n. La notación \mathbb{R}^{r, s} es nueva y su significado será aclarado en las siguientes líneas cuando introduzcamos el producto geométrico, pero no se trata un concepto nuevo sino del mismo espacio vectorial estudiado en álgebra lineal que tiene definida la adicion de vectores y el producto de un vector por un escalár. El espacio vectorial \mathbb{R}^{r, s} no es todavia un álgebra ya que no posee un producto de vectores invertible. El producto geométrico está definido por la simple regla de que el cuadrado de cualquier vector es un escalár a a = a^2 \in \mathbb{R}. Se dice que el vector a es núlo si su cuadrado es cero a^2 = 0. La notación usada para describir el espacio vectorial \mathbb{R}^{r, s} quiere decir que se tiene una base con r vectores con cuadrado positivo y s vectores con cuadrado negativo, el cuadrado está definido por el producto geométrico. A partir del espacio vectorial \mathbb{R}^{r, s} el producto geométrico genera el álgebra geométrica \mathbb{G}^{r, s} sobre el campo de los números reales con elementos \{ A, R, M, ...\} llamados multivectores.

El sistema algebraico está completo, sin embargo es necesario detallar la definición del producto geométrico para poder aprovechar su poder matemático. Dado un par de vectores, el producto interior a \cdot b = b \cdot a que es simétrico y el producto exterior a \wedge b = -b \wedge a que es antisimétrico pueden ser definidos implicitamente por el producto geométrico a b = a \cdot b + a \wedge b y b a = b \cdot a + b \wedge a. Es fácil probar que el resultado del producto interior a \cdot b = \frac{1}{2}(a b + b a) es un escalár y que el resultado del producto exterior a \wedge b = \frac{1}{2}(a b - b a), llamado bivector ó 2-vector, es una nueva entidad algebraica que puede ser visualizada como la versión bidimensional de un vector, es decir que posee magnitud y dirección bidimensional (i.e., define unívocamente la “dirección” de un plano).

Dando un vistazo al producto geométrico de dos vectores:

\mathbf a \ \mathbf b = \mathbf a \cdot \mathbf b + \mathbf a \wedge \mathbf b

podemos deducir que aplicando este producto a dos vectores ortogonales, éstos anticonmutan ya que su producto interior es cero \mathbf a_{\perp} \cdot \mathbf b_{\perp} = 0 y su producto exterior es \mathbf a_{\perp} \wedge \mathbf b_{\perp}, mientras que si lo aplicamos a dos vectores paralelos éstos conmutan ya que su producto exterior sería cero \mathbf a_{\parallel} \wedge \mathbf b_{\parallel} = 0 y su producto interior sería \mathbf a_{\parallel} \cdot \mathbf b_{\parallel} = \|a\| \|b\| el cual el simétrico. El producto geométrico codifica las relaciones fundamentales de los vectores que son los subespacios que forman y la métrica del espacio: los subespacios geométricos se generan con el producto exterior y la métrica de los subespacios (parte simétrica que codifica los ángulos y distancias) que se generan con el producto interior.

Es bueno notar que el producto geométrico de dos vectores se puede generalizar fácilmente en ciertos casos, por ejemplo el producto geométrico de un vector \mathbf a y un bivector denotado como \mathbf B es \mathbf a \mathbf B = \mathbf a \cdot \mathbf B + \mathbf a \wedge \mathbf B. El cual es muy parecido al producto geometrico de dos vectores. Sin embargo el producto geométrico de dos multivectores generales no es tan simple. Por suerte en la práctica los productos geométricos de multivectores generales son muy raros, siendo más común encontrar productos geométricos de multivectores específicos que cuentan con un significado geométrico claro. El producto geométrico es distributivo con respecto a la suma y es además asociativo pero no es conmutativo en general:

\mathbf a (\mathbf b + \mathbf c) = (\mathbf a \mathbf b) + (\mathbf a \mathbf c)
\mathbf a (\mathbf b \mathbf c) = (\mathbf a \mathbf b) \mathbf c
\mathbf a (\beta \mathbf b) = \beta (\mathbf a \mathbf b)
\beta \mathbf b = \mathbf b \beta = \beta \mathbf b

Más adelante veremos que el producto geométrico de dos vectores \mathbf a and \mathbf b representa transformaciones geométricas llamadas rotores. En general el producto geométrico de k-vectores genera rotaciones, traslaciones, inversiones, escalados, etc. También veremos que el producto exterior y el producto interior generan uniones, intersecciones y proyecciones.

Producto Exterior

El producto interior entre dos vectores es ampliamente conocido en álgebra vectorial (i.e., el producto punto), por lo tanto damos por sentada su comprensión y no lo discutiremos en profundidad. Por ahora nos centraremos en conocer mejor el producto exterior. Es bien conocido que un vector \mathbf x puede ser interpretado geometricamente como una direccion. Si el espacio tiene una métrica, entonces la magnitud de \mathbf x es interpretada como su longitud. La introducción del producto exterior nos habilita a extender los vectores a más dimensiones. El producto exterior de dos vectores \mathbf x_0 \wedge \mathbf x_1, llamado bivector es la versión bidimensional de una dirección. Los bivectores, al igual que los vectores, no tienen posición, sólo dirección y magnitud. La dirección de un bivector \mathbf x_0 \wedge \mathbf x_1 no es ni la de \mathbf x_0 ni la de \mathbf x_1 sino la del plano que generan ambos vectores, es decir es la dirección de un plano que se extiende en todas direcciones en ese plano. Además el bivector \mathbf x_0 \wedge \mathbf x_1 posee una orientación la cual indica hacia donde apunta el vector normal del plano del bivector. El bivector \mathbf x_1 \wedge \mathbf x_0 tiene la orientación opuesta del bivector \mathbf x_0 \wedge \mathbf x_1 aunque ambos representan el mismo subespacio y por lo tanto tienen la misma dirección. La magnitud de un bivector \mathbf x_0 \wedge \mathbf x_1 es interpretada como el área del paralelogramo formado por ambos vectores \|\mathbf x_0 \wedge \mathbf x_1\| = \|\mathbf x_0\| \|\mathbf x_1\| \sin \theta y lo mismo se aplica para los trivectores \mathbf x_0 \wedge \mathbf x_1 \wedge \mathbf x_2 los cuales representan un tipo de “dirección tridimensional” y su magnitud es interpretada como el volúmen del paralelepipedo formado por los vectores.

La característica fundamental de los bivectores (y de los k-vectores en general) es su antisimetría \mathbf x_0 \wedge \mathbf x_1 = -\mathbf x_1 \wedge \mathbf x_0 el signo define la orientación del bivector. Los planos definen su orientación usando un vector normal, en cambio los bivectores poseen esa característica incorporada en su signo. Esta propiedad también implica que \mathbf x_0 \wedge \mathbf x_0 = \mathbf x_1 \wedge \mathbf x_1 = 0 cuya interpretación es que un nuevo subespacio no se puede crear con dos vectores linealmente dependientes.

El producto exterior es asociativo, distributivo con respecto a la suma y commuta con los escalares:

\mathbf a \wedge (\mathbf b + \mathbf c) = (\mathbf a \wedge \mathbf b) + (\mathbf a \wedge \mathbf c)
\mathbf a \wedge (\mathbf b \wedge \mathbf c) = (\mathbf a \wedge \mathbf b) \wedge \mathbf c
\mathbf a \wedge (\beta \mathbf b) = \beta (\mathbf a \wedge \mathbf b)
\beta \wedge \mathbf b = \mathbf b \wedge \beta = \beta \mathbf b

Como aprendimos en álgebra lineal los vectores se pueden expresar en términos de coordenadas definiendo una base vectorial linealmente independiente, por ejemplo la base Euclidiana de vectores ortonormales \{ \mathbf e_1, \mathbf e_2, \mathbf e_3\}. El vector \mathbf a se expresaría como \mathbf a = a_1 \mathbf e_1 + a_2 \mathbf e_2 + a_3 \mathbf e_3. A igual que los vectores, los bivectores pueden expresarse en términos de coordenadas. Sin embargo las coordenadas de los bivectores no se expresan respecto a los vectores base Euclidianos sino en términos de una base de bivectores, por ejemplo la base de bivectores ortonormales \{ \mathbf e_1 \wedge \mathbf e_2, \mathbf e_3 \wedge \mathbf e_1, \mathbf e_2 \wedge \mathbf e_3\}. Si descomponemos al bivector \mathbf a \wedge \mathbf b en términos de coordenadas, sería de la siguiente forma:

\mathbf a \wedge \mathbf b = (a_1 \mathbf e_1 + a_2 \mathbf e_2 + a_3 \mathbf e_3) \wedge (b_1 \mathbf e_1 + b_2 \mathbf e_2 + b_3 \mathbf e_3)

\mathbf a \wedge \mathbf b = \alpha \ \mathbf e_1 \wedge \mathbf e_2 + \beta \ \mathbf e_3 \wedge \mathbf e_1 + \gamma \ \mathbf e_2 \wedge \mathbf e_3

donde \alpha = a_1 b_2 - a_2 b_1, \beta = a_3 b_1 - a_1 b_3 y \gamma = a_2 b_3 - a_3 b_2 serían las “coordenadas” del bivector. Las coordenadas coinciden con las del “producto cruz” \mathbf a \times \mathbf b del álgebra vectorial. Sin embargo el producto cruz sólo existe en 3D mientras que el producto exterior existe en todas las dimensiones. Nosotros denotaremos \mathbf e_{ij} a los bivectores base ortonormales \mathbf e_i \wedge \mathbf e_j, por ejemplo \mathbf e_{12} quiere decir \mathbf e_1 \wedge \mathbf e_2.

Los bivectores, tambien llamados 2-vectores son sólo una clase de “extensión” del concepto de vector. En primer lugar tenemos a los 0-vectores que son subespacios de cero dimensiones (i.e., los escalares). Los 1-vectores que son subespacios lineales (i.e., los vectores ya conocidos por nosotros). Los 2-vectores son los subespacios bidimensionales y tambien los 3-vectores que son “subespacios” tridimensionales. En general k-vectores son subespacios. Los k-vectores se pueden crear de dos formas: a) como el producto exterior de k vectores linealmente independientes o b) como la suma de k-vectores base (por ejemplo los bivectores, se pueden crear como la suma de los bivectores base \{ \mathbf e_{12}, \mathbf e_{31}, \mathbf e_{23} \}). Cuando se crean usando el producto exterior, reciben el nombre especial de Blades. La diferencia entre k-blades y k-vectores es que los k-blades por definición se pueden factorizar en k vectores linealmente independientes, mientras que los k-vectores pueden o no ser factorizables. En el álgebra geométrica 3D todos los k-vectores son k-blades, mientras que en el Álgebra Geométrica Conforme 5D, no todos los k-vectores son k-blades.

El producto exterior puede ser generalizado iterativamente para definir k-vectores a través de la siguiente expresión a \wedge A_k = \frac{1}{2}(a A_k + (-1)^k A_k a) la cual genera un (k+1)-vector a partir de un k-vector A_k. La expresión anterior no hace más que extraer la parte antisimétrica del producto geométrico a A_k. Se puede deducir que el producto exterior de k vectores es la parte completamente antisimétrica de su producto geométrico, es decir a_1 \wedge a_2 \wedge ... \wedge a_k = \langle a_1 a_2 ... a_k \rangle_k, donde los corchetes angulados extraen la parte k-vectorial del producto y k es el grado del vector. El término grado es usado para referirnos al número de vectores en un producto exterior. El producto exterior es cero si y sólo si los vectores no son linealmente independientes. En consecuencia el máximo grado para k-vectores es k = n, donde n es la dimensionalidad del espacio vectorial (i.e., en 3D el producto exterior de 4 o más vectores es siempre cero). Se puede deducir que cualquier multivector A puede ser expandido en sus partes k-vectoriales y el álgebra entera puede ser descompuesta en subespacios k-vectoriales:

\mathbb{G}^{r,s} = \sum_{k=0}^n{\mathbb{G}_k^{r,s}} = \{ A = \sum_{k=0}^n { \langle A \rangle_k } \}

Esto es llamado la gradación del álgebra. Lo cual nos invita a definir propiamente a los multivectores.

Multivectores

Un multivector es un vector cuyas partes son k-vectores de distintos grados. El componente 0-vectorial es un escalar, el componente 1-vectorial es un vector, el componente 2-vectorial es un bivector y asi sucesivamente. Tales objetos existen en otros contextos también, por ejemplo los cuaterniones son entidades hechas de un componente escalar y un componente vectorial. La base de los cuaterniones es \{1, \mathbf i, \mathbf j, \mathbf k\}, donde \{1\} es la “base” para los escalares y \{\mathbf i, \mathbf j, \mathbf k\} es una base vectorial pero de números complejos. De forma similar, la base del álgebra geométrica 3D (denotada como \mathbb{G}^{3, 0}) es la siguiente:

\{1, \ \mathbf e_1, \ \mathbf e_2, \ \mathbf e_3, \ \mathbf e_{12}, \ \mathbf e_{31}, \ \mathbf e_{23}, \ \mathbf I_3 = \mathbf e_{123}\}

Es decir, es una base que combina un escalar, un vector, un bivector y un trivector. El k-vector de mayor grado es conocido como pseudoescalar ya que es el “subespacio” que va en absolutamente todas las direcciones y por lo tanto es invariante a rotaciones y traslaciones y sólo es afecto a cambios de escala al igual que los escalares. Otra similitud con los escalares es que el pseudoescalar commuta con los k-vectores de menor grado. Por ejemplo en el álgebra geométrica 3D el trivector \mathbf I_3 = \mathbf e_{123} es el pseudoescalar.

Reversión

La multiplicación de vectores en el orden reverso es conocido como reversión (denotada por la tilde \tilde{}) y está expresada por (a_1 a_2 ... a_k)\tilde{} = a_k ... a_2 a_1 y (a_1 \wedge a_2 \wedge ... \wedge a_k)\tilde{} = a_k \wedge ... \wedge a_2 \wedge a_1. El reverso de un multivector arbitrario está definido como el reverso de los k-vectores que lo componen: \tilde{A} = \sum_{k=0}^n { \langle \tilde{A} \rangle_k }. La reversión juega el papel análogo a la transposición de matrices en álgebra lineal y tiene un papel importante para poder definir la inversa de un k-vector. El hecho de que el producto geométrico sea invertible es una característica única de las Álgebras de Clifford y es fundamental para resolver ecuaciones. Pero antes de definir la inversa necesitamos extender el producto interior de vectores hacia el producto interior de k-vectores en general.

Producto Interior y Contracción

El producto interior de dos vectores \mathbf a y \mathbf b está definido como \mathbf a \cdot \mathbf b = \|\mathbf a\| \|\mathbf b\| \cos \theta, y de forma similar el producto interior de dos k-vectores \mathbf A_k y \mathbf B_k está definido como \mathbf A_k \cdot \mathbf B_k = \|\mathbf A_k\| \|\mathbf B_k\| \cos \theta, donde \theta es el ángulo diedro formado por los subespacios. Como vemos, el producto interior de dos k-vectores del mismo grado k da como resultado un escalar. Esto no se cumple cuando los k-vectores tienen distinto grado. Por ejemplo el producto interior de un vector ordinario \mathbf c y un bivector \mathbf B da como resultado un vector. Este producto interior es conocido como contracción ya que el bivector se “contrae” al transformarse en un vector. La contracción está definida como \mathbf c \cdot \mathbf B = \mathbf c \cdot (\mathbf a \wedge \mathbf b) = (\mathbf c \cdot \mathbf a) \wedge \mathbf b - \mathbf a \wedge (\mathbf c \cdot \mathbf b) cuyo resultado es un vector. Más precisamente, \mathbf c \cdot \mathbf B es un vector que reside en el plano \mathbf B y por lo tanto la contracción es un tipo de proyección donde el vector \mathbf c es proyectado en el plano \mathbf B. Una particularidad de la contracción es que el vector resultante (que reside en el plano del bivector) siempre es ortogonal al vector original (i.e., el vector \mathbf c es ortogonal a su proyeccion en el plano \mathbf B), i.e., \mathbf c \cdot (\mathbf c \cdot \mathbf B) = 0.

La contracción con k-vectores de mayores grados empieza a revelar su verdadera forma, por ejemplo la contracción del vector \mathbf d y el trivector \mathbf I = \mathbf a \wedge \mathbf b \wedge \mathbf c está definida como \mathbf d \cdot (\mathbf a \wedge \mathbf b \wedge \mathbf c) = (\mathbf d \cdot \mathbf a) \wedge \mathbf b \wedge \mathbf c - \mathbf a \wedge (\mathbf d \cdot \mathbf b) \wedge \mathbf c + \mathbf a \wedge \mathbf b \wedge (\mathbf d \cdot \mathbf c) cuyo resultado es un bivector. El bivector resultante reside en el volumen \mathbf I (es un subespacio de \mathbf I) y es ortogonal al vector \mathbf d. De forma similar, la contracción de un bivector \mathbf d \wedge \mathbf e y el trivector \mathbf I está definida como (\mathbf d \wedge \mathbf e) \cdot (\mathbf a \wedge \mathbf b \wedge \mathbf c) = \mathbf d \cdot (\mathbf e \cdot (\mathbf a \wedge \mathbf b \wedge \mathbf c)) el cual es un vector que reside en \mathbf I (es un subespacio de \mathbf I) y es perpendicular al bivector \mathbf d \wedge \mathbf e.

Resumiendo, sean \mathbf c un vector, \mathbf B un bivector y \mathbf I un trivector:

\mathbf c \cdot \mathbf B = vector ortogonal a \mathbf c, subespacio de \mathbf B
\mathbf c \cdot \mathbf I = bivector ortogonal a \mathbf c, subespacio de \mathbf I
\mathbf B \cdot \mathbf I = vector ortogonal a \mathbf B, subespacio de \mathbf I

A la luz de los ejemplos vistos podemos decir que, en general, la contracción (más precisamente, “contracción por la izquierda”) de un k-vector y un n-vector donde n > k da como resultado un elemento de grado n - k que es perpendicular al k-vector.

Dualización

Un importante uso de la contracción es la dualización. En un espacio de n dimensiones la dualización es la operación que relaciona un k-vector con su vector dual (n-k)-vector. Por ejemplo en 3D un plano que pasa por el origen puede ser representado por un bivector o por un vector normal al plano. Ambos son k-vectores (donde que k = 1 para la normal y k = 2 para el bivector) que representan a la misma entidad: el plano. En Álgebra Geométrica una entidad (e.g., un plano) puede representarse de forma “directa”, es decir como un subespacio (e.g., bivector) o de forma “dualizada” como el subespacio complementario del subespacio directo (e.g., la normal del plano). La dualización es simplemente la contracción de un k-vector con la reversa del pseudoescalar \mathbf {\tilde I_n}, esta operación da como resultado un elemento de grado n - k que es perpendicular al k-vector. La dualización es denotada con un asterisco (\ast) en superscript, por ejemplo, el dual del vector \mathbf a es \mathbf a^{\ast} = \mathbf a \cdot \mathbf{\tilde I_3} el cual es el bivector perpendicular al vector \mathbf a. Una conexión con el álgebra vectorial es que la dualización del producto exterior de dos vectores \mathbf a y \mathbf b es equivalente al “producto cruz” de los vectores, i.e, (\mathbf a \wedge \mathbf b)^{\ast} = \mathbf a \times \mathbf b. Por lo tanto el producto cruz es redundante en álgebra geométrica y por lo tanto no es de uso común.

Algunas propiedades importantes de la contracción por la izquierda son las siguientes:

\alpha \cdot \mathbf A = \alpha \mathbf A
\mathbf A \cdot \alpha = 0
(\mathbf A + \mathbf B) \cdot \mathbf C = \mathbf A \cdot \mathbf C + \mathbf B \cdot \mathbf C
\mathbf C \cdot (\mathbf A + \mathbf B)= \mathbf C \cdot \mathbf A + \mathbf C \cdot \mathbf B
\mathbf A_k \cdot \mathbf C_n = (\mathbf A_{k-1} \wedge \mathbf a) \cdot \mathbf C_n = \mathbf A_{k-1} \cdot (\mathbf a \cdot \mathbf C_n)
\mathbf a \cdot \mathbf C_n = \sum_{i=1}^{n}{(-1)^{i-1} \mathbf c_1 \wedge ... \wedge (\mathbf a \cdot \mathbf c_i) \wedge ... \wedge \mathbf c_n}

Inversas

Ahora sí podemos definir la inversa de un k-vector. La inversa de un k-vector, denotado \mathbf A_k está definida como \mathbf A_k^{-1} = \frac{\mathbf{\tilde A_k}}{\|\mathbf A_k\|^2}, donde \|\mathbf A_k\|^2 = \mathbf A_k \mathbf{\tilde A_k}. Se puede comprobar fácilmente mediante cálculo directo que \mathbf A_k \mathbf A_k^{-1} = 1.

La inversa de k-vectores además de permitirnos resolver ecuaciones con k-vectores nos permite aplicar transformaciones geométricas a los subespacios tales como reflexiones, rotaciones, traslaciones y escalados que son importantes en geometría euclidiana así como también inversiones en la esfera y simetrías conformes que son generadoras de todas las transformaciones de la geometria hiperbólica y esférica (incluidas las transformaciones de Möbius).

Transformaciones

El producto geométrico es la clave de las transformaciones geométricas, las cuales se aplican a cualquier multivector arbitrario A de la siguiente manera:

A \mapsto R \ A \ R^{-1}

donde R es un multivector invertible R R^{-1} = 1. Por ejemplo, si R es un bivector (i.e., un plano) y se aplica a un vector a, el resultado de R \ a \ R^{-1} es otro vector, digamos a', que es el reflejo de a en el plano R .

En el álgebra geométrica 3 D (\mathbb{G}^{3, 0} ), los bivectores tienen el cuadrado negativo \mathbf e_{12}^2 = \mathbf e_{31}^2 = \mathbf e_{23}^2 = -1. Esta propiedad es fácilmente verificable ya que

(e_1 \wedge e_2)^2 = (e_1 \wedge e_2) \cdot (e_1 \wedge e_2) + (e_1 \wedge e_2) \wedge (e_1 \wedge e_2)
(e_1 \wedge e_2)^2 = (e_1 \wedge e_2) \cdot (e_1 \wedge e_2) + 0
(e_1 \wedge e_2)^2 = e_1 \cdot (e_2 \cdot (e_1 \wedge e_2))
(e_1 \wedge e_2)^2 = e_1 \cdot ((e_2 \cdot e_1) \wedge e_2 - e_1 \wedge (e_2 \cdot e_2))
(e_1 \wedge e_2)^2 = e_1 \cdot -e_1
(e_1 \wedge e_2)^2 = -1

por lo tanto los bivectores base son entidades isomorfas a los números imaginarios. De hecho el álgebra geométrica 2D es completamente isomorfa al álgebra compleja ya que tiene como pseudoescalar a un bivector con cuadrado negativo. Es en este punto donde el álgebra geométrica absorve y generaliza completamente al álgebra compleja (en otro post veremos que el cálculo geométrico absorve a todo el cálculo, incluido todo el “análisis complejo”). En 3D los bivectores con cuadrado negativo hacen que el álgebra geométrica sea completamente isomorfa al álgebra de cuaterniones. La base vectorial para definir un “cuaternion” en álgebra geométrica sería la siguiente:

\{1, \ \mathbf e_{12}, \ \mathbf e_{31}, \ \mathbf e_{23} \}

que es la base de los multivectores de grado par (0 y 2).

Podemos definir un Rotor como un multivector de grado par que satisface la condición R \tilde R = 1 (análogo a los cuateriones). En álgebra geométrica, al igual que en álgebra de cuaternioes, es usual usar el mapa exponencial para definir a los rotores. El mapa exponencial es simplemente una forma de parametrizar al rotor, es decir ayuda a definirlo a partir de dos simples parametros: el plano de rotación y el ángulo de rotación. Todo rotor puede ser escrito en términos de la exponencial de un bivector \mathbf B de la siguiente manera:

e^{-\mathbf B \theta / 2}= \cos (\theta / 2) - \mathbf B \sin (\theta / 2)

de esta forma, los bivectores son los parametros perfectos para definir rotaciones, ya que la dirección del bivector define el plano de rotación, el signo del bivector define el sentido de la rotación (el sentido de las agujas del reloj o viceversa) y la magnitud del bivector es el ángulo de rotación. Es aqui donde el álgebra de cuaternioes de Hamilton es absorvida por el álgebra geométrica. A diferencia de los cuaterniones, los rotores se pueden generalizar a altas dimensiones sin problemas (y también a bajas dimensiones ya que están definidos hasta en 2D!).

Como veremos más adelante, otras transformaciones más complejas se pueden definir en el Álgebra Geométrica Conforme.

Uniones e Intersecciones

Además de aplicar transformaciones, el producto geométrico también es usado para computar intersecciones y uniones de subespacios. En este post nos restrigiremos a las uniones e intersecciones en el álgebra geométrica 3D (\mathbb{G}^{3, 0}) ya que podriamos dedicar un post entero sólo a este tema. En este punto debe quedar claro que los k-blades son subespacios. Por ejemplo, los bivectores son sub espacios bidimensionales y los vectores son subespacios unidimensionales. Los trivectores son subespacios tridimensionales i.e., todo el espacio Euclidiano 3D. La intersección de subespacios es conocida como meet (denotada por \cap) y la unión como join (denotada por \cup).

Empecemos por lo más simple, la unión (o join) de dos bivectores \mathbf A y \mathbf B es el pseudoescalar (i.e., todo el espacio 3D):

\mathbf A \cup \mathbf B = \mathbf I_3

mientras que la unión de dos vectores \mathbf a y \mathbf b es un bivector (i.e., un subespacio 2D):

\mathbf a \cup \mathbf b = \mathbf a \wedge \mathbf b

Bien, la union no es tan interesante, pero veamos ahora la intersección:

La intersección (o meet) de dos bivectores \mathbf A y \mathbf B está dada por:

\mathbf A \cap \mathbf B = (\mathbf B \cdot \mathbf{I_3^{-1}}) \cdot \mathbf A = \mathbf B^{\ast} \cdot \mathbf A

como era de esperarse el resultado de la intersección de dos bivectores (i.e., dos planos) es un vector.

La intersección dual es interesante en aplicaciones. Si tomamos el dual de la interseccion de dos bivectores \mathbf A y \mathbf B tenemos:

(\mathbf A \cap \mathbf B)^{\ast} = \mathbf B^{\ast} \wedge \mathbf A^{\ast}

La intersección de dos bivectores duales (dos vectores) es el dual de un vector (un bivector).
De forma similar podemos definir la intersección de dos vectores y la de un vector y un bivector, pero esos casos no son tan interesantes ya que la intersección siempre será un escalar, cuya interpretación geométrica es el punto en el origen. Ese escalar es proporcional al seno del ángulo formado entre los vectores o al seno del águlo formado entre el vector y el bivector.

Esta simple álgebra de incidencias se vuelve mucho mas rica y poderosa en el Álgebra Geométrica Conforme 5D, donde no solamente tenemos subespacios que pasan por el origen, sino verdaderos vectores, puntos, planos, líneas, círculos, esferas y algunos otros elementos geométricos que se pueden intersecar “todos con todos” y las formulas son virtualmente las mismas que hemos mostrado. En Álgebra Geométrica Conforme la intersección de dos planos es una línea, la intersección del plano y la línea es un punto, la intersección de la esfera y el plano es un círculo, la intersección del círculo y el plano son un par de puntos (un blade conocido como PointPair, el cual se puede factorizar en dos puntos), etc.

Álgebra Geométrica Conforme

El grupo conforme es el grupo de todas las transformaciones que no alteran la medida de los ángulos. Éstas naturalmente incluyen a las transformaciones rígidas. El grupo conforme en \mathbb{R}^3 tiene una representación natural en términos de rotaciones en un espacio 5D con signatura \mathbb{R}^{4, 1}. Así, de la misma forma en que las transformaciones proyectivas son linealizadas al trabajar en un espacio homogéneo 4D, las transformaciones conformes son linealizadas en un espacio 5D. El espácio vectorial conforme posee cinco vectores \{ o, \mathbf e_1, \mathbf e_2, \mathbf e_3, \infty \}, i.e., la base Euclidiana \{ \mathbf e_1, \mathbf e_2, \mathbf e_3 \} y la base de Minkowski \{ o, \infty \}. Los vectores base de Minkowski son vectores núlos o^2 = \infty^2 = 0 y no son ortogonales entre sí o \cdot \infty = -1 pero aún son ortogonales a los vectores base Euclidianos. El vector o puede ser interpretado como el punto en el orígen (i.e., coordenada homogénea) y el vector \infty como el púnto en el infinito.

Dado un vector Euclidiano \mathbf p se puede construir un vector núlo p^2 = 0 de la siguiente forma p = o + \mathbf p + \frac{1}{2} \|\mathbf p\|^2 \infty. Éste vector núlo p puede ser interpretado como un auténtico punto Euclidiano, el cual posee propiedades ventajosas. Una de las mayores ventajas de describir todo de manera conforme es que la distancia está codificada de manera simple. La distancia euclidiana entre dos puntos núlos p y q está definida por su producto interior p \cdot q = -\frac{1}{2} \|\mathbf p - \mathbf q\|^2. La interpretación de los vectores nulos es ahora evidente, ya que que la distancia a si mismos es cero p \cdot p = 0. La existencia de los vectores núlos está garantizada por el hecho de que el espacio vectorial conforme tiene signatura mixta.

Además de poseer una métrica útil, los puntos nulos son invariantes a las rotaciones, como se espera de los puntos, pero no son invariantes a las traslaciones y escalados, lo cual sigue siendo intuitivo. Los puntos núlos también sirven de base para definir otras primitivas geométricas como PointPairs, líneas, planos, círculos y esferas. Algo sorprendente es que la métrica de los puntos núlos sigue funcionando con las primitivas geométricas construídas a partir de éstos. Por ejemplo, el producto interior de planos, líneas, esferas y círculos da como resultado algún tipo de distancia euclidiana (o ángulo formado) entre ellos.

Primitivas Geométricas

Se pueden construir objetos curvos como círculos y esferas fácilmente usando los puntos núlos. Un círculo C que pasa por los puntos núlos x_0, x_1 y x_2 se puede definir de la siguiente forma:

C = x_0 \wedge x_1 \wedge x_2

Y la esfera S que pasa por los puntos x_0, x_1, x_2 y x_3 está dada por:

S = x_0 \wedge x_1 \wedge x_2 \wedge x_3

Hay que recordar que en el espacio vectorial 5D (\mathbb{R}^{4, 1}) éstos 3-vectores y 4-vectores siguen siendo subespacios lineales interpretados como hiperplanos. El truco es que estos hiperplanos 5D se “proyectan” al espacio Euclidiano 3D en forma de objetos redondeados como círculos y esferas. Para ser mas específico, los puntos núlos residen en una superficie hiperbólica en el espacio 5D, un hiperparaboloide, los subespacios que se forman con el producto exterior son “planos de proyección” donde se proyecta parte de ese hiperparaboloide, formando “cónicas” como circulos y esféras.

También se pueden construir objetos planos como líneas y planos de forma muy fácil ya que estos no son más que objetos curvos que pasan por el punto en el infinito \infty. La línea L que pasa por los puntos x_0 y x_1 está dada por:

L = x_0 \wedge x_1 \wedge \infty

Y el plano P que pasa por los puntos x_0, x_1 y x_2 está dado por:

P = x_0 \wedge x_1 \wedge x_2 \wedge \infty

Algo formidable es que existen varias formas de construir subespacios planos y curvos. Por ejemplo también podemos construir la línea L que pasa por el punto x_0 y con el vector dirección \mathbf v como L = x_0 \wedge \mathbf v \wedge \infty y podemos construir el plano P que pasa por el origen o y tiene el bivector de dirección \mathbf B como P = o \wedge B \wedge \infty.

Las representaciones duales de objetos curvos y planos es útil para la construcción de geometría que requiere de ciertos parámetros en lugar de sólo puntos. Por ejemplo si tenemos el centro y el radio de círculos y esferas o tenemos el vector normal y la distancia al origen en el caso de los planos y líneas, es más conveniente usar representaciones duales.

Motores

Los movimientos de los cuerpos rígidos en el espacio Euclidiano \mathbb{R}^3 son representados por transformaciones ortogonales en \mathbb{G}^{4,1}. Al igual que en álgebra lineal donde para las matrices ortogonales la inversa de la matriz es igual a la transpuesta, las transformaciones conformes en Álgebra Geométrica Conforme (i.e., multivectores que representan rotaciones, traslaciones, escalas, etc) tienen la inversa igual a la reversa. En general un motor M es un multivector de grados pares (i.e., formado por k-vectores donde k es par) que satisface la propiedad M \tilde M = 1. Geométricamente se puede decir que un motor es generado por un número par de reflexiones aplicadas en ciertos planos bien elegidos. Por ejemplo los motores de traslación T_{\mathbf v} en dirección del vector \mathbf v son generados por la reflexión doble en dos planos paralelos separados uno del otro por el vector \mathbf v / 2 y los motores de rotación R_{\mathbf B \theta} son generados por la reflexión doble en dos planos incidentes que pasan por el origen y que forman un ángulo \theta / 2 entre ellos. Un motor genérico puede ser representado como la combinacion de un motor de traslacion y un motor de rotación M = T_{\mathbf v} \ R_{\mathbf B \theta}. Los motores pueden transformar cualquier entidad geométrica usando el producto geométrico A' = M \ A \ \tilde M. Cualquier motor puede ser escrito en términos de la exponencial de un bivector M = e^B. El bivector B es el generador del movimiento y es un elememto del álgebra de Lie del grupo conforme.

Interpolación de Motores

Un motor puede ser aplicado gradualmente a entidades geometricas si se lo divide en n partes iguales a través de la identidad M^{1/n} = e^{B/n}, luego se puede aplicar el motor M^{1/n} un número de veces n para aplicarlo gradualmente. Esto significa que es posible interpolar los motores usando el mapa exponencial. Una forma simple de conseguir la interpolación lineal entre dos motores M_1 = e^{B_1} y M_2 = e^{B_2} es M_{\alpha} = e^{(1 - \alpha) B_1 + \alpha B_2}. Esta formulacion requiere de la habilidad de computar los logaritmos de los motores B_1 = \log (M_1) and B_2 = \log (M_2). Una expresión para hallar el logaritmo de motores se puede encontrar en el libro “Geometric Algebra For Computer Science” de Dorst, Mann y Fontijne.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s