You are on page 1of 17

Bibliografie

Falcidieno, B., Herman, I., Pienovi, C., Computer Graphics and


Mathematics, New York, Springer, 1992
Dogaru, D., Elemente de grafic tridimensional, Bucureti, Editura
tiinific i Enciclopedic, 1988
Smeureanu, I., Odgescu, I., Luca, D., Drdal, M., Furtun, F., Grafic
interactiva pe calculatoare personale, Editura Militar, Bucureti, 1995
Furtun, F., Grafic interactiv cu aplicaii n Java i Java3D, Editura ASE,
Bucureti, 2007
Rodica Baciu , Programarea aplicatiilor grafice 3D cu OpenGL , Editura
Albastra, Cluj Napoca, 2005
***, Euclidian Space building a 3D world, http://www.euclideanspace.com/
OpenGL Reference Manual, http://www.glprogramming.com/blue/index.html

Transformari geometrice

Transformari geometrice plane


Transformari

elementare
Transformarea de vizualizare

Transformari geometrice in spatiu


Sisteme

de coordonate 3D
Transformari 3D

Transformri geometrice plane

Coordonate omogene - Un punct P(x y ) se reprezint n sistem de


coordonate omogene prin punctul P(X Y w), unde X=xw, Y=yw, pentru
orice valoare w0, numit factor general de scal
Transformare plan Definesc o transformare plan ecuaiile xt= f(x, y),
yt= g(x, y), care permit trecerea de la punctul M(x, y,1) la punctul Mt(xt, yt, 1)
Matrice de transformare Matrice de dimensiune 33 prin care sunt
modelate transformrile geometrice plane

Transformri elementare
Translaia: xt = x + a , yt = y + b

1 0 0
y 1 0 1 0 xa
a b 1

y b 1 xt

Scalarea: xt = xa , yt = y b

a 0 0
y 1 0 b 0 ax by 1 x'
0 0 1

y' 1

yt 1

Transformri elementare

Deformarea (forfecarea): xt = x + ay , yt = y + bx

1 b 0
y 1 a 1 0 x ay
0 0 1

y bx 1 x t

yt 1

Simetria: xt = - x , yt = - y

1 0 0
0 1 0
0 0 1

1 0 0
S Y 0 1 0
0 0 1

SO

1 0 0
0 1 0
0 0 1

Transformri elementare

Rotaia n jurul originii n sens trigonometric cu un unghi


x r cos( )
x t r cos( ) r (cos cos sin sin ) x cos y sin
y r sin( )
y t r sin( ) r (sin cos cos sin ) x sin y cos

Y
t

Mt (x , y )

(xt

yt

1) ( x

cos
y 1) sin
0

sin
cos
0

0
0
1

M (x,y)
X

Compunerea transformrilor 2D
O transformare compus const ntr-o succesiune de transformri
elementare executate ntr-o anumit ordine.
Matricea transformrii compuse este produsul matricelor transformrilor
elementare componente

A B 1
C D 1
a

b 1

Transformarea invers Transformare care are ca efect aducerea unui corp


n starea iniial

T T 1 I

Transformarea de vizualizare

xe x ax bx

ye y ay by
vr vl
vl ( wr wl ) wl (vr vl )
ax
, bx
,
wr wl
wr wl
vt vb
vb( wt wb) wb(vt vb)
ay
, by
.
wt wb
wt wb

Transformarea de vizualizare

Coordonate utilizator (coordonatele reale) - spaiul utilizator - fereastr

Spaiul utilizator
(wl,wt)

fereastr

(wr,wb)

Transformarea de vizualizare

coordonate ecran spaiul ecran vizor (viewport)

Spaiul ecran
(vl,vt)
Vizorul

(vr,vb)

Transformarea de vizualizare

x wl
xe vl

wr wl vr vl
y wb
ye vb

wt wb vt vb

wt wb vt vb

wr wl vr vl

Aplicatia 1. S se realizeze o hart a Romniei pornind de la cele dou


coordonate geografice (latitudine, longitudine) ale oraelor reedin de
jude.

Aplicatia 2. S se efectueze rotaia unui corp n jurul unui punct arbitrar M, cu


un unghi n sens trigonometric

Etape:
translaia centrului de rotaie n
originea axelor
rotaia n jurul originii n sens
trigonometric cu unghiul
translaia rezultatului la centrul de
rotaie iniial.

1
y 1 0

0
1

0 cos
0 sin

a b 1

Pt (x , y )

P(x, y)

M (a,b)
X

sin
cos
0

0 1 0 0
0 0 1 0 x' y ' 1
1

a b 1

.NET Framework Class Library - Clasa Matrix

public Matrix(); // creaza o matrice identitate


public Matrix( float m11, float m12, float m21, float m22,
float dx, float dy ); // creaza o matrice cu parametrii
specificati
public Matrix( Rectangle rect, Point[] plgpts ); //creaza o
matrice de transformare de la zona specificata prin rect
la cea specificata prin vectorul de puncte(stangasus,dreapta-sus,stanga-jos)
public Matrix( RectangleF rect, PointF[] plgpts ); // Idem

.NET Framework Class Library - Clasa Matrix

public void Multiply( Matrix matrix ); // inmultire cu


matricea specificata
public void Reset(); // resetare pe matricea identitate
public void Invert(); // determina matricea inversa
public void Rotate( float angle ); // rotatie in jurul originii
in sens orar cu unghiul specificat
public void RotateAt( float angle, PointF point ) ; // rot. in
jurul punctului specificat in sens orar cu unghi specificat

.NET Framework Class Library - Clasa Matrix

public void Translate( float offsetX, float offsetY );//


translatia
void Scale( float scaleX, float scaleY ); // scalare cu
parametrii specificati
public void Shear( float shearX, float shearY ); //
deformare (forfecare) cu parametrii specificati

Clasa Graphics

public void MultiplyTransform( Matrix matrix ); //


compune matricea curenta cu matricea matrix
public void ResetTransform(); // restabileste matricea
unitate ca matrice de lucru
public void RotateTransform( float angle ); // aplica o
matrice de rotatie sub unghi angle
public void ScaleTransform( float sx, float sy ); //aplica o
matrice de scalare de parametrii specificati

You might also like