Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Ingegneria
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Esamuele Santoro » 9.Trasformazioni geometriche


Trasformazioni geometriche

Le trasformazioni geometriche sono utilizzate nei sistemi CAD/CAM per la costruzione e visualizzazione di oggetti, per generare viste, per creare assemblaggi, ecc.

Molti comandi presenti nei sistemi CAD come traslazione, rotazione, specchio, zoom, ecc. non sono altro che delle trasformazioni geometriche. Un’entità geometrica (punto, linea, superficie, solido) è un insieme di punti, per cui il problema della trasformazione geometrica di un’entità geometrica si riduce al problema della trasformazione geometrica di un punto.

Trasformazione di traslazione, rotazione e scala

Una delle trasformazioni più semplici è quella di traslazione, che è individuata da un vettore traslazione t. Se il sistema di riferimento

S0=(0;x,y,z),

è fisso e il punto P viene traslato, la nuova posizione r1 del punto rispetto al sistema cartesiano S0 sarà data da:

r1=r+t         (7.1.a)

Se invece, il punto resta fisso ed il sistema di riferimento viene traslato, la posizione di P rispetto al nuovo sistema cartesiano

S1=(01;x1,y1,z1)

sarà data da:

r1=r-t         (7.1.b)

Trasformazioni geometriche

Pertanto, la traslazione del sistema di coordinate è equivalente alla traslazione dell’oggetto in senso opposto.

Un’altra trasformazione geometrica è quella di rotazione attorno ad un asse. Se l’asse di rotazione non passa per l’origine del sistema di riferimento è sempre possibile scomporre la trasformazione di rotazione in:

a) una traslazione, tale che l’asse di rotazione passi per l’origine del sistema;
b) una rotazione attorno all’asse che passa per l’origine;
c) una traslazione che riporta l’asse nelle condizioni iniziali.

Traslazione.

Traslazione.


Trasformazioni geometriche

Per motivi di semplicità consideriamo una trasformazione di rotazione attorno ad un’asse principale, ed in particolare consideriamo la rotazione attorno all’asse z di un angolo β del punto avente coordinate P=(x,y,z) = (Rcosα, Rsinα, z).
Dopo la rotazione il punto P avrà le seguenti coordinate:

x1=Rcos(α+β)=Rcosα cosβ – R sinα sin β
y1=Rsin (α+β)=Rcosα sinβ + R sinα cos β
z1=z

Poiché prima della rotazione le coordinate erano x= R cosα e y= R sinα, sostituendo tali valori nella precedente equazione ed esprimendola in forma matriciale si ha:

\mathbf{r}_{1}=\left[\begin{array}{c}<br /> x_{1}\\y_{1}\\z_{1}\end{array}\right]=\left[\begin{array}{ccc}<br /> \cos\beta & -\sin\beta & 0\\\sin\beta & \cos\beta & 0\\0 & 0 & 1\end{array}\right]\left[\begin{array}{c}<br /> x\\y\\z\end{array}\right]=A_{Rz}\mathbf{r}

Trasformazioni geometriche

La matrice ARz è detta matrice di trasformazione di rotazione o più semplicemente matrice di rotazione attorno all’asse z.
Se si calcola il suo determinante si osserva che è uguale ad 1; ciò significa che con tale trasformazione le dimensioni dell’oggetto restano invariate e quindi è una trasformazione rigida.

Le matrici di rotazione attorno agli assi y e z sono simili alla (5.2).

A_{Rx=}\left[\begin{array}{ccc}<br /> 1 & 0 & 0\\0 & \cos\beta & -\sin\beta\\0 & \sin\beta & \cos\beta\end{array}\right],\; A_{Ry=}\left[\begin{array}{ccc}<br /> \cos\beta & 0 & -\sin\beta\\0 & 1 & 0\\\sin\beta & 0 & \cos\beta\end{array}\right]

Il prodotto tra matrici non gode della proprietà commutativa ( A B ≠ B A ), pertanto se si hanno tre rotazioni consecutive, rispettivamente, attorno agli assi x, y e z , occorre ben rispettare l’ordine con cui si moltiplicano le matrici di rotazione ARx , ARy e ARz per la posizione finale del punto dopo le tre rotazioni.

