sabato 31 maggio 2014

Matrici di trasformazione 5 - Gruppo delle affinità e complementi


Trasformazioni composte

Nel post precedente si è visto che se si usano le coordinate omogenee nel piano cartesiano tutte le trasformazioni possono essere fatte come prodotto di un'unica matrice e quindi anche le trasformazioni composte possono essere fatte senza eccezioni come prodotto di matrici.
Questo semplifica non poco tutti i ragionamenti ed i calcoli con GeoGebra e permette di vedere le trasformazioni affini come un unico gruppo di trasformazioni.
La figura geometrica F viene trasformata in F' con un'operazione del tipo:
F' = F * M con det M 0
Noi lavoriamo con i punti ed eseguiamo le trasformazioni su questi, per trasformare un poligono eseguiamo le operazioni sui suoi vertici e poi unendo i punti trasformati otteniamo il suo trasformato.

La stessa operazione però può essere fatta anche su una circonferenza o su una conica in generale: si considerano 5 punti della conica, si eseguono le trasformazioni e poi si fa costruire a GeoGebra la conica passante per i punti trasformati che sappiamo essere unica e quindi si tratta della conica trasformata.
Le coordinate dei punti A, B, C, D, E possono essere modificate intervenendo sulle celle del foglio di calcolo o possono essere trascinati direttamente dalla finestra grafica, anche la matrice M di trasformazione può essere modificata per verificare gli effetti sul grafico.

Per chi fosse interessato il file di questa applet può essere trovato all'indirizzo:

Matrice di trasformazione con determinante nullo

Se il determinante della matrice di trasformazione è zero vuol dire che la prima e la seconda riga della matrice non sono linearmente indipendenti e quindi i due vettori in cui sono trasformati i versori fondamentali appartengono alla stessa retta.
In questo caso tutti i punti trasformati sono allineati.



Per chi fosse interessato il file di questa applet può essere trovato all'indirizzo:

Nel caso particolare in cui la prima linea è nulla i punti della figura trasformata sono sull'asse y

Se la seconda linea è data dal vettore e2, le ordinate non vengono cambiare e quindi si ha la proiezione della figura sull'asse delle ordinate. Se le prima riga è e1 e la seconda nulla si ottiene la proiezione sull'asse delle ascisse.
Questa costruzione si ottiene inserendo nell'area della matrice M i relativi vcalori


Matrici Inverse

Data una matrice di trasformazione M per trovare la trasformazione inversa che riporta la figura trasformata nella sua posizione iniziale, basta trovare una matrice N tale che M * N = I dove I è la matrice identica. Tale matrice viene chiamata M-1.

In pratica per studiare le trasformazioni si possono applicare le proprietà dell'algebra delle matrici.
I procedimenti per il calcolo della matrice inversa dei una matrice M è legato al fatto che il determinante di M sia diverso da zero, tali calcoli comunque vengono svolti da GeoGebra.
Sono mostrati due esempi di funzioni inverse, per verificare basta fare i prodotti righe per colonne delle matrici e notare che T * T-1 = I e che R * R-1 = I.
Notiamo che l'inversa della matrice T che opera una traslazione di un vettore v = [ p q ] è la matrice che opera la traslazione opposta -v = [ -p -q ] cioè che riporta la figura nella sua posizione iniziale. Lo stesso si può dire per la matrice R che opera una rotazione di un angolo α la sua inversa fa una rotazione di -α


Trasformazioni composte

Data una figura F la sua trasformata F' = F * M * N è la trasformazione ottenuta facendo su F la trasformazione M e sulla figura risultante la trasformazione N. Queste proprietà ci permettono di scomporre trasformazioni complesse nel prodotto di trasformazioni più semplici.
Come primo esempio vediamo come è possibile risolvere nel modo visto un esempio di trasformazione già incontrato: la simmetria di una figura rispetto ad un punto generico


Simmetria rispetto ad un punto

La simmetria rispetto ad un punto P diverso dall'origine può essere calcolata usando tre trasformazioni successive:
1 - Traslazione dell'origine degli assi in P (equivale a traslare P nell'origine)
2 - Simmetria rispetto alla nuova origine
3 - Traslazione inversa che riporti l'origine nella posizione iniziale

La matrice che opera la simmetria rispetto ad un punto quindi è uguale al prodotto delle tre matrici che operano le tre trasformazioni elementari descritte sopra.

Nell'area del foglio di calcolo con lo sfondo giallo si mettono le coordinate dei punti cui viene aggiunta una colonna di 1.
Dato un punto libero P del piano rispetto al quale viene calcolata la simmetria, si usano le sue coordinate per costruire la matrice T.

