7.2 Coordenadas homogêneas
A expressão
v′=Av,v′=Av,
onde
v′=[x′y′z′],A=[a11a12a13a21a22a23a31a32a33],v=[xyz],v′=⎡⎢⎣x′y′z′⎤⎥⎦,A=⎡⎢⎣a11a12a13a21a22a23a31a32a33⎤⎥⎦,v=⎡⎢⎣xyz⎤⎥⎦,
representa uma transformação linear do vetor v∈R3v∈R3.
Podemos considerar que vv também representa um ponto no frame padrão do espaço euclidiano tridimensional: é o ponto resultante do deslocamento da origem pelo vetor vv. Com isso podemos aplicar transformações lineares sobre pontos. Entretanto, essa notação não permite diferenciar o que é a representação de um ponto e o que é a representação de um vetor. Além disso, a matriz de transformação linear no R3R3 não é capaz de representar transformações que envolvem deslocamento de pontos. A simples operação
p′=p+t,p′=p+t,
onde pp é um ponto e tt é um vetor, não pode ser representada como uma matriz de transformação linear na forma
p′=Ap[x′y′z′]=[a11a12a13a21a22a23a31a32a33][xyz].
Felizmente, podemos contornar essas dificuldades se representarmos pontos e vetores do R3 em um sistema de coordenadas homogêneas no espaço R4.
Como vimos na definição de combinação afim (seção 6.2), podemos considerar que é válido multiplicar um escalar a por um ponto P, de modo que
0P=0,1P=P.
Um ponto P=(x,y,z) no frame {P0,v1,v2,v3} é definido unicamente como
P=xv1+yv2+zv3+P0.
Em coordenadas homogêneas, P pode ser representado pela matriz coluna de coeficientes
p=[xyz1],
uma vez que
P=xv1+yv2+zv3+P0=[xyz1][v1v2v3P0].
De forma semelhante, um vetor v no mesmo frame,
v=xv1+yv2+zv3,
pode ser definido em coordenadas homogêneas pela matriz coluna de coeficientes
v=[xyz0],
uma vez que
v=xv1+yv2+zv3=[xyz0][v1v2v3P0].
Na expressão
p′=Ap,
onde
p′=[x′y′z′w′],A=[a11a12a13a14a21a22a23a24a31a32a33a340001],p=[xyzw],
a matriz A representa uma transformação linear no R4 e uma transformação afim no R3.
A transformação afim preserva a operação de combinação afim, isto é,
T(aP+(1−a)Q)=aT(P)+(1−a)T(Q)
para quaisquer pontos P e Q, e qualquer escalar a∈[0,1].
Assim como a transformação linear transforma espaços vetoriais, a transformação afim de um ponto p equivale à transformação do frame de p em outro frame (frame de p′).
Com a matriz de transformação afim, conseguimos representar tanto as transformações de espaços vetoriais quanto as transformações que envolvem deslocamento de pontos.
Como mostra a figura 7.1, a parte 3×3 superior de A representa uma ou mais transformações lineares em R3 (como a rotação, escala e reflexão, abordadas na seção 7.4). A parte 3×1 da última coluna ([a14a24a34]T) representa uma translação (deslocamento de ponto).
Figura 7.1: Parte de transformação linear e translação em uma matriz na notação homogênea.
Agora podemos representar o deslocamento p′=p+t através de uma operação matricial:
p′=Ap[x+txy+tyz+tz1]=[100tx010ty001tz0001][xyz1].
Observe como, de fato, os fatores de deslocamento estão na parte 3×1 da última coluna.
Em p=[xyzw]T, a coordenada w é chamada de coordenada homogênea.
A escolha de fazer w=1 para pontos e w=0 para vetores permite diferenciar, sem ambiguidades, as operações de adição de vetor com vetor, diferença entre pontos, e adição de ponto com vetor:
Na adição de vetor com vetor, o resultado é um vetor (coordenada w=0):
u+v=w,[uxuyuz0]+[vxvyvz0]=[ux+vxuy+vyuz+vz0].
Na diferença entre pontos, o resultado é um vetor (coordenada w=0):
p−q=u,[pxpypz1]−[qxqyqz1]=[px−qxpy−qypz−qz0].
Na adição de ponto com vetor, o resultado é um ponto (coordenada w=1):
p+u=q,[pxpypz1]+[uxuyuz0]=[px+uxpy+uypz+uz1].
Coordenadas homogêneas (x,y,z,w) podem ser convertidas de volta para coordenadas cartesianas (x′,y′,z′) do espaço euclidiano 3D através da divisão de x, y, z por w:
(x′,y′,z′)=(xw,yw,zw).
Assim, um ponto p em coordenadas homogêneas,
p=[xyz1],
corresponde, em coordenadas cartesianas, ao ponto
p′=[xyz]=[x/1y/1z/1].
Em transformações afins expressas de forma homogênea, o valor de w será sempre 0 ou 1. Entretanto, em matrizes de transformação projetiva, w poderá assumir outros valores.
Transformações projetivas serão abordadas no próximo capítulo. Entretanto, perceba que a divisão por w faz com que um ponto (x′,y′,z′) do espaço euclidiano 3D corresponda a infinitos pontos no espaço de dimensão extra (4D). Em particular, os pontos (sx,sy,sz,sw), onde s≠0 e w≠0, correspondem ao mesmo ponto (x′,y′,z′) do espaço euclidiano:
(x′,y′,z′)=(sxsw,sysw,szsw)=(xw,yw,zw).
Em outras palavras, os pontos (sx,sy,sz,sw) do R4 são projetados em um mesmo ponto (x′,y′,z′) do R3. Esse comportamento será útil para simular o efeito de diminuição do tamanho de objetos em uma projeção perspectiva. Em particular, note que:
- Se um objeto é formado por pontos com coordenada homogênea w>1, o objeto diminui de tamanho após a conversão para o espaço euclidiano;
- Se um objeto é formado por pontos com coordenadas homogênea 0≤w<1, o objeto aumenta de tamanho após a conversão para o espaço euclidiano.