Sunteți pe pagina 1din 57

Transformari grafice

1
Transformari grafice 2D

Y P(x,y)
P(x’,y’)

O X

Transformarea unui punct raportat la un sistem de coordonate


fix -> TRANSFORMARI GEOMETRICE

2
Transformari grafice 2D

P(x,y)
Y
Y’

O
O’ X
X’

Transformarea sistemului de coordonate si raportatrea unui


punct raportat la noul sistem de coordonate ->
TRANSFORMARI ALE SISTEMELOR DE
COORDONATE

3
Transformari geometrice 2D

 Transformari geometrice elementare

 Translatia
 Scalarea fata de origine
 Rotatia fata de origine
 Oglindirea
 Forfecarea

4
Utilizarea transformarilor geometrice
 Obiete = set de varfuri

 Aplicarea unei succesiuni de transformari => aceleasi modificari intregului set de varfuri

x 
Reprezentare punct  y  - reprezentare prin vectori coloana
 
Translatia
Vector de translatie

ty

tx

 tx, ty – factori de translatie pe axa ox,


respectiv oy

6
Translatia
tx P’
Y
ty
P(x, y)
P’(x’, y’)
P
O X

 tx, ty – factori de translatie pe axa ox, respectiv oy

x’ = x + tx  x'  x   tx  Matricea de
y’ = y + ty  y'   y    ty  translatie
T(tx,ty)
     
 Sunt pastrate lungimile, unghiurile

7
Scalarea fata de origine – Scalare uniforma

sx  2
sy  2

 (1, 1)  (2, 2)
 (3, 1)  (6, 2)
 sx, sy – factori de scalare pe axa ox, respectiv oy

 x' sx 0  x  Matricea de


x’ = x * sx
y’ = y * sy  y'  0 sy    y  scalare
      S(sx,sy)
8
Scalarea fata de origine – Scalare neuniforma

sx  3
sy  1

sx  1
sy  2

Nu se pastreaza lungimile si unghiurile


9
Scalarea fata de origine – Scalare neuniforma

sx = 2,
sy = 0.5

10
Rotatia fata de origine

Rotatie pozitiva

u – unghi de rotatie

11
Rotatia fata de origine

P’(x’, y’)

u P(x,y)
v

 x = cos(v) y = sin(v)
 x’ = cos(u+v) y’ = sin(u+v)

x'  x  cos(u) - y  sin(u)  x' cos(u) - sin(u)   x 


y'  x  sin(u)  y  cos(u)  y'  sin(u) cos(u)   y 
     
Matricea de
Sunt pastrate lungimile si unghiurile rotatie
R(u) 12
Transformari geometrice

Transformari afine:

Transformarile care conserva liniile drepte si paralelismul


liniilor

13
Transformari compuse

Translatie cu tx=6, ty=0 si rotatie si 45º

6
5
4
3
2
1

0
1 2 3 4 5 6 7 8 9 10

14
Reprezentare matriceala (4)

Translatie : T(tx, ty) - matrice 2x1


Scalare fata de origine : S(sx, sy) - matrice 2x2
Rotatie fata de origine : R(u) - matrice 2x2

Folosirea coordonatelor omogene (x, y, w)

15
Coordonate omogene

• Se folosesc coordonate omogene


 (xc, yc)  (xw, yw, w) xw = xc * w
yw = yc * w

 (xw, yw, w)  (xc, yc) xc = xw / w


yc = yw / w

 Punctele reprezentate in coordonate omogene (w=1):


x 
 y  - reprezentare prin vectori coloana
 
1 

16
Coordonate omogene
• Reprezentarea unui punct in coordonate omogene nu este unica
• (3, 2, 1), (6, 4, 2) sau (9, 6, 3) sunt reprezentari posibile ale punctului (3, 2) in coordonate omogene

 Punctele reprezentate in coordonate omogene (w=1):

x 
 y  - reprezentare prin vectori coloana
 
1 

[x y 1] - reprezentare prin vectori coloana 17


Reprezentare matriceala

Translatia : x'  x  tx
y'  y  ty

 x' 1 0 tx   x 
 y'  0 1 ty    y 
     
1  0 0 1  1 

Matricea de translatie T(tx,ty)

18
Reprezentare matriceala

Scalarea fata de origine : x'  x  sx


y'  y  sy

 x'  sx 0 0   x 
 y'   0 sy 0    y 
     
1  0 0 1  1 
Matricea de scalare S(sx,sy)

19
Reprezentare matriceala

Rotatia fata de origine : x'  x  cos(u) - y  sin(u)


y'  x  sin(u)  y  cos(u)

 x' cos(u) - sin(u) 0 x 


 y'  sin(u) cos(u) 0   y 
  
1  0 0 1 1 
Matricea de rotatie R(u)

20
Transformari geometrice elementare

• Translatia:  x' x 
 y'  T(tx, ty) y 
   
1  1 

