Matriz de transformación
# Matriz de transformación

En álgebra lineal, una aplicación lineal se puede representar mediante una matriz. Si $T$ es una transformación lineal que representa una aplicación de $\mathbb {R} ^{n}$ sobre $\mathbb {R} ^{m}$ y ${\vec {x}}$ es un vector columna con $n$ componentes, entonces

    $T({\vec {x}})=\mathbf {A} {\vec {x}}$

para una matriz $A$ de dimensión $m\times n$, denominada matriz de transformación de $T$. Debe tenerse en cuenta que $A$ tiene $m$ filas y $n$ columnas, mientras que la transformación $T$ es de $\mathbb {R} ^{n}$ a $\mathbb {R} ^{m}$. Algunos autores emplean expresiones alternativas de matrices de transformación que utilizan vectores fila en lugar de vectores columna, pero se trata de una circunstancia meramente formal.

## Utilización

Las matrices permiten mostrar aplicaciones lineales arbitrarias en un formato coherente, muy adecuado para el cálculo. Además, presenta la ventaja de permitir concatenar fácilmente transformaciones sucesivas (multiplicando sus matrices).

Las transformaciones lineales no son las únicas que se pueden representar mediante matrices. Algunas transformaciones que no son lineales en un espacio euclídeo $R^n$ de n dimensiones se pueden representar como transformaciones lineales en el espacio n+1 dimensional $R^{n+1},$ donde se incluyen tanto transformaciones afines (como por ejemplo las traslaciones) como homografías. Por esta razón, las matrices de transformación de 4×4 se utilizan ampliamente en gráficos 3D por computadora. Estas matrices de transformación n+1 dimensionales se denominan, según su aplicación, matrices de transformación afín, matrices de transformación proyectiva o, más generalmente, matrices de transformación no lineal. Con respecto a una matriz n dimensional, una matriz n+1 dimensional se puede describir como una matriz aumentada.

En las ciencias físicas, una transformación activa es aquella que realmente cambia la posición física de un sistema, y tiene sentido incluso en ausencia de un sistema de coordenadas, mientras que una transformación pasiva es un cambio en la descripción de coordenadas del sistema físico (cambio de bases). La distinción entre transformaciones activas y pasivas es importante. Por defecto, cuando en matemáticas se habla de transformación, normalmente se hace referencia a transformaciones activas, mientras que en física puede designar cualquiera de los dos tipos.

Dicho de otra manera, una transformación pasiva se refiere a la descripción del mismo objeto visto desde dos marcos de coordenadas diferentes.

## Determinación de la matriz de una transformación

Si se dispone de una transformación lineal $T(x)$ en su forma funcional, es fácil determinar la matriz de transformación A transformando cada uno de los vectores de su base canónica por T, y luego insertando el resultado en las columnas de una matriz. En otras palabras,

    $\mathbf {A} ={\begin{bmatrix}T({\vec {e}}_{1})&T({\vec {e}}_{2})&\cdots &T({\vec {e}}_{n})\end{bmatrix}}$

Por ejemplo, la función $T(x)=5x$ es una transformación lineal. La aplicación del proceso anterior (suponiendo que n=2 en este caso) revela que

    $T({\vec {x}})=5{\vec {x}}=5\mathbf {I} {\vec {x}}={\begin{bmatrix}5&&0\\0&&5\end{bmatrix}}{\vec {x}}$

La representación matricial de vectores y operadores depende de la base elegida; el resultado de tomar la base alternada (ordenada de otra manera) es una matriz semejante. Sin embargo, el método para encontrar los componentes sigue siendo el mismo.

Para operar, el vector v se representa como una combinación lineal respecto a los vectores de la base, $E=[{\vec {e}}_{1}{\vec {e}}_{2}\ldots {\vec {e}}_{n}]$ con coordenadas $[v]_{E}=[v_{1}v_{2}\ldots v_{n}]^{T}$:

    ${\vec {v}}=v_{1}{\vec {e}}_{1}+v_{2}{\vec {e}}_{2}+\ldots +v_{n}{\vec {e}}_{n}=\sum v_{i}{\vec {e}}_{i}=E[v]_{E}$

