# Matriz de transformação

Na álgebra linear, as transformações lineares podem ser representadas por matrizes. Se $T$ é uma transformação linear de $\mathbb {R} ^{n}$ para $\mathbb {R} ^{m}$ e ${\vec {x}}$ é um vetor coluna com $n$ entradas, então
$T({\vec {x}})=\mathbf {A} {\vec {x}}$
para alguma matriz $A$ de ordem $m\times n$, chamada de matriz de transformação de $T$. Note que $A$ tem $m$ linhas e $n$ colunas, enquanto a transformação $T$ é de $\mathbb {R} ^{n}$ para $\mathbb {R} ^{m}$. Existem expressões alternativas de matrizes de transformação envolvendo vetores linha que são preferidas por alguns autores.

## Usos

Matrizes permitem que transformações lineares arbitrárias sejam exibidas em um formato consistente, apropriado para cálculos. Isso também permite que as transformações sejam concatenadas facilmente (fazendo a multiplicação de suas matrizes).
As transformações lineares não são as únicas que podem ser representadas por matrizes. Algumas transformações que são não lineares em um espaço euclidiano n-dimensional R$^n$ podem ser representadas como transformações lineares no espaço n+1-dimensional R$^{n+1}$. Isso inclui tanto as transformações afins (como a translação) quanto as transformações projetivas. Por esse motivo, as matrizes de transformação 4 × 4 são amplamente utilizadas em computação gráfica 3D. Essas matrizes de transformação n+1-dimensionais são chamadas, dependendo de sua aplicação, de matrizes de transformação afins, matrizes de transformação projetivas ou, mais geralmente, matrizes de transformação não lineares. Com relação a uma matriz n-dimensional, uma matriz n+1-dimensional pode ser descrita como uma matriz aumentada.
Nas ciências físicas, uma transformação ativa é aquela que realmente muda a posição física de um sistema, e faz sentido mesmo na ausência de um sistema de coordenadas, enquanto uma transformação passiva é uma mudança na descrição do sistema físico por coordenadas (mudança de base). A distinção entre transformações ativas e passivas é importante. Por padrão, quando a expressão transformação é usada pos matemáticos ela se refere a uma transformação ativa, enquanto que ao ser usada por físicos ela pode se referir a qualquer um dos dois tipos.
Em outras palavras, uma transformação passiva se refere à descrição do mesmo objeto visto de dois sistemas de coordenadas diferentes.

## Encontrando a matriz transformação

Dada uma transformação linear $T(x)$ na forma de função, é fácil determinar a matriz de transformação A transformando cada um dos vetores da base padrão por T e, então, inserindo o resultado nas colunas de uma matriz. Em outras palavras,
$\mathbf {A} ={\begin{bmatrix}T({\vec {e}}_{1})&T({\vec {e}}_{2})&\cdots &T({\vec {e}}_{n})\end{bmatrix}}.$
Por exemplo, a função $T(x)=5x$ é uma transformação linear. A aplicação do processo acima (supondo que n = 2) mostra que
$T({\vec {x}})=5{\vec {x}}=5\mathbf {I} {\vec {x}}={\begin{bmatrix}5&&0\\0&&5\end{bmatrix}}{\vec {x}}.$
A representação matricial de vetores e operadores depende da base escolhida; uma matriz semelhante resultará de uma base alternativa. No entanto, o método para encontrar os componentes permanece o mesmo.
Mais especificamente, o vetor v pode ser representado em termos dos vetores de uma base $E=[{\vec {e}}_{1}{\vec {e}}_{2}\ldots {\vec {e}}_{n}]$ por meio de 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}$
Agora, expressando o resultado da ação da matriz de transformação A sobre ${\vec {v}}$, na 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}}.$
Os elementos $a_{i,j}$ da matriz A são determinados em relação a uma certa base E aplicando A em cada ${\vec {e}}_{j}=[00\ldots (v_{j}=1)\ldots 0]^{T}$, e observando o vetor de resposta
$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 equação define os elementos desejados, $a_{i,j}$, da j-ésima coluna da matriz A.

