Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
1
Metodi Numerici per la Grafica - A.A. 2005/06
Geometria per la Computer Graphics
Serena Morigi
2
A.A. 2005/06 2
860,000 facce860,000 860,000 faccefacce
H.Hoppe
3
A.A. 2005/06 3
Oggetti geometrici e trasformazioni• Rappresentiamo gli
oggetti usandoprimitive:– punti– linee, segmenti– piani, poligoni
• Vogliamo determinaredistanze, trasformazioni…
4
A.A. 2005/06 4
Sistemi di coordinate
x
y
z
• Right handed coordinate system
In CG si usa la convenzione dell’asse z
uscente dallo schermo
5
A.A. 2005/06 5
Scalari Punti e vettori: definizioni• Scalare entità che ha come unico attributo un valore
numerico che specifica una quantità
• Punto entità che ha come unico attributo unaposizione nello spazio (o nel piano)
• Vettore Entità I cui attributi sono: modulo(lunghezza) e un orientamento (direzione e verso). Non ha una posizione fissata nello spazio.
Punti ≠ Vettori
6
A.A. 2005/06 6
Spazio vettoriale (lineare)
• Contiene entità VETTORI e SCALARI• Operazioni:
– Moltiplicazione scalare per vettore– Somma vettori
-0.5v
v
7
A.A. 2005/06 7
vettore + vettore = vettore
Regola del Parallelogramma
8
A.A. 2005/06 8
COMBINAZIONE LINEARE
Vwvavavaw nn
∈+++= .....2211
Dato un insieme di n vettori di uno spazio lineare V e un insieme di scalari, la combinazione lineare
produce un vettore in V.In uno spazio lineare di vettori in R3, la base v0,v1,v2 costituisce un sistema di coordinate
9
A.A. 2005/06 9
SPAZIO VETTORIALE con Prodotto scalare (o prodotto interno)
Norma 2 o norma Euclidea
( )∑=
===n
ii
T xxxxxx1
22
,
∑=
ℜ==x
i
nii
T inyxxyyx1
,
Dati due vettori produce uno scalare
10
A.A. 2005/06 10
Lunghezza di un vettore• La lunghezza di un vettore è data da:
• Un vettore di lunghezza =1.0 è chiamatovettore unitario
• Normalizzare un vettore significa renderlounitario:
222zyx vvvv ++=
vv
11
A.A. 2005/06 11
Prodotto Scalare
θcos||||||||, ⋅⋅=>< wvwv
θ
L v
w
||w||||v||, θcos >
12
A.A. 2005/06 12
Vettore Proiezione /proiezione ortogonale• Se ||v||=1.0 allora è la lunghezza del
vettore proiezione u di w su v
w
v
u
vwvvvwu >=
13
A.A. 2005/06 13
Prodotto Scalare in coordinate
v
w
xv
yv
xw
yw
x
y
O
wvwv
ww
vv
yyxxwvyxw
yxv
+=><==
,),(
),(
14
A.A. 2005/06 14
Componenti del punto P• Decomporre v nelle
sue componenti:v = v|| + v⊥
– v|| = n => v|| || n
– v⊥ = v – v|| => v⊥⊥n
O
nP
vv⊥
v||
15
A.A. 2005/06 15
Vettori perpendicolari
v
v⊥
),(),(0,
vvvv xyvyxvwv
−±=⇒=
=><⊥
16
A.A. 2005/06 16
Cross Product
[ ]xyyxzxxzyzzy
zyx
zyx
babababababa
bbbaaakji
−−−=×
=×
ba
ba
17
A.A. 2005/06 17
Proprietà del Cross Product
0
sin
=×
=×
=×
×
ba
ba
baba
ba
θ
area del parallelogramma ab
è un vettore perpendicolare sia a a che a b, nella direzione definitadalla regola della mano destra
se a e b sono paralleli
18
A.A. 2005/06 18
Esempio: Normale ad un triangolo
• Determina la normale di lunghezzaunitaria di un triangolo definito da punti3D a, b, e c
ab
c
19
A.A. 2005/06 19
Esempio: Normale ad un triangolo
( ) ( )
∗
∗
∗
=
−×−=
nnn
acabn
b-a
c-a
ab
c
20
A.A. 2005/06 20
Esempio: Area di un triangolo
• Trova l’area del triangolo definito daipunti 3D a, b, e c
ab
c
21
A.A. 2005/06 21
Esempio: Area di un triangolo
( ) ( )acab −×−=21area
b-a
c-a
ab
c
22
A.A. 2005/06 22
Esempio: Allineamento al Target
• Un oggetto è in posizione p in direzioneunitaria h. Vogliamo ruotarlo in modo che la sua direzione sia rivolta verso un target t. Trova un asse unitario a e un angolo θ attorno al quale ruotare.
•
•
ph
t
23
A.A. 2005/06 23
Esempio: Allineamento al Target
•
•
ph
tt-pθ
a
( )( )
( )( ) ⎟
⎟⎠
⎞⎜⎜⎝
⎛
−−⋅
=
−×−×
=
−
ptpth
pthptha
1cosθ
24
A.A. 2005/06 24
Classe vettoreclass Vector3 {public:
Vector3() {x=0.0f; y=0.0f; z=0.0f;}Vector3(float x0,float y0,float z0) {x=x0; y=y0; z=z0;}void Set(float x0,float y0,float z0) {x=x0; y=y0; z=z0;}void Add(Vector3 &a) {x+=a.x; y+=a.y; z+=a.z;}void Add(Vector3 &a,Vector3 &b) {x=a.x+b.x; y=a.y+b.y; z=a.z+b.z;}void Subtract(Vector3 &a) {x-=a.x; y-=a.y; z-=a.z;}void Subtract(Vector3 &a,Vector3 &b) {x=a.x-b.x; y=a.y-b.y; z=a.z-b.z;}void Negate() {x=-x; y=-y; z=-z;}void Negate(Vector3 &a) {x=-a.x; y=-a.y; z=-a.z;}void Scale(float s) {x*=s; y*=s; z*=s;}void Scale(float s,Vector3 &a) {x=s*a.x; y=s*a.y; z=s*a.z;}float Dot(Vector3 &a) {return x*a.x+y*a.y+z*a.z;}void Cross(Vector3 &a,Vector3 &b)
{x=a.y*b.z-a.z*b.y; y=a.z*b.x-a.x*b.z; z=a.x*b.y-a.y*b.x;}float Magnitude() {return sqrtf(x*x+y*y+z*z);}void Normalize() {Scale(1.0f/Magnitude());}
float x,y,z;};
25
A.A. 2005/06 25
Spazio Affine• In uno spazio lineare manca il concetto
di posizione.• Estensione dello spazio vettoriale che
include l’entità PUNTO.• Nuova operazione:
- somma punto + vettore: definisce un nuovo punto
- Differenza punto-punto: definisce un vettore
26
A.A. 2005/06 26
Punto + vettore = punto
A
B=A+v
27
A.A. 2005/06 27
punto - punto = vettore
A
BB –A
A
BA – B
28
A.A. 2005/06 28
punto + punto : non definita!!
29
A.A. 2005/06 29
Map tra punti e vettori
• Se abbiamo un sistema di coordinate con origine O
• Definiamo la corrispondenza tra punti e vettori:
vOvOPPP
+→−=→
r
30
A.A. 2005/06 30
COMBINAZIONE AFFINE
1..........
21
2211
=++++++=
n
nn
aaacertiperPaPaPaP
E’ una combinazione lineare di punti con i coefficienti a somma 1
Le coordinate (a1,a2,...,an) sono le coordinate baricentriche di P nello spazio affine
Combinazioni affini con i coefficienti (a1,a2,...,an) limitati in [0,1] si dicono combinazioni convesse
31
A.A. 2005/06 31
Convex hull• Dato un insieme di punti
• L’insieme dei punti P che possono essere rappresentati dalla combinazione convessa di questi è chiamato convex hull (guscio convesso) dell’insieme
• E’ il più piccolo insieme convesso che contiene questi punti
nPPP ,.....,, 21
P
32
A.A. 2005/06 32
Coordinate Baricentriche (2D)• Definire la posizione di un punto rispetto ad altri
punti A,B,C.• P = αA + βB + γC, dove A, B, C non sono allineati,
e α, β, γ ∈ R.• (α, β, γ) sono COORDINATE BARICENTRICHE di
P rispetto a A, B, C (uniche!)• Se P è all’interno del triangolo, α, β, γ ∈ [0, 1], α+β+γ = 1
A B
C
P
R
QQ, R??
33
A.A. 2005/06 33
Coordinate Baricentriche (2D)
A B
C
P
triangolodel area'ldenota,,
,,,,
,,,,
,,,,
⋅⋅⋅
++= CCBABAP
BCBAACP
ACBACBP
Prrrr
34
A.A. 2005/06 34
Linea in uno spazio affine:Rappresentazione parametrica di una retta
),(,0 ∞−∞∈+= tvtP(t)l
P0
vt > 0
t < 0 t = 0
35
A.A. 2005/06 35
Equazione parametrica di un raggio
P0
v
36
A.A. 2005/06 36
Equazione parametrica di un raggio
),0(,0 ∞+∈+= tvtP(t)l
P0
vt > 0
t = 0
37
A.A. 2005/06 37
Distanza fra due punti
B
A
xB
yB
xA
yA
x
y
O
22 )()(
,
||||),(dist
ABAB yyxx
ABAB
ABBA
−+−=
=>−−
38
A.A. 2005/06 38
Distanza tra un punto e una linea
Trova un punto Q’ tale che (Q− Q’)⊥vdist(Q, l) = ||Q − Q ’ ||
P0
v
Q
Q’ = P0 +tv
2
202
022
200
0
0
||||,||||||||),(dist
||||,
,,
0,,0,
0,
vvPQPQQQlQ
vvPQ
vvvPQt
vvtvPQvtvPQ
vQQ
>−<−−=′−=
>−<=
><>−<
=
=>−<=>−−<
=>′−<
l
39
A.A. 2005/06 39
Interpretazione geometrica
P0
v
Q
Q’
.||||,||||
||||),(dist
||||,||||),(dist
:
2
202
0
220
20
20
22
vvPQPQ
LPQQQ
vLvPQPQQQL
>−<−−=
=−−=′⇒
=>−<−=′+
Pitagora l
L
40
A.A. 2005/06 40
Distanze tra punti e linee in 3D
• La rappresentazione parametrica di unalina è indipendente dalle coordinate
• v e P0 e il punto Q possono essere in 2D o in 3D o in altre dimensioni….
41
A.A. 2005/06 41
Equazione implicita di una retta in 2D0,R,,,0 ≠∈=++ BACBACByAx
x
y Ax+By+C > 0
Ax+By+C < 0
Ax+By+C
= 0
42
A.A. 2005/06 42
Intersezione linea-segmento
0))((linea laintersecaQQsegmentoIl
2211
21
≤++++⇔⇔
CByAxCByAx
x
yAx+By+C > 0
Ax+By+C < 0
Q1 (x1, y1)
Q2 (x2, y2)
43
A.A. 2005/06 43
Rappresentazione di un piano in unospazio 3D
• Il piano π è definito da una normale n e un puntonel piano (P0).
• Un punto Q appartiene al piano ⇔ = 0• La normale n è perpendicolare a tutti i vettori nel
pianon
P0Q
π
44
A.A. 2005/06 44
Distanza tra un punto e un piano
• Proietta il punto sul piano nelladirezione della normale:
dist(Q, π) = ||Q’ – Q||
n
P0Q’ π
Q
45
A.A. 2005/06 45
Distanza tra un punto e un piano
n
P0Q’π
Q
.||||,||||||'||),(dist
||||,
0,,0,
0,R,||)(
2
202222
20
0
0
0
nnPQnsQQQ
nnQPs
nnsnPQnsnPQ
nPQsnQQssnQQnQQ
>−<==−=
>−<=
=>−<=>+−<
=>−′<+=′⇒∈=−′⇒−′
π
46
A.A. 2005/06 46
Rappresentazione implicita di un piano in 3D
0,R,,,,0 ≠∈=+++ CBADCBADCzByAx
• (x, y, z) sono le coordinate di un punto sul piano• (A, B, C) sono le coordinate di un vettore
normale al piano
Ax+By+Cz+D > 0
Ax+By+Cz+D < 0
Ax+By+Cz+D = 0
47
A.A. 2005/06 47
Distanza tra due linee in 3D
P1
P2
u
v
d
La distanza è considerata tra due punti Q1 e Q2 tali che (Q1 – Q2) ⊥ u e (Q1 – Q2) ⊥ v
Q1
Q2
l1
l2
tvPtlsuPsl
+=+=
22
11
)()(
48
A.A. 2005/06 48
Distanza tra due linee in 3D
P1
P2
u
v
d
Q1
Q2
l1
l2
tvPtlsuPsl
+=+=
22
11
)()(
⎩⎨⎧
=>−+−<=>−+−<
0,)(0,)(
21
21
vtvsuPPutvsuPP
⎪⎩
⎪⎨⎧
=−>−<
=>−<
0||||,),(
0,||||),(2
21
221
vtvusvPP
uvtusuPP
49
A.A. 2005/06 49
Distanza tra due linee in 3D
P1
P2
u
v
d
Q1
Q2
l1
l2
tvPtlsuPsl
+=+=
22
11
)()(
2222121
2
22221
221
,||||||||,,,||||~
,||||||||,||||,,~
>−−<
=
>−−<
=
vuvuPPuvuPPuut
vuvuPPuvPPvvus
50
A.A. 2005/06 50
Distanza tra due linee in 3D
P1
P2
u
v
d
Q1
Q2
l1
l2
tvPtlsuPsl
+=+=
22
11
)()(
||)~()~(||),(dist 2121 tlslll −=
51
A.A. 2005/06 51
Esempio di utilizzo: warping
52
A.A. 2005/06 52
Esempio di utilizzo: warping
TARGET
AB
C
A′B′
C′
Prendiamo le coordinate baricentricheα, β, γ di P’ rispetto a A’, B’, C’
Color(P) = Color(α A + β B + γ C)
P′P
P′
53
A.A. 2005/06 53
Sistemi di riferimento• Un sistema di riferimento (frame) è definito
dalla quaterna (Po,v1,v2,v3) dove – Po è un punto di origine– E una base [v1,v2,v3]In esso si può rappresentare univocamente un punto
3322110 vavavaPP +++=
54
A.A. 2005/06 54
Coordinate omogenee• Rappresentare sia vettori che punti con
terne di scalari è ambiguo..• Adottiamo un sistema di coordinate che
permetta di rappresentare punti e vettori in due modi distinti
• Un punto si può esprimere come
• Un vettore si può esprimere come332211 vavavaw ++=
3322110 vavavaPP +++=
55
A.A. 2005/06 55
Coordinate omogenee• Assumendo la convenzione che
1*P=P e 0*P=0
• Un punto si può esprimere come
• Un vettore si può esprimere come0332211 0 Pvavavaw ⋅+++=
0332211 1 PvavavaP ⋅+++=
56
A.A. 2005/06 56
Coordinate omogenee• Quindi ogni punto/vettore viene espresso da
4 coordinate: la quarta coordinata dei vettori vale 0, la quarta coordinata dei punti vale 1
• In forma matriciale, le coordinate di un vettore:
le coordinate di un punto:
[ ]Taaa 0321[ ]Taaa 1321
57
A.A. 2005/06 57
Coordinate omogenee• Ogni punto/vettore si ottiene moltiplicando
le sue coordinate per la matrice 4x4 del sistema di riferimento:
[ ]⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
0
3
2
1
321 0
Pvvv
aaav [ ]⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
0
3
2
1
321 1
Pvvv
aaaP
58
A.A. 2005/06 58
Cambio di sistema di riferimento
• Dati due sistemi di riferimento:
• Esprimiamo origine e vettori di uno in termini dell’altro:
• Questo definisce la matrice 4x4 di cambiamanto del sistema di riferimento
{ } { }
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
+++=++=++=++=
1000
,,,,,,,
434241
333231
232221
131211
03432421410
3332321313
3232221212
3132121111
03210321
aaaaaaaaaaaa
M
PvavavaQvavavauvavavau
vavavau
QuuuPvvv
59
A.A. 2005/06 59
Cambio di sistema di riferimento• Abbiamo quindi
• Dato un vettore/punto e le sue rappresentazioni a nel primo e b nel secondo sistema, abbiamo:
aMbbMa
Pvvv
a
Pvvv
Mb
Quuu
b
Pvvv
M
Quuu
T
TTTT
1
0
3
2
1
0
3
2
1
0
3
2
1
0
3
2
1
0
3
2
1
)( −==
⇒
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
60
A.A. 2005/06 60
Esempio: posizionare la camera• Sistema del mondo: (x,y,z,O)• Sistema di vista: (xv,yv,zv,COP)• Esprimiamo il sistema di vista in termini del
sistema del mondo:
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
Ozyx
M
COPzyx
v
v
v
COP
yv
zv xv
z
xy
61
A.A. 2005/06 61
Esempio: posizionare la camera
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
Ozyx
zyxCOPzyx
copcopcop
v
v
v
1000101000010
COP
yv
zv xv
z
xy
Posizione di COP nel sistema del mondo
62
A.A. 2005/06 62
Esempio: posizionare la camera• Dato un punto P della scena avente coordinate
(xp,yp,zp,1) nel sistema di coordinate mondo• Le coordinate di P nel sistema di vista sono date da
( )⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
1
1
p
p
p
T
zyx
M
COP
yv
zv xv
z
xy
P
63
A.A. 2005/06 63
TRASFORMAZIONI GEOMETRICHE
• Consideriamo le trasformazioni che modificano le coordinate di un oggetto per ottenerne un altro simile ma differente per posizione, orientamento e dimensione.
• Altera la geometria lasciando invariata la topologia
64
A.A. 2005/06 64
Traslazione in 2D• Traslazione di d=(dx,dy)
Ogni punto dell’oggettoViene traslato di d
Ov
v+d
yyy
xxx
dvvdvv
+=′+=′
65
A.A. 2005/06 65
Rotazione in 2D• Rotazione rispetto all’origine di un angolo θ.
O
θ
Angoli positivi significadirezione anti-orariacounter-clockwise.
66
A.A. 2005/06 66
Rotazione in 2D
O
θ
• Rotazione rispetto all’origine di un angolo θ.
Angoli positivi significadirezione anti-orariacounter-clockwise.
67
A.A. 2005/06 67
Rotazione in 2D –rappresentazione matriciale• Moltiplica (x, y) per la
matrice di rotazione:
O
θ P (x, y)
P’ = Rθ (P)
θθθθ
θθθθ
θ
cossinsincos
cossinsincos
)(
yxyyxx
yx
yx
PRP
+=′−=′
⎟⎟⎠
⎞⎜⎜⎝
⎛⎟⎟⎠
⎞⎜⎜⎝
⎛ −=⎟⎟
⎠
⎞⎜⎜⎝
⎛′′
=′
68
A.A. 2005/06 68
Scala in 2D
O
• Uniforme sx=sy• Non unifome sx≠sy• rispetto all’origine
eriflessionsyosxeingrandiscsysxiscerimpicciolsysx
ysyyxsxx
yx
sysx
yx
PSP
001,
1,0**
00
)(
69
A.A. 2005/06 69
Trasformazione lineare• Ogni trasformazione lineare è rappresentata da
una matrice M non singolare tale che
• Ogni matrice non singolare rappresenta unatrasformazione lineare
vMv ⋅=′ ⎥⎦
⎤⎢⎣
⎡=
22
11
baba
M
2121 ''' vvvv ∈=>∈ vv
70
A.A. 2005/06 70
Trasformazione affine
222
111
dvbvav
dvbvav
yxy
yxx
++=′
++=′
+⋅=′ dvMv
Composizione di trasformazioni lineari e traslazioni
⎥⎥⎦
⎤
⎢⎢⎣
⎡+
⎥⎥⎦
⎤
⎢⎢⎣
⎡⎥⎦
⎤⎢⎣
⎡=
⎥⎥⎦
⎤
⎢⎢⎣
⎡
y
x
y
x
y
x
dd
vv
baba
vv
22
11'
'
71
A.A. 2005/06 71
Trasformazioni affiniin Coordinate omogenee
vMv ⋅=′
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡′′
++=′
++=′
1100122
11
222
111
y
x
y
x
y
x
yxy
yxx
vv
dbadba
vv
dvbvav
dvbvav
72
A.A. 2005/06 72
Trasformazioni affiniin Coordinate omogenee
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ −=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡′′
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡′′
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡′′
11000)cos()sin(0)sin()cos(
1
11001001
1
11000000
1
y
x
y
x
y
x
y
x
y
x
y
x
y
x
vv
vv
vv
dd
vv
vv
sysx
vv
ϑϑϑϑ
73
A.A. 2005/06 73
Invertibilità delle trasformazioni
)/1,/1()()()(
)()()(
1
1
1
'1'
1
yx
T
ssSsSdTdT
RRRPMPMPP
IMM
=
−=
==−
=>−=
=
−
−
−
−
−
ϑϑϑ
74
A.A. 2005/06 74
Concatenazione di trasformazioni• Dato un vettore/punto v, e una matrice di
rotazione lungo l’asse x Rx, generiamo ilvettore/punto ruotato v′:
• Se poi vogliamo ruotare quel vettore rispettoall’asse y, possiamo semplicemente:
( ) vRv ⋅=′ θx
( )( ) ( )( )vRRv
vRv
⋅⋅=′′
′⋅=′′
θφ
φ
xy
y
75
A.A. 2005/06 75
• Se v è trasformato in v’ mediante una sequenza di trasformazioni
• Per la proprietà associativa si può considerare un’unicamatrice di trasformazione
• Nota: NON vale la proprietà commutativa del prodotto , quindi l’ordine è importante
Concatenazione di trasformazioni
( )( )( )vMMMMv ⋅⋅⋅⋅=′ 1234
( ) vMMMMv ⋅⋅⋅⋅=′ 1234
vMvMMMMM
⋅=′⋅⋅⋅=
total
total 1234
76
A.A. 2005/06 76
Esempio
x
y
77
A.A. 2005/06 77
Trasformazioni rispetto ad un punto
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡ −
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−−
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡′′
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡⋅⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡−−
=⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡′′
11001001
1000)cos()sin(0)sin()cos(
1001001
1
originedall' diverso puntoun ad rispetto rotazione1100
1001
1000000
1001001
1
originedall'diversopuntoun ad rispetto scala
y
x
y
x
y
x
y
x
y
x
vv
dydx
dydx
vv
vv
dydx
ss
dydx
vv
ϑϑϑϑ
78
A.A. 2005/06 78
Traslazione 3D
• Espandiamo questa equazione in
• Ovvero
dvv +=′
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡+
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
′′′
z
y
x
z
y
x
z
y
x
ddd
vvv
vvv
zzz
yyy
xxx
dvv
dvvdvv
+=′
+=′+=′
79
A.A. 2005/06 79
Trasformazioni affini 3D in coordinate omogenee
• Forma matriciale generale
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⋅
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
′′′
110001z
y
x
z
y
x
z
y
x
vvv
dihgdfeddcba
vvv
80
A.A. 2005/06 80
Traslazione 3D in coordinate omogenee• Forma matriciale generale
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⋅
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
′′′
11000100010001
1z
y
x
z
y
x
z
y
x
vvv
ddd
vvv
81
A.A. 2005/06 81
Rotazioni in 3D
• Rotazione attorno all’asse z in forma matriciale:
in forma più compatta:
vv ⋅=′ )(ϑzR
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⋅
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
′′′
110001000)cos()sin(0)sin()cos(
1z
y
x
z
y
x
z
y
x
vvv
ddd
vvv
ϑϑϑϑ
82
A.A. 2005/06 82
Matrici di rotazione attorno agli assi x, y, e z :
( )⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
=
1000010000cossin00sincos
θθθθ
θzR
( )⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡−
=
10000cossin00sincos00001
θθθθ
θxR
( )⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡ −
=
10000cos0sin00100sin0cos
θθ
θθ
θyR
Rotazioni attorno ad uno stesso asse sono commutative
83
A.A. 2005/06 83
Rotazione attorno ad un asse arbitrario
• Rotazione attono ad un asse unitario a di un angolo θ
( )
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
−++−−−−−−++−+−−−−+
=
10000)1()1()1(0)1()1()1(0)1()1()1(
,
22
22
22
zzxzyyzx
xzyyyzyx
yzxzyxxx
a
acasacaasacaasacaaacasacaasacaasacaaaca
θθθθθ
θθθθθ
θθθθθ
θaR
84
A.A. 2005/06 84
• Ogni dimensione ha il suo scale factor
si hanno quindi le equazioni
Scala Uniforme/Non-Uniforme
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
⋅
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
′′′
11000000000000
1z
y
x
z
y
x
z
y
x
vvv
ss
s
vvv
zzz
yyy
xxx
vsv
vsvvsv
=′
=′=′
85
A.A. 2005/06 85
• Altera 2 o 3 dei valori delle coordinate proporzionalmente al valore delle altre coordinate;
• Hij i coord. da cambiare, j coord. che deforma
Trasformazione affine di SHEAR
]1['100001000010001
)(
zyzx
xz
vvsvvv
s
sH
+=
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=s
Analogamente per Hxy, Hyx, Hyz, Hzx, Hxy, Hzy
86
A.A. 2005/06 86
Trasformazioni di Shear
• Una generica matrice di trasformazione di shear:
• Con shear singolo, solo una delle costanti è non nulla
• Shears sono usate in CG per semplici deformazioni o effetti cartoon-like.
( )⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
=
1000010101
...65
43
21
61 zzzzzz
zzH
87
A.A. 2005/06 87
Rigid-Body transformation
• Una trasformazione si definisce rigida se riposiziona gli oggetti lasciando invariata la loro forma e dimensione
• Concatenazione di rotazioni e traslazioni• Preserva lunghezze ed angoli fra linee