Ahora, expresando el resultado de la matriz de transformación A sobre ${\vec {v}}$, en la base dada:

    ${\begin{aligned}A({\vec {v}})&=A\left(\sum v_{i}{\vec {e}}_{i}\right)=\sum {v_{i}A({\vec {e}}_{i})}=[A({\vec {e}}_{1})A({\vec {e}}_{2})\ldots A({\vec {e}}_{n})][v]_{E}\\&=A\cdot [v]_{E}=[{\vec {e}}_{1}{\vec {e}}_{2}\ldots {\vec {e}}_{n}]{\begin{bmatrix}a_{1,1}&a_{1,2}&\ldots &a_{1,n}\\a_{2,1}&a_{2,2}&\ldots &a_{2,n}\\\vdots &\vdots &\ddots &\vdots \\a_{n,1}&a_{n,2}&\ldots &a_{n,n}\\\end{bmatrix}}{\begin{bmatrix}v_{1}\\v_{2}\\\vdots \\v_{n}\end{bmatrix}}\end{aligned}}$

Los elementos $a_{i,j}$ de la matriz A se determinan para una base E dada aplicando A a cada ${\vec {e}}_{j}=[00\ldots (v_{j}=1)\ldots 0]^{T}$, siendo el vector obtenido

    $A{\vec {e}}_{j}=a_{1,j}{\vec {e}}_{1}+a_{2,j}{\vec {e}}_{2}+\ldots +a_{n,j}{\vec {e}}_{n}=\sum a_{i,j}{\vec {e}}_{i}.$

Esta ecuación define los elementos buscados $a_{i,j}$ de la j-ésima columna de la matriz A.

### Base de vectores propios y matriz diagonal

Sin embargo, existe una base especial para una transformación, en la que sus componentes forman una matriz diagonal y, por lo tanto, la complejidad de la multiplicación se reduce a n. Ser diagonal significa que todos sus coeficientes $a_{i,j}$ (excepto los $a_{i,i}$) son ceros, dejando solo un término no nulo en la suma anterior $\sum a_{i,j}{\vec {e}}_{i}$. Los elementos diagonales no nulos, $a_{i,i}$, se conocen como valores propios y se designan con $\lambda _{i}$ en la ecuación de definición, que se reduce a $A{\vec {e}}_{i}=\lambda _{i}{\vec {e}}_{i}$. La ecuación resultante se conoce como ecuación de valores propios. Los valores y vectores propios se calculan mediante el polinomio característico de la matriz.

Mediante la diagonalización de una matriz es posible obtener un cambio de bases hacia y desde bases de vectores propios.

## Ejemplos en 2 dimensiones

Las transformaciones geométricas más comunes que mantienen el origen fijo son lineales, incluidas la rotación, el escalado, el cizallamiento, la reflexión y la proyección ortogonal. Si una transformación afín no es una traslación pura, mantiene algún punto fijo, y ese punto puede elegirse como origen para hacer que la transformación sea lineal. En dos dimensiones, las transformaciones lineales se pueden representar utilizando una matriz de transformación de 2×2.

### Estiramiento

Un estiramiento en el plano xy es una transformación lineal que agranda todas las distancias en una dirección particular por un factor constante pero no afecta las distancias en la dirección perpendicular. Solo se van a considerar alargamientos respecto al eje x y al eje y. Un alargamiento en el eje x tiene la forma x' = kx; y' = y para alguna constante positiva k. Se debe tener en cuenta que si k es >1, entonces se produce realmente un estiramiento; y si k es <1, técnicamente es una compresión, aunque de forma genérica también se denomina estiramiento. Además, si k = 1 , entonces la transformación es una identidad, es decir, no tiene ningún efecto.

La matriz asociada con un estiramiento por un factor k en el eje x viene dada por:

    ${\begin{bmatrix}k&0\\0&1\end{bmatrix}}$

De manera similar, un estiramiento por un factor k en el eje y tiene la forma x' = x; y' = ky, por lo que la matriz asociada con esta transformación es

    ${\begin{bmatrix}1&0\\0&k\end{bmatrix}}$