### Base de autovetores e matriz diagonal

Pode existir uma base especial para um operador em relação à qual as componentes formam uma matriz diagonal e, portanto, a complexidade da multiplicação se reduz a n. Ser diagonal significa que todos os coeficientes $a_{i,j}$ exceto os $a_{i,i}$ são zeros, deixando apenas um termo na soma $\sum a_{i,j}{\vec {e}}_{i}$ acima. Os elementos diagonais sobreviventes, $a_{i,i}$, são conhecidos como autovalores e designados com $\lambda _{i}$ na equação definidora, que se reduz a $A{\vec {e}}_{i}=\lambda _{i}{\vec {e}}_{i}$. A equação resultante é conhecida como equação característica. Os autovetores e autovalores são derivados dela por meio do polinômio característico.
Com a diagonalização, muitas vezes é possível mudar de e para bases de autovetores.

## Exemplos em 2 dimensões

As transformações geométricas mais comuns que mantêm a origem fixa são lineares, incluindo a rotação, dimensionamento, cisalhamento, reflexão e projeção ortogonal; se uma transformação afim não é uma translação pura, ela mantém algum ponto fixo, e esse ponto pode ser escolhido como origem para tornar a transformação linear. Em duas dimensões, as transformações lineares podem ser representadas usando uma matriz de transformação 2 × 2.

### Dilatação e contração

Uma mudança de escala no plano xy é uma transformação linear que altera todas as distâncias em uma dada direção por um fator constante, mas não afeta as distâncias na direção perpendicular. Apenas consideramos mudanças de escala ao longo dos eixos x e y. Uma mudança de escala ao longo do eixo x tem a forma x' = kx; y' = y para alguma constante k positiva. (Observe que se k for > 1, então essa mudança de escala é uma "dilatação"; se k for < 1, ela é uma "compressão". Além disso, se k = 1, a transformação é uma identidade, ou seja, não tem efeito.)
A matriz associada a uma mudança de escala de fator k ao longo do eixo x é dada por:
${\begin{bmatrix}k&0\\0&1\end{bmatrix}}$
Da mesma forma, uma mudança de escala por um fator k ao longo do eixo y tem a forma x' = x; y' = ky, então a matriz associada a esta transformação é
${\begin{bmatrix}1&0\\0&k\end{bmatrix}}$

### Compressão

Se os dois tipos de mudança de escala anteriores forem combinados com valores recíprocos, a matriz de transformação representará um aplicação de compressão:
${\begin{bmatrix}k&0\\0&1/k\end{bmatrix}}.$
Um quadrado com lados paralelos aos eixos é transformado em um retângulo que tem a mesma área do quadrado. A dilatação e a contração recíprocos mantêm o valor da área.

### Rotação

Para a rotação por um ângulo θ no sentido horário em torno da origem, a forma funcional é dada por $x'=x\cos \theta +y\sin \theta$ e $y'=-x\sin \theta +y\cos \theta$. Em termos matriciais, tem-se:
${\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 forma análoga, para uma rotação no sentido anti-horário em torno da origem, a forma funcional é $x'=x\cos \theta -y\sin \theta$ e $y'=x\sin \theta +y\cos \theta$, enquanto que a forma matricial é:
${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}\cos \theta &-\sin \theta \\\sin \theta &\cos \theta \end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}$
Essas fórmulas assumem que o eixo x aponta para a direita e o eixo y aponta para cima.

### Cisalhamento

Para a transformação de cisalhamento (visualmente semelhante à inclinação), existem duas possibilidades.
Um cisalhamento paralelo ao eixo x tem $x'=x+ky$ e $y'=y$. Escrito em forma de matriz, torna-se:
${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}1&k\\0&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}.$
Um cisalhamento paralelo ao eixo y tem $x'=x$ e $y'=y+kx$, cuja forma matricial é:
${\begin{bmatrix}x'\\y'\end{bmatrix}}={\begin{bmatrix}1&0\\k&1\end{bmatrix}}{\begin{bmatrix}x\\y\end{bmatrix}}.$