Trasformazioni geometriche

Se la rotazione avviene attorno ad un asse parallelo all’asse z e passante per il punto P0 del piano (xy) la trasformazione può essere scomposta in un traslazione del punto P0 nell’origine, in un rotazione attorno all’asse z e in traslazione dell’origine nel punto P0, per cui si ha:

\mathbf{r}_{1}=\mathbf{r}_{0}+A_{Rz}(\mathbf{r}-\mathbf{r}_{0})

Se l’asse di rotazione passa per l’origine ma non coincide con un asse principale, occorre considerare la direzione dell’asse che è data dal versore direzione n.

La rotazione del punto P descrive un cerchio il cui centro è la proiezione ortogonale di P sull’asse, che è dato da P’=(P.n)n, il cerchio appartiene al piano perpendicolare all’asse e passante per P e raggio uguale a ║PP’║.

La posizione del punto P dopo la rotazione è data da:

\mathbf{r}_{1}=\mathbf{r}'+P'P_{1} dove \left\Vert P_{1}P\right\Vert =\left\Vert P'P_{1}\right\Vert

Trasformazioni geometriche

Il vettore P’P1 può essere scomposto in due componenti, una in direzione:

\mathbf{s}=\frac{\mathbf{P'P}}{\left\Vert P'P\right\Vert }=\frac{\mathbf{r}-(\mathbf{r\cdot n})\mathbf{n}}{\left\Vert P'P\right\Vert }

e l’altra ortogonale a n e s, per cui la (5.4) si può riscrivere:

\mathbf{r}_{1}=(\mathbf{r\cdot n})\mathbf{n}+\left[\mathbf{r}-(\mathbf{r\cdot n\mathit{\mathrm{)}}n}\right]\cos\alpha+\left\Vert \mathbf{r}-(\mathbf{r\cdot n})\mathbf{n}\right\Vert \sin\alpha(\mathbf{n\times s})~~~~~~(7.5)


Trasformazioni geometriche (segue)

Per le relazioni sul triplo prodotto, si ha che è possibile scrivere in forma di prodotto tra matrici la relazione (r.n)n= (rTn)n=(nrT)n=(nnT)r , dove nT è il vettore riga di n. Il prodotto vettoriale nxs è:

nxs=nx(r-(r.n)n)/│r-(r.n)n

per cui l’ultimo termine della (5.5) può essere scritto come:

\left[\mathbf{r}-(\mathbf{r\cdot n\mathit{\mathrm{)}}n}\right](\mathbf{n}\times\mathbf{s})=\boldsymbol{n}\times\mathbf{r}=\mathbf{Nr}

dove N è una matrice data da:

\mathbf{N}=\left[\begin{array}{ccc}<br /> 0 & -n_{z} & n_{y}\\n_{z} & 0 & -n_{x}\\-n_{y} & n_{x} & 0\end{array}\right]

Pertanto, dalla (7.5) si perviene a:

\mathbf{r}_{1}=(\mathbf{n}\mathbf{n}^{T})\mathbf{r}+\cos\alpha\mathbf{r}-\cos\alpha(\mathbf{n}\mathbf{n}^{T})\mathbf{r}+\sin\alpha\mathbf{Nr}=\left(\mathbf{n}\mathbf{n}^{T}+\cos\alpha(\mathbf{n}\mathbf{n}^{T})r+\sin\alpha\mathbf{N}\right)\mathbf{r}=\mathbf{A}_{R}\mathbf{r}

Trasformazioni geometriche

Dove I è la matrice identità AR è la matrice data da:

\mathbf{A}_{R}=\left[\begin{array}{ccc}<br /> n_{x}^{2}+(1-n_{x}^{2})\cos\alpha\: & n_{x}n_{y}(1-\cos\alpha)-n_{z}\sin\alpha & \: n_{z}n_{x}(1-\cos\alpha)+n_{y}\sin\alpha\\n_{x}n_{y}(1-\cos\alpha)+n_{z}\sin\alpha & n_{y}^{2}+(1-n_{y}^{2})\cos\alpha & n_{z}n_{y}(1-\cos\alpha)-n_{x}\sin\alpha\\n_{z}n_{x}(1-\cos\alpha)-n_{y}\sin\alpha\; & n_{z}n_{y}(1-\cos\alpha)+n_{x}\sin\alpha & n_{z}^{2}+(1-n_{z}^{2})\cos\alpha\end{array}\right]

Poiché cos(-a)=cosa e sin(-a)=-sina si ha che per un rotazione negativa la matrice di rotazione è uguale alla trasposta di AR cioè ART.

Ne consegue che due rotazioni successive, con angoli uguali e opposti devono portare il punto nelle condizioni iniziali, per cui se:

r1=ARr, e r2=ARTr1, si ha r2= ARTr1= ARTARr=r,

ne consegue che ARTARr=I, pertanto la matrice di rotazione AR è una matrice ortogonale.

Se la rotazione avviene attorno ad una retta non passante per l’origine, la trasformazione può essere scomposta in un traslazione dell’asse che porti un suo punto P’ a coincidere con l’origine, una rotazione attorno alla nuova posizione dell’asse e una successiva traslazione che porta l’origine nel punto P’.

Pertanto la trasformazione è data da:

\mathbf{r}_{1}=\mathbf{A}_{R}(\mathbf{r}-\mathbf{r}')+\mathbf{r}'

Trasformazioni geometriche

Se si hanno due sistemi di riferimento, che possono essere un sistema globale (MCS) e un sistema locale (WCS) e si vuole passare da un sistema all’altro, occorre specificare l’origine e l’orientamento degli assi di un sistema rispetto all’altro. Sia (O;x,y,z) un sistema di riferimento globale, e (O1; x1,y1,z1) un sistema cartesiano locale i cui versori principali sono (u1,u2,u3).
Le posizioni r=(x,y,z) e r1=(x1,y1,z1) di un punto P, rispettivamente, nei due sistemi di riferimento sono date da:

\mathbf{r}=\mathbf{O}\mathbf{O}_{1}+\mathbf{r}_{1}=\mathbf{O}\mathbf{O}_{1}+x_{1}\mathbf{u}_{1}+y_{1}\mathbf{u}_{2}+z_{1}\mathbf{u}_{3}~~~~~(7.8)

Se indichiamo con ui=(uix,uiy,uiz) i=1,2,3 le componenti dei versori principale (u1,u2,u3) rispetto al sistema globale e (O1x,O1y,O1z) le coordinate dell’origine O1, la (5.8) può riscriversi nella forma matriciale:

\mathbf{r}=\left[\begin{array}{c}<br /> O_{1x}\\O_{1y}\\O_{1z}\end{array}\right]+\left[\begin{array}{ccc}<br /> u_{1x} & u_{2x} & u_{3x}\\u_{1y} & u_{2y} & u_{3y}\\u_{1z} & u_{2z} & u_{3z}\end{array}\right]\left[\begin{array}{c}<br /> x_{1}\\y_{1}\\z_{1}\end{array}\right]=\mathbf{O}\mathbf{O}_{1}+\mathbf{A}_{R}\mathbf{r}_{1}~~~~~(7.9)

essendo ARTAr=I , la matrice di rotazione AR è una matrice ortogonale.

Trasformazioni geometriche

Se sono date le coordinate di P rispetto al sistema globale e si vogliono determinare le sue coordinate rispetto al sistema locale, dalle (7.9) si ha:

\mathbf{r}_{1}=\mathbf{A}_{R}^{-1}(\mathbf{r}-\mathbf{O}\mathbf{O}_{1})=\mathbf{A}_{R}^{T}(\mathbf{r}-\mathbf{O}\mathbf{O}_{1})=\left[\begin{array}{c}<br /> \mathbf{u}_{1}^{T}\\ \\ \mathbf{u}_{2}^{T}\\ \\ \mathbf{u}_{3}^{T}\end{array}\right](\mathbf{r}-\mathbf{O}\mathbf{O}_{1})


Trasformazioni geometriche

Le componenti di r1 si potevano ottenere anche moltiplicando scalarmente la (7.8), rispettivamente, per i versori (u1,u2,u3).

Le prime due componenti di r1 non sono altro che le proiezioni ortogonali di r sul piano (O1;u1,u2), pertanto sono utili nelle applicazioni del Drafting.

Problema 5.1: Sia dato il punto P=(4,5,3) e un piano P passante per i punti P1=(0,0,1), P2=(1,0,0), P3=(0,1,0). Calcolare le proiezioni ortogonali di P sul piano P1, parallelo a P e passante per O1=(1,1,1), a cui è associato un sistema di assi cartesiano, la cui origine è O1=(1,1,1) e avente il versore u1 parallelo a P1P2 e u3 parallelo alla normale a P.

Il piano P è il piano isometrico, infatti dal prodotto vettoriale P1P2xP1P3 si ottiene che il suo vettore normale è N=(1,1,1). Le componenti dei versori u1, u2 e u3 sono, rispettivamente, u1=P1P2/║P1P2║, u3=N/║N║, u2=u3xu1, i cui valori sono:

\mathbf{u_{\mathit{\mathrm{1}}}}=(1,0,-1)/\sqrt{2}\;,\mathbf{u}_{2}=(-1,2,-1)/\sqrt{6},\:\mathbf{u}_{3}=(1,1,1)/\sqrt{3}

Le proiezioni di P sul piano P1 sono date da:

x_{1}=O_{1}P\cdot\mathbf{u}_{1}=(3,4,2)\cdot(1,0,-1)/\sqrt{2}=\sqrt{2}/2,\; y_{1}=O_{1}P\cdot\mathbf{u}_{2}=\sqrt{6}/2

Trasformazioni geometriche

Se si desidera modificare le dimensioni di un oggetto occorre effettuare una trasformazione geometrica di scala, che consiste nel moltiplicare ciascuna coordinata per uno fattore di scala.

Se (Sx,Sy,Sz) sono i fattori di scala degli assi principali x, y e z, anche questa trasformazione può essere espressa nella seguente forma matriciale:

\mathbf{r}_{1}=\left[\begin{array}{c}<br /> x_{1}\\y_{1}\\z_{1}\end{array}\right]=\left[\begin{array}{ccc}<br /> S_{x} & 0 & 0\\0 & S_{y} & 0\\0 & 0 & S_{z}\end{array}\right]\left[\begin{array}{c}<br /> x\\y\\z\end{array}\right]=\mathbf{A}_{s}\mathbf{r}

Nelle applicazioni pratiche i fattori di scala sono uguali, per cui il modello cambia di dimensione ma non nella forma.

I valori dei fattore di scala possono essere anche negativi, in tali casi si ha anche una trasformazione di riflessione rispetto ad un piano principale del sistema di riferimento.

Trasformazioni geometriche

Così ad esempio se Sx=1, Sy=-1 e Sz=1 la trasformazione comporta una riflessione dell’oggetto rispetto al piano xz .
La trasformazione di riflessione semplifica la costruzione di modelli geometrici simmetrici; perché se un oggetto presenta un piano di simmetria è possibile costruire solo metà del modello e l’altra metà ottenerla con operazione di riflessione (specchio).
Se due fattori di scala assumono valori negativi si ha una riflessione rispetto all’asse che ha fattore di scala positivo.
Se la riflessione è rispetto ad un piano o una retta generica, le corrispondenti trasformazioni sono date dalle (2.25) e (2.26). Pertanto, la riflessione del un punto r2 rispetto al piano P di normale n e distante p dall’origine è data da:

\mathbf{r}_{2}^{R}=\mathbf{r}_{2}+2(\mathbf{r}'_{2}-\mathbf{r}_{2})=\mathbf{r}_{2}-2(\mathbf{r}_{2}\cdot\mathbf{n}-p)\mathbf{n}=\mathbf{r}_{2}-T\mathbf{n}

La riflessione del punto r2 rispetto alla retta avente direzione V e passante per r0 è data da:

\mathbf{r}_{2}^{R}=\mathbf{r}_{2}+2(\mathbf{r}'_{2}-\mathbf{r}_{2})=2\mathbf{r}_{0}-\mathbf{r}_{2}+2\left[(\mathbf{r}_{2}-\mathbf{r}_{0})\cdot\mathbf{V}\right]\mathbf{V}

Infine, la riflessione di r2 rispetto ad un punto r è data:

\mathbf{r}_{2}^{R}=\mathbf{r}_{2}+2(\mathbf{r}-\mathbf{r}_{2})=2\mathbf{r}-\mathbf{r}_{2}

Trasformazioni geometriche

Si osserva che la riflessione di un punto non è altro che una trasformazione di traslazione.

Analizzando le precedenti trasformazioni osserviamo che, ad eccezione della traslazione, è possibile esprimerle mediante un prodotto di una matrice per un vettore.

Se potessimo esprimere anche la traslazione mediante una matrice di trasformazione, potremmo esprimere una generale trasformazione, che comprende traslazione, rotazione, ecc. come prodotto di più matrici e quindi avere un’unica matrice di trasformazione.

Per poter ottenere ciò è necessario introdurre le coordinate omogenee, che vengono utilizzate in molti campi della geometria, come la geometria proiettiva, perché permettono di rappresentare anche i punti all’infinito, come intersezione tra due rette parallele. Inoltre hanno il vantaggio di semplificare la formulazione di curve e superfici razionali.

In generale, ad un punto P di un sistema di coordinate dello spazio Rn, corrisponde un punto P* con n+1 componenti in un sistema di coordinate omogenee, dove l’ultima componente deve essere diversa da zero.
Inoltre, ad ogni multiplo lP* corrisponde lo stesso punto P nello spazio Rn.
Possiamo dire che ad un punto P dello spazio Rn corrisponde una retta nello spazio Rn+1.

Se si dividono le prime n coordinate omogenee per la (n+1)-na coordinata omogenea si ottengono le corrispondenti n componenti dello spazio Rn.

Trasformazioni geometriche

Ad esempio, considerando un punto P=(x,y,z) dello spazio 3-D, le sue corrispondenti coordinate omogenee sono date dal punto P*=(x*,y*,z*,m)=(mx,my,mz,m) , dove m è uno scalare, che può assumere un qualsiasi valore diverso da zero. Pertanto le coordinate dei due sistemi sono legate dalle seguenti relazioni:

x=\frac{x*}{m},\; y=\frac{y*}{m},\; z=\frac{z*}{m}

Per avere un corrispondenza biunivoca tra punti i punti dello spazio omogeneo con quello cartesiano, si assume m=1.

Utilizzando le coordinate omogenee risulta possibile esprimere la trasformazione di traslazione r1=r-t mediante il seguente prodotto matriciale:

\mathbf{R}_{1}=\left[\begin{array}{c}<br /> x_{1}\\y_{1}\\z_{1}\\1\end{array}\right]=\left[\begin{array}{cccc}<br /> 1 & 0 & 0 & -t_{x}\\0 & 1 & 0 & -t_{y}\\0 & 0 & 1 & -t_{z}\\0 & 0 & 0 & 1\end{array}\right]\left[\begin{array}{c}<br /> x\\y\\z\\1\end{array}\right]=\mathbf{T}_{1}\mathbf{R}

Trasformazioni geometriche

dove (tx,ty,tz) sono le componenti del vettore traslazione t, T1 è la matrice di traslazione e R1 ed R sono le corrispondenti coordinate omogenee di r e r1.

Se si esprimono anche le altre trasformazioni mediante le coordinate omogenee si ha che la corrispondenti matrici di trasformazione avranno dimensione 4×4, dove i termini della quarta riga e colonna hanno valori zero ad eccezione del termine a4,4=1.

Una generica trasformazione può sempre essere scomposta in trasformazioni elementari, per ottenere la sua matrice di trasformazione occorre tenere ben presente la sequenza delle trasformazioni perché il prodotto tra matrici non è commutativo.

Ad esempio, una trasformazione di rotazione attorno ad una asse parallelo a z e non passante per l’origine (Eq. 5.3) è costituita da:

  • una traslazione del centro di rotazione nel punto origine del sistema cartesiano
  • un rotazione attorno all’asse z
  • un traslazione dall’origine al centro iniziale di rotazione

per cui può essere espressa da:

\mathbf{r}_{1}=\mathbf{T}_{2}\mathbf{A}_{Rz}\mathbf{T}_{1}\mathbf{r}=\mathbf{D}_{T}\mathbf{r}

Trasformazioni geometriche

Eseguendo prima la moltiplicazione tra ARzT1 e poi la moltiplicazione T2(ARzT1) si ottiene la matrice DT data da:

\mathbf{D}_{T}=\left[\begin{array}{cccc}<br /> \cos\alpha & -\sin\alpha & 0 & x_{0}(1-\cos\alpha)+y_{0}\sin\alpha\\\sin\alpha & \cos\alpha & 0 & -x_{0}\sin\alpha+y_{0}(1-\cos\alpha)\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\end{array}\right]

Se si esegue il prodotto matriciale (T2ARz)T1 la matrice risultante è sempre uguale a DT,
ma se si inverte la rotazione con la traslazione si ha: T2 (T1ARz)= (T2 T1)ARz= ARz.

Analizzando la matrice DT possiamo ottenere la trasformazione complessiva come una rotazione del segmento P0P attorno all’asse z a cui segue la traslazione uguale al vettore P0‘P0 , che porta il punto P’1 nel punto P’. Nella slide successiva viene mostrata la trasformazione prodotta da DT.

Il prodotto tra matrici di traslazione gode della proprietà commutativa, per cui se abbiamo n traslazioni è possibile eseguire il prodotto tra matrice secondo un ordine qualsiasi.
La proprietà commutativa della traslazione deriva dalla proprietà commutativa della somma di n vettori.
Se invece consideriamo la trasformazione di riflessione osserviamo che, al pari della rotazione, se si eseguono più trasformazioni occorre rispettare l’ordine.
Ad esempio, una trasformazione di riflessione a cui segue una traslazione , è diversa da un traslazione a cui segue una riflessione.

Trasformazioni geometriche

Problema 7.2: Sia dato il punto P=(2,3,1), trovare:

  1. la posizione P’ di P dopo una traslazione di T=(2,-1,0) e una riflessione attorno al piano y=0
  2. la posizione P’ di P dopo una riflessione attorno al piano y=0 e una traslazione di T=(2,-1,0)

Soluz.: 1) P1‘=T1P =(4,2,1), P’=ArP1‘=(4,-2,1). 2) P1‘=ArP=(2,-3,1), P’=T1P1‘=(4,-4,1).

Il minore della matrice di trasformazione costituita dalle prime tre righe e tre colonne rappresenta la rotazione, mentre la quarta colonna rappresenta la traslazione.


Trasformazioni geometriche

Con le coordinate omogenee è possibile riscrivere le (7.9) e (7.10) e avere delle matrici 4×4 di trasformazione date da:

\mathbf{r}=\left[\begin{array}{cccc}<br /> u_{1x} & u_{2x} & u_{3x} & O_{1x}\\u_{1y} & u_{2y} & u_{3y} & O_{1y}\\u_{1z} & u_{2z} & u_{3z} & O_{1z}\\0 & 0 & 0 & 1\end{array}\right]\left[\begin{array}{c}<br /> x_{1}\\y_{1}\\z_{1}\\1\end{array}\right]=\mathbf{A}_{T1}\mathbf{r}_{1}

 

\mathbf{r_{1}}=\left[\begin{array}{cccc}<br /> u_{1x} & u_{1y} & u_{1z} & -O_{1x}\\u_{2x} & u_{2y} & u_{2z} & -O_{1y}\\u_{3x} & u_{3y} & u_{3z} & -O_{1z}\\0 & 0 & 0 & 1\end{array}\right]\left[\begin{array}{c}<br /> x\\y\\z\\1\end{array}\right]=\mathbf{A}_{T0}\mathbf{r}

I materiali di supporto della lezione

Appunti a cura del docente

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion