O que são transformações afins?


Respostas:


23

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

[x′y′]=[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′=a⋅x+c⋅y+ey′=b⋅x+d⋅y+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.

[x′y′1]=[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.

[x″y″1]=([xy1]⋅[ab0cd0ef1])⋅[gh0ij0km1]=[a⋅x+c⋅y+eb⋅x+d⋅y+f1]⋅[gh0ij0km1]=[g(a⋅x+c⋅y+e)+i(b⋅x+d⋅y+f)+kh(a⋅x+c⋅y+e)+j(b⋅x+d⋅y+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.