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

Nessun commento:

Posta un commento