Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » informatica
Grafica pe calculator - Notiuni generale, Construirea imaginii, Afisarea punctului

Grafica pe calculator - Notiuni generale, Construirea imaginii, Afisarea punctului


Grafica pe calculator - Notiuni generale, Construirea imaginii, Afisarea punctului



Notiuni generale

Grafica pe calculator serveste la sintetizarea imaginilor unor corpuri sau la prelucrarea digitala a unor imagini.

Ne vom ocupa in continuare de reprezentarea obiectelor 2D si 3D.

Prescurtarile 2D si 3D precizeaza numarul de dimensiuni ale spatiului la care ne referim.

Imaginea de pe ecranul calculatorului este compusa din puncte. Pentru a realiza un desen trebuie sa punem puncte in pozitiile dorite pe ecran.



Un punct de pe ecran este elementul de baza al imaginii si poarta numele de 'pixel' (picture element). Cu cat numarul de puncte este mai mare, rezolutia este mai buna si imaginea va avea o calitate superioara. In schimb, vor creste cerintele impuse sistemului grafic. Pentru precizarea rezolutiei cel mai des se foloseste forma m (coloane) × n (linii). Astfel se precizeaza nu numai numarul total de pixeli, ci si distributia acestora pe ecran. Desenarea unui punct pe ecran corespunde aprinderii unui pixel.
Folosind punctele putem trasa linii sau curbe pe suprafata ecranului, iar acestea se pot combina pentru a obtine desenul dorit.


Construirea imaginii

Microcalculatoarele dispun de memorie 'video', fiecarui punct de pe ecran fiindu-i asociati mai multi biti din memoria RAM care precizeaza starea locala (aprins sau stins) si informatii despre intensitatea sau culoarea in punctul respectiv.

Pentru a obtine definitii bune si utilizarea mai multor culori este nevoie de mai multa memorie RAM.


Afisarea punctului

Spatiul vizibil al ecranului este definit de rezolutia acestuia. Astfel, pentru un ecran cu rezolutia 800×600, vor fi vizibile puncte pentru care abscisa (u) este in intervalul [0,800] si ordonata (v) in intervalul [0,600].

Majoritatea limbajelor de nivel inalt de pe calculatoarele personale ofera o serie de facilitati grafice, printre care si functia POINT (sau asemanatoare). Pentru a aprinde pixelul corespunzator vom apela aceasta functie: point(u,v).

In general coordonatele calculate (u si v) sunt numere reale. Pentru a le putea folosi la construirea imaginii trebuie sa le transformam (prin rotunjire) in numere intregi.

Afisarea segmentelor de dreapta

Reprezentarile simple se construiesc unind puncte de pe ecran prin segmente de dreapta. Curbele se aproximeaza prin succesiuni de segmente de dreapta.

Pentru a trasa un segment de dreapta trebuie sa cunoastem coordonatele capetelor acestuia. Coordonatele pot fi specificate in valoare absoluta sau relativa. Coordonatele relative reprezinta distantele relative pe orizontala si respectiv verticala fata de punctul precedent.

Pe langa coordonatele capetelor, pot fi furnizate informatii privind culoarea sau intensitatea cu care se deseneaza segmentul respectiv.

Presupunem ca extremitatile unui segment au coordonatele (u1, v1) si (u2, v2).


Pentru a trasa segmentul pe ecran trebuie sa determinam care sunt pixelii cei mai apropiati de imaginea ideala a segmentului si sa-i aprindem. Segmentul obtinut va arata ca o 'scarita', deoarece nu putem 'aprinde' nimic intre pixeli.

Ecuatia unei drepte care trece prin cele doua puncte se poate scrie: (u-u1)/(u2-u1)=(v-v1)/(v2-v1), de unde v=(v2-v1)/(u2-u1)*(u-u1)+v1.

Pentru fiecare valoare a lui u in intervalul [u1,u2] se va calcula valoarea v care se va gasi in intervalul [v1,v2]. Apoi se va aprinde pixelul corespunzator folosind functia point(u,v).

u1, u2, v1, v2 trebuie sa fie numere intregi. Daca sunt reale, se pot aproxima prin x=INT(0.5+x) unde INT este functia care returneaza partea intreaga a unui numar.

Algoritmii folositi pentru trasarea segmentelor de dreapta pot fi diferiti pe diferite tipuri de calculatoare. In general se mentine ideea distribuirii 'treptelor' cat mai uniform intre capetele segmentului de dreapta.


Afisarea desenului intr-o fereastra

Termenul de fereastra (window) este in general folosit pentru a desemna o anumita zona din ecran.

