Gráficos de ComputadorTransformações Geométricas em Duas e Três Dimensões
Coordenadas Homogêneas e Matrizes de Transformação
26 min de leitura · 3ª mais cobrada em Gráficos de Computador
Em computação gráfica, um objeto é um conjunto de pontos. Colocá-lo na cena é aplicar a cada ponto uma transformação geométrica: translação (deslocar), rotação (girar) e escala (esticar ou comprimir). O pipeline trata as três da mesma forma, como produto de matrizes, desde que o ponto esteja em coordenadas homogêneas, e o mapa afim assim obtido preserva convexidade enquanto o vetor normal segue a inversa transposta da parte linear.
Um ponto cartesiano no plano vira o vetor coluna . Em 3D, vira . A última entrada é a coordenada . Nesta página e os vetores são coluna: a matriz mais à direita age primeiro.
Por que existe
Uma transformação linear em obedece . Rotação em torno da origem e escala em torno da origem satisfazem isso: a origem fica parada, e uma matriz já descreve o mapa.
Translação, , não é linear. Ela manda a origem para . Nenhuma matriz reproduz um deslocamento, porque toda matriz fixa a origem. Com a coordenada extra , o mesmo deslocamento vira a última coluna de uma matriz : o produto soma justamente quando .
Dado um vetor homogêneo com , o ponto cartesiano é . A divisão por devolve o plano. O caso representa uma direção (um ponto no infinito). Não corresponde a um ponto finito no plano cartesiano. Nas matrizes desta página a última linha é , ou em 3D; permanece e a divisão não entra no cálculo.
Rotação e escala em torno da origem já são lineares: não precisam de . A coordenada homogênea existe para a translação entrar no mesmo produto . Encaixar e no formato é só para poder multiplicá-las por numa sequência única.
Por exemplo, o ponto transladado por :
Sem a terceira coluna, a identidade deixaria no lugar: não há entrada onde guardar o . O mesmo ponto girado em torno da origem não precisa dessa coluna extra: a matriz com e já manda em . O produto com realiza o mapa afim ; a imagem de um convexo e o destino do vetor normal não seguem a mesma regra.
Imagem afim de um convexo
Um conjunto é convexo quando contém o segmento entre quaisquer dois dos seus pontos: se e , então . A transformação que as homogêneas empacotam, com a parte linear (o bloco ou ) e a translação da última coluna, é afim.
preserva combinações convexas:
O segmento entre e é a imagem do segmento entre e . Se esse segmento estava em , a imagem está em . Logo a imagem de um convexo é convexa. Translação, rotação e escala (mesmo com fatores distintos) são afins; um triângulo, um disco ou um poliedro convexo permanece convexo. A translação impede de ser linear quando , mas não impede a preservação das combinações convexas.
O triângulo de vértices , , é convexo. Com — escala e translação — os vértices vão a , , . O ponto vai a , que é . A imagem é o triângulo com os novos vértices, ainda convexo.
Pontos e tangentes viajam com ; o vetor perpendicular à tangente (o normal) não.
Normal pela inversa transposta
Um vetor tangente é diferença de pontos: em homogêneas tem e transforma-se só pela parte linear, . O vetor normal num ponto é a direção perpendicular ao plano tangente: para toda tangente naquele ponto. Depois do mapa, a condição passa a ser . Isso não é , salvo quando é uma rotação.
De quer-se para as mesmas . Então (a menos de escala), e
: inverte o bloco linear e transpõe, em qualquer ordem. A translação não entra: normal é direção. Só aparece. A fórmula pede invertível — translação, rotação e escala com fatores não nulos. Se é ortogonal, e : aí o normal viaja com . Escala não uniforme quebra essa coincidência.
A reta tem tangente e normal . Com a escala , a tangente vira . O produto não é perpendicular a : . Já , e .
As matrizes canônicas da seção seguinte são casos desse mapa afim: parte linear no bloco esquerdo e, se houver translação, última coluna.
Matrizes no plano
Translação por , rotação anti-horária em torno da origem, escala com fatores :
usa de fato a coluna extra: e ficam nela. Em e em , o bloco já é a transformação inteira; o no canto só as deixa do mesmo tamanho que , para o produto fazer sentido.
Não confunda pivô na origem com pivô no centro de massa. A matriz sozinha gira em torno de . Se o objeto está deslocado, o centro de massa não coincide com a origem, e arrasta numa órbita ao redor de . Para girar em torno de : leva à origem, aplica , devolve ,
Um triângulo com vértices , , tem centroide . Com , a regra manda os vértices em , , .
O novo centroide é , que é aplicado ao centroide antigo: o centroide deslocou-se. Se o pivô fosse o centro de massa, o centroide teria ficado em .
Matrizes no espaço
O padrão se repete em : uma dimensão a mais para a translação. Translação , escala e rotações em torno dos eixos coordenados:
gira no plano (o eixo fica parado). gira no plano . gira no plano : é a do plano, embutida. Como em 2D, só precisa da coluna extra; , , e já são lineares em .
e não comutam. Com , e . O ponto no eixo : o manda em ; em seguida deixa parado, porque só mistura e . Na ordem inversa, manda em e conserva o eixo : o ponto permanece . Os dois resultados diferem.
Escala e depois translação
A multiplicação é associativa e não comutativa: aplica primeiro. Uma matriz que mistura escala na diagonal e translação na última coluna,
é o produto , não .
coloca e na diagonal e deixa a terceira coluna . é a identidade no bloco , com na terceira coluna. O produto, da direita para a esquerda, aplica e depois :
A terceira coluna de é aplicado a depois de ter deixado esse vetor intacto: e entram sem serem escalados. Já produziria terceira coluna : a translação seria escalada.
Expandindo o produto,
O ponto é escalado em relação à origem e depois deslocado. Com , , , e ,
no mesmo ponto faz primeiro o deslocamento e depois a escala: . Diferente de .
Escala uniforme em torno da origem comuta com rotação em torno da origem: no bloco , é múltiplo da identidade, então . A ordem só deixa de importar nesse caso. Escala seguida de translação não comuta com translação seguida de escala, porque a translação não fixa a origem.
Em Resumo
Homogêneas (ou ) tornam a translação um produto ; devolve o cartesiano por divisão, e é uma direção.
O mapa afim preserva combinações convexas: a imagem de um convexo é convexa.
Pontos e tangentes viajam com ; o normal transforma-se por , não por . Translação não age no normal.
Rotação e escala em torno da origem são lineares e não exigem ; sozinha gira na origem. Pivô em : .
Canônicas 2D: , , . Canônicas 3D: , , , , . Só a translação precisa da coluna extra.
Em vetor coluna a matriz da direita age primeiro. escala e depois translada; e a não comutam; escala uniforme e rotação na origem comutam.