O que são transformações afins?


Respostas:


23

Uma transformação afim é uma transformação linear + um vetor de conversão.

[xy]=[xy][abcd]+[ef]

Pode ser aplicado a pontos individuais ou a linhas ou mesmo curvas de Bezier. Para linhas, ele preserva a propriedade de que linhas paralelas permanecem paralelas. Para curvas de Bezier, preserva a propriedade do casco convexo dos pontos de controle.

Multiplicado, produz 2 equações para obter um par de coordenadas "transformadas" partir do par original e uma lista de constantes . (x,y)(x,y)(a,b,c,d,e,f)

x=ax+cy+ey=bx+dy+f

Convenientemente, a transformação Linear e o vetor Translação podem ser reunidos em uma matriz 3D que pode operar sobre coordenadas homogêneas 2D.

[xy1]=[xy1][ab0cd0ef1]

O que produz as mesmas 2 equações acima.

Muito convenientemente , as próprias matrizes podem ser multiplicadas juntas para produzir uma terceira matriz (de constantes) que realiza a mesma transformação que o 2 original faria em sequência. Simplificando, as multiplicações de matriz são associativas.

[xy1]=([xy1][ab0cd0ef1])[gh0ij0km1]=[ax+cy+ebx+dy+f1][gh0ij0km1]=[g(ax+cy+e)+i(bx+dy+f)+kh(ax+cy+e)+j(bx+dy+f)+m1]T=[xy1]([ab0cd0ef1][gh0ij0km1])=[xy1][ag+biah+bj0cg+dich+dj0eg+fi+keh+fj+m1]

Como alternativa, você pode considerar alguns tipos básicos de transformação e compor qualquer transformação mais complexa combinando-as (multiplicando-as juntas).

Transformação de identidade

transformação de identidade

[100010001]

Dimensionamento

escala

[Sx000Sy0001]

* Nota: uma reflexão pode ser realizada com parâmetros de escala ou .(Sx,Sy)=(1,1)(1,1)

Tradução

tradução

[100010TxTy1]

Inclinar x por y

inclinar x por y

[1Qx0010001]

Inclinar y por x

inclinar y por x

[100Qy10001]

Rotação

rotação

[cosθsinθ0sinθcosθ0001]

[Observe que eu mostrei o formulário de Matrix aqui que aceita um vetor de linha à esquerda . A transposição dessas matrizes funcionará com um vetor de coluna à direita.]

Uma matriz composta exclusivamente de redimensionamento, rotação e translação pode ser decomposta de volta nesses três componentes .


5
Ótima resposta. Você pode acrescentar que uma maneira de pensar em transformações afins é que elas mantêm linhas paralelas paralelas. Portanto, escala, rotação, translação, cisalhamento e combinações contam como afins. A projeção em perspectiva é um exemplo de transformação não afim.
ap_

2
Você pode adicionar algumas fotos. Se você não quiser: P Também pode ser bom mencionar a ordem na matriz e a orientação da linha / coluna é arbitrária. E que as rotações em 3d não são comutativas.
Joojaa

2
@joojaa eu fiz fotos! fontes postscript
luser droog

1
Também vale a pena mencionar que as transformações de corpo rígido são um subconjunto de transformações afins e as transformadas afins são um subconjunto de transformações em perspectiva.
user1118321

Continuo relendo isso de vez em quando e não sei dizer direito, mas posso ter as transformações de inclinação descritas incorretamente. Skews são confusos. Se alguém vir isso e quiser experimentar a edição, ajude a esclarecer essa parte!
luser droog
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.