• Scalarea fata de origine  x' x 


 y'  S(sx, sy)  y 
   
1  1 

 x' x 
• Rotatia fata de origine  y'  R(u)  y 
   
1  1  21
Compunerea transformarilor

6
Translatie cu tx=6, 5
4
ty=0 si rotatie si 45º 3
2
1

0
1 2 3 4 5 6 7 8 9 10

Y 6
5
Rotatie cu 45º si 4
3
translatie cu tx=6, ty=0 2
1

0
1 2 3 4 5 6 7 8 9 10
X

22
Transformari geometrice elementare - inverse

1) T(6, 3)

2) T(-6, -3)

23
Transformari geometrice elementare - inverse

• Translatia inversa: T -1 (tx, ty)  T(-tx, - ty)

• Scalarea inversa fata de origine: S-1 (sx, sy)  S( 1 , 1 )


sx sy

• Rotatia inversa fata de origine: R -1 (u)  R(-u)

24
Scalarea fata de un punct fix F

F(xf, yf)

F(xf, yf) punct fix

25
Scalarea fata de un punct fix F

T(-xf, -yf)
F(xf, yf)

S(sx, sy) T(xf, yf)

F(xf, yf)

26
Scalarea fata de un punct fix F

1. Translatie astfel incat punctul F sa ajunga in origine: T(-xf, -yf)


2. Scalarea fata de origine S(sx, sy)
3. Translatia inversa de la punctul 1: T(xf, yf)

 x'  x 
   
 y'  T(xf, yf) S(sx, sy) T(-xf, - yf)  y
   
1  1 
 

27
Rotatia fata de un punct fix F

F(xf, yf)

1. Translatie astfel incat punctul F sa ajunga in origine: T(-xf, -yf)


2. Rotatia fata de origine: R(u)
3. Translatia inversa de la punctul 1: T(xf, yf)
 x'  x 
   
 y'  T(xf, yf) R(u) T(-xf, - yf)  y
   
1  1 
 
28
Oglingirea
Oglindirea fata de axa ox

x’ = x
y’ = -y

 x' 1 0 0   x 
 y'  0 - 1 0   y 
    
1  0 0 1  1 

Matricea de oglindire

Ox = Ox-1 29
Oglingirea
Oglindirea fata de axa oy

 x' - 1 0 0   x 
x’ = -x  y'  0 1 0   y 
y’ = y     
1  0 0 1  1 

Oy = Oy-1 30
Oglingirea
Oglindirea fata de origine

 x' - 1 0 0  x 
 y'  0 -1  
0  y 
  
x’ = -x 1  0 0 1  1 
y’ = -y
OO = OO-1 31
Transformari geometrice
• Oglindirea fata de o dreapta oarecare d

y 1. Translatie astfel incat dreapta d sa treaca


d
prin origine: T(-x1, -y1)
P2(x2,y2)
2. Rotatie astfel incat dreapta d sa se
P1(x1,y1) suprapuna peste ox: R(-u)
u
3. Oglindire fata de ox: Ox
4. Rotatia inversa de la punctul 2: R(u)
O x 5. Translatia inversa de la punctul 1: T(x1, y1)

 x ' x 
 y'  T(x1, y1) R(u) O R(-u) T(-x1, - y1) y 
  x  
1  1 

Oglindirea fata de dreapta y=x: x’ = y, y’ = x


32
Transformari geometrice

Forfecarea fata de ox
 f factor de forfecare de-a lungul axei ox
x

x'  x  y * fx
y'  y
fx

 x'   1 fx 0  x 
 y'   0 1 0 y
     

1   
 0 0 1  
1 

33
Transformari geometrice

Forfecarea fata de axa oy


 f factor de forfecare de-a lungul axei oy
y

x'  x
y'  y  x * fy
fy
 x'  1 0 0   x 
 y'   f 1 0  y 
   y  

1    1 
 0 0 1  

34
Transformari geometrice
 Forfecarea fata de ambele axe

y y

fx
1 1

fy

O 1 x O 1 x

x'  x  y * fx
y'  y  x * fy

 x'   1 fx 0   x 
 y'   f 1 0   y 
   y  

1   0 0 1 
   1 
35
Transformari 2D ale sistemelor de coordonate
y'
• Translatia y
y’ P
y

O' x’
x'
ty
O
tx x x

P(x,y) – in sistemul xoy


P(x’, y’) – in sistemul x’o’y’

x'  x  tx
y'  y  ty
36
Transformari 2D ale sistemelor de coordonate
 Scalarea
xoy – sistem de coordonate cu unitatea de masura m
x’o’y’ – sistem de coordonate cu unitatea de masura mm

1 unitate de masura in xoy  1/1000 unitate de masura in x’o’y’


=> factorii de scalare sx = sy = 1/1000

punctul de coordonate (1, 2) din xoy  (1000, 2000) in x’o’y’