### Reflexão

Para a reflexão sobre uma reta que passa pela origem, seja $\scriptstyle {\vec {l}}=(l_{x},l_{y})$ um vetor paralelo à reta. Então, use a matriz de transformação:
$\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}}.$

### Projeção ortogonal

Para projetar um vetor ortogonalmente sobre uma reta que passa pela origem, seja ${\vec {u}}=(u_{x},u_{y})$ um vetor paralelo à reta. Então use a matriz de transformação:
$\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}}$
Como ocorre com as reflexões, a projeção ortogonal sobre uma linha que não passa pela origem é uma transformação afim, não linear.
As projeções paralelas também são transformações lineares e podem ser representadas simplesmente por uma matriz. No entanto, as projeções em perspectiva não são, e para representá-las matricialmente, podem ser usadas coordenadas homogêneas.

## Exemplos em computação gráfica 3D
### Rotação

A matriz de rotação de um ângulo θ em torno de um eixo qualquer definido pelo vetor unitário (l, m, n) é
${\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}}.$

### Reflexão

Para refletir um ponto em relação a um plano $ax+by+cz=0$ (que passa pela origem), pode-se usar $\mathbf {A} =\mathbf {I} -2\mathbf {NN} ^{T}$, em que $\mathbf {I}$ é a matriz identidade 3x3 e $\mathbf {N}$ é um vetor unitário tridimensional normal do plano. Se a norma L2 de $a,b,$ e $c$ é unitária, a matriz de transformação pode ser expressa como:
$\mathbf {A} ={\begin{bmatrix}1-2a^{2}&-2ab&-2ac\\-2ab&1-2b^{2}&-2bc\\-2ac&-2bc&1-2c^{2}\end{bmatrix}}.$
Observe que esses são casos particulares de uma reflexão de Householder em duas ou três dimensões. Uma reflexão em relação a uma reta ou plano que não passa pela origem não é uma transformação linear — é uma transformação afim — como uma matriz de transformação afim 4x4, pode ser expressa da seguinte forma (assumindo que o vetor normal é unitário):
${\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}},$
em que $d=\mathbf {-p} \cdot \mathbf {N}$ por algum ponto $\mathbf {p}$ no plano.
Se o 4º componente do vetor for 0 ao invés de 1, então apenas a direção do vetor é refletida e seu comprimento permanece inalterado, como se fosse espelhado em relação a um plano paralelo que passa pela origem. Esta é uma propriedade útil, pois permite a transformação tanto de vetores de posição quanto de vetores normais com a mesma matriz. Consulte coordenadas homogêneas e transformações afins abaixo para obter mais explicações.

## Compondo e invertendo transformações

Uma das principais motivações para o uso de matrizes para representar transformações lineares é que as transformações podem então ser facilmente compostas e invertidas.
A composição é realizada pela multiplicação matricial. As matrizes agem sobre os vetores linha e coluna, atuando sobre as linhas pela direita e sobre as colunas pela esquerda. Uma vez que o texto é lido da esquerda para a direita, os vetores linha são mais convenientes ao compor as matrizes de transformação:
Se A e B são as matrizes de duas transformações lineares, o efeito de aplicar primeiro A e depois B a um vetor linha x é dado por:
$({\vec {x}}\mathbf {A} )\mathbf {B} ={\vec {x}}(\mathbf {AB} ).$
Em outras palavras, a matriz da transformação combinada A seguida por B é simplesmente o produto das matrizes individuais.
Quando A é uma matriz invertível, existe uma matriz A$^{−1}$ que representa uma transformação que "desfaz" a ação de A, pois sua composição com A é a matriz identidade. Em algumas aplicações práticas, a inversão pode ser calculada usando algoritmos gerais de inversão ou executando operações inversas (que têm interpretação geométrica óbvia, rotacionar no sentido oposto) e, então, compondo-as na ordem inversa.