Contenuto della cella B9 =x(P)
Contenuto della cella C9 =y(P)
gli altri valori di T, come quello di So sono costanti.


Si costruiscono le matrici T e So e si calcola l'inverso di T: T' = Inversa[T]
Matrice di trasformazione: M = T' * So * T
Figura trasformata: F' = M * F

Si estraggono i valori delle coordinate della figura trasformata:
A' = (Elemento[F', 1, 1], Elemento[F', 1, 2])
B' = (Elemento[F', 2, 1], Elemento[F', 2, 2])
C' = (Elemento[F', 3, 1], Elemento[F', 3, 2])
D' = (Elemento[F', 4, 1], Elemento[F', 4, 2])
E' = (Elemento[F', 5, 1], Elemento[F', 5, 2])}

Si procede alla sua rappresentazione: Gf' = Poligono[A', B', C', D', E']


Rotazione rispetto ad un punto

Lo schema di questa trasformazione è lo stesso di quello della simmetria rispetto ad un punto, basta sostituire ad So la matrice di rotazione rispetto.

Definiamo anche uno slider nella variabile alfa in modo che sia il punto che l'angolo possono essere modificati in modo visuale.
Contenuto della Cella B11: =cos(alfa)
Contenuto della Cella C11: =sin(alfa)
Contenuto della Cella B12: =-sin(alfa)
Contenuto della Cella C12: =cos(alfa)


Per chi fosse interessato il file di questa applet può essere trovato all'indirizzo:

Simmetria rispetto ad una retta

