transformarea de vizualizare 2d

Download Report

Transcript transformarea de vizualizare 2d

Slide 1


Slide 2

TRANSFORMAREA DE VIZUALIZARE
2D
Numim Sistem de coordonate logice - SCL (sau Sistem de coordonate universale
sau Sistem de coordonate utilizator) sistemul în care sunt proiectate desenele
(grafica) ce urmează a fi reprezentate computaţional.
Numim Sistem de coordonate fizice - SCF (sau Sistem de coordonate dispozitiv)
sistemul ataşat suprafeţei de afişare.
Unităţile de măsură ataşate celor două tipuri de sisteme, diferă.
Transformarea de la reprezentarea SCL la reprezentarea SCF poartă numele de
transformare de vizualizare 2D.
Multe sisteme grafice permit definirea desenelor într-un SCL, asigurând în mod
automat efectuarea transformării de vizualizare 2D. Astfel, funcţiile de afişare
ale unui sistem grafic GKS (Graphical Kernel System) sau PHIGS (Programmer’s
Hierarchical Interactive Graphics System) operează în SCL (numit şi World
Coordinate System - WCS).


Slide 3

TRANSFORMAREA DE VIZUALIZARE
2D
Observaţii:
Sistemul GKS a fost primul sistem ISO (International Organization for
Standardization), standardizat low-level computer graphics (1977).

Sistemul PHIGS este un descendent al sistemului GKS, un standard API
(Application Programming Interface) de randare grafică 3D. Este standardul
grafic 3D al anilor ’80 şi ’90 din care s-a născut ulterior standardul OpenGL –
Open Graphics Library – dezvoltat de Silicon Graphics Inc., larg utilizat în CAD,
VRML, vizualizări ştiinţifice, simulatoare de zbor şi jocuri video.
Astăzi, OpenGL este gestionat ca tehnologie non-profit de către consorţiul
Khronos Group.


Slide 4

TRANSFORMAREA DE VIZUALIZARE
2D
Funcţiile modului GDI (Graphical Device Interface) al SO Windows, permit
definirea desenelor în mai multe tipuri de SCL, asigurând transformarea
automată către SCF.
Transformarea de vizualizare 2D pune în corespondenţă fiecărui punct al unui
desen un punct al suprafeţei de afişare. Mulţimea punctelor adresabile ale
suprafeţei de afişare este finită, în timp ce mulţimea punctelor spaţiului 2D este
infinită. Pentru a fi posibilă formularea matematică a transformării de
vizualizare 2D, este necesar să se limiteze mulţimea punctelor spaţiului logic
care se pun în corespondenţă cu punctele suprafeţei de afişare. O primă măsură
care se ia în acest sens este specificarea unui dreptunghi cu laturile paralele cu
axele sistemului de coordonate logice, numit fereastră. Fiecărui punct din
fereastră i se pune în corespondenţă, prin transformarea de vizualizare 2D, un
punct al suprafeţei de afişare sau al unei zone dreptunghiulare din suprafaţa de
afişare numită poartă de afişare sau simplu – poartă. Din acest motiv,
transformarea de vizualizare 2D se mai numeşte şi transformare fereastrăpoartă.


Slide 5

TRANSFORMAREA DE VIZUALIZARE
2D
Să considerăm pentru început o aceeaşi orientare a axelor SCL şi SCF. Fie F(xf ,yf)
un punct din fereastră, şi fie P(xp ,yp) punctul corespunzător din poartă.
Transformarea fereastră-poartă este definită astfel încât poziţia relativă a
punctului P în poartă să fie aceeaşi cu poziţia relativă a punctului F în fereastră.
Condiţia se formulează matematic astfel:

x p  x p min
x p max  x p min
y p  y p min
y p max  y p min





x f  x f min
x f max  x f min
y f  y f min
y f max  y f min


Slide 6

TRANSFORMAREA DE VIZUALIZARE
2D
Punctele (xfmin , yfmin), (xfmax , yfmax), (xpmin , ypmin) şi (xpmax , ypmax) reprezintă
colţurile ferestrei, respectiv porţii, de pe diagonala principală.

Yf

Yp

P(xp , yp)