### Contracción

Si dos de los estiramientos anteriores se combinan con valores recíprocos, entonces la matriz de transformación representa una contracción:

    ${\begin{bmatrix}k&0\\0&1/k\end{bmatrix}}.$

Un cuadrado con lados paralelos a los ejes se transforma en un rectángulo que tiene la misma área que el cuadrado. El estiramiento y la compresión recíprocos no alteran el valor del área de la figura sobre la que se aplican.

### Rotación

Para generar una rotación con un ángulo θ en el sentido de las agujas del reloj respecto al origen de coordenadas, la forma funcional es $x'=x\cos \theta +y\sin \theta$ y $y'=-x\sin \theta +y\cos \theta$. Escrito en forma de matriz, esto se convierte en:

    ${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}\cos \theta &\sin \theta \\-\sin \theta &\cos \theta \end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}$

De manera similar, para una rotación en sentido antihorario respecto al origen, la forma funcional es $x'=x\cos \theta -y\sin \theta$ y $y'=x\sin \theta +y\cos \theta$, y su forma matricial es:

    ${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}$

Estas fórmulas asumen que el eje x apunta a la derecha y el eje y apunta hacia arriba.

### Cizallamiento

Para generar un cizallamiento (visualmente similar a una inclinación), hay dos posibilidades.

Un cizallamiento paralelo al eje x tiene la expresión $x'=x+ky$ y $y'=y$. Escrito en forma de matriz, esto se convierte en:

    ${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}1&k\\0&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}$

Un cizallamiento paralelo al eje y tiene la expresión $x'=x$ y $y'=y+kx$, que tiene forma de matriz:

    ${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}1&0\\k&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}$

### Reflexión

Para obtener la reflexión respecto a una recta que pasa por el origen, siendo $\scriptstyle {\vec {l}}=(l_{x},l_{y})$ un vector en la dirección de la recta. Entonces, basta con usar la matriz de transformación:

    $\mathbf {A} ={\frac {1}{\lVert {\vec {l}}\rVert ^{2}}}{\begin{bmatrix}l_{x}^{2}-l_{y}^{2}&2l_{x}l_{y}\\2l_{x}l_{y}&l_{y}^{2}-l_{x}^{2}\end{bmatrix}}$

### Proyección ortogonal

Para proyectar un vector ortogonalmente respecto a una recta que pasa por el origen, se toma primero ${\vec {u}}=(u_{x},u_{y})$, un vector en la dirección de la recta, y se usa la matriz de transformación siguiente:

    $\mathbf {A} ={\frac {1}{\lVert {\vec {u}}\rVert ^{2}}}{\begin{bmatrix}u_{x}^{2}&u_{x}u_{y}\\u_{x}u_{y}&u_{y}^{2}\end{bmatrix}}$

Al igual que con las reflexiones, la proyección ortogonal sobre una recta que no pasa por el origen es una transformación afín, no lineal.

Las proyecciones paralelas también son transformaciones lineales y se pueden representar simplemente mediante una matriz. Sin embargo, las proyecciones en perspectiva no lo son, y para representarlas con una matriz, se deben utilizar coordenadas homogéneas.

## Ejemplos en gráficos 3D por computadora

### Rotación

La matriz para rotar un ángulo θ alrededor de cualquier eje definido por un vector unitario de componentes (l, m, n) es

    ${\begin{bmatrix}ll(1-\cos \theta )+\cos \theta &ml(1-\cos \theta )-n\sin \theta &nl(1-\cos \theta )+m\sin \theta \\lm(1-\cos \theta )+n\sin \theta &mm(1-\cos \theta )+\cos \theta &nm(1-\cos \theta )-l\sin \theta \\ln(1-\cos \theta )-m\sin \theta &mn(1-\cos \theta )+l\sin \theta &nn(1-\cos \theta )+\cos \theta \end{bmatrix}}.$

### Reflexión