La simmetria rispetto ad una retta generica r scritta nella forma esplicita y = m x + q può essere calcolata usando cinque trasformazioni successive:
1 - Traslazione dell'origine nel punto (0, q) - (la retta r passa per l'origine delle nuove coordinate)
2 - Rotazione in senso orario di un angolo uguale all'angolo tra la direzione positiva dell'asse x e la retta α = - atan(m) - (La retta r diventa l'asse delle ascisse delle nuove coordinate)
3 - Simmetria rispetto all'asse delle x
4 - Rotazione in senso antiorario di α = atan(m)
5 - Traslazione inversa della prima che riporta tutto a posto

La retta r può essere determinata usando degli slider nelle variabili m e q oppure come retta passante per due punti con m e q calcolati:
m = Pendenza[r] q = y(Q) dove Q = Intersezione[r, asseY]
Il valore di m serve poi per calcolare l'angolo di inclinazione alfa = atan(m) con l'asse delle x.

Si definisce una matrice T di traslazione di cui l'unico valore variabile è:
Contenuto della Cella C9: =q

ed una una matrice R di rotazione
Contenuto della Cella B11: =cos(alfa)
Contenuto della Cella C11: =sin(alfa)
Contenuto della Cella B12: =-sin(alfa)
Contenuto della Cella C12: =cos(alfa)
La matrice Sx per calcolare la simmetria rispetto all'asse x

Calcoliamo con queste la matrice di trasformazione: M = T' * R' *Sx * R * T
Figura trasformata: F' = F * M
che poi va rappresentata con i soliti procedimenti

Per chi fosse interessato il file di questa applet può essere trovato all'indirizzo:

Proiezione su una retta y = mx + q
Come conseguenza di quanto visto, modificando la seconda riga della matrice Sx si ottiene la proiezione della figura sulla retta.

Si tratta degli stessi punti che possiamo ottenere mandando le perpendicolari dai vertici del poligono alla retta e calcolando i punti di intersezione.

mercoledì 28 maggio 2014

Matrici di trasformazione - 4 Coordinate Omogenee


Coordinate omogenee

Con opportune convenzioni, un punto del piano cartesiano può essere rappresentato da una coppia di numeri (x, y) che sono le sue coordinate cartesiane. Per poter considerare anche i punti all'infinito del piano e dare alle formule della geometria analitica la generalità necessaria per trattare gli elementi impropri della geometria proiettiva, conviene introdurre le cosiddette coordinate omogenee. Dato un punto A del piano si considerano tre numeri x1, x2, x3, non tutti nulli, definiti a meno di un fattore di proporzionalità, tali che, indicate con x e y le coordinate cartesiane di A, si abbia:
x = x1/x3 y = x2/x3.
Di queste terne di numeri interessano soltanto i mutui rapporti e, per ogni punto, i numeri della terna x1, x2, x3, possono essere moltiplicate per un medesimo fattore non nullo senza che cambino le coordinate del punto da esse rappresentto.
Se si fa in modo che sia x3 = 1 le altre due coordinate coincidono con le coordinate cartesiane.
In questa sede non possiamo approfondire tutte le implicazioni di questa definizione ma ne sfruttiamo una caratteristica formale.

Rappresentiamo un punto generico [x y] nella forma [x y 1], il terzo numero, che nei nostri calcoli resterà sempre uguale ad 1, ci servirà per impostare una matrice di trasformazione che comprenda tutte le trasformazioni affini, compresa la traslazione.
Eseguendo il prodotto righe per colonne nella forma sottostante si ottiene la formula completa della trasformazione lineare senza dover sommare il vettore di traslazione.
Nella rappresentazione dei punti poi non si terrà conto della terza cifra che, come si è detto sarà sempre uguale ad 1
Questo fatto rappresenta un grosso vantaggio perchè ci permette di fare trasformazioni composte eseguendo prodotti di matrici come si è fatto nel caso del gruppo di isometrie senza avere l'eccezione rappresentata dalla traslazione.
Ricordando che tutte le considerazioni geometriche fatte sono ancora valide, possiamo riscrivere tutte le matrici di trasformazione viste considerando i punti in coordinate omogenee.
Aggiungendo una colonna con un termine 1 e gli altri termini nulli anche il valore del determinante non viene modificando, basta ricordare la regola di Laplace per il calcolo dei determinanti.


Esempio di traslazione realizzata con coordinate omogenee

Si inseriscono direttamente le coordinate dei punti nelle celle del foglio di calcolo formando una matrice con l'ultima colonna formata di valori 1 mentre la matrice di trasformazione ha la forma della matrice identica con le componenti del vettore di traslazione nei primi due posti dell'ultima riga.
la traslazione si realizza con T' = T * Tras
Anche le operazioni di prelevamento dei dati dalla matrice per costruire il triangolo trasformato non cambiano infatti l'ultima riga della matrice formata tutta da valori 1 non modifica le formule.
Le coordinate dei punti trasformati si prelevano dalla matrice risultante T'
A' = Elemento[T', 1, 1], Elemento[T', 1, 2])
B' = Elemento[T', 2, 1], Elemento[T', 2, 2])
C' = Elemento[T', 3, 1], Elemento[T', 3, 2])

Per comodità del lettore riportiamo le matrici di trasformazione omogenee per tutte le trasformazioni elementari già viste.

Matrice identica e simmetria rispetto all'origine

Simmetria rispetto all'asse x e rispetto all'asse y

Simmetria rispetto alla bisettrice del primo e terzo quadrante ( y = x ) e alla bisettrice del secondo e quarto quadrante ( y = -x )

Rotazione rispetto all'origine di 90° e di 270°

Stiramento rispetto all'asse x di un fattore h, rispetto all'asse delle y di u fattore k ed omotetia rispetto all'origine di rapporto k

Traslazione di un vettore [p, q] e rotazione rispetto all'origine di un angolo α

Si può vedere che sono verificate le semplici proprietà:
1 - So := Sx * Sy
2 - R270 := R90 * So e R90 = R270 * S0
3 - R270 = R90 * R90 * R90 = (R90)3
in cui i fattori possono essere scambiati

Per le simmetrie rispetto alle bisettrici:
4 - S13 := R90 * Sy
5 - S13 := R270 * Sx
6 - S24 := R90 * Sx
7 - S24 := R270 * Sy
in questo caso i fattori non possono essere scambiati tra loro


Simmatria rispetto ad un punto P = (a, b)

Perchè due punti A = (x, y) e A' = (x', y') siano simmetrici rispetto ad un punto P occorre che questo sia il punto medio del segmento PP', quindi devono valere la relazioni:
quindi ricavando x' ed y' si ottengono le formule:
x' = -x + 2a e y' = -y + 2b

che scritte in forma matriciale diventano:
Queste formule ci suggeriscono come scrivere le matrici di trasformazione per la simmetria rispetto alle parallele agli assi coordinati.
A sinistra trasforma una figura nella sua simmetrica rispetto alla retta x = h in cui le ordinate restano invariate e alla destra rispetto alla retta y = k dove restano invariate le ascisse.

Trasformazioni affini con coordinate omogenee

Proponiamo un file che sia in grado, cliccando le caselle di controllo, di eseguire alcune trasformazioni che usano le matrici incontrate anche se, modificando i numeri nelle aree gialle, si possono fare tutte le trasformazioni affini.
Nel foglio di calcolo sono evidenziate in giallo le aree i cui dati sono modificabili, si notano le coordinate dei punti della figura F origine in cui l'ultima colonna di valori 1 viene usata per eseguire i calcoli ma non per rappresentare la figura.
Una cosa analoga succede per la colonna a destra della matrice M

Viene creata una matrice F selezionando l'area del foglio di calcolo che la contiene, si clicca con il tasto destro e si usa il comando Crea/Matrice, stessa procedura per la matrice M di trasformazione. La matrice trasformata si trova con l'operazione F' = F * M che è un normale prodotto righe per colonne eseguito direttamente da GeoGebra.

Procedure per la rappresentazione:
Per quanto riguarda i valori che abbiamo inserito nelle celle del foglio di calcolo, si seleziona l'area gialla del foglio di calcolo e si usa il comando: Crea/Lista di punti che costruisce la lista: Lf = {A, B, C, D} che può essere usata per rappresentare il quadrilatero con il comando
 Gf = Poligono[Lf].
Per quanto riguarda i valori calcolati di F' si costruisce la lista Lf':
Lf' = {(Elemento[F', 1, 1], Elemento[F', 1, 2]), (Elemento[F', 2, 1], Elemento[F', 2, 2]), (Elemento[F', 3, 1], Elemento[F', 3, 2]), (Elemento[F', 4, 1], Elemento[F', 4, 2])}
che poi viene usata per rappresentare la figura trasformata:
 Gf' = Poligono[Lf']