x
x' 
sx
y
y' 
sy
37
Transformari 2D ale sistemelor de coordonate

• Rotatia
y y
y'
P P
x'
v
u

O
x
O x

P(x,y) – in sistemul xoy


P(x’, y’) – in sistemul x’o’y’

x'  x * cos(u)  y * sin(u)


y'  - x * sin(u)  y * cos(u)
38
Transformari 2D ale sistemelor de coordonate

y y
y'
P P
x'
v
u

O
x
O x

x'  x * cos(u)  y * sin(u)


y'  - x * sin(u)  y * cos(u)
39
Transformari 2D ale sistemelor de coordonate

• Oglindirea fata de ox
y
y

x x
O
O

y'

x’ = x
y’ = -y

40
Transformari 2D ale sistemelor de coordonate

• Oglindirea fata de oy
y y

x x' x
O O

x’ = -x
y’ = y

41
Transformari 2D ale sistemelor de coordonate

 Transformarile sistemelor de coordonate


sunt inverse transformarilor geometrice

42
Transformarea de instantiere
y
O x

(-2,1) (2,1) 100

O
2 x C(300,200) 100
(0,-1)

4 y
sistem de coordonate
Sistem de
asociat suprafetei de
Sistem
sistem de
de coordonate afisare
coordonate
obiect
coordonate
global
obiect
Transformarea de
instantiere

43
Transformarea de instantiere
y
O x

100
(-2,1) (2,1)
O C(300,200) 100
2 x
(0,-1)

4 y
sistem de coordonate
Sistem de coordonate Sistem global
de coordonate
sistem de coordonate
obiect
obiect global


Scalare: sx = 100/4 = 25, sy = 100/2 = 50

Scalare uniforma: sx = sy = min(sx, sy) = 25
 Oglindire fata de axa x
 Translatie astfel incat O -> C
 tx = 300 – 0 = 300, ty= 200 – 0 = 200
44
Transformarea de instantiere
y
O x

100
(-2,1) (2,1)
O C(300,200) 100
2 x
(0,-1)

4 y
sistem de coordonate
Sistem de coordonate Sistem global
de coordonate
sistem de coordonate
obiect
obiect global

45
Transformarea de instantiere

(x, y) – in sistemul de coordonate obiect

transformarea x’ = x * 25 + 300
de instantiere Y’ = -y * 25 + 200

(x’, y’) – in sistemul de coordonate global

46
Transformarea fereastra-poarta

instantiere

poarta
fereastra

47
48
Transformarea fereastra-poarta
 Face trecerea din sistem de coordonate 2D real in
sistemul de coordonate asociat dispozitivului de
afisare
 Fereastra – zona dreptunghiulara cu laturile
paralele cu axele sistemului de coordonate real ce
incadreaza imaginea reprezentata in spatiul 2D
real
 Poarta – zona dreptunghiulara cu laturile paralele
cu axele sistemului de coordonate dispozitiv (in
care se va face afisarea)

49
Transformarea fereastra-poarta

Poarta (0, 0) – (400, 200)

Fereastra

50
Transformarea fereastra-poarta
y y

transformarea
(0.5,1) fereastra (200,200) (400,200)
(1,1)
poarta

(0,0) (1,0) x (0,0) (100,0) (300,0) x

centrarea in poarta de afisare: translatie suplimentara


xp max  xp min  sx * ( xf max  xf min)
tx' 
2
yp max  yp min  sy * ( yf max  yf min)
ty ' 
2 51
Transformarea fereastra-poarta
y y

transformarea
(0.5,1) fereastra (200,200) (400,200)
(1,1)
poarta

(0,0) (1,0) x (0,0) (100,0) (300,0) x

xp max  xp min  sx * ( xf max  xf min)


tx' 
2
yp max  yp min  sy * ( yf max  yf min)
ty ' 
2

52
Transformarea fereastra-poarta
 Afisare pe ecran – poarta (0,0) – (400,200)

y
(100,0) (300,0) x

(0.5,1) (1,1)

(200,200) (400,200)

(0,0) (1,0) x y

(0,0)

53
54
55
Transformarea fereastra-poarta
 Afisare pe ecran
(0,0) (100,0) (300,0) x (200,0) x

y
(200,200) (400,200) (100,200) (300,200)

(0.5,1) (1,1) transformarea y y


fereastra
(0,0) x x
poarta
(200,200) (300,200) (500,200) (400,200)
(0,0) (1,0) x

(400,400) (600,400) (300,400) (500,400)

y y

xp  xf * sx  tx
yp  yp min yp max ( yf * sy  ty)
56
Transformarea fereastra-poarta

 Matricea transformarii fereastra-poarta

xp  xf * sx  tx
yp  yp min  yp max  ( yf * sy  ty )
  yf * sy  yp min  yp max  ty

 sx 0 tx 
M  0  sy yp min  yp max  ty 
 
0 0 1 

57

S-ar putea să vă placă și