F(xf , yf)
yfmin
Of xfmin

ypmin
Xf

Op xpmin

Xp


Slide 7

TRANSFORMAREA DE VIZUALIZARE
2D
x p max  x p min

Notăm:

sx 

şi cu:

t x  x p min  s x x f min

x f max  x f min

Cu aceste notaţii, rezultă:

y p max  y p min

,

sy 

,

t y  y p min  s y y f min

y f max  y f min


x p  x f sx  tx


 yp  y f sy  ty

adică formularea matematică a transformării fereastră-poartă.


Slide 8

TRANSFORMAREA DE VIZUALIZARE
2D
Numerele sx şi sy sunt factorii de scalare ai transformării, iar tx şi ty sunt
componentele vectorului de translare. În felul acesta, transformarea
fereastră-poartă este o transformare geometrică compusă, aplicată asupra
punctului F şi furnizând punctul P.
Transformarea fereastră-poartă poate fi formulată şi ca o transformare a
sistemului de coordonate logice în sistemul de coordonate fizice.

De asemenea, transformarea fereastră-poartă poate fi definită şi ca
transformare care aplică dreptunghiul fereastră în dreptunghiul poartă.
Folosindu-ne de această ultimă interpretare, să examinăm câteva cazuri
particulare, din care vom desprinde unele caracteristici şi utilizări ale
transformării de vizualizare 2D.


Slide 9

TRANSFORMAREA DE VIZUALIZARE
2D
Fie fereastra din figura următoare:

x f min  0

y f min  0

x f max  1

y f max  1

(1,1)

Yf

Pentru poartă se consideră:

x p min  0

y p min  0

x p max  400

y p max  200

Rezultă:

sx 

400

 400

1

tx  0  sx 0  0

Of

sy 

Xf

200

 200

1

ty  0  sy 0  0


Slide 10

TRANSFORMAREA DE VIZUALIZARE
2D
Scalarea pe axa Ox fiind de 2 ori mai mare decât cea de pe axa Oy, orice
desen definit în fereastră va fi deformat (lăţit) la nivelul porţii. Dacă un astfel
de efect este neconvenabil, atunci va trebui ales ca factor de scalare a
transformării:

s  min s x , s y 

Procedând astfel în exemplul ales, vom constata că desenul din fereastră este
afişat în jumătatea stângă a porţii. Y
f
(400,200)

Of

Xf


Slide 11

TRANSFORMAREA DE VIZUALIZARE
2D
Pentru ca desenul să apară centrat în poartă, este necesar să se efectueze o
translare suplimentare, de factor 100 în cazul de faţă.
Yf

(400,200)

Of

Xf


Slide 12

TRANSFORMAREA DE VIZUALIZARE
2D
În general, translarea suplimentară se calculează astfel:

t x   x p max  x p min  s x  x f max  x f min

 / 2
 / 2

t y   y p max  y p min  s y  y f max  y f min

adică diferenţa dintre latura porţii şi latura ferestrei scalată, împărţită la 2.
Dacă:

x f min  0

şi:
atunci:

şi / sau

x p min  0

,

y f min  0

y p min  0

t x   s x x f min
t y   s y y f min


Slide 13

TRANSFORMAREA DE VIZUALIZARE
2D
Invers, dacă:

x f min  y f min  0
x p min  0

şi / sau

atunci:

t x  x p min
t y  y p min

y p min  0


Slide 14

TRANSFORMAREA DE VIZUALIZARE
2D
Exemplu de aplicaţie:
Fie funcţia fereastra pe care o putem apela pentru a stabili coordonatele
ferestrei, şi fie funcţia poarta pe care o vom apela pentru a preciza
coordonatele porţii de afişare. Atunci, secvenţa algoritmică de mai jos va
avea ca efect afişarea unui desen din ce în ce mai mare, dacă:

P1  P2  P3
respectiv din ce în ce mai mic, dacă:
Algoritm:

fereastra(F1);
poarta(P1);
executa_desen();
temporizare();
sterge_ecran();
poarta(P2);
executa_desen();
temporizare();
sterge_ecran();
poarta(P3);
executa_desen();

P1  P2  P3