Per quanto riguarda le trasformazioni noi vogliamo che i numeri possano essere inseriti direttamente nelle celle del foglio di calcolo e che si possa intervenire anche in modo visuale, prendendo come esempio l'immagine della figura, spostando il punto rosso di simmetria.
Anche i punti della figura azzurra che va trasformata si possono spostare in modo visuale provocando la variazione dei punti nelle celle del foglio di calcolo.
Queste funzionalità e questa possibilità di doppio input sono concepite per poter usare il file per sperimentare le diverse situazioni e sono ottenute con l'uso di comandi GeoGebraScript.

Ad ogni variabile logica, visualizzata nella finestra grafica come casella di controllo, si associano dei comandi di scripting che fanno sì che sia l'unica con il valore true
Comandi associati alla prima variabile e1:
ImpValore[e1, true]     ImpValore[e2, false]
ImpValore[e3, false]    ImpValore[e4, false]
ImpValore[e5, false]    ImpValore[e6, false]

Con la stessa logica alla variabile e2 si associa ImpValore[e2, true] e tutte le altre si pongono false e così via.

Vediamo in modo dettagliato i comandi relativi alla simmetria centrale. Per prima cosa si posizione un punto P di colore rosso che viene visualizzato solo nel caso sia selezionata la relativa casella di controllo. Si clicca sul punto con il tasto destro e nella linea di edit relativa alla voce Proprietà/Avanzate/Condizioni per mostrare l'oggetto si scrive e1 così l'oggetto verrà visualizzato solo nel caso che tale variabile ha valore true.
Al gruppo di comandi elencati sopra si fa seguire come proprietà di e1 i seguenti:
ImpValore[B6, -1]
ImpValore[B7, 0]
ImpValore[C6, 0]
ImpValore[C7, -1]
ImpValore[B8, 2*x(P)]
ImpValore[C8, 2*y(P)]
F'=F*M
con i quali si assegnano agli elementi della matrice i valori opportuni perchè venga eseguita la trasformazione voluta e poi si esegue il prodotto.
Segue la visualizzazione di F' che è già stata illustrata. Questo schema verrà usato anche per le altre trasformazioni.

Ora bisogna fare in modo che se viene cambiata la posizione del punto P per trascinamento vengano aggiornati i valori della trasformazione.
Per fare questo si associano al punto P i comandi di scripting:
ImpValore[B8, 2*x(P)]
ImpValore[C8, 2*y(P)]
F'=F*M
che aggiornano i termini della matrice sulle nuove coordinate di P e ricalcolano F'.

Con le opportune differenze legata alla trasformazioni differenti lo schema si ripete:
- Assegnazione dei valori della trasformazione
- Visualizzazione degli elementi per apportare variazioni alla trasformazione

Per chi fosse interessato il file descritto sopra può essere scaricato all'indirizzo:

http://www.geogebratube.org/material/show/id/121235

venerdì 2 maggio 2014

Matrici di trasformazione 3 - Trasformazioni lineari


Forma generale di una Affinità

Trascriviamo la formula generale di una trasformazione lineare che dà luogo ad una Trasformazione Affine di figure geometriche del piano e che, come vedremo gode di importanti proprietà.
Forma matriciale:

Forma cartesiana:

Può essere schematizzata nella forma     x' = x A + b
con     A - Matrice di Trasformazione
           b - Vettore di Traslazione