## Outros tipos de transformações
### Transformações afins

Para representar transformações afins por meio de matrizes, podem ser usadas coordenadas homogêneas. Isso significa representar um 2-vetor ( x, y ) como um 3-vetor ( x, y, 1), e de forma análoga para dimensões mais altas. Usando este sistema, a translação pode ser expressa por uma multiplicação matricial. A forma funcional $x'=x+t_{x};y'=y+t_{y}$ torna-se:
${\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 as transformações lineares comuns estão inclusas no conjunto das transformações afins e podem ser descritas como uma forma simplificada de transformações afins. Portanto, qualquer transformação linear também pode ser representada por uma matriz de transformação geral. Este último é obtido expandindo a matriz da transformação linear correspondente em uma linha e coluna, preenchendo-as com zeros, exceto no canto inferior direito, que deve ser definido como 1. Por exemplo, a matriz de rotação no sentido anti-horário de antes torna-se:
${\begin{bmatrix}\cos \theta &-\sin \theta &0\\\sin \theta &\cos \theta &0\\0&0&1\end{bmatrix}}$
Usando matrizes de transformação contendo coordenadas homogêneas, as translações tornam-se linear e, portanto, podem ser perfeitamente mescladas com todos os outros tipos de transformações. A razão é que o plano real é mapeado para o plano w = 1 no espaço projetivo real e, portanto, a translação no espaço euclidiano real pode ser representada como um cisalhamento no espaço projetivo real. Embora uma translação seja uma transformação não linear em um espaço euclidiano 2-D ou 3-D descrito por coordenadas cartesianas (ou seja, não pode ser combinada com outras transformações enquanto preserva a comutatividade e outras propriedades), ela se torna, em um projetivo 3-D ou 4-D descrito por coordenadas homogêneas, uma simples transformação linear (um cisalhamento).
Mais transformações afins podem ser obtidas pela composição de duas ou mais transformações afins. Por exemplo, dada uma translação T ' com vetor $(t'_{x},t'_{y}),$ uma rotação R por um ângulo θ anti-horário, um dimensionamento S com fatores $(s_{x},s_{y})$ e uma translação T do vetor $(t_{x},t_{y}),$ o resultado M de T'RST é:
${\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}}.$
Ao usar transformações afins, o componente homogêneo de um vetor de coordenadas (normalmente chamado de w ) nunca será alterado. Portanto, pode-se supor com segurança que é sempre 1 e ignorá-lo. No entanto, isso não é verdade ao usar projeções em perspectiva.

### Projeção em perspectiva

Outro tipo de transformação, de importância na computação gráfica 3D, é a projeção em perspectiva. Enquanto as projeções paralelas são usadas para projetar pontos spbre o plano da imagem ao longo de linhas paralelas, a projeção em perspectiva projeta pontos sobre o plano da imagem ao longo de linhas que partem de um único ponto, denominado centro de projeção. Isso significa que um objeto tem uma projeção menor quando está longe do centro de projeção e uma projeção maior quando está mais próximo (ver também função recíproca).
A projeção em perspectiva mais simples usa a origem como centro de projeção e o plano em $z=1$ como o plano da imagem. Então a forma funcional desta transformação é $x'=x/z$; $y'=y/z$. Podemos expressar isso em 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}}.$
Depois de realizar a multiplicação matricial, o componente homogêneo $w_{c}$ será igual ao valor de $z$ e os outros três não mudarão. Portanto, para mapear de volta para o plano real, devemos realizar a divisão homogênea ou divisão de perspectiva, dividindo 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}}$
Projeções de perspectiva mais complicadas podem ser compostas combinando-se esta com rotações, dimensionamentos, translações e cisalhamentos para mover o plano da imagem e o centro de projeção para onde eles forem desejados.

## Veja também

* Projeção em 3D
* Mudança de base
* Retificação de imagem
* Transformação rígida
* Transformação (função)
* Geometria das transformações