Cosa sono le trasformazioni affine?


Risposte:


23

Una trasformazione affine è una trasformazione lineare + un vettore di traduzione.

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

Può essere applicato a singoli punti o linee o persino curve di Bezier. Per le linee, mantiene la proprietà che le linee parallele rimangano parallele. Per le curve di Bezier, conserva la proprietà dello scafo convesso dei punti di controllo.

Moltiplicato, produce 2 equazioni per produrre una coppia di coordinate "trasformata" dalla coppia originale e un elenco di costanti . (x,y)(x,y)(a,b,c,d,e,f)

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

Convenientemente, la trasformata lineare e il vettore di traduzione possono essere uniti in una matrice 3D che può operare su coordinate omogenee 2D.

[xy1]=[xy1][ab0cd0ef1]

Che produce le stesse 2 equazioni sopra.

Molto convenientemente , le matrici stesse possono essere moltiplicate insieme per produrre una terza matrice (di costanti) che esegue la stessa trasformazione dell'originale 2 che avrebbe eseguito in sequenza. In parole povere, le moltiplicazioni di matrice sono associative.

[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]

In alternativa, puoi prendere in considerazione alcuni tipi di trasformazioni di base e comporre trasformazioni più complesse combinandole (moltiplicandole insieme).

Trasformazione dell'identità

trasformazione dell'identità

[100010001]

scalata

scalata

[Sx000Sy0001]

* Nota: è possibile eseguire una riflessione con i parametri di ridimensionamento o .(Sx,Sy)=(1,1)(1,1)

Traduzione

traduzione

[100010TxTy1]

Inclina x di y

inclina x di y

[1Qx0010001]

Inclina y di x

inclina y di x

[100Qy10001]

Rotazione

rotazione

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

[Nota qui ho mostrato la forma di Matrix che accetta un vettore di riga a sinistra . La trasposizione di queste matrici funzionerà con un vettore di colonna sulla destra.]

Una matrice composta esclusivamente da ridimensionamento, rotazione e traslazione può essere scomposta in questi tre componenti .


5
Bella risposta. Potresti voler aggiungere che un modo per pensare alle trasformazioni affine è che mantengono parallele le linee parallele. Quindi, ridimensionamento, rotazione, traslazione, taglio e combinazioni, contano come affini. La proiezione prospettica è un esempio di trasformazione non affine.
ap_

2
Potresti aggiungere alcune foto. Se non lo farò: P Potrebbe anche essere utile menzionare l'ordine nella matrice e l'orientamento di riga / colonna è arbitrario. E che le rotazioni in 3d non sono comutative.
joojaa,

2
@joojaa Ho fatto delle foto! fonti postscript
luser droog

1
Potrebbe anche valere la pena ricordare che le trasformazioni corporee rigide sono un sottoinsieme di trasformazioni affini e che le trasformazioni affine sono un sottoinsieme di trasformazioni prospettiche.
user1118321

Continuo a rileggere questo ogni tanto e non riesco proprio a dirlo, ma potrei avere le trasformazioni oblique descritte in modo errato. Gli skews sono confusi. Se qualcuno vede questo e vuole provare la modifica, per favore aiutatemi a chiarire quella parte!
Luser droog
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.