180 likes | 507 Views
TRANSFORMAREA DE VIZUALIZARE 2D. 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.
E N D
TRANSFORMAREA DE VIZUALIZARE 2D
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).
TRANSFORMAREA DE VIZUALIZARE 2D Observaţii: Sistemul GKS a fost primul sistem ISO (International Organization for Standardization), standardizat low-levelcomputer 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.
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ă.
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:
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 ypmin xfmin xpmin Of Op Xf Xp
TRANSFORMAREA DE VIZUALIZARE 2D Notăm: , şi cu: , Cu aceste notaţii, rezultă: adică formularea matematică a transformării fereastră-poartă.
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.
TRANSFORMAREA DE VIZUALIZARE 2D Fie fereastra din figura următoare: (1,1) Yf Pentru poartă se consideră: Rezultă: Of Xf
TRANSFORMAREA DE VIZUALIZARE 2D Scalarea pe axa Ox fiind de 2 ori mai mare decât cea de pe axa Oy, oricedesen 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: Procedând astfel în exemplul ales, vom constata că desenul din fereastră este afişat în jumătatea stângă a porţii. Yf (400,200) Of Xf
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
TRANSFORMAREA DE VIZUALIZARE 2D În general, translarea suplimentară se calculează astfel: adică diferenţa dintre latura porţii şi latura ferestrei scalată, împărţită la 2. Dacă: şi: atunci:
TRANSFORMAREA DE VIZUALIZARE 2D Invers, dacă: atunci:
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ă: 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();