Termenul 'window' a fost introdus de fapt pentru a desemna o zona dreptunghiulara a unui plan situat in spatiul coordonatelor obiectului de observat, perpendicular pe directia de observare, prin care se proiecteaza pe ecran informatia dorita la un moment dat.

Pentru zonele de pe ecran denumirea standard este de 'viewport'.

Exista mai multe modalitati de a folosi ferestrele:

o             pentru a desemna o zona a imaginii care trebuie marita

o             pentru a selecta dintr-o multime de obiecte pe acelea care se proiecteaza complet in fereastra

o             pentru a deplasa o portiune a imaginii pe ecran

o             pentru a deforma o zona a imaginii

o             pentru a delimita spatiul de lucru pe ecran, in scopul de a afisa mai multe informatii pe acesta din urma

o             pentru a putea face rupturi in corpuri si a substitui imaginile unor anumite obiecte cu altele

Prin stocarea in memorie a coordonatelor proiectiilor punctelor de reprezentat, putem realiza o mare parte dintre obiectivele expuse mai sus folosind transformarile 2D (ale imaginii).

In cazul construirii unei imagini care poate depasi limitele zonei de pe ecran sau ale spatiului vizibil, vor aparea o serie de segmente care intersecteaza marginile zonei de lucru.

Este necesar sa eliminam din aceste segmente portiunile care ies din zona observabila.

Aceasta operatie este cunoscuta sub numele de '2D clipping'.


Intersectii cu marginile unei ferestre (2D Clipping)

Sa presupunem ca zona de lucru de pe ecran are limitele:

o             superioara: Vmax

o             inferioara: Vmin

o             laterala stanga: Umin

o             laterala dreapta: Umax

Daca zona de lucru este chiar spatiul vizibil al ecranului (m coloane, n linii), atunci Vmin=0, Vmax=N-1, Umin=0, Umax=M-1.

Pentru ca un punct P(u,v) sa fie vizibil, trebuie satisfacute conditiile:

Umin<=u<=Umax; Vmin<=v<=Vmax

In cazul segmentelor, problema se complica, mai ales in cazul desenarii intr-o fereastra mai mica decat ecranul.

Cand ambele capete ale segmentului sunt in interiorul zonei de lucru, segmentul este in intregime afisat (acceptare triviala - cazul segmentului a).

Situatiile mai dificile sunt atunci cand cele doua capete ale segmentului de afla in zone diferite (cazurile f, g, h).

In aceste cazuri testele de acceptare si respingere triviala nu sunt verificate. Au fost elaborati o serie de algoritmi pentru rezolvarea acestor situatii, cei mai utilizati fiind algoritmul 'Cohen-Sutherland' si algoritmul bisectiei.

Algoritmul bisectiei

Acest algoritm evita efectuarea calculelor pentru determinarea intersectiilor.

La inceput se folosesc testele de respingere si acceptare triviala.

Daca un segment nu verifica nici unul din aceste teste, este impartit in 2 jumatati egale. Calculul coordonatelor mijlocului unui segment se face cu relatiile:

uM=(u1+u2)/2, vM=(v1+v2)/2

Cele 2 jumatati sunt analizate din nou si procesul continua pana la acceptare sau rejectie triviala.

Definirea si utilizarea ferestrelor

Limitele teoretice ale suprafetei de desenare sunt (0,0) si (Xmax,Ymax).

Limitele zonei de afisare sunt (Umin,Vmin) si (Umax,Vmax).

Pentru a afisa complet desenul in spatiul vizibil, trebuie sa facem in primul rand o translatie.

In cele mai multe cazuri mai este necesara si o scalare a desenului pentru a intra complet in zona de afisare.

Sau, daca nu se doreste incadrarea completa a desenului in zona de afisare, se aplica procedeul '2D Clipping'.

Scalarea presupune recalcularea coordonatelor (u,v) pentru fiecare din capetele segmentelor ce compun desenul, apoi regenerarea zonei de afisare.

Se calculeaza doi factori de scara, corespunzatori directiilor u si v. Pentru aceasta este necesar sa stim, pe langa dimensiunile zonei de afisare, dimensiunile ferestrei ce trebuie afisata. Fereastra care cuprinde complet desenul are dimensiunile dx si dy date de diferentele dintre coordonatele punctelor limita de pe desen.

Factorii de scara vor fi

fu=(umax-umin)/dx
si
fv=(vmax-vmin)/dy

Imaginea trebuie sa fie scalata pastrand proportiile pe cele doua directii, asa ca se va alege un singur factor de scara, si anume cel cu valoarea cea mai mare.

Apoi se va aplica acest factor coordonatelor tuturor punctelor de pe desen.



Politica de confidentialitate


logo mic.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.