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) p por A, e em seguida por B, e então por C, pode ser escrita como:

p=C(B(Ap)), Como a multiplicação entre matrizes é associativa, podemos remover os parênteses:

p=CBAp.

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

    CBAABC.

  • Na expressão p=CBAp, 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 A.
    • Em 2º lugar, aplica-se a transformação representada pela matriz B.
    • Por último, a transformação representada pela matriz C.


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

    pT=(CBAp)T=pTATBTCT.

    Observe que, neste caso, pT é 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 p=CBAp.


No caso geral, se um ponto ou vetor é representado por uma matriz coluna p, então a expressão

p=AkAk1A1p

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

A1,A2,,Ak.

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,

M=AkAk1A1,

onde M representa as transformações na ordem A1,A2,,Ak e pode ser utilizada para transformar quantos pontos/vetores forem necessários:

v1=Mv1,v2=Mv2,

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.