lunedì 28 aprile 2014

Matrici di trasformazione 2 - Affinità


Matrice di trasformazione

Riprendiamo la formula delle trasformazioni lineari vista nel post precedente:

Dati i due versori fondamentali
e1 = [1 0] ed e2 = [0 1]
ciascun vettore a due componenti si può scrivere come combinazione lineare di questi che sono una base dello spazio a due dimensioni.
Quindi, anche nel caso dei punti associati, se consideriamo:
A = (2, 3) B = (-1, 2) C = (4, -1)
I vettori possono essere scritti nella forma:
a = [2 3] = 2 e1 + 3 e2 = 2*[1 0]+ 3*[0 1]
b = [-1 2] = - e1 + 2 e2 = -1*[1 0]+ 2*[0 1]
c = [4 -1] = 4 e1 - e2 = 4*[1 0]+ -1*[0 1]


Eseguiamo le trasformazioni di e1 ed e2 :
si può notare che questi vengono trasformati rispettivamente nella prima e nella seconda riga della matrice di trasformazione.
Questa proprietà ci aiuta a determinare con facilità la matrice di trasformazione.

Dato il punto P = (3, 1) ed il suo vettore associato p = [3 1]
Consideriamo la trasformazione:
dove p viene trasformato in p' = [5 6]
Si può notare che i versori fondamentali vengono trasformati in:
e1 = [1 0] viene trasformato in: e'1 = [2 1]
e2 = [0 1] viene trasformato in: e'2 = [-1 3]

Il vettore p si ottiene come combinazione lineare di di e1 ed e2
p = [3 1] = 3e1 + e2

ed il vettore p' si ottiene come combinazione lineare di e'1 ed e'2
p' = 3 e'1 + e'2 = 3 [2 1] + [-1 3] = [6 3] + [-1 3] = [5 6]

Il vettore P' quindi è la combinazione lineare secondo gli stessi coefficienti dei vettori che corrispondono ai versori fondamentali come si può vedere nella figura sottostante.
Per p si prende come riferimento la griglia cartesiana nera e per p' la griglia affine rossa.

Utilizzando la proprietà esposta diventa facile individuare le matrici di trasformazione di alcune trasformazioni particolari.

Nello stiramento di rapporto h nella direzione dell'asse delle x il vettore e1 = [1 0] va trasformato in e'1 = [h 0] mentre e2 deve restare invariato quindi la matrice di trasformazione sarà Stx.
Nello stiramento di rapporto k nella direzione dell'asse delle y il vettore e2 = [0 1] va trasformato in e'2 = [0 k] mentre e1 deve restare invariato quindi la matrice di trasformazione sarà Sty.
Se h = k abbiamo lo stesso rapporto di stiramento nelle due direzioni quindi si tratta di una omotetia con la matrice di trasformazione Om.


Stiramenti con GeoGebra

Costruiamo un'applet GeoGebra per fare stiramenti di figure

La matrice T è costruita utilizzando i valori nell'area gialla del foglio di calcolo che vengono usati per definire i vertici del triangolo.
La matrice T' viene costruita moltiplicando T per la matrice di trasformazione ed usata per costruire il triangolo trasformato.
La scelta della trasformazione viene fatta mediante tre caselle di controllo selezionabili una sola alla volta. Ad ogni selezione viene mostrato uno slider che serve per impostare il valore numerico del rapporto di stiramento.
La scelta esclusiva sulle tre variabili logiche (e, f, g), lo slider che va mostrato e l'operazione che va eseguita sono controllate mediante comandi GeoGebraScript che mostriamo di seguitoper la variabile logica e che controlla lo stiramento orizzontale.

e = true la variabile cliccata viene impostata a Vero
f = false
g = false
h = 1 Viene assegnato il rapporto di stiramento orizzontale
ImpVisibileInVista[h, 1, true ] viene mostrato lo slider h
ImpVisibileInVista[k, 1, false ]
ImpVisibileInVista[t, 1, false ]
T' = T*Stx viene eseguita la trasformazione

In modo analogo si procede per la variabile f che controlla los tiramento vertoicale e la g che controlla l'omotetia.
Chi vuole scaricare l'applet può trovarla all'indirizzo:



Matrice di rotazione

Con la stessa regola, tenendo presente che i punti A e B devono essere ruotati di un angolo α si possono facilmente trovare i punti A' e B' e di conseguenza la matrice R di rotazione.

La trasformazione in forma matriciale diventa:

La regola del prodotto righe per colonne tra le matrici ci permette di scrivere anche la forma cartesiana che non è facile da ricordare.

La realizzazione del file GeoGebra che esegue una rotazione rispetto allorigine degli assi non presenta difficoltà rispetto a quanto già visto, basta definire uno slider nella variabile alfa ed inserire le formule opportune nella matrice R.

Contenuto cella B1: cos(alfa) contenuto cella C1: sin(alfa)
Contenuto cella B2: -sin(alfa) contenuto cella C2: cos(alfa)

Come visto nel post sulle isometrie si possono fare prodotti di trasformazioni eseguendo il prodotto delle matrici di trasformazione e si possono fare anche le trasformazioni inverse, che riportano il punto nella sua posizione iniziale moltiplicando per le matrici inverse.


Traslazione

La traslazione di un punto nel piano cartesiano si realizza sommando alle sue coordinate un vettore traslazione. Le due forme cartesiana e matriciale sono:

Rispetto alle trasformazioni viste finora ci sono due novità:
# - Non si tratta più di un prodotto tra un vettore ed una matrice di trasformazione ma di una somma di vettori per cui, se i deve traslare un triangolo occorre sommare la matrice 3x2 con un'altra matrice 3x2. Non c'è più una matrice sola che trasforma figura di un numero di vertici diverso.
# - Nel caso delle trasformazioni composte la diversa combinazione tra somme e prodotti crea problemi di non facile soluzione.

Per costruire una applet che esegue una traslazione possiamo predisporre nel foglio di calcolo due aree di input: una per il triangolo ed una per il vettore di traslazione.
Definiamo una lista: Vt = {B1, C1}
Con questo vettore costruiamo la matrice di traslazione Mt = {Vt, Vt, Vt}
La lista Vt ha come elementi le componenti del vettore di traslazione e la matrice Mt è costruita come lista di liste, in tal modo non è difficile modificare l'applet in modo che venga trasformato un quadrilatero o una figura qualsiasi.

Utilizzando la matrice T' si definisce nel solito modo il poligono per la rappresentazione sul piano del triangolo trasformato.

Queste formule permettono di fare qualsiasi trasformazione affine ma non si prestano per uno studio delle trasformazioni composte per cui rimandiamo tale studio ad uno dei prossimi post in cui predisporremo delle applet con formule più adatte.

Nessun commento:

Posta un commento