Para reflejar un punto a través de un plano $ax+by+cz=0$ (que pasa por el origen), se puede usar la expresión $\mathbf {A} =\mathbf {I} -2\mathbf {NN} ^{T}$, donde $\mathbf {I}$ es la matriz identidad 3x3 y $\mathbf {N}$ es el vector unitario tridimensional para el vector normal del plano. Si el módulo de $a,b,$ y $c$ es la unidad, la matriz de transformación se puede expresar como:

    $\mathbf {A} ={\begin{bmatrix}1-2a^{2}&-2ab&-2ac\\-2ab&1-2b^{2}&-2bc\\-2ac&-2bc&1-2c^{2}\end{bmatrix}}$

Se debe tener en cuenta que estos son casos particulares de una transformación de Householder en dos y tres dimensiones. Una reflexión sobre una línea o plano que no pasa por el origen no es una transformación lineal, es un transformación afín. Una matriz de transformación afín de 4x4, se puede expresar de la siguiente manera (asumiendo que la normal es un vector unitario):

    ${\begin{bmatrix}x'\\y'\\z'\\1\end{bmatrix}}={\begin{bmatrix}1-2a^{2}&-2ab&-2ac&-2ad\\-2ab&1-2b^{2}&-2bc&-2bd\\-2ac&-2bc&1-2c^{2}&-2cd\\0&0&0&1\end{bmatrix}}{\begin{bmatrix}x\\y\\z\\1\end{bmatrix}}$

donde $d=\mathbf {-p} \cdot \mathbf {N}$ para algún punto $\mathbf {p}$ del plano.

Si la cuarta componente del vector es 0 en lugar de 1, entonces solo se refleja la dirección del vector y su longitud permanece sin cambios, como si se reflejara a través de un plano paralelo que pasa por el origen. Esta es una propiedad muy útil, ya que permite la transformación de vectores posicionales y vectores normales con la misma matriz. Consúltese coordenadas homogéneas y transformaciones afines a continuación para obtener más información sobre el tema.

## Componer e invertir transformaciones

Una de las principales motivaciones para usar matrices para representar transformaciones lineales es que las transformaciones pueden componerse e invertirse fácilmente.

La composición se logra mediante la multiplicación de matrices. Los vectores (fila o columna) son operados por matrices, filas a la derecha y columnas a la izquierda. Dado que el texto se lee de izquierda a derecha, se prefieren los vectores fila cuando se componen las matrices de transformación:

Si A y B son las matrices de dos transformaciones lineales, entonces el efecto de aplicar primero A y luego B a un vector fila x viene dado por:

    $({\vec {x}}\mathbf {A} )\mathbf {B} ={\vec {x}}(\mathbf {AB} ).$

En otras palabras, la matriz de la transformación combinada A seguida de B es simplemente el producto de las dos matrices.

Cuando A es una matriz invertible, entonces existe una matriz $A^{−1}$ que representa una transformación que deshace A, ya que su composición con A es la matriz identidad. En algunas aplicaciones prácticas, la inversión se puede calcular utilizando algoritmos de inversión generales o realizando operaciones inversas (que tienen una interpretación geométrica obvia, como rotar en dirección opuesta) y luego componerlas en orden inverso.

## Otros tipos de transformaciones

### Transformaciones afines

Para representar una transformación afín con matrices, se pueden usar coordenadas homogéneas. Esto significa representar un 2-vector (x, y) como un 3-vector (x, y, 1), y de manera similar para dimensiones más altas. Con este sistema, la traslación se puede expresar mediante una multiplicación de matrices. La forma funcional $x'=x+t_{x};y'=y+t_{y}$ se convierte en:

    ${\begin{bmatrix}x'\\y'\\1\end{bmatrix}}={\begin{bmatrix}1&0&t_{x}\\0&1&t_{y}\\0&0&1\end{bmatrix}}{\begin{bmatrix}x\\y\\1\end{bmatrix}}.$

Todas las transformaciones lineales ordinarias se incluyen en el conjunto de transformaciones afines y se pueden describir como una forma simplificada de transformaciones afines. Por lo tanto, cualquier transformación lineal también se puede representar mediante una matriz de transformación general. Esta última se obtiene expandiendo la matriz de transformación lineal correspondiente en una fila y en una columna, llenando el espacio extra con ceros excepto la esquina inferior derecha, cuyo valor debe ser 1. Por ejemplo, la matriz de rotación en sentido antihorario (vista la figura desde arriba) se convierte en:

    ${\begin{bmatrix}\cos \theta &-\sin \theta &0\\\sin \theta &\cos \theta &0\\0&0&1\end{bmatrix}}$

Al utilizar matrices de transformación que contienen coordenadas homogéneas, las traslaciones se convierten en linealmente independientes y, por lo tanto, pueden ser similarmente combinadas con todos los demás tipos de transformaciones. La razón es que el plano real se puede hacer corresponder con el plano w=1 en el espacio proyectivo real, por lo que una traslación en el espacio euclídeo real se puede representar como un cizallamiento en el espacio proyectivo real. Aunque una traslación no es una transformación lineal en un espacio euclídeo 2-D o 3-D descrito por coordenadas cartesianas (es decir, no se puede combinar con otras transformaciones conservando la conmutatividad y otras propiedades), cuando se utiliza un espacio proyectivo descrito por coordenadas homogéneas con una componente adicional, puede asimilarse a una transformación lineal simple (un cizallamiento).

Pueden obtenerse más transformaciones afines mediante composición de dos o más transformaciones afines. Por ejemplo, dada una traslación T' con el vector $(t'_{x},t'_{y}),$ una rotación R en un ángulo θ en sentido antihorario, un escalado S con factores $(s_{x},s_{y})$ y una traslación T según el vector $(t_{x},t_{y}),$ el resultado M de T'RST es:

    ${\begin{bmatrix}s_{x}\cos \theta &-s_{y}\sin \theta &t_{x}s_{x}\cos \theta -t_{y}s_{y}\sin \theta +t'_{x}\\s_{x}\sin \theta &s_{y}\cos \theta &t_{x}s_{x}\sin \theta +t_{y}s_{y}\cos \theta +t'_{y}\\0&0&1\end{bmatrix}}$

Cuando se utilizan transformaciones afines, la componente homogénea de un vector de coordenadas (normalmente denominada w) nunca se modifica. Por lo tanto, se puede asumir con seguridad que siempre es 1 e ignorarlo. Sin embargo, esto no es cierto cuando se utilizan proyecciones en perspectiva.

### Proyección en perspectiva

Otro tipo de transformación, de importancia en gráficos 3D por computadora, es la perspectiva. Mientras que las proyecciones paralelas se utilizan para proyectar puntos en el plano de la imagen mediante líneas paralelas, la proyección en perspectiva proyecta puntos en el plano de la imagen en líneas que irradian desde un punto determinado, llamado centro de proyección. Esto significa que un objeto tiene una proyección más pequeña cuando está lejos del centro de proyección y una proyección más grande cuando está más cerca (véase también función recíproca).

La proyección en perspectiva más simple utiliza el origen como centro de proyección y el plano en $z=1$ como plano de la imagen. La forma funcional de esta transformación es $x'=x/z$; $y'=y/z$. Se puede expresar en coordenadas homogéneas como:

    ${\begin{bmatrix}x_{c}\\y_{c}\\z_{c}\\w_{c}\end{bmatrix}}={\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\\0&0&1&0\end{bmatrix}}{\begin{bmatrix}x\\y\\z\\1\end{bmatrix}}$

Tras realizar la multiplicación de matrices, la componente homogénea $w_{c}$ será igual al valor de $z$ y las otras tres no cambiarán. Por lo tanto, para volver al plano real se debe realizar la división homogénea o la división en perspectiva, dividiendo cada componente por $w_{c}$:

    ${\begin{bmatrix}x'\\y'\\z'\\1\end{bmatrix}}={\frac {1}{w_{c}}}{\begin{bmatrix}x_{c}\\y_{c}\\z_{c}\\w_{c}\end{bmatrix}}$

Se pueden componer proyecciones en perspectiva más complicadas combinando este tipo de matrices con rotaciones, escalas, traslaciones y cizallamientos, con el fin de mover el plano de la imagen y el centro de proyección donde se desee.