La trasformazione è interamente determinata dai coefficienti a, b, c, d, p, q e le sue proprietà dipendono da questi valori.  Iniziamo col dire che perchè la trasformazione non sia degenere occorre che il determinante di A sia diverso da zero.

Proprietà

Le trasformazioni, che si chiamano lineari perchè tutti i termini sono di primo grado, godono di alcune proprietà che le rendono adatte a trattare le trasformazioni geometriche.
- A rette corrispondono rette, infatti se tre punti sono allineati lo sono anche i trasformati
- A rette parallele corrispondono rette parallele
- A rette incidenti corrispondono rette incidenti (non si conservano gli angoli tra i segmenti)

Se si considerano due poligoni corrispondenti o due figure in generale, il rapporto delle loro aree è costante e viene detto Rapporto di Affinità.  Dette S ed S' le loro superfici
- Il rapporto tra le aree di figure geometriche trasformate è: S'/S=Det(A)
- Se det(A) > 0 si ha una affinità diretta (l'ordine delle lettere in un poligono e nel suo trasformato resta lo stesso)
- Se Det(A) < 0 si inverte l'ordine delle lettere

Da quanto detto possiamo dire che nel caso delle Isometrie abbiamo che il determinante della matrice di trasformazione è  Det(A) = |1|.

Nelle proprietà appena enunciate, chi fosse interessato alle dimostrazione deve consultare testi specialistici, non hanno un ruolo i valori di p e q che determinano la traslazione, infatti questa cambia solo la 'posizione' delle figure nel piano e non la loro 'forma'.

Applet GeoGebra per verificare le proprietà

1 – Trasformazione lineare con i dati modificabili nel foglio di calcolo

Usiamo una figura geometrica formata accostando un triangolo ad un rettangolo in cui è facile individuare gli elementi trasformati che sono un triangolo ad un parallelogrammo.

Predisponiamo tre aree del foglio di calcolo per inserire i dati:
Una matrice  F  in cui inserire le coordinate dei vertici
Una matrice  A  (2 x 2) di trasformazione
Una matrice  t  (1 x 2) per inserire il vettore di traslazione


Le formule sono del tutto analoghe a quelle analizzate nei post precedenti, in questo caso sono evidenziate le aree delle superfici e il determinante della matrice di trasformazione.
Inserendo i diversi valori nelle apposite aree del foglio di calcolo si possono esplorare le diverse trasformazioni.

# - Si possono ottenere come casi particolari tutte le trasformazioni già viste
# - Se si vuole fare una traslazione basta avere in A la matrice identica.
# - Se si considera una matrice con determinante nullo si vede che la figura si riduce ad un segmento, infatti tutti i punti trasformati sono allineati (deve avere area nulla).
# - Un caso particolare interessante in cui si ha [1  0] nella prima riga e [0   0] nella seconda, con traslazione nulla abbiamo la proiezione della figura sull'asse delle ascisse.  Se [1   0] si trova nella seconda riga la proiezione è sull'asse delle ordinate.

Il file per scoprire le varie proprietà si può trovare su GeoGebraTube all'indirizzo:


2 – Trasformazione lineare con matrice modificabile mediante slider.

In questo caso la matrice di trasformazione ed il vettore traslazione possono essere modificati mediante slider. 


In questo caso vanno dichiarate le variabili a, b, c, d, p, q e visualizzati gli slider nella Vista grafica 2  in modo che non interferiscano con la rappresentazione delle figure.
La matrice di trasformazione viene assegnate dal comando:
  M = {{a, c}, {b, d}}
mentre il vettore e la matrice di trasformazione:
  t= {p, q}   e    T = {t, t, t}
Le coordinate dei vertici sono modificabili dal foglio di calcolo.

Il file per scoprire le varie proprietà si può trovare su GeoGebraTube all'indirizzo:


3 – Trasformazione di un triangolo con i vertici liberi

In questo caso i vertici del triangolo possono essere spostati trascinandoli con il mouse e la matrice di trasformazione viene modificata intervenendo con slider.


La matrice F viene costruita con:
  F = {{x(A), y(A)}, {x(B), y(B)}, {x(C), y(C)}}
mentre gli altri elementi possono essere definiti come nel caso precedente.

Il file si può trovare su GeoGebraTube all'indirizzo:


4 – Ricerca della trasformazione che porta un triangolo in un altro.

I parametri necessari per fare una trasformazione lineare nel piano sono sei: i quattro elementi della matrice di trasformazione (a, b, c, d) ed i due del vettore di trasformazione (p, q).  Quindi dati due triangoli generici esiste sempre una trasformazione lineare che porta uno nell'altro infatti, poiché sono interessati tre punti, sono sei le condizioni che si devono imporre per trovare la trasformazione (due condizioni per ogni punto).
Si tratta di risolvere un sistema di sei equazioni in sei incognite nelle variabili a, b, c, d, p, q.
Per impostare il sistema usiamo la forma cartesiana ed eseguiamo le sei sostituzioni.
Prendiamo come esempio la stessa trasformazione dell'esempio precedente in cui però conosciamo i vertici di  P = ABC  e di  P' = A'B'C'  che sono sei punti liberi ed imponiamo le condizioni sostituendo i valori numerici nelle formule di trasformazione

 

Il sistema diventa scritto in forma matriciale diventa:  X' = X * M

le equazioni da risolvere sono:


Sostituiamo i valori numerici e disponiamo i calcoli sul foglio di calcolo:


Nella colonna H sono messi i termini noti:  x(A'), x(B'), x(C'), y(A'), y(B'), y(C')
Questo schema viene usato per generare le matrici usate nei calcoli


Calcolo della matrice inversa:     M' = Inversa[M]
Calcolo della matrice dei risultati     X = Trasposta[X'] M'

Il file si può trovare su GeoGebraTube all'indirizzo:


Similitudini

Quando, in una trasformazione ad angoli uguali corrispondono angoli uguali le figure conservano la loro forma, cambiando solamente la dimensione e quindi si parla di Similitudine.
Perchè siano conservati gli angoli occorre che i vettori in cui sono trasformati i versori fondamentali  e1  ed  e2  siano perpendicolari tra loro.
In tal caso le matrici prendono la forma:
Nel caso della Similitudine diretta si può notare che il vettore trasformato di  e1  è  [a   c]  il cui angolo di inclinazione α rispetto all'asse delle ascisse è tale che  tanα = c/a  mentre il trasformato di  e2  è  [-c   a]  con angolo  α'  tale che  tan α' = -a/c  che è proprio la condizione di perpendicolarità tra due angoli.  Ragionamento analogo nel caso della Similitudine inversa.
La condizione si può scrivere anche nella forma:
Similitudine diretta:  Det(A) = a2 + c2

Similitudine inversa:  Det(A) = -a2 - c2


Simmetria rispetto ad un punto.

Vediamo come è possibile procedere per trovare le formule di trasformazione che operano la simmetria rispetto ad un punto  P = (x0, y0)

Partendo dalle formule della geometria analitica per trovare il unto medio di due punti

In questo caso il punto  P  deve essere punto medio tra  X  ed il suo trasformato  X'  quindi ricavando x' e y' si ha:  x' = 2x0 - x   e  y' = 2y0 - y

Che scritte in forma matriciale diventa:

Questa formula contiene come caso particolare la simmetria rispetto alla retta parallela all'asse y di equazione x = x0

e la simmetria rispetto alla retta parallela all'asse x di equazione y = y0



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.

mercoledì 16 aprile 2014

Matrici di trasformazione 1 - Gruppo di Isometrie

Trasformazioni elementari del piano

In generale si parla di Trasformazione del piano in sé quando viene stabilita una corrispondenza tra punti del piano stesso mediante una relazione che fa corrispondere ad ogni punto P (x, y) del piano uno ed un solo punto P' (x', y').
GeoGebra ha dei comodi strumenti per fare le principali trasformazioni del piano, noi qui ci occupiamo di alcune semplici isometrie sul piano cartesiano dal punto di vista analitico.
Le trasformazioni, che dovrebbero essere già note allo studente, possono essere fatte sul piano cartesiano usando alcune semplici formule:


Formule generali

Le formule quindi sono casi particolari di una trasformazione lineare del tipo:

Che può essere scritta in forma matriciale considerando i punti come vettori colonna nella forma:

Oppure, considerando i punti come vettori riga nella forma:

Considerando i vettori colonna x si può scrivere: x' = M * x oppure x'T = xT * MT
dove M prende il nome di Matrice di Trasformazione.

Le due forme sono equivalenti, di seguito useremo la seconda che ci sembra più comoda per il trattamento dei dati con GeoGebra.
Aggiungiamo la trasformazione identica che fa corrispondere un punto a se stesso e scriviamo di seguito le matrici di trasformazione:


Trasformazione di un punto

Vogliamo costruire una applet che esegua la simmetria di un punto rispetto all'origine.
La costruzione può sembrare macchinosa, sarebbero più comode le formule cartesiane presentate all'inizio, ma viene fatta in modo da permettere gli sviluppi futuri.
Per la trasformazione dobbiamo eseguire prodotti righe per colonne tra matrici e quindi va definita una matrice di una riga e due colonne con le coordinate del punto da trasformare:
Lp = {{3, 2}}
Definiamo la matrice di trasformazione per eseguire la simmetria rispetto all'origine:
So = {{-1, 0}, {0, -1}}


Usando il simbolo di prodotto tra due matrici viene eseguito da GeoGebra come prodotto righe per colonne:
Lp' = Lp * So
Per la rappresentazione dei punti bisogna usare gli elementi delle matrici per definire, con la giusta sintassi i relativi oggetti.
Si usa il comando: Elemento[ <Matrice>, <Riga>, <Colonna> ].
Nel nostro caso:
P = (Elemento[Lp, 1, 1], Elemento[Lp, 1, 2])
P' = (Elemento[Lp', 1, 1], Elemento[Lp', 1, 2])


Trasformazione di un segmento

Basta trasformare gli estremi del segmento e questi possono essere gli elementi di un'unica matrice Ls in cui nella prima colonna abbiamo le scisse e nella seconda le ordinate.


In questo caso facciamo la simmetria rispetto all'asse x moltiplicando per la matrice di trasformazione Sx ed otteniamo la matrice trasformata:
Ls' = Ls * Sx
Costruiamo come nel caso precedente costruiamo i punti A e B ed i trasformati A' e B'
A = (Elemento[Ls, 1, 1], Elemento[Ls, 1, 2])
B = (Elemento[Ls, 2, 1], Elemento[Ls, 2, 2])
A' = (Elemento[Ls', 1, 1], Elemento[Ls', 1, 2])
B' = (Elemento[Ls', 2, 1], Elemento[Ls', 2, 2])

poi definiamo i segmenti che li uniscono:
s = Segmento[A, B] s' = Segmento[A', B']


Trasformazione di un triangolo

Facciamo un ulteriore passo verso la realizzazione di una applet con cui poter fare alcuni ragionamenti più generali.
Per la costruzione delle matrici usiamo le possibilità offerte dal foglio di calcolo: scriviamo la matrice dei vertici del triangolo in una zona del foglio che è stata colorata di giallo per mettere in evidenza i dati iniziali, quelli per intenderci che possono essere modificati in modo da poter modificare la forma del triangolo.
In questo caso vogliamo fare la rotazione di 90° e quindi scriviamo in un'altra zona del foglio la matrice opportuna.
Dopo che si sono inseriti i dati nel foglio si seleziona la zona interessata si clicca con il pulsante destro del mouse e si seleziona la voce Crea/Matrice poi si rinomina la matrice stessa per assegnare l'etichetta voluta.
Creiamo una lista con i vertici del triangolo:
Tri = {(Elemento[T, 1, 1], Elemento[T, 1, 2]), (Elemento[T, 2, 1], Elemento[T, 2, 2]),
(Elemento[T, 3, 1], Elemento[T, 3, 2])}
Creiamo il triangolo
F = Poligono[Tri]
Ed eseguiamo il prodotto tra le matrici per costruire la matrice del triangolo trasformato
T' = T * Ro90
Poi procediamo con lo stesso metodo visto a costruire la lista Tri' dei vertici ed il triangolo F' in modo da rappresentare il triangolo trasformato.


Una piccola raffinatezza può essere quella di usare una Formula Latex per rappresentare le matrici coinvolte nel prodotto.
In questo modo si può avere l'esatta percezione delle formule e dei numeri usati per eseguire la trasformazione con una matrice.


Una Applet che esegue le diverse trasformazioni

Per prima cosa inseriamo nel foglio elettronico tutte le matrici di trasformazione ed il triangolo da trasformare. Con il comando Crea/Matrice descritto sopra si creano tutte le matrici di trasformazione, operazione necessaria perchè di queste matrici si dovranno fare i prodotti righe per colonne che sono eseguiti da GeoGebra solo sugli oggetti matrice.
Poi dichiariamo 8 variabili logiche e1, e2, … , e8 una per ogni trasformazione da eseguire, la numerazione assegnata alle variabili segue lo stesso ordine delle matrici inserite nel foglio e quello delle caselle di controllo.
Il procedimento usato è quello descritto sopra per il triangolo, in questo caso bisogna fare in modo che venga mostrata una trasformazione per volta. Il procedimento classico usato con GeoGebra è quello di fare tutte le trasformazioni e poi mostrarne una sola, in questo caso 8 trasformazioni ed 8 formule Latex.
Scegliamo di usare le possibilità offerte da GeoGebraScript per fare solo la trasformazione richiesta. Per prima cosa si deve fare in modo che una scelta escluda le altre e questo si ottiene associando ad ogni variabile logica una serie di comandi di scripting che assegnino il valore vero alla sola variabile cliccata e il valore falso a tutte le alte.
Supponiamo di cliccare la seconda casella relativa alla simmetria rispetto all'origine, per fare questo i comandi sono:
ImpValore[e1,false] ImpValore[e2,true] ImpValore[e3,false]
ImpValore[e4,false] ImpValore[e5,false] ImpValore[e6,false]
ImpValore[e7,false] ImpValore[e8,false]
Se si sceglie la sesta casella relativa alla simmetria rispetto alla bisettrice del secondo e quarto quadrante i comandi sono:
ImpValore[e1,false] ImpValore[e2,false] ImpValore[e3,false]
ImpValore[e4,false] ImpValore[e5,false] ImpValore[e6,true]
ImpValore[e7,false] ImpValore[e8,false]


A questi comandi vanno aggiunti il comando per eseguire la trasformazione scelta ed un'altra assegnazione di cui vedremo in seguito l'utilità
Analizziamo i comandi associati alla variabile e8 per eseguire la rotazione di 270°
ImpValore[e1,false] ImpValore[e2,false] ImpValore[e3,false]
ImpValore[e4,false] ImpValore[e5,false] ImpValore[e6,false]
ImpValore[e7,false] ImpValore[e8,true]
T'=T*Ro270
M=Ro270
Dopo che si è imposto che solo la variabile in questione deve essere vera, si esegue il prodotto tra le due matrici per fare la trasformazione.
Viene fatto il solo prodotto che interessa e vengono rappresentati solo i triangoli T e T'.
La matrice di trasformazione viene assegnata ad una matrice M che verrà usata per scrivere la formula Latex, infatti questa formula va scritta usando la giusta matrice di trasformazione che di volta in volta viene copiata in M.
Nessuna diversità nella rappresentazione dei triangoli rispetto a quanto visto nell'esempio precedente, con questo procedimento basta rappresentare T' che di volta in volta contiene la matrice di trasformazione scelta ed anche gli oggetti usati per la formula Latex sono sempre gli stessi.

Prodotto di due trasformazioni

Se si vuole eseguire una rotazione di 90° e di seguito simmetria rispetto all'asse x basta usare la formula: T' = T * Ro90 * Sx
Nel nostro caso viene fatta l'operazione che può essere chiamata prodotto delle due trasformazioni:


Ricordiamo che il prodotto di matrici gode della proprietà associativa per cui è irrilevante l'ordine seguito nel prodotto ma non della proprietà commutativa per cui scambiando l'ordine delle operazioni in alcuni casi si ottengono risultati diversi.

Costruiamo ora una applet che faccia tutte le trasformazioni composte.


Si devono definire altre 8 variabili logiche per il prodotto di matrici da fare su F' per eseguire la seconda trasformazione, anche queste vanno gestite in modo che una sola possa essere vera.
Si esegue il prodotto di T' per la matrice della seconda trasformazione.
Nel caso mostrato: T'' = T' * So N = So
La matrice N viene usata per la costruzione della formula Latex, poi si esegue il prodotto:
MN = M * N
per poter costruire la formula Latex sottostante utilizzando gli elementi della matrice MN.

Gruppo di trasformazioni

Consideriamo ora l'insieme delle 8 trasformazioni viste ed eseguiamo tutti i possibili prodotti, si può costruire una tabella che possiamo usare per studiarne le proprietà.
La tabella indica i prodotti delle matrici considerando come primo fattore le matrici elencate a sinistra e come secondo quelle elencate nella riga in alto.
1 – Si tratta di una operazione interna infatti ad ogni prodotto si ottiene sempre una delle trasformazioni dell'insieme stesso
2 - La trasformazione identica è l'elemento neutro
3 – Ogni elemento ha un inverso che moltiplicato per l'elemento stesso dà come risultato l'elemento neutro
La tabella non ci permette di vedere in modo immediato la proprietà associativa che comunque per le matrici quadrate con determinante diverso da zero è verificata.
Si può vedere che non è verificata la proprietà commutativa, infatti la tabella dei prodotti non è simmetrica rispetto alla diagonale principale.
L'insieme delle trasformazioni rispetto all'operazione di prodotto quindi è un Gruppo non abeliano.

Il gruppo è abeliano se si considerano solo le prime quattro trasformazioni: I, So, Sx, Sy.
La maggior parte di elementi moltiplicati per se stessi danno come prodotto l'identità quindi sono inversi di se stessi, Ro90 e Ro270 sono nilpotenti infatti (Ro90)4 = I.
Invitiamo a scoprire altre proprietà dei questo gruppo o dei suoi elementi.