7.3 Concatenação de transformações

Podemos expressar uma sequência, composição ou concatenação de transformações através de um produto matricial.

Por exemplo, a transformação de um ponto (ou vetor) \(\mathbf{p}\) por \(\mathbf{A}\), e em seguida por \(\mathbf{B}\), e então por \(\mathbf{C}\), pode ser escrita como:

\[\mathbf{p}'=\mathbf{C}(\mathbf{B}(\mathbf{A}\mathbf{p})),\] Como a multiplicação entre matrizes é associativa, podemos remover os parênteses:

\[\mathbf{p}'=\mathbf{C}\mathbf{B}\mathbf{A}\mathbf{p}.\]

Observação
  • Lembre-se que, em geral, o produto matricial não é comutativo:

    \[\mathbf{CBA}\neq\mathbf{ABC}.\]

  • Na expressão \(\mathbf{p}'=\mathbf{C}\mathbf{B}\mathbf{A}\mathbf{p}\), a ordem de aplicação das transformações é determinada pela leitura da direita para a esquerda:

    • Em 1º lugar, aplica-se a transformação representada pela matriz \(\mathbf{A}\).
    • Em 2º lugar, aplica-se a transformação representada pela matriz \(\mathbf{B}\).
    • Por último, a transformação representada pela matriz \(\mathbf{C}\).


    Se quisermos ler a ordem das transformações da esquerda para a direita, precisamos antes calcular a transposta da expressão:

    \[ \begin{align} \mathbf{p}'^T&=(\mathbf{C}\mathbf{B}\mathbf{A}\mathbf{p})^T\\ &=\mathbf{p}^T\mathbf{A}^T\mathbf{B}^T\mathbf{C}^T. \end{align} \]

    Observe que, neste caso, \(\mathbf{p}^T\) é uma matriz linha multiplicada à esquerda (pré-multiplicação) da matriz de transformação. Como nossa convenção neste curso é usar representações de pontos e vetores como matrizes coluna multiplicadas à direita (pós-multiplicação), usaremos sempre a expressão original \(\mathbf{p}'=\mathbf{C}\mathbf{B}\mathbf{A}\mathbf{p}\).


No caso geral, se um ponto ou vetor é representado por uma matriz coluna \(\mathbf{p}\), então a expressão

\[\mathbf{p}'=\mathbf{A}_k \mathbf{A}_{k-1}\dots\mathbf{A}_1 \mathbf{p}\]

representa a transformação do ponto/vetor por uma sequência de transformações na ordem

\[\mathbf{A}_1, \mathbf{A}_2, \dots, \mathbf{A}_k.\]

Se for necessário aplicar uma mesma sequência de transformações a diferentes pontos ou vetores, é desejável primeiramente armazenar o resultado da multiplicação das matrizes de transformação em uma única matriz. Por exemplo,

\[ \mathbf{M}=\mathbf{A}_k \mathbf{A}_{k-1}\dots\mathbf{A}_1, \]

onde \(\mathbf{M}\) representa as transformações na ordem \(\mathbf{A}_1, \mathbf{A}_2, \dots, \mathbf{A}_k\) e pode ser utilizada para transformar quantos pontos/vetores forem necessários:

\[ \mathbf{v}_1'=\mathbf{M}\mathbf{v}_1,\\ \mathbf{v}_2'=\mathbf{M}\mathbf{v}_2,\\ \vdots \]

A malha de triângulos de um modelo geométrico pode ser composta por milhares de vértices, e a transformação de um modelo exige a transformação da posição de todos os seus vértices. Assim, a concatenação de transformações em uma única matriz aumenta a eficiência do processamento geométrico.