Sunteți pe pagina 1din 228

Cuprins

1 2

Noiuni fundamentale Geometria vizualizrii obiectelor tridimensionale 2.1 Transformri bidimensionale........................................................... 2.2 Ferestre i zone de l u c r u ................................................................. 2.3 Transformri tridim en sionale........................................................ 2.4 P ro ie cii............................................................................................. 2.4.1 Clasificare............................................................................. 2.4.2 Proiecia perspectiv........................................................... 2.4.3 Proiecia paralel................................................................. 2.4.4 Transformri p r o ie c t iv e ..................................................... 2.4.5 Descrierea sistemului de vizualizare.................................. 2.5 Volumul de v e d e r e .......................................................................... Trasarea primitivelor grafice 3.1 Primitive g r a f ic e ............................................................................. 3.2 Trasarea increm ental.................................................................... 3.3 Segmente de l i n i i ............................................................................. 3.3.1 Algoritmul incremental de b a z ........................................ 3.3.2 Algoritmul punctului de m i j l o c ........................................ 3.4 Cercuri ............................................................................................. 3.5 E l ip s e ................................................................................................ 3.6 Curbe de grad doi .......................................................................... 3.7 Curbe p la n e ....................................................................................... 3.7.1 Descrierea curbelor p l a n e .................................................. 3.7.2 Trasarea curbelor p l a n e ..................................................... 3.8 Curbe spaiale ................................................................................. 3.8.1 Descrierea curbelor sp a ia le............................................... 3.8.2 Curbe parametrice c u b ic e .................................................. 3.8.3 Trasarea curbelor parametrice cu b ice............................... 3.9 Suprafee c u r b e ................................................................................. 3.9.1 Descrierea suprafeelor c u r b e ........................................... 3.9.2 Suprafee parametrice b ic u b ic e ........................................ 3.9.3 Trasarea suprafeelor parametrice bicubice...................... 3.10 D e c u p a r e .......................................................................................... 3.10.1 Decuparea unui p u n c t ........................................................ 3.10.2 Decuparea segmentelor de l i n i i ........................................ 3.10.3 Decuparea p o lig o a n e lo r..................................................... 3.10.4 Decuparea curbelor p l a n e .................................................. 3.10.5 Decuparea 3 D ....................................................................... 1

1 8 8 13 15 18 19 20 22 27 29 32 42 42 42 43 43 45 48 52 56 58 58 58 60 60 60 69 73 73 74 76 79 80 80 89 93 94

M o d e la re a co rp u rilo r tridim en sion ale 4.1 Scheme de reprezentare ale solidelor rig id e .................................. 4.2 Metode de construcie a reprezentrilor ..................................... 4.3 Operaii booleen e............................................................................. 4.4 Reprezentarea corpurilor prin frontiere........................................ 4.4.1 Reprezentarea prin puncte sau seciuni transversale . . 4.4.2 Reprezentarea prin cadru de srm .................................. 4.4.3 Reprezentarea prin reea de p o lig o a n e ............................ 4.4.4 Reprezentarea poliedral..................................................... 4.4.5 Reprezentarea prin laturi mobile (laturi naripate) . . . 4.5 Instanerea p rim itiv elor................................................................. 4.6 Reprezentarea prin micare (m turare)........................................ 4.7 Reprezentarea prin partiionare sp a ia l ..................................... 4.7.1 Descompunerea celu lar..................................................... 4.7.2 Enumerarea ocuprii sp a ia le ........................................... 4.7.3 Arbori o c t a l i ....................................................................... 4.7.4 Arbori binari pentru partiionare spaial (arbori BSP) . 4.8 Geometria constructiv a solidelor (CSG)..................................... 4.9 Compararea reprezentrilor........................................................... R ealism vizual 5.1 Prelucrarea reprezentrilor simple ale imaginii............................ 5.2 Determinarea liniilor i suprafeelor v iz ib ile ............................... 5.2.1 Simplificarea calculelor........................................................ 5.2.2 Algoritmi spaiu-obiect pentru determinarea liniilor vizi bile ....................................................................................... 5.2.3 Algoritmi spaiu-imagine .................................................. 5.2.4 Algoritmi hibrizi: algoritmi cu list de prioritate . . . . 5.2.5 Algoritmul drumului optic ( r a y - t r a c in g ) ...................... 5.2.6 Comparaii ntre algoritmii de v izib ilita te ...................... 5.3 Iluminare i u m b r e .......................................................................... 5.3.1 Surse de lumin ................................................................. 5.3.2 Modele de ilum inare........................................................... 5.3.3 Iluminarea reprezentrilor poliedrale............................... 5.3.4 U m bre.................................................................................... 5.3.5 Implementarea transparenei........................................... 5.3.6 Metoda recursiv a drumului o p t i c .................................. 5.4 Atributele prim itivelor.................................................................... 5.5 Atenuarea efectelor datorate discretizrii im aginii...................... 5.6 Umplerea poligoanelor.................................................................... 5.6.1 Primitiva poligon p l i n ........................................................ 5.6.2 Umplerea regiunilor din r a s t r u ........................................ 5.7 Texturi ............................................................................................. 5.7.1 Clasificare............................................................................. 5.7.2 Aplicarea texturilor pe su p ra fee..................................... 5.7.3 Generarea texturilor tip fr a c t a l........................................

97 97 99 100 101 101 102 103 106 106 107 109 109 109 110 110 112 112 113 115 115 118 119 124 127 139 144 153 153 154 154 158 161 162 163 166 169 175 175 180 182 182 183 185

5.8

5.9 6

C u lo a r e ............................................................................................. 5.8.1 Lumina acrom atic.............................................................. 5.8.2 Simularea intensitii pe monitoarele monocrome . . . . 5.8.3 Lumina c r o m a tic .............................................................. 5.8.4 Modele de c u l o a r e .............................................................. 5.8.5 Metoda tabelului de culori.................................................. Animaie ..........................................................................................

189 189 190 191 192 194 196 203 203 203 204 205 205 205 205 206 211 213 213 214 214 214 215 215 215 217 218 221 221 222

Interfee utilizator 6.1 Elemente de baz ale interfeelor utilizator.................................. 6.2 Dispozitive de intrare .................................................................... 6.2.1 L o c a to r u l............................................................................. 6.2.2 T astatu ra............................................................................. 6.2.3 Valuatorul............................................................................. 6.2.4 S electoru l............................................................................. 6.3 Sarcini de interaciune.................................................................... 6.3.1 Sarcini de interaciune de b a z ........................................ 6.3.2 Sarcini de interaciune com puse........................................ 6.4 Principii n proiectarea interfeelor utilizator............................... 6.4.1 Consistena.......................................................................... 6.4.2 Asigurarea feedbackului..................................................... 6.4.3 Minimizarea posibilitilor de e r o a r e ............................... 6.4.4 Asigurarea posibilitii de revenire din e r o a r e ................ 6.4.5 Posibilitatea operrii pe mai multe n i v e l e ...................... 6.4.6 Minimizarea memorizrii .................................................. 6.5 Software pentru interfee u tiliza tor............................................... 6.5.1 Sisteme de gestiune a fe re stre lo r..................................... 6.5.2 Tratarea ieirilor n sistemele de ferestre......................... 6.5.3 Tratarea intrrilor n sistemele de ferestre ...................... 6.6 Utilitare pentru tehnici de interaciune........................................ 6.6.1 Sisteme de gestiune a interfeelor u tiliz a to r ...................

1. Noiuni fundamentale
Grafica pe calculator se ocup de sinteza pictural a unor obiecte imag inare sau reale pe baza unor modele construite cu ajutorul calculatoru lui. Pentru rezolvarea problemelor specifice se utilizeaz adesea tehnici bine cunoscute din geometrie (pentru descrierea spaiilor b i- i tri-dimensional, a obiectelor i a operaiilor cu acestea), algebr (pentru definirea i evaluarea expresiilor i ecuaiilor matematice), analiz matematic (eantionare, filtre), analiz numeric (rezolvareaaproximativ a ecuaiilor), optic (n construirea de modele pentru descrierea comportrii luminii), electronic (generarea sem nalelor, tehnologii a dispozitivelor), sau psihologie uman (ofer modele pentru percepia culorii i pentru realitatea virtual). Sistem grafic Un sistem grac este un asamblu format din echipamente i programe specia lizate n tratarea i reprezentarea grafic a informaiei. Sisteme grafice pot fi clasificate dup prelucrrile pe care le efectueaz n: 1. sisteme de sintez a imaginilor; 2. sisteme de prelucrare i de analiz a imaginilor. Programele din componena unui sistem grafic de sintez sunt structurate n dou nivele: (a) nivelul dependent de echipamente, format prin programele d riv er; (b) nivelul independent de echipamente, biblioteca grafic de subprograme apelabile din programele de aplicaie. Relaia grafic prelucrarea imaginilor Domeniul alturat al prelucrrii de imagini (numit i procesare pictural) trateaz procesul invers: analiza scenei sau reconstituirea modelelor unor obiecte bi- sau tri-dimensionale pornind de la imaginea lor. Analiza pic tural este important n numeroase domenii precum: astronautic, medicin, meteorologie etc. Procesarea de imagini are o serie de subdomenii pre cum mbuntirea imaginilor, detectarea i recunoaterea abloanelor (re cunoaterea formelor), precum i analiza scenei. mbuntirea scenei se ocup, de exemplu, de eliminarea zgomotelor sau de mbuntirea contrastului. Un exemplu practic pentru detectarea i recunoaterea abloanelor este tehnologia OCR - recunoaterea optic a caracterelor. Analiza scenei permite oamenilor de tiin s recunoasc i reconstituie un model al unei scene din mai multe imag ini bidimensionale (cu aplicaii, de exemplu, n robotic). Grafica pe calculator i procesarea de imagini sunt considerate dou discipline separate, ns supra punerea ntre cele dou este n continu cretere. Astfel imagini fotografice preluate cu ajutorul unui scanner pot fi combinate cu imagini produse sintetic, sau pot ajuta la crearea unei imaginea unui model.

Subdomenii ale graficii Conform standardului (ACM - s s o c i a t i o n for C o m p u t i n g Machinery), sudomeniile graficii sunt: (a) probleme generale; (b) arhitectura hardware (dispozitive I/O , procesoare grafice); (c) sisteme grafice (sisteme depen dente/independente de gazd, sisteme distribuite); (d) generarea desenelor i imaginilor (primitive, simboluri, instane, reprezentri grafice, transformri ge ometrice i geometrie computaional, algoritmi de vizualizare); (e) programe de/cu grafic pe calculator (aplicaii care utilizeaz grafica, pachete de grafic, drivere, limbaje de descriere a imaginilor, suport software); (f) modelarea obiectelor ( curbe i suprafee, ierarhie n modele, pachete de modelare); (g) metode, tehnici i procedee n grafica pe calculator (independena de dispoz itiv, eficiena n execuie, tehnici de interaciune); (h) grafica 3D i sinteza imaginilor realiste (eliminarea liniilor i suprafeelor ascunsse, texturi, umbre i culori, animaie, algoritmi avansai); (i) diverse (sisteme de comunicare vizual, componente de sintez n aplicaii multimedia, realitate virtual). Subiectele ce vor fi abordate n acest material sunt marcate prin nclinare. Aplicaii ale graficii Grafica pe calculator, pn n anii 1980, a fost un domeniu ngust datorit tehnicii i programelor extrem de scumpe. Calculatoarele personale au pop ularizat ns utilizarea graficii rastru (n special n interaciunea utilizatorcalculator). Sistemele grafice au devenit dup anii 1980, obiect de lucru al in ginerilor, oamenilor de tiin, artitilor plastici i arhitecilor. S-au construit o serie de aplicaii grafice precum biblioteci de subrutine grafice i interfee cu utilizatorul uor de manipulat, cu faciliti de acces la diverse resurse prin intermediul reelelor. Astfel, domeniile actuale de aplicaie ale graficii pe cal culator sunt foarte variate: educaie i nvmnt, cercetare tiinific, in ginerie (cu ajutorul pachetelor de programe C A D - C o m p u t e r A i d e d Design, proiectare asistat, C A M - C o m p u t e r A i d e d Machinning, fabricaie asistat, C A E - C o m p u t e r A i d e d Engineering, inginerie asistat), economie, conduc ere, simulare, cartografie, meteorologie, prospectarea resurselor, art, comer, reclam, comanda i urmrirea proceselor, recreere Scopurile aplicaiilor grafice n domeniile mai sus menionate sunt de asemenea diverse: afiarea informaiilor, proiectare, simulare, sau doar interfa cu utilizatorul. Interactivitate Grafica se ntlnete sub formele: secvenial (generarea automat a imaginilor fr posibilitate de intervenie din partea observatorului), interactiv sau dis tribuit (cu aplicaie n sistemele de realitate virtual). Un sistem grafic care permite interaciunea cu utilizatorul prin echipamente specializate (mouse, joystick, tablet grafic) se numete sistem grafic inter activ. Interactivitatea este caracteristica principal de astzi a graficii: utilizatorul controleaz coninutul, structura i apariia obiectelor utiliznd dispozitive de intrare. Datorit relaiei strnse ntre dispozitivele de intrare i ecran, studiul unor asemenea dispozitive este considerat subdomeniu al graficii pe calculator.

Sinteza imaginilor Crearea unei imagini pe dispozitivul de ieire a unui sistem grafic presupune dou procese. Primul este procesul de formare al imaginii. In aceast etap, sunt procesate comenzile utilizatorului. Imaginea este format din elemente (puncte, linii, texte) care sunt disponibile n sistem cu anumite atribute (cu loare, font). Procesorul fizic utilizat n aceast etap este de obicei proce sorul calculatorului gazd. Al doilea proces este afiarea imaginii. In sistemele grafice performante se utilizeaz, pentru executarea acestei operaii, proce sorul de terminal, hardware specializat pentru a asista convertirea primitivelor grafice ntr-o hart de bii (de exemplu, un bitmap, o reprezentare prin 0 si 1 a unei matrice rectangulare de puncte a ecranului) si pentru a executa operaii de mutare, copiere si modificare a biilor. Un procesor de terminal (controlor grafic, coprocesor de display, d i s p l a y processor, procesorul de imagine rastru, RIP) are un set limitat de instruciuni. In sistemele grafice sim ple, precum calculatoarele personale, sarcina controlorului grafic este preluat de o component sof t w a r e a bibliotecii grafice.
Grafica rastru (bitmap graphics, r a s t e r graphics)

Exist dou modaliti principale de memorare a imaginii: (a) punct cu punct n grafica rastru (n sistemele precum cel din figura 1.1 cu r a s t e r image display); (b) ca o mulime de segmente de dreapt pentru care se memo-

(Comenzi de afiare) (Date interactive)

Zona tampon cadru (frame buffer)

Figura 1.1: Arhitectura unui sistem cu display rastru

reaz coordonatele capetelor segmentelor (figura 1.2.b) n sistemul propriu al dispozitivului (v e c to r , c a llig r a p h ic d isp la y sau p lo t t e r ). Display-urile tip rastru se caracterizeaz printr-un spaiu de afiare alctuit dintr-o ma3

(a) Desenul ideal

(b) Desen pe display vectorial

(c) Desen pe display rastru

(c) Desen pe rastru, cu umplere

Figura 1.2: Rasterizare si baleiere vectorial

trice rectangular de elemente grafice indivizibile. Pentru reprezentarea unei imagini pe ecran, calculatorul sau procesorul dispozitivului de afiare trebuie s genereze o aproximare discret ct mai fidel pentru imaginea ideal si s selecteze n rastru punctele corespunztoare imaginii discretizate. Definirea unei imagini se realizeaz printr-un set de valori de intensitate pentru fiecare punct-ecran si aceste valori sunt vizualizate pe ecran cte o linie la un moment dat. Pixel Elementul cel mai fin vizibil pe ecran este spotul (punct, p ix e l, p ic t u r e element). Dimensiunea spotului este diametrul punctului luminos pe care l creeaz pe ecran fascicolul focalizat al tunului tubului de electroni. Ca ordin de mrime, spotul are n jur de 0.02 inch = 0.508 mm (1 inch = 2.54 cm). Distana dintre dou puncte adiacente trebuie s fie mai mic dect diametrul unui punct pentru a asigura trasarea unei imagini continue.

Rezoluie Un parametru foarte important al unui d i s p l a y este rezoluia. Ea se definete prin dimensiuni relative la cel mai mic detaliu ce poate fi distins pe ecran, respectiv rezoluia unui ecran este indicat prin produsul dintre numrul de pixeli pe orizontal i pe vertical. Rezoluia poate fi definit i prin numrul maxim de puncte care pot fi afiate fr suprapunere sau numrul de linii dis tincte care pot fi create pe ecran ntr-un i n c h (dac 40 de linii negre intercalate cu 40 de linii albe pot fi distinse ntr-un inch, rezoluia este de 80 linii/ inch).
I m a g i n e digitizat

O imagine digitizat este reprezentat printr-o matrice n care fiecare element este o colecie de numere ce descriu atributele unui pixel al imaginii (sau o funcie de variabil discret: unei perechi de numere naturale i se asociaz o valoare). Adesea aceste numere sunt reprezentri discrete ale unui interval de numere reale. De exemplu, ntregii de la 0 la 255 pot fi utilizai pentru a reprezenta o diviziune echidistant a intervalului [0,1] (numerele reprezentnd intensiti ale punctelor imaginii n scara de gri sau intensiti ale unor compo nente ale culorilor respectivelor puncte). Pentru o imagine colorat, valoarea asociat unui pixel este un ansamblu de trei numere reprezentnd intensitile componentelor de rou, verde i albastru ale culorii pixelului sau trei numere reprezentnd indexi n tabele de intensiti de rou, verde i albastru sau un singur numr care este un index ntr-o tabel de triplete de culoare. Dimen siunile matricii sunt numite lime, respectiv nlime a imaginii, iar numrul de bii asociai cu fiecare pixel al matricei este adncimea imaginii.
Rastru

Rastrul este matricea de pixeli ce reprezint ntreaga arie a ecranului. Fiecare linie de pixeli este referit ca linie de baleiere sau scanare.
Z o n a t a m p o n c a d r u (frame-buf f er).

Pixelii unei imagini sunt stocai ntr-o zon de memorie special, numit zona tampon cadru. Motivul introducerii acestei memorii speciale este urmtorul: dac memoria video poate fi citit din program, atunci imaginea poate fi con struit chiar n aceast memorie; din pcate, nu toate terminalele ofer posibil itatea de citire prin program a strii bitului asociat cu un punct de pe ecran. Astfel, pentru a oferi posibilitatea prelucrrii ulterioare a reprezentrilor simple ale imaginii, se poate crea un "ecran virtual n care se construiete imaginea, o zon de memorie care este identic ca mrime cu memoria video. Dup defini tivare, imaginea se transpune de aici n memoria video, deci pe ecran. Zona tampon cadru se ntlnete i sub denumirile de zon (buffer) de mprosptare, fr a m e buffer, r e f r e s h buf fer sau b i t m a p / p i x m a p (bitmap pentru sisteme cu 1 bit pentru reprezentarea unui pixel, p i x m a p sau p i x e l - m a p pentru sisteme cu mai muli bii pentru un pixel), fiind folosit i din considerente de cretere a vitezei atunci cnd exist mai multe plane de memorie video. In calcula toarele personale, frame-buffer-ul face parte din memoria calculatorului, iar

memoria video este coninut n spaiul propriu zis de adresare al procesorului standard. Imaginea este format n memoria video direct, fr a mai fi nevoie de o transmisie, obinndu-se astfel o mare vitez de execuie. Rasterizare Primitivele grafice, precum segmentele de linii sau textele, sunt afiate prin excluderea sau includerea unor pixeli n zona tampon cadru. Acest proces este numit conversie de scanare, conversie de baleiere sau rasterizare. Remprosptare Zona tampon cadru este scanat (baleiat) secvenial de adaptorul grafic (o linie de rastru la un moment dat) cu o rat de 50 la 70 de ori pe secund si imaginea este mprosptat linie cu linie, n modul n care se produc imaginile de televiziune (figura 1.3).

Figura 1.3: Baleierea ecranului de tip rastru

Cuplor grafic Pentru afiarea propriu-zis a imaginilor memoria video este citit secvenial de un bloc logic, independent de procesor, care realizeaz semnalele pentru mon itor, conform standardului acestuia. Aceast funcie este realizat de adap torul grafic, numit si cuplor grafic sau cuplor video (controlor video n figura 1.1). Performanele unui cuplor grafic sunt msurate prin viteza de execuie, rezoluia (dimensiunea n pixeli, puncte) si numrul de culori simultane. Stan dardele pentru cuploare grafice sunt: HGC (Hercules G r a p h i c s Card), CGA
(Color G r a p h i c s Adapter), EG A (Enhanced G r a p h i c s Adapter), VG A (Video G r a p h i c s Array), SVGA (Super V i r t u a l G r a p h i c s Adapter), A G A ( A d v a n c e d G r a p h i c s Adapter).

Clasificarea aplicaiilor grafice O aplicaie grafic poate fi inclus ntr-una din urmtoarele categorii: 1. editor grafic (de exemplu A u t oCAD, W i n d o w s Paint), 2. bibliotec grafic (asociate cu limbaje de programare precum C), 3. program specializat cu faciliti grafice (de exemplu, produsele C A S C o m p u t e r A l g e b r a System, precum M a p l e sau Mathematica), 4. produs de birotic (de exemplu Word, Excel). Sisteme carteziene de referin In aplicaiile grafice se disting urmtoarele trei sisteme carteziene de referin: (1) sistemul de coordonate ale lumii reale sau nconjurtoare (sistemul de co ordonate logice / universale / utilizator) n care observatorul este centrul acestuia (WCS - W o r l d C o o r d o n a t e System); (2) sistemul de coordonate ale unui dispozitiv (DCS - D e v i c e C o o r d o n a t e System, sistemul de coordonate fizice / dispozitiv); (3) sistemul de coordonate normalizate ale unui dispozitiv (NDCS- N o r m a l i z e d D e v i c e C o o r d o n a t e System).

Transformarea coordonatelor din sistemul (1) n sistemul (2) cade n sarcina sistemelor grafice (figura 1.4). In general, un sistem grafic are o varietate de intrri i ieiri, astfel nct pachetul grafic ar trebui s gestioneze mai multe sisteme (2). In majoritatea aplicaiilor se utilizeaz un sistem de coordonate intermediar, desemnat prin (3). Se consider astfel un dispozitiv virtual n termenii cruia se scrie sof t-ul necesar. Dispozitivul virtual uzual este ptratul unitate din sistemul (3), care are colul din stnga jos n originea sistemului. Valorile exprimate n uniti de pe dispozitivul virtual sunt transformate n valori n sistemul (2) ca ultim etap de procesare. Aceast transformare este realizat de driver-urile de dispozitiv (componente s o f t w a r e ale sistemelor grafice). Se permite astfel adugarea unui nou dispozitiv n sistemul grafic, dac este nsoit de un anumit driver, fr a fi necesar alterarea pachetelor grafice.
sistem grafic

(1) WCS

<2) DCS

(3) NDCS
Figura 1.4: Transformarea unei imagini din lumea real n imagine pe dispozitivul de ieire al unui sistem grafic

2. Geometria vizualizrii obiectelor tridimensionale


2.1 Transformri bidimensionale

Se consider un reper cartezian, un obiect bidimensional descris n respectivul sistem si P (x ,y ) un punct oarecare al obiectului. Translaie Operaia este definit relativ la cele dou axe de coordonate carteziene prin deplasamentele specifice pe fiecare ax (figura 2.1).

Figura 2.1: Translatarea unei case

Punctul P (x ,y ) este translatat n punctul P (x ',y ') dac ( x' = x + dx, \ y = y + dy. unde dx, dy sunt deplasamentele specifice. Vectorial, operaia poate fi scris P' = P + T unde

Scalare Scalarea poate fi descris prin ecuaiile

y 1 = svy,
8

Figura 2.2: Scalarea unei case

unde sx si sy sunt constantele de scalare, P (x ,y ), punctul iniial, iar P '(x ',y ') punctul transformat (figura 2.2). Un factor de scalare negativ produce ca efect secundar reflecia fa de axa corespunztoare. Ecuaia vectorial este P* = SP unde S =

Rotaie Prin rotaia cu un unghi 0 fa de origine, punctele unui obiect rmn la aceeai distan fa de originea sistemului (figura 2.3). Un unghi pozitiv respect

Figura 2.3: Rotirea unei case n jurul originii sistemului

sensul de rotaie trigonometric (contrar fusului orar). Utiliznd transformarea din coordonate carteziene n coordonate polare x r cos 0 , y = r sin < /> , dup rotaie (figura 2.4) x' = r cos(0 + #), y' r sin(0 + 6 ), Prin dezvoltarea funciilor cos i sin din expresia anterioar se obin ecuaiile 9

r cos (8+ < p ) r cos 0

Figura 2.4: Derivarea ecuaiilor rotaiei

transformrii n coordonate carteziene: \ x' = x cos 6 y sin 0 , | y 1 x sin 6 + y cos 0 . Vectorial, operaia poate fi exprimat prin P' = R P , unde r> _ ( cos # ~ y sin 6 Coordonate omogene Pentru transformrile bidimensionale amintite mai sus, ecuaiile vectoriale sunt urmtoarele: P' = T + P, P' = ST, P ' = RP. Se observ c translaia este tratat n mod distinct, printr-o adunare. Reprezentarea punctelor n coordonate omogene permite tratarea tuturor transformrilor prin multiplicri matriceale. Pe lng cele dou coordonate carteziene standard apare o a treia: un punct (x, y) n coordonate carteziene este reprezentat prin tripletul (x ,y ,w ) n coordonate omogene. Reprezentarea unui punct nu este unic. De exemplu, (2, 4, 8) si (1, 2, 4) reprezint acelai punct din plan. Dac w ^ 0, atunci (x ,y ,w ) reprezint acelai punct ca si (x/w,y/w, 1), iar coordonatele (x/w, y/w) sunt coordonatele carteziene asoci ate punctului omogen. Punctele cu w = 0 se numesc puncte la infinit. Un triplet reprezint de obicei coordonatele unui punct din spaiu tridi mensional. Dac considerm toate tripletele ce reprezint acelai punct n coordonate carteziene, adic toate tripletele de forma (tx,ty,tw ), cu t / 0 obinem o linie n spaiul tridimensional (figura 2.5). Astfel fiecare punct n coordonate omogene reprezint o linie n spaiul tridimensional. Astfel punctele omogenizate formeaz un plan definit de ecuaia w = 1 n spaiul (x,y ,w ). Matricile transformrilor mai sus amintite, se rescriu n coordonate omogene astfel: ( 1 0 dx \ f s x 0 0\ T(dX, dy) = 0 1 dy , S (sx ,s y) = 0 Sy 0 ,
Vo o i / V o

sin t cos 6

0 1 /

10

Figura 2.5: Spaiul coordonatelor omogene, cu planul w = 1 si un punct P (x ,y ,w ) proiectat n planul w = 1

iar noile relaii vectoriale sunt:


P' = T(dXjdy) P , sau P' = S (sXjsy)P , sau P' = R(6)P.

2.1.1

Transformri afine

Dac un punct este translatat cu T(d 1x ld1 y ) n Pi si apoi cu T(d 2x ,d2 y ) n P2, atunci

Produsul matriceal este adesea referit drept compunere sau concatenare. In mod similar, pentru scalare S (s 2 ,sy) = S (sxsx ,SySy), iar pentru rotaie R(0 1) R ( 62) = R(0\ + 62). Se observ c matricea rotaiei este o matrice ortogonal (fiecare vector-linie a matricii este unitar si perpendicular pe celelalte). In plus cele dou direcii definite de primii doi vectori-linie a unei matrice de rotaie sunt direciile n care vor fi reorientai vectori aflai pe axele x respectiv y (figura 2.6). Aceast proprietate poate conduce la construcia cu

Figura 2.6: Cordonatele versorii axelor sistemului x O y , fa de sistemul x Oy obinut prin rotaie rotit, corespund cu liniile din matricea de rotaie

uurin a matricei de rotaie dac efectul rotaiei este cunoscut. 11

Majoritatea transformrilor efectuate n lumea real pstreaz liniile drepte. Asemenea transformri includ rotaia, reflecia, scalarea si translaia. O ma trice de forma / rn r 12 tx \ T21 'r22 t y V 0 0 1) unde submatricea 2 x 2 superior este ortogonal, pstreaz unghiurile si lungimile. O transformare asociat unei asemenea matrice este numit trans formare de corp rigid deoarece orice obiect transformat nu este distorsionat. O secven arbitrar de matrice de rotaii si translaii este reprezentabil printr-o matrice de forma de mai sus. Produsul unui secvene arbitrare de matrice de rotaii, translaii si scalri (transformri elementare sau simple) pstreaz paralelismul liniilor, dar nu si lungimile si unghiurile (figura 2.7). Transformarea corespunztoare unui

Figura 2.7: Un ptrat unitate este rotit si scalat neuniform; transformarea fiind afin, paralelismul liniilor se menine, dar nu si unghiurile si lungimile

asemenea produs se numete transformare afin. O secven de transformri afine poate fi reprezentat printr-o matrice unic. De exemplu, rotaia n jurul unui punct P i(x i,y i) poate fi descris

Figura 2.8: Rotirea unei case n jurul unui punct Pi

prin produsul matriceal C B A, unde


A = T ( xi, j/i), B = R(6), C = T(xi, yi).

O clas important de operaii o constituie transformrile inverse. Dac transformarea A produce P' = A P , transformarea invers produce P = A ~ 1P '. Un exemplu concludent pentru faptul c transformrile afine pstreaz par alelismul dintre linii dar nu si lungimile si unghiurile, este nclinarea sau forfe carea fa de o anumit ax (figura 2.9). Corespunztor axei x si unghiului de 12

Z7
nclinare pe direcia x

nclinare pe direcia v

Figura 2.9: Aplicarea operaiei de nclinare fa de axe la ptratul unitate - laturile oblice obinute au lungimea mai mare dect unitatea

nclinare < /> , ecuaiile transformrii sunt f x 1 x + y ctg 4> ,

\ y' = y,
ecuaii care conduc la matricea de transformare
17 ( 1 C tg<A

* -

Operaia poate fi obinut prin concatenarea a trei transformri elementare. In cazul general, forfecarea este descris prin ecuaiile x' = x + Fxy, y' = y + Fyx (forfecarea pe axa x : Fy = 0).

2.2

Ferestre i zone de lucru

Anumite aplicaii grafice permit specificarea primitivelor grafice n sistemul de coordonate ale lumii reale (WCS) utiliznd uniti de lungime. Pachetul de subrutine grafice trebuie s efectueze transformarea din coordonatele lumii reale n coordonatele ecranului (DCS).

Figura 2.10: Efectul trasrii primitivelor n dou zone de lucru

Termenul de fereastr (window) a fost introdus spre a desemna o zon drep tunghiular a unui plan situat n spaiul de coordonate ale utilizatorului (WCS), pe care se proiecteaz informaia dorit la un moment dat (figura 2.10). Unei 13

asemenea ferestre i se asociaz o regiune dreptunghiular n coordonatele nor malizate de terminal (NDCS), numit zon de lucru (view port, poart de afiare sau poart), n care imaginea din fereastr este transformat (digitizat). Fie fereastra specificat prin (xmin,ymin), (%max,ymax), coordonatele a dou vrfuri extreme ale zonei dreptunghiulare din W CS, iar zona de lucru, prin {umin,v mtn), (u m a x 5 v m a x )> unde 0 < ur < 1, 0 < Vr, < < un Vmax < 1) coordonatele vrfurilor corespunztoare ale zonei dreptunghiulare din NDCS. Matricea transformrii fereastr - zon de lucru poate fi construit prin concatenarea celor trei transformri sugerate n figura 2.11: P' = M P, unde
* > m in '^min um a x U m ax

Vmir

T (-x

m im

y m in j

Astfel, ecuaiile de transformare a unei ferestre ntr-o zon de lucru sunt urmtoarele: u = ur v = Vr
, ^m ax
^m ax Vm ax Vr

I-------------------- (X ~ X m i n ),
^ m in Vm in

^ m in /

Vmir

(V -

Vmi

Un triplet similar de transformri se aplic pentru trecerea de la NDCS la DCS.


y ,

y-raax y-rain

A
X -m in %niax (a) X v 1 U m ax

1 u

sl U

(c)

(d)

Figura 2.11: Transformarea unei ferestre ntr-o zon de lucru (a) Fereastra n co ordonatele lumii reale (b) Fereastra translatat n originea sistemului (c) Fereastra scalat la dimensiunea zonei de lucru (d) Translatarea imaginii n zona de lucru

14

In cazul construirii unei imagini sub limitele spaiului vizibil, pot aprea o serie de primitive care vor intersecta frontiera ferestrei (figura 2.11.a). Este necesar eliminarea din aceste primitive a poriunilor care ies din zona observa bil (din fereastr). Aceast operaie este cunoscut sub numele de c lip p in g ( decupare, retezare, tiere).

2.3

Transformri tridimensionale

Aa cum unei transformri bidimensionale exprimate n coordonate omogene i corespunde o matrice 3 x 3, o transformare tridimensional este reprezentat printr-o matrice 4 x 4 . Precum n cazul bidimensional, se asociaz unui punct (x , y , z ) n coor donate carteziene, un punct (x ,y ,z ,w ) n coordonate omogene, cu propri etatea c dou cvadruple reprezint acelai punct dac coordonatele lor sunt proporionale. Reprezentarea standard a unui punct omogen (x ,y ,z ,w ) cu w ^ 0 este (x/w,y/w,z/w, 1). Translaia tridimensional este o simpl extensie a celei bidimensionale. Matricea transformrii este /1 0 0 0 1 0
0 0 1

T(dx, dy,dz)

dx \ dy
dz

\0 0

1 /

Rotaia oarecare a unui sistem de puncte se descompune n cel mult trei rotaii, maxim cte una dup fiecare ax a unui reper triortogonal. Pen tru rotaiile n jurul axelor de coordonate s-au convenit anumite direcii ale rotaiilor pozitive (figura 2.12). innd seama c rotaiile n jurul axelor pot fi exprimate prin rotaii n spaiul bidimnesional al planelor perpendiculare pe axe, ele pot fi reprezentate prin matricele de transformare urmtoare: ( cos 9 sin 9 0 \ 0 sin 9 0 0 \ cos 0 0 0 0 1 0 0 0 1/ (1 0 R x (9) = 0 \0 ( cos 9
Ry(9) =

sin 9

0\

Rz( 0) =

1 0

- sin 9 0 \ 0 0 0\ 0 0
1

cos 9 0 0 1/

o cos 9 sin0 0

0 sin0 cos 9 0

Rotaia unui obiect n jurul unei drepte arbitrare, dar paralel cu o anumit ax de coordonate presupune: 1. translatarea obiectului astfel nct axa de rotaie s coincid cu axa pa ralel de coordonate; 2. efectuarea rotaiei; 3. translatarea obiectului astfel nct axa de rotaie s fie mutat n poziia original. 15

y
pentru axa x, de la axa y nspre axa z; pentru axa y, de la axa z nspre axa x\

x
pentru axa z, de la axa x nspre axa y.

Figura 2.12: Sensul rotaiilor de unghi pozitiv

Dac axa de rotaie nu este paralel cu nici una din axele de coordonate este necesar rotaia n prealabil a acestei axe astfel nct s fie paralel cu una din axele de coordonate. In final se aplic transformarea invers pentru a aduce axa de rotaie la orientarea iniial. Spre deosebire de rotaie i translaie, nmulirea cu factori de scal afec teaz distanele dintre puncte. Sistemul de puncte poate fi modificat diferit dup fiecare din cele trei axe ale sistemului de referin, caz n care se definesc factorii de scar direcionali sx , sy, sz. Astfel scalar ea tridimensional este descris prin matricea fs x
I

0
Sy Sy

0
0

0\
0

0 o Cea mai simpl transformare de acest gen este asemnarea, care folosete un factor de scal global, s, cu care se nmulesc coordonatele corpului. Alte cazuri particulare de scalri sunt simetriile pentru care sx , sy, sy sunt 1 sau 1. Astfel, de exemplu, pentru (a) simetria fa de planul xOy: sx = sy = 1, sz = 1; (b) simetria fa de axa y: sx = sz = 1, sy = 1; (c) simetria fa de origine: sx = sy = sz = 1. Simetria fa de un plan oarecare se poate rezolva aplicnd sistemului de referin o translaie i o rotaie astfel nct un plan de coordonate s se suprapun peste planul dat i apoi se efectueaz simetria fa de acel plan de coordonate. Dup aceasta se face rototranslaia invers. Analog se pro cedeaz n cazul unei drepte oarecare. In cazul unui punct este suficient o translaie aplicat sistemului de coordonate astfel nct originea s ajung n punctul dat, apoi se aplic relaiile de simetrie fa de origine; dup calcularea coordonatelor punctului simetric, se aplic translaia invers. Simetriile se pot exprima ca produs de simetrii fa de planele de coordonate. Simetria fa de o ax se obine prin concatenarea simetriilor fa de cele dou plane a cror intersecie este axa, iar simetria fa de origine rezult prin aplicarea succesiv a celor trei simetrii fa de planele de coordonate. La rndul lor, aceste simetrii fa de planele de coordonate se pot obine folosind simetria fa de un singur plan de coordonate i rotaiile care suprapun planele de coordonate unul peste cellalt.

16

nclinarea sau forfecarea fa de planul xOy este descris prin matricea

In cazul general, forfecarea poate fi descris printr-o matrice cu elementele de pe diagonal egale cu 1. Compunerea transformrilor tridimensionale fundamentale (rotaia, trans laia si scalarea) este utilizat pentru derivarea unor transformri mai com plexe. Fie transformarea din figura 2.13. Aceast transformare poate fi real izat n 4 pai: 1. translatarea lui P n origine; 2. rotirea n jurul axei y astfel nct P 1P 2 s fie aezat n planul (y,z); 3. rotirea n jurul axei x astfel nct P 1P 2 s fie aezat pe axa z; 4. rotire n jurul axei 2 astfel nct P 1P 3 s fie aezat n planul (y,z).

(a) Poziia iniial

(b) Poziia final

Figura 2.13: Vectorii P 1 P 2 i P 1 P 3 sunt transformai din poziia iniial (a) n poziia final (b)

Calculele referitoare la rotire nu sunt simple. Pentru a le evita putem folosi proprietatea, menionat anterior, a matricelor de rotaie: vectorii unitari de scrii de liniile matricei corespund direciilor obinute prin rotirea versorilor axelor. Fie compunerea rotaiilor de la paii 2-4 reprezentat prin matricea

In cazul considerat, R z corespunde vectorului unitate de-a lungul lui P 1P 2 care va fi rotit pentru a se sprijini pe axa 2; astfel

Vectorul unitate perpendicular pe planul definit de Pi, P 2 i P3, este rotit pentru a se sprijini pe axa x, deci Rx = (r ix,r 2x,r 3x)T 17

P1P3 x P iP 2
||PiP3 x P iP 2

Vectorul R y,
R V = (r l >r 2y > )T = R Z X Rx

este rotit pentru a se sprijini pe axa y. Matricea final a transformrii este R T ( - x i, - j / i , - z i ) . Considerm un alt exemplu. Avionul din figura 2.14.(a) definit n sistemul de coordonate x p ,y p ,z p si centrat n origine trebuie transformat astfel nct s fie orientat n direcia D (direcia de zbor) din figura 2.14.(b), nenclinat si centrat ntr-un punct P. Transformarea const ntr-o rotaie pentru a orienta avionul n direcia dorit, urmat de o translaie a originii n P. Presupunem c
Y p Y p

Figura 2.14: Avionul n sistemul de coordonate (x p ,y p ,z p )

vectorii direcionali x pj ypj zpj D sunt normalizai. Precum n exemplul ante rior construim matricea de rotaie cunoscnd transformarea axelor: zp trebuie transformat n D, x p trebuie transformat ntr-un vector orizontal perpendicular pe D, adic n direcia y x D, yp este dat de zp x xp. Notnd cu |* |vectorii normalizai, matricea de rotaie are forma / R = \ y x D\ \D x (y x D)\ \ D \ o\ o o

1/

2.4

Proiecii

Complexitatea vizualizrii obiectelor tridimensionale este cauzat de a treia dimensiune si de faptul c terminalele prezint imagini bidimensionale. Soluia este utilizarea proieciilor care transform obiectele tridimensionale n proiecii plane bidimensionale. In general, proieciile transform puncte dintr-un sistem de coordonate de dimensiune n n puncte din sistemul de coordonate de dimensiune mai mic

18

dect n. In grafica pe calculator, obiecte n-dimensionale sunt proiectate n spaiu bidimensional pentru vizualizare.

2.4.1

Clasificare

Proiecia unui obiect tridimensional este definit astfel: dreptele (razele) de proiecie , numite i proiectori, trec printr-un punct dat al spaiului, numit centru de proiecie (punct de vedere), i prin fiecare punct al corpului, inter sectnd planul de proiecie pentru a forma proiecia. Deoarece suprafaa ecranului este plan, ne rezumm la proieciile geome trice plane. Acestea pot fi mprite n dou clase: 1. proiecii paralele, 2. proiecii perspective. Distincia se face funcie de distana dintre centrul de proiecie i planul de proiecie. Dac aceast distan este finit, proiecia este perspectiv; dac distana este infinit, proiecia este paralel (figura 2.15). In proiecia perspectiv se precizeaz poziia centrului de proiecie i planul de proiecie. In cazul proieciei paralele, centrul de proiecie se afl la infinit, ceea ce face ca dreptele de proiecie s fie paralele (n figura 2.15.b proiectorii .1.1' i B B ' sunt paraleli). Pentru a defini o proiecie paralel se precizeaz direcia de proiecie (un vector paralel cu proiectorii).

Figura 2.15: Proieciile unui segment de dreapt (a) A'B' este proiecia perspectiv a lui AB (b) A'B' este proiecia paralel a lui AB. Observaii: (a) Proiecia paralel pstreaz paralelismul liniilor, dar nu pstreaz unghi urile (mai puin cele aflate n planuri paralele cu planul de proiecie). (b) Efectul vizual al proieciei perspective este asemntor cu cel realizat de tehnica fotografic i de sistemul vizual uman. Principala caracteristic este aceea c dimensiunea proieciei perspective a unui obiect variaz invers proporional cu distana de la obiect la centrul de proiecie (figura 2.16). Distanele nu sunt cele reale, unghiurile se pstreaz numai dac aparin unor fee ale obiectului paralele cu planul de proiecie, iar liniile 19

paralele nu sunt proiectate, n general, n linii paralele. Lungimile unor segmente egale n spaiu pot aprea n imagine diferite, depinznd de apropierea de centrul de proiecie. (c) Direcia de proiecie este un vector a crui componente pot fi calculate printr-o diferen de tipul ( x ,y ,z ,l ) (x'^y'^z', 1) = (a, 6, c, 0). Ast fel exist o coresponden biunivoc ntre direcii si puncte la infinit. O proiecie perspectiv a crui centru este un punct la infinit devine o proiecie paralel. Exist o serie de cazuri particulare att pentru proieciile paralele ct si pentru cele perspective:
perspectiv cu un punct de fug cu dou puncte de fug cu trei puncte de fug elevaie plan profil ortografic axonometric cabinet cavalier . altele

Proiecie geometric plan

paralel

izometric dimetric . trimetric

oblic

Figura 2.16: Variaia dimensiunii obiectelor cu distana de la observator

2.4.2

Proiecia perspectiv

In proiecia perspectiv, liniile paralele ntre ele si neparalele cu planul de proiecie converg spre un anumit punct numit punct de fug (punct de convergen). Dac liniile sunt paralele cu una dintre axele principale, punctul de fug este numit punct de fug axial (al axei). Exist cel mult trei asemenea puncte ntr-o imagine, cte unul pentru fiecare ax. De exemplu, dac planul de proiecie taie doar axa z, numai axa 2 are punct de fug deoarece liniile paralele cu axele y si x sunt paralele si n planul de proiecie si nu au puncte de fug (nu se intersecteaz n proiecie). In figura 2.17 se prezint dou proiecii 20

perspective, cu un punct de fug, ale unui cub. Deoarece n 3D liniile paralele se ntlnesc la infinit, fiecare punct de fug poate fi considerat proiecia unui punct la infinit. Proieciile perspective sunt clasificate funcie de numrul punctelor de fug axiale.

y
Iz

Figura 2.17: Proiec ia perspectiv a unui cub pe un plan & L taie numai axa 2 (a) Construcia proieciei (b) Dou perspective cu un punct de fug

Proieciile perspective cu dou puncte de fug sunt utilizate des n arhi tectur i design industrial (figura 2.18). In figura 2.19 se prezint modul de construcie al proieciei perspective a unui cub cu dou, respectiv trei, puncte de fug. Presupunem c P ( x ,y ,z ) se proiecteaz n P '(x ',y '). Ecuaiile proieciei perspective pe planul z = 0, cu un punct de fug i centrul de proiecie Cp se obin din paralelismul liniilor CpP i CpP' i apartenena lui P' la planul z = 0: x , = xzp - z x p ^ = yzp - zyp zp - z yP z ' Proiecia perspectiv cu dou puncte de fug se poate obine printr-o rotaie n jurul unei axe urmat de o proiecie perspectiv cu un singur punct de fug. Transformarea perspectiv cu trei puncte de fug se obine prin rotaii n jurul a dou sau mai multe axe principale urmate de transformarea perspectiv cu un singur punct de fug. In general, pentru a gsi coordonatele ntr-o proiecia perspectiv oarecare a unui punct material se rezolv sistemul format din ecuaia planului de proiecie i ecuaia razei vizuale. Reprezentarea perspectivei pe planul de proiecie prin aceast modalitate este greoaie. De aceea, se determin, n primul rnd, trans formarea tridimensional care transpune reperul cartezian al lumii reale (n care este descris obiectul) n reperul cartezian asociat planului de proiecie i nor malei la acesta, dus prin centrul de proiecie. Se aplic aceast transformare obiectului, apoi se proiectez. Funcie de nclinarea planului de proiecie fa de centrul de proiecie i obiect se deosebesc:

21

Figura 2.18: Imaginea n perspectiv a unui cldiri

Figura 2.19: Proiecii perspective ale cubului

1. perspectiva ascendent (cu punctul de fug al verticalelor situat deasupra obiectului) 2. perspectiva descendent (cu punctul de fug al verticalelor situat sub obiect). Perspectiva ascendent a unui obiect apare n situaia n care observatorul privete obiectul de jos si destul de aproape. Perspectiva descendent a unui obiect apare n situaia n care observatorul privete obiectul de sus si de aproape.

2.4.3

Proiecia paralel

Funcie de unghiul dintre direcia de proiecie si normala la planul de proiecie, proiecia paralel poate fi:

22

1. proiecie ortografic (ortogonal), n cazul n care direcia de proiecie coincide cu normala la planul de proiecie, adic direcia de proiecie este perpendicular pe planul de proiecie; 2. proiecie oblic, n cazul n care direcia de proiecie difer de normala la planul de proiecie. Proiecia ortografic Cele mai comune proiecii ortogonale sunt proieciile care utilizeaz, ca plane de proiecie, anumite plane perpendiculare pe axele de coordonate. Denumirea dat n desenul tehnic unor asemenea proiecii ale obiectelor sunt plan (vedere de sus), profil (vedere lateral) i elevaie (vedere frontal). In figura 2.20 se prezint cele trei asemenea proiecii ale unei case (originea sistemului de coordonate se afl la intersecia celor trei plane de proiecie). Aceste proiecii au proprietatea de a pstra distanele i unghiurile, astfel nct sunt des utilizate n inginerie i construcii. Natura tridimensional a obiectului este ns greu de neles, chiar dac se studiaz simultan cele trei proiecii ale respectivului obiect. Fie punctul de coordonate omogene (x ,y , z, 1). Vederea frontal (proiecia pe planul xO y) are matricea caracteristic (\ 0 0 \0 0 0 1 0 0 0 0 0 0\ 0 0

1/

astfel nct ecuaiile transformrii sunt x' = x, y' = y, z' = 0. Pentru vederea de sus (proiecia pe planul xO z) se efectueaz rotaia de unghi ^90 n jurul axei x i proiecia pe planul xOy: ( 1 0 0 0\ / l o o 0\ 0 1 0 0 0 0 1 0 0 0 0 0 0 ^ 1 0 0 \0 0 0 1 / \0 0 0 1/ astfel nct x' = x, y' = z, z' = 0. Pentru vederea lateral (proiecia pe planul yO z) se efectueaz rotaia de unghi 90 n jurul axei y i proiecia pe planul xOy: /I 0\ ( o 0\ o o 0 o o o -1 o \0 1/ V 0 1/ astfel nct x' = z, y' = y, z' = 0. Pentru a oferi ct mai multe informaii despre obiectele reprezentate n proiecie, cele trei proiecii ortografice menionate mai sus sunt adesea detaliate astfel: 1. vedere din fa: n planul z = 0, cu centrul de proiecie la infinit pe semiaxa + z; 2. vedere din spate: n planul z = 0, cu centrul de proiecie la infinit pe semiaxa z; 23

t
Vedere de sus (plan)

Vedere lateral (profil) Vedere frontal (elevaie) Figura 2.20: Planul, profilul i elevaia unei case

3. vedere din stnga: n planul x = 0, cu centrul de proiecie la infinit pe semiaxa +ar; 4. vedere din dreapta: n planul x = 0, cu centrul de proiecie la infinit pe semiaxa x; 5. vedere de sus: n planul y = 0, cu centrul de proiecie la infinit pe semiaxa

+y;
6. vedere de jos: n planul y = 0, cu centrul de proiecie la infinit pe semiaxa
- v

Proieciile axonometrice sunt de asemenea cazuri particulare de proiecii ortogonale, pentru care planul de proiecie nu mai este perpendicular pe nici o ax a sistemului de referin. Acest tip de proiecii pstreaz paralelismul liniilor, dar nu i unghiurile. Distanele se msoar de-a lungul fiecrei axe de coordonate, n general, cu factori de scal diferii. Cea mai utilizat proiecie ortografic axonometric este proiecia izometric, pentru care direcia de proiecie (care coincide cu normala la planul de proiecie) face unghiuri egale cu cele trei axe ale sistemului de referin. In cazul acestei proiecii cei trei factori de scar pentru msurarea lungimilor sunt egali (is o semnific egal, iar m etric indic o msur), iar axele principale se proiecteaz pe plan n trei drepte care fac unghiuri egale (figura 2.21.b). Exist doar opt direcii de proiecie care permit proiecii izometrice. In figura 2.21.a este prezentat o astfel de proiecie a unui cub. Intr-o proiecie dirnetric (figura 2.22), vectorul normal la planul de proiecie (direcia de proiecie) face unghiuri egale cu dou axe dintre axele sistemului de coordonate, spre deosebire de o proiecie izometric pentru care toate cele trei unghiurile sunt egale. Intr-o proiecie trimetric unghiurile din tre vectorul normal i cele trei axe sunt diferite. Astfel proiecia izometric este un caz particular de proiecie dimetric, iar proiecia dimetric este un caz particular al proieciei trimetrice. O proiecie axonometric se poate obine prin transformarea obiectelor folosind rotaii i translaii urmat de o proiecie ortografic. Astfel, o proiecie trimetric se obine prin una sau mai multe rotaii, ntr-o ordine arbitrar, n jurul axelor sistemului de coordonate, urmate de o proiecie n planul z. Dac se consider rotaia de unghi (p n jurul axei y, rotaia de unghi 8 n jurul axei x i apoi proiecia ortografic n planul z, proieciile izometrice se obin pentru

24

(b) Figura 2.21: Proiecii izometrice (a) Construirea proieciei unui cub n direcia (1, 1, 1) (b) Proiecia izometric a versorilor n direcia (1,1,1)

ip = a rcsin (l/v /3) = 35.26, 0 =arcsin(l/2) = 45. Proiecia oblic Este obinut prin proiectarea unui obiect de-a lungul unor linii paralele care nu sunt perpendiculare pe planul de proiecie. Proiecia unei fee a obiectului, paralel cu planul de proiecie, permite msurarea corect a unghiurilor i distanelor, celelalte proiecii ale feelor permind doar msurarea distanelor. O proiecie oblic pe planul xO y este caracterizat prin punctul n care este proiectat M (0,0,1), distana r de la origine a noului punct i unghiul a dintre raza r i Ox (figura 2.23.a). Funcie de aceste valori se pot exprima noile coordonate (x ',y ',z ') ale proieciei oblice pe planul xO y a unui punct oarecare (x , y , z ) (vezi figura 2.23.b):

{
adic n coordonate omogene, fx '\ y' z' \ 1/

x' = x + zr cosa, y' = y + zrsin a ,


z' = 0,

(l 0 0 \0

0 1 0 0

r cosa r sin a 0 0

0\ (x \ 0 y 0 z 1 / \1 /

Proiecia ortogonal pe xO y se obine cnd r = 0. Cele mai frecvente proiecii oblice sunt: (a) proiecia cavalier, pentru care r = 1; (b) proiecia cabinet, pentru care r = 1/ 2. In proiecia cavalier direcia de proiecie face un unghi de 45 cu planul de proiecie, astfel nct proiecia unui segment de dreapt perpendicular pe planul de proiecie are aceeai lungime ca i segmentul nsui (figura 2.24.a). In proiecia cabinet direcia de proiecie face un unghi de arctg(2) 63.4 cu planul de proiecie, astfel nct segmentele perpendiculare pe planul de proiecie se proiecteaz la 1/2 din lungimea lor real (figura 2.24.b). 25

Figura 2.22: Proiecii dimetrice ale unui cub

(a) Figura 2.23: Proiecia oblic (a) Construirea proieciei punctului M (0, 0,1) pe planul xO y (b) Proiecia unui punct oarecare pe planul x O y (c) Proiecia unui cub pe un plan paralel cu axa y

y \jy

(a) (b) Figura 2.24: Proiecii oblice ale cubului unitate (a) Proiecia cavalier cu direcia de proiecie (> /3 /2 ,1/2, 1) (b) Proiecia cabinet cu direcia de proiecie (> /3 /4 ,1/4, 1)

Figura 2.25: Plan oblic a unui ora 26

Dintre proieciile oblice, proiecia cabinet ofer imaginile cele mai realiste (figura 2.25).

2.4.4

Transformri proiective

Se determin n cele ce urmeaz matricea 4 x 4 caracteristic unei transformri proiective oarecare. Presupunem c n proiecia perspectiv planul de proiecie este perpendicular pe axa z, iar n proiecia paralel, planul de proiecie este z = 0 (planul xO y). Fie P (x , y, z) un punct oarecare al spaiului i P '(x ',y ', z') proiecia acestuia. Se consider urmtoarele trei cazuri: 1. Centrul de proiecie perspectiv se afl n originea sistemului, iar planul de proiecie este z = d. Din asemnarea triunghiurilor din figura 2.26 (b) i (c) rezult
x

x
Z
5

y_

L
Z

~ d

adic x' = xd/z, y' = yd/z, z' = d. Astfel, divizarea cu z a coordonatelor n proiecia perspectiv explic faptul c obiectele mai ndeprtate apar mai mici dect obiectele mai apropiate de centrul de proiecie. Matricea transformrii este o /I o\ 0 0 0 1 o o l/d 0 / \0 Multiplicnd (x , y , z , 1)T cu Mpers se obine punctul omogen (X ,Y , Z ,W )T = (x, y, z, z jd )T. Coordonatele carteziene asociate punctului omogen se obin prin diviziune cu W , adic (x ',y ',z ') = (X /W ,Y /W ,Z/W ) = (xd/ z,yd/ z,d). 2. Centrul de proiecie se afl la z = d, iar planul de proiecie este z = 0. Din asemnarea triunghiurilor din figura 2.27 se obine
x

y_

y
d

~ d

adic x' = x/(z/d + 1), y' = y/(z/d + 1), z' = 0. Matricea transformrii este / 1 0 M' = 0 0\

0
0 \0

1 0
0 0

0 0 l/d 1/

Spre deosebire de cazul anterior, aceast formulare permite includerea proieciilor paralele: dac l/d 0 , se obine proiecia ortografic pe planul z = 0, de ecuaii x' = x, y' = y, z' = 0. 3. Planul de proiecie este z = zp, iar centrul de proiecie se afl la distana Q de punctul (0,0, zp) n direcia vectorului normalizat (dx, dy, dz) (figura 2.28). Dreapta care unete centrul de proiecie Cp i punctul P 27

poate fi descris parametric: Cp + t(P Cp), t R. Punctul P' se afl pe aceast dreapt. Cum Cp = (0,0, zp) + Q(dx, dy, dz),

{
Astfel

x' = Qdx + t(x Qdx), y< = Qdy + t(y Qdy), z' = (zp + Qdz) + t[z ( zp + Qdz)\.

Cum P' se afl n planul z' = zp, se obine t: t= Zp (Zp + Qdz ) z (zp + Qdz) 1 zp - z Qdz dx
------ " 4 1 ------ " 4 1

dx

X1 = Qdx + & fY Z & ? L V = X ^zZI ) & T ) % & ZPTz.

Qdz

Qdz

Figura 2.26: Cazul centrului de proiecie n originea sistemului i al planului de proiecie z = d (a) Construcia proieciei (b) Proiecie pe planul xO z (c) Proiecie pe planul yO z

Planul de proiecie

Planul de proiecie

(a)

(b)

Figura 2.27: Cazul centrului de proiecie .a z = d i al planului de proiecie z = 0 (a) Proiecie pe planul x O z (c) Proiecie ; e planul yO z

28

O - dz Zp z z Figura 2.28: Cazul centrului de proiecie la distana Q de (0,0, zp) n direcia (dx,dy,dz) i planul de proiecie z = zp

+ ZpQdz

y y =

dz Qdz
1

dz

Qdz Qdz
1

' Qdz Qdz

Qdz
1

Matricea transformrii este constituit astfel nct ultima linie nmulit cu (x ,y ,z , 1) T s produc coordonata omogen w egal cu numitorul comun al fraciilor de mai sus: / 1 o
M,general

_ dx
dz dy dz

dx_ ^ P dz
~

\ \

P dz

M r _

o
\0

Z p
Qdz

Qdz

Matricele cazurilor anterioare se pot regsi n aceast reprezentare. Astfel, pentru Mpers, zp = d, Q = d, (d x,d y,d z ) = (0,0, 1); pentru M 1 rs, zp = 0, Q = d, (d x,d y,d z ) = (0 ,0 ,1); pentru proiecia ortogonal pe z = 0, zp = 0, Q = oo, (d x,d y,d z) = (0, 0, 1); pentru proiecia cavalier pe z = 0, zp = 0, Q = oo, (dx,dy,dz) = (cos a, sin a, 1); pentru proiecia cabinet pe z = 0, zp = 0, Q = oo, (d x,d y,d z) = (1/2 cosa , 1/2 ina, 1). Cnd Q ^ oo, M generai definete o proiecie perspectiv cu un punct de fug. Punctul de fug se obine multiplicnd punctul de la infinit de pe axa z, reprezentat n coordonate omogene prin (0 ,0 ,1,0)T, cu M generai. Se obine x' = Qdx, y = Qdy, z' = zp.

2.4.5

Descrierea sistemului de vizualizare

Pentru definirea unei proiecii s-au convenit o serie de notaii, specificate n cele ce urmeaz. Planul de proiecie este definit printr-un punct de referin al planului Pr i normala la plan, vectorul n. 29

Figura 2.29: Coordonatele definitorii ale unui schelet de cas ce urmeaz a fi proiectat

Se construiete sistemul de vedere de referin (asociat planului de proiecie i normalei la acesta) astfel: (a) originea sistemului este Pr; (b) una din axe este n; (c) o alt ax este vectorul v, care este proiecia pe planul de proiecie a verticalei imaginii (de obicei, proiecia axei y din sistemul lumii reale); (d) a treia ax, u, este determinat astfel nct u x v = n. Planul de proiecie este astfel uPrv. Fereastra dreptunghiular din planul de proiecie este definit relativ la axele de coordonate u i v, nu neaprat simetric fa de Pr. Se noteaz centrul ferestrei cu C /. Centrul de proiecie Cp i direcia de proiecie Dp sunt definite printr-un punct de referin al proieciei Pa i un indicator al tipului de proiecie. Dac proiecia este perspectiv, Cp = Pa- Dac proiecia este paralel, Dp este definit de vectorul cu originea n P^ i captul n C / . Specificrile clasice ale proieciilor n notaiile de mai sus sunt urmtoarele: 1. Pr= originea sistemului de coordonate ale lumii reale, xyz; 2. n = axa z; 3. v= axa y; 4. fereastra: [0,1] x [0,1] n planul uPrv, 5. Pd=( 0.5,0.5,1) n sistemul uvn. De exemplu, parametrii proieciei paralele pe xO y sunt Pr = (0, 0, 0) (xyz), n = (0, 0, 1) (xyz), v = (0 , 1 , 0 ) (xyz),

Pd = (0.5,0.5,1) (uvn), Fereastra = (0,1,0,1) (uvn), Proiecie: paralel Se consider exemplul casei din figura 2.29. O proiecie perspectiv pe un plan ce taie axa z este prezentat n figura 2.30. Proiecia paralel pe planul z = 0 produce imaginea din figura 2.31. In figura 2.32 sunt trasate alte trei proiecii ale casei.

30

Figura 2.30: Proiecia perspectiv a casei cu parametrii: Pr = (0,0,54), n = (0,0,1), v = (0,1,0), Pa = (8,6,30), Fereastra=( 1,17, 1,17), Proiecie: perspectiv (a) Elementele caracteristice proieciei (b) Imaginea rezultat

v= y

Figura 2.31: Proiecia paralel a casei cu parametrii: Pr = ( 0 ,0 ,0 ) , n = ( 0 ,0 ,1 ),


v = ( 0 ,1 ,0 ),Pd = (8, 8, 100), Fereastra=(^l, 17, 1 ,1 7 ), Proiecie: paralel (a)

Elementele caracteristice proieciei (b) Imaginea rezultat

(a) (b) (c) Figura 2.32: Proiecii cu parametrii (a) Pr = (16,0,54), n = (0,0,1), v = (0,1,0), Pa = (20,25,20), Fereastra=(^20,20, 5,35), Proiecie: perspec tiv (cu un punct de fug) (b) Pr = (8,8,42), n = (1,1,1), v = (0,1,0), Pd = (0,0,10), Fereastra=(^20,20, ^20,20), Proiecie: paralel (izometric) (c) Pr = (16,0,54), n = (1,0,1), v = (0, 1, 0), Pd =(0,25,20^2), Fereastra=(^20,20, 5,35), Proiecie: perspectiv (cu dou puncte de fug)

31

2.5

Volumul de vedere

Ochiul uman poate observa toate obiectele situate n interiorul unui con de vedere. Directoarea acestui con situat ntr-un plan normal pe direcia de observare este eliptic. In aplicaiile grafice se nlocuiete conul de vedere cu o piramid de vedere (figura 2.33). Astfel, se poate imagina c observatorul privete lumea printr-o fereastr dreptunghiular decupat ntr-un plan opac, situat la o anumit distan de observator. In vizualizarea 3D trebuie specificate un volum de vedere , o proiecie pe un plan , o fereastr n acel plan si o zon de lucru pe suprafaa de vizualizare. Coninutul volumului de vedere este proiectat n fereastra din planul de proiecie si apoi este transferat n zona de lucru. Figura 2.34 schieaz acest model conceptual de vizualizare 3D.

Figura 2.33: Volumul de vizualizare n cazul unui aparat de fotografiat

Primitivele in sis. de de coordonate 3D ale lumii nconjurtoare Decupare fa de volumul de vedere Proiecie pe planul de proiecie

Primitivele in sis. de de coordonate 2Dale dispozitivului de afiare Transformare in zona de de coordonate de dispozitiv

Figura 2.34: Modelul conceptual al procesului de vizualizare tridimensional

Volumul de vedere (sau volum de vizualizare) mrginete acea poriune din spaiul lumii reale care va fi proiectat pe planul de proiecie. Este definit astfel: 1. n proiecia perspectiv, ca o piramid semi-infinit cu vrful n centrul de proiecie si cu laturile trecnd prin colurile ferestrei din planul de proiecie; 2. n proiecia paralel, ca un paralelipiped infinit cu laturile paralele cu direcia de proiecie.

32

Planul posterior

Planul posterior v Fereastra Planu fronta Direcia de proiecie


(a)

Figura 2.35: Volumul de vedere (a) Cazul proieciei perspective (b) Cazul proieciei paralele

aul taL
O

/
m in

Planul posterior

Planul frontal
O

Planul posterior

(a)

Figura 2.36: Seciuni ale volumului de vedere canonic (a) Cazul proieciei perspective (b) Cazul proieciei paralele v = y. Fereastra v = y. v = y.

Pd
PT
=

Pd = Cp
PT

Cf
=

O u = x

O u = x

(a)

(b)

(c)

Figura 2.37: (a) Elementele caracteristice ale proieciei n specificarea clasic (b) Volumul de vedere n proiecia paralel (c) Volumul de vedere n proiecia perspectiv

Pentru a limita numrul de primitive grafice proiectate n planul de proiecie, aceste volume sunt transformate n corpuri finite prin introduc erea a dou plane de limitare, paralele cu planul de proiecie, n faa i n spatele acestuia, aflate la distane bine definite de-a lungul normalei la planul de proiecie (figura 2.35). Se obine un trunchi de piramid, respectiv un paralelipiped. 33

In urma transformrii de normalizare a volumului de vedere, planele ce definesc frontiera noului volum, numit volum de vedere canonic, sunt: 1. pentru proiecia paralel, x = 1, x = 1, y = 1, y = 1, z = 0, z = 1 (figura 2.36.a); 2. pentru proiecia perspectiv, x = z, x = z, y = z, y = z , z = z m in , z = 1 (figura 2.36.b). Volumele de vedere asociate specificrii clasice sunt prezentate n figura 2.37. Transformarea unui volum de vedere al unei n proiecii paralele n volum de vedere canonic Seria de transformri este urmtoarea (figura 2.38): 1. translatarea punctului de referin Pr n origine; 2. rotirea sistemului de referin astfel nct axa n devine axa z, u devine x i axa v devine y; 3. nclinare astfel nct direcia de proiecie s devin paralel cu axa z; 4. translaie i scalare pentru obinerea volumului canonic. Pasul 1 corespunde unei translaii T = T (Pr). Pentru pasul 2 se utilizeaz proprietatea matricelor ortogonale discutat n seciunile anterioare. Fie R matricea de rotaie. Cum n este rotit pe z,
R Z = f 7 7 -

NI

Vectorul v este proiecia pe planul de proiecie a verticalei imaginii, notat V (de obicei axa y). Axa u este perpendicular pe V i n i deci poate fi obinut din V x R z; fiind rotit pe axa x, J D _ V x R^ z I IV x R z\[

Axa v este perpendicular pe Rz i Rx i este rotit pe y, astfel nct Ry R z x Rx Matricea de rotaie din pasul 2 este astfel (R l Ry rj: \ 03 0\ 0 r , 0 1/

R =

03 = (0 ,0 ,0 ).

Al treilea pas presupune nclinarea volumului de vedere de-a lungul axei z astfel nct planele sale s fie normale la una din axele sistemului de coordonate. Direcia de proiecie Dp, n urma acestei transformri, trebuie s coincid cu axa z. Dp este definit de vectorul de la Pa la centrul ferestrei C /, iar Pj (transformat) este specificat n coordonatele sistemului uvn. Cum primele dou transformri au pus n coresponden sistemul uvn cu sistemul de coordonate 34

Figura 2.38: Rezultate ale etapelor transformrii n volum canonic al proieciei par alele (a) Sistemul de vizualizare iniial (b) Pr translatat n origine (c) Rotirea sis temului de referin uvn (d) nclinarea volumului de vedere (e) Translaie si scalare

35

Figura 2.39: Volumul de vedere dup transformrile de la paii 1, 2 si 3

a lumii nconjurtoare x y z , Pd este de asemenea n sistemul de coordonate a lumii nconjurtoare. Atunci D p = C / Pd- Fie Dp = (dx ,dy,dz,0), Cf = ((umax H (Vmax H - ^rain)/2, 0, 1), Pd = (PujPvj Pm !) Se Caut n pasul 3 matricea transformrii de nclinare /I 0 0 Vo 0 1 0 0 hx 0 \ hy 0 1 0 0 1J

H =

pentru care noua direcie de proiecie coincide cu axa z, adic (0, 0,g^ ,0)t = H D p. innd seama de forma matricei H , obinem
L x --

h -

dz

7 5

ILy --

h - -i7 i

dz

Dac proiecia este ortografic, atunci dx = dy = 0 astfel nct si hx hyi iar H este matricea identitate. Volumul de vedere dup aceste trei transformri este delimitat de Umin ^ X < Umax, ^rain ^ J J^ B ^
Z

^ F

unde F si B sunt distane de la Pr de-a lungul lui n la planele de decupare frontal si posterior (figura 2.39). Ultimul pas const n transformarea acetui volum n volum canonic. Acest pas presupune translatarea centrului planului frontal al volumului de vedere n origine si scalarea la dimensiunile 2 x 2 x 1 a volumului canonic: rp _ rp i -Lm n r -L l Umax + Umin ~ i ^max H " ^min T , r -F

J p Q iV

^ \ K Umax

Umin ^Vmax

^" p

D J J

Transformarea cutat este deci


Npar Spar ' Tpar H R T .

Npar transform un volum arbitrar de vedere al unei proiecii paralele, n volum de vedere canonic, permind astfel decuparea primitivelor fa de volumul canonic. 36

Transformarea unui volum de vedere al unei proiecii perspective n volum de vedere canonic Seria de transformri este urmtoarea (figura 2.40): 1. translatarea punctului de referin Pr n origine; 2. rotirea sistemul de referin uvn astfel nct axa n s devin axa z, axa u s devin x, iar v s devin y; 3. translatarea centrul de proiecie Cp = Pa n origine; 4. nclinarea conform creia linia central a volumului de vedere devine axa z; 5. scalare astfel nct volumul de vedere devine volum canonic. Paii 1 i 2 sunt identici cu cei din cazul proieciei paralele: R T. Pasul 3 presupune o translatare Tper = T ( P<j). Linia central a volumului de vedere, care trece prin origine i centrul ferestrei nu coincide cu axa z. Scopul pasului 4 este transformarea acestei linii n axa z (figura 2.41). Linia central trece de la Pa la C /, direcia fiind aceeai ca n proiecia paralel. Astfel matricea de nclinare este aceeai ca n cazul proieciei paralele. Dup ce nclinarea este aplicat, fereastra (i deci i volumul de vedere) este centrat pe axa z. Marginile ferestrei sunt definite de
---------------------- < X < --------------------- ,

^max

Urnin ^ ^

^ ^max ^min ^ 2

---------------------- < y < ---------------------.

Vmax

Vmin ^ ^ Vmax Vmin - y 2

Pr care nainte de pasul 3 a fost n origine, este translatat prin pasul 3 i nclinat prin pasul 4, astfel nct dup transformare se afl la H T ( P<j) (0 ,0 ,0 ,1)T, componenta z a acestuia fiind p n, a 3-a coordonat a lui Pa, deoarece nclinarea nu afecteaz coordonatele z. Pasul final const n scalarea de-a lungul celor trei axe pentru a crea volumul canonic (figura 2.42). Primul subpas pre supune scalarea pe x i y, difereniat, pentru a obine pantele corespunztoare volumului de vedere canonic; n plus se dorete ca volumul rezultat s aib seminlimea i semi-limea egale cu pn. Factorii de scal sunt 2pn/(umax umin) i 2Pn/{vmax vmin). In al doilea subpas, se aplic o scalare uniform de-a lun gul celor trei axe (pentru menimerea pantelor) astfel inct planul z = pn + B s devin planul z = 1. Factorul de scal este 1/ ( pn + B ). Astfel
_____________ 2 P n ____________________________ 2 P n ___________________ - 1 { Urnax Urnin}{ Pn + {Vrnax Vrnin'){ Pn + \

P n ""I" B J

Transformarea cutat este Nper = Sper H Tper ' R 'T . Observaie: Nper i Npar nu afecteaz coordonata omogen w a punctelor transformate, astfel nct mprirea cu w nu este n mod normal necesar. Ast fel coordonatele omogene obinute prin trecerea la volumul de vedere canonic pot fi uor transformate din nou n spaiul tridimensional, dup care se poate aplica decuparea fa de volumul de vedere canonic i n final matricea de proiecie Mgm ai,

37

Figura 2.40: Transformarea n volum canonic al proieciei perspective: (a) sist. vizualizare iniial (b) Pr translatat n origine (c) uvn este aliniat la x y z (d) Cp translatat n origine (e) nclinare volum (f) scalare volum

38

y ..

Centrul

Figura 2.41: Seciune prin volumul de vedere dup transformrile pailor 1, 2 si 3

Figura 2.42: Seciune a volumului de vedere nainte si dup scalare

Transformarea volumului canonic al proieciei perspective n volumul canonic al proieciei paralele Volumul de vedere canonic din proiecia perspectiv poate fi transformat n volumul de vedere canonic din proiecia paralel astfel: unui punct (x ,y ,z ) din interiorul trunchiului de piramid i corespunde un punct (x'^y'^z') din interiorul paralelipipedului prin relaiile

y' =
Matricea corespunztoare (1
0 M = 0 \0

0
1 0 0

o 0 1
l + Zmi-

0 o
l + z.

\ = -1,

-1

<r /

indic o transformare perspectiv. Astfel, pentru construirea imaginii prin proiecie perspectiv a unui corp 3D se poate proceda n dou moduri: (a) se proiecteaz fiecare punct component, noile componente fiind stocate separat; (b) se aplic corpului transformarea perspectiv care l deformeaz astfel nct proiecia paralel a corpului obinut s coincid cu proiecia per spectiv a obiectului iniial. In acest fel imaginea va fi stocat n memorie 39

Coordonatele 3D Coordonatele 3D de modelare a ale lumii obiectului inconjuratoare

Coordonatele sistemului de vizualizare

Coordonatele proieciei normalizate

Coordonatele 2D ale dispozitivului

Transforma rea de modelare

Matricea de orientare a cmpului

Matricea transformarii de vizualizare M Spe, H T p er T^- H

Decupare, transformare in coordona tele ecranului

Proiecia perspectiva: Proiecia paralela:

R-T R-T

Figura 2.43: Sistemele de coordonate utilizate la vizualizare si relaiile ntre ele

prin chiar coordonatele x si y ale punctelor implicate. Se proiecteaz or togonal corpul obinut. Vizualizare 3D Setul de transformri, n cazul general, care se aplic obiectelor pentru vizualizare este urmtorul: 1. extinderea coordonatelor 3D la coordonate omogene; 2. aplicarea transformrii de normalizare Npar sau Nper; 3. revenire la coordonate carteziene n 3D; 4. decupare n 3D fa de volumul de vedere canonic; 5. extinderea coordonatelor 3D la coordonate omogene; 6. aplicarea proieciei paralele (n urma transformrilor aplicate mai sus este vorba de o proiecie ortografic pe planul xO y ) sau aplicarea proieciei perspective (cazul 1 n care centrul de proiecie este n originea sistemului, iar planul de proiecie este z = 1); 7. translatarea si scalarea pentru trecerea la coordonatele dispozitivului; 8. trecerea la coordonate carteziene n 2D. Obiectele sunt definite n sistemul de coordonate ale obiectului (numit si sis temul de coordonate de modelare, sau sistemul de coordonate locale). Obiectele sunt transformate n sistemul de coordonate a lumii nconjurtoare (sau sis temul de coordonate a problemei, sau sistemul de coordonate a aplicaiei), sistemul n care o scen cu mai multe obiecte este reprezentat pe calcula tor, prin transformarea de modelare. Sistemul de referin a coordonatelor de vizualizare, sistemul uvn , este utilizat pentru definirea unui volum de vedere. Cnd originea acestui sistem este plasat n centrul de proiecie si planul de proiecie este normal pe axa z, sistemul se mai numete si sistem de coordo nate a ochiului sau sistem de coordonate ale camerei (cu subneles de camer foto sau de filmare). Primii trei pai din transformarea de normalizare a volu mului de vedere realizeaz conversia dintre sistemul de coordnate ale lumii nconjurtoare n sistemul de coordonate ale camerei (figura 2.43). Din sis temul de coordonate ale camerei se trece la sistemul normalizat de coordonate a proieciei (sistemul de coordonate ecran 3D, sau sistemul de coordonate 3D a unui dispozitiv logic), adic sistemul de coordonate a volumului de vedere

40

canonic. Termenul de normalizat se refer la faptul c toate valorile coordo natelor sunt n intervalul [0,1] sau [-1,1], pe cnd termenul logic se refer la valori de coordonate ntr-un interval mai larg, de exemplu [0,1023] (n acest caz sistemul nu este normalizat). Prin aplicarea proieciei de la 3D la 2D se creaz sistemul normalizat de coordonate 2D ale dispozitivului (sau sistemul de coordonate a imaginii, sistem de coordonate rastru, sistemul de coordonate ecran, sistem de coordonate ale dispozitivului fizic - n contrast cu termenul de logic utilizat anterior).

41

3. Trasarea primitivelor grafice


3.1 Primitive grafice
Se numesc primitive grafice acele elemente de baz pe care programatorul le poate folosi pentru a realiza desenele necesare unei anumite aplicaii. Primiti vele grafice ale unei aplicaii grafice pot fi extrem de variate: puncte, segmente de dreapt, caractere, dreptunghiuri, linii poligonale, poligoane, conice, curbe cubice, cuadrice, suprafee bicubice, cub, paralelipiped, etc. Se consider un dispozitiv de afiare grafic cu tub catodic cu rastru drep tunghiular, cu originea (0,0) n punctul din stnga jos al ecranului, cu valorile absciselor crescnd la dreapta i valorile ordonatelor crescnd n sus. Unitile axelor u, v sunt egale cu distanele dintre doi pixeli alturai pe orizontal, respectiv vertical. Se presupune de asemenea c fiecare pixel de pe ecran are dou stri posibile: aprins sau stins (imagine monocrom). Se neglijeaz, n acest capitol, celelalte atribute posibile pentru reprezentarea unei imagini pe ecran, cum sunt culoarea, nuana, intensitatea, etc.

3.2

Trasarea incremental

O atenie deosebit s-a acordat optimizrii algoritmilor de trasare a primitivelor n ceea ce privete eficiena de execuie (viteza de generare a unei primitive). In acest scop se urmrete reducerea numrului de operaii n virgul mobil, n favoarea celor cu numere ntregi i minimizarea numrului de nmuliri i mpriri (microprocesoarele actuale nu conin instruciuni pentru aritmetic n virgul mobil, astfel nct instruciunile de nmulire i mprire sunt mai lente dect operaiile de adunare i scdere). Metodele de trasare incremental se bazeaz pe scheme cu diferene ntre mrimi asociate punctelor succesive, care conduc la relaii liniare de transfor mare iterativ a unor variabile. Aceste relaii liniare pot fi implementate n general prin operaii simple de adunare i scdere de numere ntregi. Metodele incrementale i dovedesc eficiena n special la trasarea curbelelor de grad unu (linii drepte) i doi (cercuri, elipse, hiperbole, parabole). Algoritmii de trasare incremental a curbelor de grad cel mult doi pornesc de la anumii parametri care caracterizeaz analitic curba i construiesc cea mai bun reprezentare discretizat a curbei respective. Se efectueaz deplasri elementare ntre dou puncte vecine pe orizontal, vertical sau diagonal, care se traduc prin operaii simple de incrementare sau decrementare a variabilelor de adresare fizic. Algoritmul de trasare incremental pstreaz n permanen informaii cu privire la starea curent a procesului iterativ, prin intermediul uneia sau mai multor variabile de stare. Acestea permit realizarea ct mai simpl a funciilor algoritmului i sunt uor actualizabile n vederea trecerii la urmtorul pas iterativ. innd seama de faptul c modelul reprezentrii este o curb continu

42

pentru care tangenta variaz continuu, pe cnd spaiul de afiare este discret, n dezvoltarea algoritmilor s-au adoptat urmtoarele convenii metodologice de reprezentare: 1. pentru fiecare punct generat la un capt al curbei, sau la o margine a fer estrei de vizualizare, exist exact un punct vecin pe orizontal, vertical sau diagonal, generat pe curb. 2. orice alt punct generat pe curb are exact dou puncte vecine pe or izontal, vertical sau diagonal, generate pe curb, cu care formeaz un unghi de 180 sau 135 (se evit unghiurile ascuite n reprezentrile discrete ale curbelor) pentru un raport aspectual unitar. Aceste reguli sunt referite sub numele de reguli de conexiune discret.

3.3

Segmente de linii

Pentru a trasa un segment de dreapt trebuie cunoscute coordonatele capetelor acestuia. Deoarece un segment se traseaz n timp, cele dou puncte pot fi denumite extremitatea de nceput i extremitatea de sfrit a segmentului. Pentru trasarea segmentului pe ecran, numit conversie prin baleiaj (baleiere, scanare) sau conversie scan, se determin care sunt pixelii rastrului cei mai apropiai de imaginea ideal a segmentului (care vor fi aprini). Segmentul obinut va arta ca o scri (figura 3.1). Un pixel este reprezen tat printr-un disc centrat n punctul de coordonate ntregi (u, v) (n sistemele actuale diametrul unui pixel circular este mai mare dect spaiul interpixeli, deci reprezentarea din figur este exagerat). Segmentul de linie trasat are "limea de un pixel.

Figura 3.1: Un segment de dreapt convertit prin baleiaj, pentru care pixelii aprini sunt reprezentai prin cercuri negre

3.3.1

Algoritmul incremental de baz

Algoritmul incremental de baz sau algoritmul DD (D ig it a l D iffe r e n t ia l Analyzer) determin poziia pixelilor cei mai apropiai de un segment de linie, parcurgnd pai unitari pe o ax de coordonate i calculnd valorile corespun ztoare pe cealalt ax. Fie xO y sistemul de coordonate ale dispozitivului de afiare. In planul ecranului, ecuaia dreptei care trece prin A i B este

y = Va + m(x x a ),
43

V b Va m = ----------- , XB - XA

unde m reprezint panta dreptei. Se presupune c, coordonatele punctelor extreme, &*, y,, i = A ,B , sunt numere ntregi. Altfel, se rotunjesc la cel mai apropiat ntreg. Dac xb > x a , cea mai simpl strategie de discretizare a liniilor este cal cularea pantei m, incrementarea lui i c u 1 pornind de la punctul A din partea stng, calcularea lui y, = m ii + % a j tuxa pentru fiecare Xi i aprinderea pixelului (xj,Round(j/j)), unde Round(t/j) = [yt + 0.5]; se selecteaz astfel cel mai apropiat pixel de linia ideal, anume pixelul a crui distan pn la linia ideal este cea mai mic (figura 3.2.a). Se trece la urmtoarea valoare a lui x, pn cnd x depete p e x b - Aceast strategie este ineficient deoarece la fiecare iteraie este necesar o multiplicare n virgul mobil, o adunare i invocarea unei funcii de tip F loor pentru partea ntreag. Putem elimina multiplicarea dac incrementm i pe y, nu numai pe x*. Dac la un moment dat intersecia cu o vertical a grilei este (ar*, y*) i se aprinde pixelul (xj,Round(j/j)), atunci la pasul urmtor intersecia cu urmtoarea vertical va f i (&j+i, y*+i), unde x *+1 = x* + 1 , iar
/i+i = Round(j/A + m (xi+i x a )) = Round(j/A + m(xi + 1
x a ))

= Round(j/ + m).

Se va aprinde pixelul (xj+i, Vi+i)Linia ideal. .

(Xi + (xt,Roimd(y,))

1,yi fffl)

\t it

(a) Figura 3.2: Algoritmul DDA (a) Calculul incremental pentru o pant subunitar (b) Cazul incrementrii unitare pe axa x cu \m \> 1

In urmtoarea secven de cod, W r i t e P i x e l este o procedur de nivel sczut oferit de software-ul de dispozitiv.
Procedure Line(
{Presupune c 1 < m < l,x 0 < * 1 }

x0,y0,
xl,yl, value : inteyer) var x: integer; d y , d x ,x , m : real ; begin dy = y l - y0; dx := *1 *0;

{Punct stnga} {Punct dreapta} {Valoarea dat pixelilor liniei} {* variaza ntre *0 i *1}

y := yO; for x := *0 to *1 do

begin

44

{Seteaz val.pixel}
WritePixeMcc, Eound(j/), value) ;

y := y + m
end end; {Line}

Pentru a proceda uniform indiferent de relaia de ordine dintre xa i i b , se calculeaz s = sgn (xb x a ) i formula de calcul a lui y rmne neschimbat, doar c x se incrementeaz cu s n loc de 1. Folosind acest raionament, segmentele mai apropiate de vertical dect de orizontal, ar aprea punctate (figura 3.2.b), deoarece panta \ m \ > 1, iar segmentele verticale nu ar putea fi reprezentate deoarece xb xa = 0 . Astfel se face distincie n algoritm ntre segmentele apropiate de orizontal i cele apropiate de vertical, pentru acestea din urm calculndu-se x n funcie de y i realiznd incrementarea dup y cu s = sgn(ys yA) ntre yA i Vb -

3.3.2

Algoritmul punctului de mijloc

In algoritmul DDA ponderea cea mai mare o ocup n timp calculele n virgul flotant (funcia Round). Din punct de vedere al timpului, mai eficieni sunt algoritmii care elimin operaiile n virgul mobil. Un exemplu tipic de al goritm n aritmetica numerelor ntregi pentru trasarea segmentelor de dreapt este algoritmul Bresenham. Pentru exemplificare, se consider cazul unui segment al crui nclinare este cuprins ntre 0 i 45 (panta m (0,1)). Conform regulilor de conexiune discret, cunoscnd poziia curent a unui punct oarecare de pe segment, exist dou puncte posibile pentru urmtoarea poziie (figura 3.3). Se consider c la pasul i s-a determinat pixelul care trebuie aprins ca fiind P(xi,yi). La pasul i + 1 este necesar alegerea unui punct dintre E(xi + 1, y* + l) i F (xi + 1,j/j). Criteriul de decizie pentru algoritm este apropierea punctului fa de segmentul real. Practic se compar distanele e i / din figura 3.3. Dac / < e, se alege F, altfel se alege E. Pentru stabilirea criteriului decizional se parcurg urmtoarele etape: Pas 0: Se compar xa cu xb i eventual se face o schimbare ntre capetele seg mentului astfel nct xa < x b - Se realizeaz o translaie cu deplasamen tul (xa , yjC) astfel nct ecuaia dreptei modificate s fie y = (dy/dx)x, unde dx := xb x a , dy := y s yA- Se consider xq = 0, yo = 0. Pasul i: Punctul M de intersecie al dreptei x = Xi + 1 cu dreapta ideal are coordonatele % = Xi + 1,j/m = (dy/dx)xM Se determin distanele la punctele din rastru cele mai apropiate pe verticala x = Xi + 1: / = Vm Vi, e = yt + 1 j/m- Se determin cantitatea d x (f e ): d x (f - e) = dx( 2 yM - 2 yi - 1) = = dx = 2dy(xi + 1) 2 ytdx dx.

Deoarece dx > 0 (din pasul 0) cantitatea f e are acelai semn ca d x (f e ). Se noteaz d,+i = d x (f e ) i se caut o relaie recursiv pentru

45

acest factor de decizie. Cum dj+i = 2 (xidy yidx ) + 2 dy dx, rezult di+i - di = 2 [dy(xi - Xj_i) - dx(yi - yt-i)] i fiindc Xi Xj_i = 1 se obine relaia recursiv di+i = di + 2dy - 2 dx(yi cu valoarea de start di = 2 (xody yodx) + 2dy dx = 2 dy dx. In concluzie, variabilele de stare sunt (X i,yi,di), iar criteriul decizional este urmtorul: dac di+ i > 0 se alege E (xi + 1, y, + 1) i d,+2 = d,+1 + 2 (dy dx) dac di+ i < 0, atunci se alege F(xi + 1, t/j) i d,+2 = d,+ 1 + 2dy. di = 2 (xi-\dy y i-id x) + 2dy dx,

:+ l)

Figura 3.3: Selecia pixelilor n algoritmul Bresenham

Algoritmul general presupune mai multe cazuri, funcie de nclinarea dreptei care trebuie trasat. O procedur ce modeleaz cazul analizat este urmtoare:
Procedure MidpointLine ( x 0 , y 0 , x l , y l , v a l u e : var dx, dy ,in cr E ,incrF ,d , x , y : integer; begin integer)

cfa := *1 *0;
dy := y 1 - yO; d := 2 * dy dx; incrE := 2 * (dy dx); in crF := 2 * dy; x := *0;

{Val.iniial variabil decizie} {Increment pentru mutarea la E} {Increment pentru mutarea la F}

y = yO;
WritePixel ( x , y , v a lu e ); {Pixel de start}

46

while x < x l do begin if d < 0 then begin

{Alege F}

d := d + incrF; x := x + 1
end else begin x := x + 1; y . = y + 1; end; WritePixel (x, y, value) {Cel mai apropiat pixel} end {while} end; {MidpointLine}

{Alege E}

d := d + incrE ;

La fiecare pas, prin algoritm se alege un pixel din 2 posibili, alegerea bazndu-se pe semnul unei variabile de decizie calculate n iteraia anterioar, apoi se actualizeaz variabila de decizie adugnd o valoare care depinde de alegerea pixelului. La fiecare pas se efectueaz o adunare pentru modificarea variabilei de decizie (fr vreo multiplicare consumatoare de timp). Tehnica B r e s e n h a m poate fi aplicat i pentru trasarea cercurilor dar nu poate fi generalizat pentru orice conic. O formulare diferit datorat lui P i t t e w a y i V a n A k e n (algoritmul punctului de mijloc pentru trasarea unei curbe plane) se reduce n cazul liniilor i cercurilor la formularea Bresenham. Variabila decizional din algoritmul B r e s e n h a m poate fi exprimat liniar funcie de ecuaia dreptei evaluat n punctul de mijloc al segmentului EF. Fie D (x ,y ) = ax + by + c, a > 0 ecuaia dreptei. Variabila de decizie n algoritmul punctului de mijloc este d,+i = 2D(xi + 1, y, + |). Cum D (x ,y ) este negativ pentru un punct de deasupra liniei i pozitiv pentru un punct sub linie, se alege E dac d,+i > 0 i F dac d,+i < 0. Dac este ales F, atunci 2 D (xi + 2, yi + 1/ 2) 2[(z(xj + 2) + bi^yi = dj+i + 2dy, iar dac se alege E, atunci d% \ 2 2 D (xi + 2, j/j + 3/2) = di^-\ Valoarea de start este di = 2D ( xa + 1,yA + 1/2) = 2D (x A,yA ) + 2 a + b = 2 a + b = 2dy dx, deoarece se presupune c (x a ,Va ) se afl pe dreapt. 2(o- + 6) = i + 2 {dy dx ). 1/ 2) c\ 2a

47

3.4

Cercuri
2 , 2 r>2

Se consider un cerc centrat n origine, de ecuaie x + y = R , unde raza R este un numr ntreg de uniti de rastru. Cercurile care nu sunt centrate n origine se translateaz nspre origine, iar la convertirea scan se ine seama de deplasament. Exist o serie de variante pentru conversia scan a cercurilor. Rezolvnd ecuaia implicit se obine y = y ,R 2 x 2. Pentru a trasa un sfert de cerc (celelalte trasndu-se prin simetrie, vezi figura 3.4.a) se poate incrementa x de la 0 la R cu pai unitari, rezolvnd ecuaia y = R 2 x 2 pentru fiecare pas. Viteza de conversie a cercului n acest caz este extrem de sczut datorit numeroaselor operaii de multiplicare i extragere a rdcinii ptrate. In plus cercul va avea guri pentru valori ale lui x apropiate de R (figura 3.5). C(x,y) = 0

e(\ y,%). (

(b\; CD
e -iV eF(xi,yi + 1)

y) x i x)

(*i y)

w
E (xi

~ x y~y)

(*i y)

1,Vi + 1)

(a)

(b)

Figura 3.4: (a) Construirea arcelor de cerc prin simetrie (b) Algoritmul incremental n octantul unu O alt variant este afiarea punctelor apropriate de (R cos 8 , R sin 8 ), cu 8 parcurgnd pas cu pas intervalul [0,45] (calculele sunt de asemenea nu meroase). Ca i n algoritmul de generare a liniilor n rastru, determinarea poziiilor de coordonate ntregi ce formeaz o imagine circular pot fi obinute printr-un algoritm incremental ce determin, la fiecare pas, pixelul cel mai apropiat de cerc. Algoritmul de generare incremental se bazeaz n mod esenial pe ipoteza de echidistan orizontal i vertical a punctelor rastrului. Dac aceast condiie nu este ndeplinit, algoritmul urmtor va trasa elipse n loc de cercuri. Se consider sensul trigonometric de parcurs al cercului. Problema este examinat separat pentru fiecare octant. In interiorul unui octant sunt posibile numai dou deplasri elementare ntre dou puncte generate consecutiv: o deplasare perpendicular pe axa mai apropiat, sau o deplasare diagonal. De exemplu, n octantul 1, deplasrile elementare sunt n sus sau spre stnga-sus, iar n octantul 2, la stnga sau spre stnga-sus. 48

Figura 3.5: Rezultatul trasrii incrementale pe baza ecuaiei cercului

Se consider, de exemplu, cazul primului octant si a unui cerc de ecuaie C (x ,y ) = 0 cu C (x ,y ) = x 2 + y 2 R 2. Se consider generate la un moment dat (la un pas anterior) coordonatele (xi^yi) relative la centrul cercului. Se pot alege dou posibiliti la pasul urmtor: (xi,yi + 1) sau (xi 1, yi + 1) (figura 3.4.b). Va fi generat punctul care este cel mai apropiat de cercul ideal. Primul se afl n exteriorul cercului, deci C (xi,yi + 1) > 0, iar cellat n interior, deci C(xi 1, 2 /* + 1) < 0. Punctul corespunztor valorii celei mai mici n modul este cel selectat. In formularea B r e s e n h a m a algoritmului se consider factorul de decizie

A i = C(xi,Ui + 1) + C ( x i -

1, 2 /* +

1) = x 2 i + (xi - l)2 + 2(yt + l)2 - 2R 2.

Dac A i < 0, adic \C(xi,yi + 1)| < | C (xi 1, yi + 1)| , atunci se aprinde primul punct, altfel cel de-al doilea. Pentru evitarea multiplelor operaii de adunare, scdere si nmulire, factorul de decizie se poate obine printr-o formul recursiv. Astfel, dac A* < 0, atunci
A i+ i = A i + 4 ?/ i+ i + 2,

altfel
A i+ i = A i 4 x f+ i + 4 ^ + i + 2.

Cele trei puncte (X i,yi , A*) definesc starea curent a algoritmului pentru fiecare punct generat. Valorile iniiale pentru cele trei variabile de stare sunt
xq

yo = 0,

Aq = 3 2R.

In concluzie, la fiecare iteraie se fac doi pai: (1) se alege pixelul pe baza semnului variabilei decizionale calculate n iteraia anterioar i (2) se actual izeaz variabila decizional cu o valoare ce corespunde alegerii pixelului. Sin gura diferen fa de algoritmul pentru linii este aceea c, n actualizarea variabilei decizionale, se evalueaz o funcie liniar n coordonatele pixelului. Odat rezolvat problema generrii cercului n primul octant, pentru trasarea n ceilali octani se poate proceda prin simetrie. Exist ns situaii cnd ordinea generrii punctelor cercului are importan, de exemplu, dac trasarea trebuie s se efectueze nu cu linie continu, ci cu linie ntrerupt. Atunci se continu generarea incremental i n ceilali octani. 49

In octantul 2, dup generarea punctului (#i,2/i), urmtorul punct generat trebuie ales ntre (xi l,y i + 1) si (xi 1,2/*). Factorul de decizie este A* = y 2 i + (yi + l )2 + 2 (Xi - l )2 - 2R 2 cu relaia recursiv
H+l

_ f A i 4xi+i + 2, l Ai - 4xi+i - 4^/i+i + 2,

Ai < 0

altfel

Prin calcule simple se pot stabili formulele de trecere de la octantul 1 la octantul 2 pentru factorul decizional, funcie de ultimele valori alese si ultima direcie de deplasare, respectnd regulile de conexiune discret. Algoritmul punctului mijlociu pentru trasarea dreptelor poate fi extins la cazul trasrii cercurilor. Pentru exemplificare se consider octantul de la x = 0 la x = y = R/y/2 si sensul de parcurs al curbei conform acelor ceasornicului. Precum n algoritmul punctului de mijloc pentru linii, strategia const n a selecta un pixel dintre doi posibili, respectiv cel care este mai apropiat de cercul ideal, prin evaluarea unui funcii n punctul de mijlocul dintre cei doi pixeli (n cazul octantului secund, ntre E si F din figura 3.6).

Figura 3.6: Grila cu pixeli n cazul octantului secund

Funcia C este 0 pe cerc, pozitiv n afara cercului, negativ n interiorul cercului. Dac punctul de mijloc dintre E si F este n afara cercului, F este mai apropiat de cerc, iar dac este n interior, E este mai apropiat de cerc. Se consider Ai+i = C (xi + 1, yi \). Dac Ai+i < 0 se alege E si numai x va fi incrementat, astfel nct A i+2 = C{x\ + 2, yi~ \ ) = J i + i + A ^ , 8f+l = 2xi + 3; n caz contrar, se alege F si A i+2 = C {xi + 2,2/i - ) = A i+i + S[+1, A f+1 = 2Xi 2 yi + 5. Considerm punctul iniial de start a procedurii iterative ca fiind (0,i2). Urmtorul punct de mijloc este (1 ,R |), iar C (l, R \) = f R. Datorit fraciei iniiale n expresia lui d este necesar aplicarea aritmeticii n numere reale. Astfel, se definete variabila decizional Ai = di pentru ca iniializarea s fie A = 1 R, iar comparaia d < 0 devive A < 1/4. Deoarece 50

A pornete de la o valoare ntreag i este incrementat cu valori ntregi aceast ultim comparaie poate fi nlocuit cu A < 0. Performanele acestui algoritm pot fi mbuntite dac tehnica incremen tal este utilizat i la evaluarea funciilor liniare ce constituie incrementele variabilei decizionale (orice polinom poate fi calculat incremental). Stategia utilizat const n evaluarea funciilor direct n dou puncte adiacente, calcularea diferenei i aplicarea diferenei la fiecare iteraie. Dac se alege E (xi + 1, 2 /j) n iteraia curent, atunci A f^2 = 2(x* + 1) + 3 = A f +1 + 2, iar A f+2 = 2(x* + 1) 2j/j + 5 = <5^ + 2. Dac se alege F (xi + 1, y, 1) n iteraia curent, atunci A^j_2 = 2(x* + 1) + 3 = A^j_1 + 2, iar A | ^ _ 2 = 2(xi + 1) 2(j/j 1) + 5 = A f ^ + 4. Astfel, algoritmul revizuit const n urmtorii pai: 1. calculul pixelului bazat pe semnul variabilei A determinat n iteraia anterioar; 2. actualizarea variabilei de decizie utiliznd valorile A E i A F calculate n iteraia anterioar; 3. actualizarea variabilelor A E i A F innd cont de poziia noului pixel i utiliznd diferenele constante calculate anterior.
Procedure MidpointCircle (radius, v a lu e : integer); {Traseaz semicercul de la (0, R) la (R^/2,R^/2)} {Se presupune c cercul este centrat n origine} var x ,y , d ,d e lt a E ,d e lt a F : integer; begin
* := 0; y := radius; d := 1 radius; deltaE := 3; deltaF := ^ 2 * radius + 5; WritePixel ( x , y , value ); while y > x do

begin if d < 0 then {Selecteaz E} begin


d := d + deltaE; deltaE := deltaE + 2; deltaF := deltaF + 2; x := x + 1

end else begin


d := d + deltaF; deltaE := deltaE + 2; deltaF := deltaF + 4;

x := x + 1;
y -= y - 1

end;

51

Figura 3.7: (a) Primul cuadrant n trasarea incremental a elipsei centrate n origine si cu semiaxele paralele cu axele de coordonate

W ritePixel(x, y ,value ) ; end {while} end; {MidpointCircle}

3.5

Elipse

Algoritmul punctului mijlociu a fost extins si la cazul conversiei scan a elipselor drepte (algoritmul Da S ilva ). Pentru simplificarea calculelor se traseaz arcul de elips care se afl n primul cuadrant, iar celelalte trei, prin simetrie. Se divide primul cuadrant n dou regiuni (figura 3.7), n urma determinrii punctului n care tangenta la elips are panta 1 (punctul satisface ecuaia elipsei E (x ,y ) = b2x 2 + a2y 2 a2b2 = 0 si componentele vectorului gradient trebuie s fie egale, 2b2x = 2a2y). Ca si n algoritmul punctului mijlociu pentru drepte, se evalueaz funcia E n punctul de mijloc dintre cei doi pixeli n discuie n regiunea curent pentru a determina poziia punctului de mijloc fa de elips si, deci, cel mai apropiat pixel. Variabila de decizie este aleas proporional cu aceast valoare, multiplicat cu un factor ce elimin mpririle prin constante, si care poate fi evaluat prin diferene. Se consider sensul de parcurs al elipsei conform sensului orar. In regiunea 1, dac pixelul curent are coordonatele (x^,^), atunci variabila de decizie este di+i = 4 E(xi + 1,2 / \)- Dac urmtoarea mutare se face la E, atunci di+2 = E (xi + 2 ,2 /i \) = di+i + Ab2 (2xi + 3). Pentru o mutare la F, g^+2 = E (xi + 2 ,2 /i ) = di+i + 4a2(2xf + 2). Presupunem c punctul de start este (0,b); atunci di = 4 E (l,b \) = 4b2 + a2( 46 + 1). Vectorul gradient este definit prin grad.E(x,^) = ^ i + ^j = 2b2xi + 2a2y]. Frontiera dintre cele dou regiuni este dat de punctul n care panta curbei este - 1, adic cnd vectorul gradient are panta 1. Dac a2(yi \) < b2(xi + 1) se trece din regiunea 1 n regiunea 2 (se va proceda n mod similar cu cazul cercului). Algoritmul descris mai sus poate fi extins pentru cazul unei elipse oarecare descris prin ecuaia G ( x , y ) := a x 2+ b x y + c y 2+ d x + e y + f = 0 (se include astfel si cazul cercului). Planul se divide n opt octani, funcie de direciile de trasare incremental (figura 3.8 si tabelul 3.1). Astfel, n octantul 1 se poate alege 52

Figura 3.8: Octanii n cazul unei elipse oarecare

ntre mutarea la dreapta sau pe diagonal sus-dreapta. Se consider aprins pixelul (Xi,yi ) din octantul 1. Variabila de decizie este d, = G(xi + 1,/j + |). Urmtoarea valoare poate fi d,+i = G(xi + 2, + sau d,+i = G(xj + 2 ,j/j+ | ). In primul caz, d,+ i = d, + ,+ i, iar n al doilea, d,+ i = d, + Wj+i, unde U j, = a{ 2 xi 1) b(yi 1/ 2) + d 2 a,

Vi = ( 2 a + b)n + (b + 2 c)% ji + a + 6/2 + d + e + 2 (a + b + c). Pentru , i w , se pot stabili relaii recursive ce depind de direcia de micare. Pentru micarea orizontal, M j+ i = Ui + 2 a, iar pentru micarea diagonal, = Ui + 2 a + b, Vi--i = Vi + 2a + 2 b + 2c. Trecerea din octantul 1 n octantul 2 se realizeaz cnd expresia urmtoare i schimb semnul: ~dx + ~dy ) W j+i = Vi + 2 a + b,

dG

dG\ ,

= ^

/o

* + Ji +

' + ^ *+

+ e) = w *^ Ia + -

iar trecerea din octantul 2 n octantul 3, cnd expresia urmtoare i schimb semnul: dG < ^ o , ( fe N
Vi) = 2aa:* + oy + ct = W (a+ -

Dac se noteaz cu fci = 2a, = 2a + b, = 2a + 2b + 2c, atunci valorile de actulizare sunt: 1. micarea pe orizontal sau vertical: ,+i = , + k\, w,+ i = w , + Aj : 2. micarea pe diagonal: ,+ i = , + fe, w*+i = w *+ & 3Componentele vectorului gradient se pot exprima astfel: 8G _ dx U % dG 8G _ _ fa 2 dx + dy V % 2 '

Algoritmul const din mai muli pai (un pas pentru un pixel), la un pas efectundu-se urmtoarele etape: 53

Octant A* Ay

1 1 0,1

2 0,1 1

3 o,-i 1

4 -1 0,1

5 -1 0,-1

6 0,-1 -1

7 0,1 -1

8 1 0,-1

Tabelul 3.1: Mutri n octani

1. 2. 3. 4.

trasare pixel; alegere pixel nou pe baza valorii d,; calculare ,+ i i w,+ i funcie de alegerea efectuat n etapa anterioar; calculare d,+i prin adugare ,+i sau w,+i funcie de alegerea efectuat n etapa a doua; 5. verificarea schimbrii octantului.
function GetOctant (D, E :integer): integer; begin if D > 0 and E < 0 then if D < E then GetOctant :=1 else GetOctant:=2; if ... {celelalte ase cazuri} end; procedure Conic ( x s ,y s ,x e ,y e , {Punctele de start i stop} .I ./ > .('. / . ) . / " : integer); {Coef iceinii} var
x ,y , octant, dxp, dyp, dxd, dyd, d,u, v, k l, k 2 , k3, dSdx, dSdy, {Punctul i octantul curent} {Schimbri n (*,j/)} {Var. decizie i incrementare} {Componentele gradientului} {Numrul de octani de trasat}

octantContor, tmp : integer;


begin

octant :=GetOctant(D, E ) ; case octant of

1:

begin d :=round(. I + B j 2 + C/4 + D + E j 2 + F ) ; u :=round(/l + B/2 + D ) ;v :=round(/l + B/2 + D + E)\


kl := 2 * A\ k 2 : = 2 * A + B; k3 := k2 + B + 2 * C; dxp := 1; dyp := 0; dxd := 1; dyd := 1

2:

end; begin

d :=round(.l/ l +B/2 + C + D/2 + E + F ) ;


11 :=round(_B/2 + C + E ) ;v :=round(_B/2 + C + D + E ) ;
kl := 2 * C; k 2 : = B + 2 * C ; k3 := k2 + B + 2 * A; dxp := 0; dyp := 1; dxd := 1; dyd := 1

end; {. .. celelelate 6 cazuri} end; {Translateaz (x s ,y s ) n origine}

x := xe x s ; y := ye ys; 54

dSdx := 2 * A * x + B * y + D; dSdy \= 2 * C * y + B * x + E; octantContor :=GetOctant (dSdx,dSdy) octant;


{determin octantul terminal} if octantContor < = 0 then

octantContor := octantContor + 8; y := ys\ while octantContor > 0 do x :=


begin if odd {octant) then begin while v < = k2/2 do begin DrawPixel ( x , y ) ; if d < 0 then begin x := * + dxp; y := y + dyp; u : = u + k1; v : = v + k 2 ; d : = d + u end else begin x := * + dxd; y := y + dyd ; u : = u + k2; v := v + k3; d := d + v end end; {schimb octantul} d :=round(d u v/2 k2/2 + 3 * fc3/8); u : = r o u n d ( u + v k2/2 + fc3/2); v :=round(t) k2 + k 3/ 2) ; k l := kl - 2 * k2 + k3; k2 := fc3 - k2 ; tm p := dxp ; cfap := dyp ; dyp := tmp end else begin while u < = k 2/2 do begin DrawPixel (cc, y) ; if d < 0 then begin x := * + dxd; y := y + dyd; u \ = u + k 2 \ v := v + k3; d : = d + v end else begin x := * + dxp ; y := y + dyp ; w := w +fel; v : = v + k2; d : = d + u end end; {schimb octantul}

d := d + u v + kl k2\ v := 2 * t i v + fel fc2; u := u + k1 k2\ fc3 := 4 * (fel - k2) + fc3; fc2 := 2 * fel - fc2; tmp := dxd; dxp := dyd\ dypd := tmp
end;

octant := octant + 1; if octant > 8 then octant := octant 8; octantContor := octantContor 1


end end;

55

3.6

Curbe de grad doi


f ( x , y) = a\x2 + a2xy + a^y2 + ax + a^y + ag = 0,

Fie o curb de grad doi n forma general

unde coeficienii m , a2, . . . , ag sunt n general numere reale, cu a > 0. Curba reprezentat de aceast ecuaie este o conic. Se consider cantitile 6 = a2 Aaiaz, A = aia| + a^a2 a2a^a^ + (a| 4aia3)ae

(dac determinm pe x funcie de y din ecuaia f ( x , y ) = 0, discriminantul ecuaiei de grad doi, A i (y), polinom de grad doi n y, are la rndul su ca discriminant pe 4<ziA). Ecuaia conicei reprezint o curb degenerat dac funcia de grad doi f ( x , y ) se poate scrie sub forma f ( x , y ) = ( h x + b2y + b3) ( d x + c2y + c3), unde coeficienii fej,c, sunt n general numere complexe. Dac acetia sunt numere reale, conica degenereaz n dou drepte. Condiia de degenerare este A = 0. Dac curba este nedegenerat, ecuaia conicei reprezint o curb propriuzis, real sau imaginar. Tipul conicei depinde de semnul discriminantului

< 0: = 0: > 0:

elips (sau cerc), parabol, hiperbol.

Dac curba este real, atunci funcia f ( x , y ) ia valori negative n interiorul concavitilor curbei f ( x , y ) = 0 i valori pozitive n exteriorul acestora. Se presupune c a, sunt numere ntregi fr divizori comuni. Se utilizeaz ipoteza de echidistan orizontal i vertical a punctelor rastrului. Dac di mensiunile celulei elementare de rastru sunt n raportul p/q ^ 1, cu p, q ntregi, pentru o trasare corect se poate proceda n modul urmtor: se nlocuiete ecuaia curbei f ( x , y ) = 0 cu g( x,y) = p 2f f x, %
\ P

care are toi coeficienii ntregi i permite redarea corect a proporiilor. Rezolvarea exact a problemei plasrii punctelor n toate cazurile implic, n general, rezolvarea unor ecuaii de grad doi pentru fiecare punct generat. Aceste operaii sunt prea complicate pentru un algoritm eficient. De aceea se caut o procedur incremental de trasare a curbei, care s funcioneze prin deplasri elementare pe orizontal, vertical sau n diagonal ntre punctele succesiv generate (8 direcii de deplasare). Se numeroteaz de la 0 la 7 direciile posibile de deplasare de la un punct la cele 8 puncte vecine din rastru, numerotarea fcndu-se n sens trigonometric direct. Punctele vecine lui P se noteaz cu Pi, i = 0 , . . . , 7 (figura 3.9.a). Observaii: 56

(a) pentru dou puncte (x\,yi) i (2, 2 /2) relativ apropiate de curba ideal, se poate decide care dintre ele este cel mai apropiat prin compararea cantitilor \f(xi,yi)\ i |/(x2,J/2)|- Punctul cel mai apropiat de curb este acela n care funcia f ( x , y ) este minim n valoare absolut. (b) dac algoritmul de generare a efectuat o deplasare n direcia i ntre dou puncte succesive, atunci pentru urmtorul punct generat trebuie s se efectueze o deplasare elementar n una din direciile i 1, i sau i + 1 (considerate modulo 8). Aceast regul este o alt exprimare pentru regu la de conexiune discret (figura 3.9.b). Cercurile minime care ndeplinesc aceast condiie au diametrul de cel puin 3 uniti de rastru.

Figura 3.9: (a) Direciile posibile de deplasare n algoritmul incremental (b) Aplicarea regulii conexiunii discrete Ideea algoritmului este urmtoarea. Se alege sensul de parcurs al curbei ast fel nct f ( x , y ) < 0 (> 0) la stnga (respectiv dreapta) direciei de naintare. Dac punctul P a fost generat n urma deplasrii elementare n direcia i, atunci punctele candidat sunt 1, Pi, F,+i (considerate modulo 8). Con form presupunerii anterioare F,+ i se afl n interior ( f ( P i+1) < 0), iar Pj_i n exterior ( /( P j_ i) > 0). Despre punctul Pi nu se poate afirma dac este n ex terior sau interior. Pentru alegerea unuia dintre cele trei puncte sunt necesare urmtoarele comparaii:

/( P j_ i ) + f(Pi) < 0 : /( P j_ i ) + f{Pi) > 0 i f(Pi ) + f ( Pi + 1) < 0 : f(Pi ) + f ( Pi + 1) > 0 :

se alege punctul 1 se alege punctul F, se alege punctul F,+ i

Observaie. Aplicnd acest criteriu decizional pentru ecuaia unei drepte, se obin relaiile ce stau la baza algoritmului Bresenham. De asemenea, acest criteriu general este particularizat de relaiile care guverneaz trasarea incre mental a cercurilor. Dac se exprim toate valorile funciei / n punctele din imediata apropiere a lui P , de coordonate (x,y), rezult: f(Po) = f ( x + l,J /) = f ( P ) + {2a\x + a2y + a4) + ar, f ( P i ) = f ( P ) + (2aix + a2y + a4) + (a2x + 2a3y + a5) + ai + a2 + a3; i se poate dezvolta algoritmul de trasare incremental pe baza criteriului de decizie i a acestor relaii de recuren. Sunt efectuate doar operaii de

57

adunare, scdere i nmulire ntre numere ntregi pentru fiecare punct generat. Operaiile de nmulire pot fi evitate n cazul unei alegeri adecvate a variabilelor de stare. Relaiile de recuren pot fi exprimate simplu n funcie de derivatele pariale f'x i f ale lui / n punctul P, notate cu f x i f y: f x ( x , y) = f'x (x, y) = 2cnx + a2y + a4, f y { x , y) = f'y(x, y) = a2x + 2a3y + a5. Funciile f x , f y fiind liniare, actualizrile lor incrementale se exprim numai prin operaii de adunare i scdere. In cazul unei deplasri elementare ntre dou puncte vecine: f x(Po) = f x ( P ) + 2au f x ( P i ) = f x ( P ) + 2ci\ + a2, fy(Po) = f y ( P ) + a2, f y ( P i ) = f y ( P ) + a 2 + 2a3,

Variabilele de stare sunt valorile funciilor / , f x , f y n punctul curent generat.

3.7
3.7.1

Curbe plane
Descrierea curbelor plane

In raport cu un reper cartezian ortogonal, curbele plane pot fi descrise prin: 1. ecuaii explicite: un punct oarecare ( x,y) de pe curb este descris n forma explicit y = f ( x) ; 2. ecuaii polare: un punct oarecare (x, y) de pe curb este descris n coordo nate polare prin cuplul (r, t ), unde t parcurge un interval [a, 6] i r = f (t), corespondena dintre cele dou sisteme de coodonate, carteziene i polare, presupunnd ecuaii de tipul x = r cos t, y = r sin t. 3. ecuaii parametrice: un punct oarecare ( x,y) de pe curb este descris prin x = f (t) , y = g(t), unde t parcurge un interval [a,b] din IR, adic F(t) = ( f ( t ) , g ( t )) reprezint un drum n planul IRxIR; 4. ecuaii implicite: un punct oarecare (x,y) de pe curb este descris de ecuaia F ( x , y ) = 0. In anumite condiii impuse lui F, folosind teorema funciilor implicite din calculul diferenial, se poate ajunge la studiul unei curbe descrise prin ecuaii explicite. In seciunea anterioar a fost descris un algoritm incremental pentru cazul n care F (x, y) este funcie polinomial de grad maxim doi n x i y.

3.7.2

Trasarea curbelor plane

Pentru trasarea curbelor definite explicit trebuie s se in seama de dispoziti vul de afiare grafic de care se dispune. Este necesar scrierea unui proceduri care opereaz cu coordonate (n mod grafic) ce reprezint numere ntregi i care ine seama de scara la care se execut desenul. Scalarea care trebuie efectuat se obine n urma analizei valorilor extreme ale funciei pe domeniul pe care se reprezint. 58

Pentru reprezentarea grafic a unei curbe descris prin ecuaii polare este necesar o transformare n coordonate carteziene. Aceast transformare este x = f ( t ) cos t, y = f ( t ) sini (curb plan descris prin ecuaii parametrice). Se abordeaz aici doar problema trasrii curbei cu reprezentarea paramet ric x = x(t), y = y(t), t e [0,1], unde x(-) i y(-) sunt funcii continue. O prim idee pentru dezvoltarea unui algoritm de trasare const n alegerea unei rate constante A de cretere a variabilei independente t i selectarea, n mediul de afiare, a punctelor care corespund cel mai bine adreselor calcu late ( x( kA) , y ( kA) ) , unde k = 0 , 1, . . . , [1/A]. Principala dificultate const n alegerea parametrului A , deoarece nu se tie de la nceput cte puncte vor fi efectiv generate. Pe de alt parte, nsi reprezentarea parametric dat, care nu este unic, poate fi defavorabil, astfel nct orice alegere a unui constante de cretere A este total nepotrivit: pe unele poriuni ale curbei, parametrul A poate fi prea mic, ceea ce are ca rezultat selectarea de mai multe ori a aceluiai punct; pe alte poriuni ale curbei, acelai parametru A poate fi prea mare, genernd puncte consecutive neadiacente n mediu de afiare, care, dac sunt unite prin linii drepte, nu mai aproximeaz suficient de exact curba dat. Ast fel, orice metod bazat pe creterea constant a variabilei independente nu poate produce algoritmi eficieni n toate cazurile. Este necesar s se gseasc o metod bazat pe variaia neconstant a variabilei t, care s urmreasc pe ct posibil variaia curbei. Principiul metodei trasrii prin njumtirea intervalului este urmtorul: se calculeaz mai nti adresele punctelor de la capetele curbei, corespunznd extremitilor intervalului de variaie a parametrului t. Dac aceste dou puncte sunt suficient de apropiate n raport cu rezoluia mediului de afiare, problema este rezolvat prin aprinderea acestor puncte. In caz contrar, inter valul curent de variaie a lui t se mparte n dou subintervale de lungimi egale, subintervalul din dreapta se memoreaz ntr-o structur de date de tip stiv pentru necesiti ulterioare i se reia problema cu subintervalul din stnga. Injumtirea intervalului continu pn cnd lungimea acestuia este suficient de mic pentru ca punctele de pe curb corespunztoare extremitilor intervalu lui s fie adiacente n mediu de afiare. In acest caz se descarc stiva i se reia procedura cu cel mai recent subinterval memorat n stiv. Trasarea curbei se termin cnd stiva se golete complet. Metoda de trasare prin njumtirea intervalului poate fi concretizat i ntr-o form mai concis cu ajutorul unei proceduri recursive, care s nu fac apel n mod explicit la o structur de date de tip stiv. Corectitudinea procedurii de principiu se bazeaz implicit pe faptul c funciile de parametrizare sunt continue. In caz contrar, nu este neaprat necesar ca, ntre dou puncte corespunztoare valorilor ti < t2 ale parametru lui, toate punctele intermediare (n sensul valorilor absciselor i ordonatelor) s corespund la valori ale lui t din intervalul [ti, t2] Exist situaii cnd ordinea generrii punctelor curbei are importan. De exemplu, dac trasarea curbei trebuie s se efectueze nu cu linie continu, ci cu linie ntrerupt corespunznd unui anumit ablon (configuraie liniar de bii, pattern ) predefinit, atunci algoritmul de trasare trebuie s permit calcularea punctelor succesive ale curbei n paralel cu parcurgerea configuraiei binare a 59

ablonului, care se repet n mod circular. Punctul curent de pe curb este efectiv selectat n mediu de afiare numai dac bitul corespunztor din ablon este 1. Trasarea cu ablon nu este pe deplin reuit dac algoritmul de trasare genereaz de dou ori acelai punct pe curb. Este necesar inhibarea generrii efective a unui punct dac coordonatele acestuia coincid cu cele ale unui punct generat anterior.

3.8
3.8.1

Curbe spaiale
Descrierea curbelor spaiale

Curbele spaiale pot fi descrise: 1. explicit prin ecuaii de tipul y = f ( x ) , z = g(x); 2. implicit printr-o ecuaie de tipul F ( x , y , z) = 0; 3. parametric prin ecuaii de tipul x = x(t), y = y(t), z = z(t). Prima descriere nu este valabil pentru toate curbele. De exemplu, un cerc ntr-un plan cu z constant are dou valori pentru un x. A doua descriere ofer mai multe soluii, dar, de exemplu, semicercul x 2 + y2 = 1, x > 0 nu poate fi descris printr-o ecuaie de tipul cerut. De aceea, reprezentarea parametric este des utilizat. Curbele polinomiale parametrice sunt curbe 3D definite prin trei polinoame ntr-un parametru t, cte una pentru coordonatele x, y, z. Curbele cubice folosesc polinoame cubice n t. Curbele polinomiale de grad mai mare ca patru sunt rar utilizate deoarece prezint o multitudine de ondulaii.

3.8.2

Curbe parametrice cubice

Cubica parametric spaial poate fi exprimat parametric prin trei funcii cubice i este definit prin 12 coeficieni: x(t) = axt 3 M 2 cxt + d x y(t) = dyt 3 M 2 C y t + d y , z(t) = azt3 bzt' + czt + dz unde t [0,1]. Dac se noteaz ( ax Q(t) = (x(t),y(t),z(t)), T = ( r , r , t , 1), C =
bx dy by Cy dy

az
bz

cx
\d x

cz
dz

atunci Q(t) = TC. Vectorul tangent la curb n punctul corespunztor unui anumit t este Q'(t) = (3t2,2 M ,0 )C Fiecare polinom cubic are 4 coeficieni i deci sunt necesare 12 condiii pentru determinarea necunoscutelor. Un segment de curb este definit prin constrngeri privind: 60

(a) punctele de capt; (b) vectorii tangeni; (c) continuitatea ntre mai multe segmente de curb. In cazul general, matricea C este rescris sub forma C = MG, unde M este o matrice 4 x 4 , numit matrice de baz (ce definete tipul constrngerilor), iar G o matrice 4 x 3 , numit vectorul geometric (care definete constrngerile geometrice). Se noteaz G x prima coloan a lui G. Atunci x(t) = T M G X, adic x(t) = b!(t)glx + b2(t)g2x + b3(t)g3x + h(t)gx , unde polinoamele blen din g (amestec, combinare) bi sunt polinoamele cubice obinute din ecuaia matriceal B T M (de exemplu, b\(t) = t3m n + t2m2i + tm 31 + rri4i). Se poate observa o similitudine cu modalitatea n care poate fi descris parametric o linie n 3D care are punctele de capt G\ si G2: x (t) = (1 - t)gix + tg2x, y(t ) = (1 - t)gly + tg2y, z(t ) = (1 - t)glz + tg2z. Dac dou curbe au un capt comun spunem c ele sunt continue de clas G (continuitate geometric ) . Dac direciile (nu neaprat dimensiunile) celor doi vectori tangeni la dou curbe cu un punct comun coincid, se consider con tinuitate geometric de clas G 1. Dac vectorii tangeni sunt egali (n direcie si dimensiune) n punctul comun a dou curbe, este vorba de continuitate para metric sau continuitate C 1 (figura 3.10). Dac direciile si mrimile derivatelor de ordin n, dn/dtn[Q(t)\, sunt egale n punctul comun curba rezultat este nu mit continu de clas C n. Continuitatea C 1 implic G 1, exceptnd cazul cnd vectorii tangeni sunt nuli n punctul comun, dar reciproca nu este adevrat. nchiderea convex n cazul curbelor bidimensionale este poligonul convex format de punctele de control ce definesc constrngerile. Pentru curbe 3D, nchiderea convex este poliedrul convex format de punctele de control. Propri etatea de nchidere convex este util n cazul decuprii segmentelor de curb: nainte de a aplica decuparea fiecrui segment de curb se poate aplica algo ritmul de decupare a nchiderii convexe - numai dac nchiderea convex se intersecteaz cu regiunea de decupare, segmentul de curb n cauz trebuie examinat.

Figura 3.10: Segmentul de curb S are un punct comun cu segmentele de curb Co, Ci si C2 cu gradele 0, 1 i 2 de continuitate parametric

61

Curbe Hermite (curbe Coons) Curbele H e r m i t e sunt descrise prin funciile parametrice cubice ce au gradul minim necesar pentru a ndeplini patru condiii: (figurile 3.11 si 3.12):

Figura 3.11: Familie de curbe Hermite pentru care vectorul tangent R\ n Pi variaz pentru fiecare curb, crescnd n mrime pentru curbele mai nalte

(a) s treac prin dou puncte date (Pi, P4); (b) s aib tangente date n aceste puncte (Ri, R).

Figura 3.12: Familie de curbe Hermite pentru care direcia vectorului tangent R\ n Pi variaz, dar mrimea vectorului rmne aceeai

Se definete vectorul de geometrie (P i\ P4 Ri \rJ

Ga =

unde cele trei elemente ale unei linii reprezint coordonatele punctelor, respec tiv lungimile tangentelor descompuse pe axele de coordonate. Fie G hx prima 62

coloan a acestei matrici si M h matricea de baz. Atunci x(t) = T M h G h x Pentru determinarea matricei de baz M h se utilizeaz condiiile din ipotez. Se tie c x(0) = xpY (0,0,0,1 ) M h G hx , x (l) = xp4 = (1,1,1,1 ) M h G hxj x (0) = x r 1 = (0 ,0 ,1 ,0 ) M h G h x , x'(l) = xr 4 = (3, 2 ,1 ,0 ) M h G hx adic G hx = Astfel /O 1 Mh = 0 \3 0 1 0 2 0 1 1 1 1\ 1 0 0/ (0 1 0 V3 0 1 0 2 -1 0 1 1 1 1\ 1 0 M h G hx 0/ / 2 -3 0 1 -2 3 0 0 1 -2 1 0 1 -1 0 0

Aceeai matrice se obine utiliznd condiiile n coordonata y sau z. Generic, Q(t) = T M h G h Polinoamele Hermite B h (figura 3.13) se obin din B h = T M h Funcie de

Figura 3.13: Funciile Hermite de amestecare (blending)

acestea, curba Hermite este descris astfel: Q(t) BhGh = (2t 31 + l).Pi + ( 21 + 3t )-P4 H - (^ + t)R\ -\ - (t t )R 4.

Pentru continuitatea geometric G 1 a dou segmente de curb Hermite este necesar ca vectorii de geometrie s fie de tipul (Pi, P4 , Ri, Ra)t i (P4, P7, kR 4, i^7)T, unde k > 0. Pentru continuitatea de clas C 1 a segmentului rezultat este necesar ca k = 1 (figura 3.14). Observaie. Curbele Hermite pot fi uor transformate modificnd doar vectorul de geometrie (matricea de baz este invariant la rotaii, scalri sau translaii).

63

Figura 3.14: Dou curbe Hermite au un punct comun P 4, vectorii tangent n P 4 au aceeai direcie, dar nu si aceeai mrime (continuitate G 1, dar nu si continuitate C 1)

Curbe Bezier Se obin cu ajutorul a patru puncte de control. Primul si ultimul servesc la precizarea capetelor intervalului (n figura 3.15, P si P4), iar punctele supliP3 P2

Figura 3.15: Dou curbe Bezier si punctele lor de control

mentare determin, mpreun cu capetele, direcia tangentelor (P1P2, P3P4). Dac Ri si R 4 sunt tangentele n punctele Pi, respectiv P4, atunci Rx = Q'(0) = m (P 2 - Pi), R 4 = Q'( 1) = m(P4 - P3).

Parametrul m se numete factor de form. Din considerentul includerii curbei n nchiderea convex a punctelor Pi, P 2 , P3, Pa se consider m 3. Vectorul de geometrie B e z i e r este /Pi \ P2 Gb = P3
\ p j

Atunci
/ p P i R \
r

t \

1 0
m 0

0 0 m 0

0 0 0 0 m 1 0 m j

( P

\ P i P z

Gn =

= M h b Gb -

i 4 / V

\ P

64

Cum Q{t) = T M h G h = T M bG b se obine matricea m 3 3 -3 3 -6 3 M b = M h M hb = -3 3 0 0 0 ^ 1

de baz B e z i e r pentru 1\ 0 0 0/

Figura 3.16: Polinoamele Bernstein

Polinoamele Bb = T M b sunt polinoamele B e r n s t e i n (figura 3.16). Funcie de acestea curba B e z i e r este descris prin Q(t) = (1 t)3Pi + 3t(t 1) 2P 2 + 3t2(l t)P 3 + t^P^. Pentru continuitatea geometric G 1 a dou segmente de curb B e z i e r este necesar ca vectorii de geometrie s fie de tipul (Pi, P2, P 3 , Pa)t si (P4, P5, P6, P 7), cu P 3 P 4 = (-P4 P5) unde k > 0 (figura 3.17). Pentru continuitatea de clas C 1 a segmentului rezultat este necesar ca k = 1 Observaie. Deoarece suma ponderilor polinoamelor B e r n s t e i n este unu, segmentul de curb se afl n interiorul nchiderii convexe a celor patru puncte de control. Curbe spline Sunt constituite din mai multe segmente ce prezint continuitate de clas C 1 sau C 2 n punctele de cuplare. Exist mai multe tipuri de curbe de acest tip,

Figura 3.17: Dou curbe Bezier cu un punct comun P 4; punctele P 3 , P a i P 5 sunt coliniare

65

cele mai utilizate fiind curbele B -sp lin e uniforme sau neuniforme i curbele /3-spline. S p l i n e desemneaz un instrument folosit n desenul tehnic pentru trasarea curbelor netede (o band elastic care este fixat, cu ajutorul unor greuti, n punctele prin care trebuie s treac curba). In cazul concatenrii unor segmente de curbe de tip H e r m i t e sau Bezier, schimbarea unui punct de control afecteaz ntreaga curb. Curbele B -sp lin e (figura 3.18) consist din mai multe segmente de curb a cror coeficieni polinomiali depind de un numr mic de puncte de control (control local), astfel nct modificarea unui punct afecteaz numai o mic parte a curbei (figura 3.19). O curb cubic B -sp lin e presupune precizarea a m + 1 puncte de control notate Pq, Pi, . . . , Pm, unde m > 3, i const din m 2 segmente de curb cubic, notate Q%, Q 4 , . . . , Q m. Fiecare segment de curb este definit doar pe propriul interval 0 < t < 1. Parametrul t este ajustat astfel nct Qi s fie definit de ti < t < ,+i, pentru 3 < i < m. Dac m = 3, exist un singur segment de curb, Q%, definit pe intervalul t$ < t < t prin punctele de control Pq,. .. ,Pz- Pentru m > i > 4, exist un punct comun (nod) ntre segmentele Qi 1 i QiO curb B -sp lin e uniform presupune ca nodurile s fie spaiate la intervale egale ale parametrului t. Se presupune astfel c t$ = 0, 1 ti = 1, i > 3. Termenul B provine de la baz , deoarece acest tip de curbe pot fi reprezentate ca sume ponderate ale unor funcii polinomiale de baz (funcii blending). Segmentul de curb Qi este definit de punctele 3, 2 , P i-i, Pi ast fel nct vectorul de geometrie B - s p l i n e pentru segmentul Qi este G b s; = (P i- 3 , P i- 2 , P i-i, Pi)T, 3 < i < m. Fiecare punct de control influeneaz patru segmente de curb. Dac T, = ((t ti)3, (t ti)2, (t ti), 1), atunci Qi(t) = TiMBsG Bi, ti < t < ti+ 1, 3 < i < m. Pentru determinarea matricei de baz se exprim segmentele de curb funcie de polinoamele blending: Qi(t - ti) = bi(t)Pi-3 + b2 (t)Pi - 2 + bz(t)Pi-i + bi(t)Pi, 0 < t < 1.

Dac se impune condiia de continuitate de clas C 2 a segmentelor de dreapt (Qi i Qi+i s se cupleze n t ,+i prin continuitate de clas C 2, pentru oricare puncte de control), i condiia ca ponderile polinomiale s aib suma 1 (curba se afl n nchiderea convex a mulimii punctelor de control, Qi(ti -\ -1 ^i) Qi-\-l(ti-\-l ^i+l); Qi(ti + 1 ti) Qi^i (ti-\-l ^i+l), Q i(ti-\ -1 ti) Q j_(-l (^i+1 ^i+l); h ( t ) + b2 (t) + 63(t) + bi(t) = 1, se obin polinoamele blen din g astfel nct ) = + 3, 8- f + v 0 0 iar matricea de baz B -sp lin e este f^ 1 3 ^3 6 \ 1 1 66 3 ^6 0 4 Q.i, , , + - + * ; + 3<+ v 0 0 ^3 3 3 1 , + F ^ 3, . . . ,171 i 3, . . . , fii i 3, . . . ,1Tl Vt G [0, 1],

1\ 0 0 0/

Figura 3.18: O curb B-spline constituit din segmentele de la Q 1 la Q q

Figura 3.19: Curbele B-spline cu punct de control P 4 variabil

Figura 3.20: Curba spline Catmull-Rom

67

Curbele B - s p l i n e neuniforme difer de cele uniforme prin faptul c in tervalele parametrice dintre noduri succesive nu sunt uniforme (astfel nct funciile b l e n d i n g difer de la un segment de curb la altul). Continuitatea de clas C 2 este redus la C 1 sau C (n ultimul caz fiind posibil interpolarea unui punct de control. Funciile blending sunt definite recuriv n termenii unor funcii de ordin mai mic dect 3. Curbele cubice raionale sunt definite prin raport de polinoame: , , X(t) , . Y(t) , , Z(t) m fy

T(t) = w r

,t) = w F r z{t)

unde X( t) , Y(t), Z(t) i W( t) sunt polinoame cubice a cror puncte de con trol sunt definite n coordonate omogene. Orice curb neraional poate fi transformat ntr-o curb raional adugnd W( t) = 1. Polinoamele pot fi de tip Hermite, B e z i e r etc. Dac polinoamele sunt de tip B-spline, curbele raionale sunt numite curbe B - s p l i n e raionale neuniforme (NURBS). Curbele raionale se utilizeaz din dou motive. In primul rnd sunt invariante la rotaii, scalri, translaii i transformri perspective a punctelor de control (curbele neraionale sunt invariante numai la rotaie, scalare i translaie). Ca urmare transformarea perspectiv trebuie aplicat numai punctelor de control care pot fi apoi utilizate pentru generarea transformrii perspective a curbei iniiale (n cazul curbelor neraionale se genereaz mai nti punctele curbbei i apoi se aplic transformarea perspectiv la fiecare punct generat). Al doilea avantaj este posibilitatea de definire precis a seciunilor conice (proprietate util n aplicaii n care este posibil trasarea unor curbe i suprafee general, dar i a conicelor). In cazul n care se dorete interpolarea unor puncte 3D se pot utiliza curbele C a t m u l l - R o m (sau Overhauser-spline). Un membru al acestei familii de curbe s p line (figura 3.20) este capabil s nterpoleze punctele de la Pi la Pm- 1 dac se furnizeaz o secven de puncte de la Pq la Pm. In plus, vectorul tangent la punctul Pi este paralel cu linia ce unete punctele i P*+i. Aceste curbe spline nu posed ns proprietatea nchiderii convexe. Reprezentarea curbelor Catimill-Rom este realizat prin (~ l 2 T M / i; (<l<; = \ t -1 V 0 3 ^5 0 2 ^3 4 1 0 1 \ (P -z\ -1 Pi - 2 0 Pi - 1 o y \ Pi 1

Q (l)

Caracteristici ale curbelor cubice Caracteristicile curbelor prezentate n seciunile anterioare sunt sumarizate n tabelul 3.2. Numrul de parametrii de control se refer la constrngerile geo metrice plus ali parametrii precum spaiul dintre noduri la spline-urile ne uniforme. Continuitatea care poate fi atins se refer la constrngeri precum condiia ca punctele de control s fie coliniare pentru a permite continuitate G 1. 68

Proprietate In nchiderea convex a punctelor de control Interpoleaz anumite puncte de control Interpoleaz toate punctele de control Uurina divizrii Continuitate inerent a reprezentrii Continuitate care poate fi atins Numrul parametrilor care controleaz curba

Hermite
Nu Da Da Bun C G C1 G1 4

Bezier
Da Da Nu Cea mai bun C G C1 G1 4

B-spline
uniforme Da Nu Nu Medie C2 G2 C2 G2 4

B-spline
neuniforme Da Nu Nu Complicat C2 G2 C2 G2 5

Catmull-Rom
Nu Da Da Medie C1 G1 C1 G1 4

Tabelul 3.2: Proprietile curbelor cubice

3.8.3

Trasarea curbelor parametrice cubice

Exist dou metode principale de trasare a curbelor parametrice: evaluarea polinoamelor x(t), y(t), z(t) pentru o diviziune a intervalului [0,1] parcurs de t, n variantele: (a) evaluare direct (eventual utiliznd schema H o r n e r pentru determi narea valorilor polinoamelor); (b) evaluare iterativ; subdivizarea recursiv. Metoda evalurii directe presupune urmtoarele etape: 1. se citesc coordonatele punctelor de control; 2. pentru fiecare pereche de puncte de control succesive: - se parcurge intervalul [0,1] cu un pas constant 6 = l/n, n > 1; - pentru fiecare ti = iS, i = 1 ,. . . , n se calculeaz (a) coordonatele punctului de pe curb x(ti), y(ti), z(ti ); (b) coordonatele proieciei acestui punct intermediar; 3. se traseaz pe ecran o linie poligonal care trece prin proieciile punctelor intermediare. Se observ c pentru evaluarea polinoamelor cubice sunt necesare cel puin 11 multiplicri i 10 adunri pentru un punct (vezi procedura ce urmeaz).
type C oef ficientArray=a.TTa.j [1. .4] of real; Procedure DrawCurve( cx : CoefficientArray, {coeficieni p t.x(f) : CXM Gx} cy:Coefficient,Array., {coeficieni pt.y(f) : CyM Gy } cz : C oef ficientArray, {coeficieni pt.z(f) : CZM G z} n :integer) {numr de pai} var t,t2yt3 : real; begin M o v e T o f e [4] ,ct/[4] ,cz[4] ) ; {t=0}

69

d := l / n ; t := 0; for i := 1 to n do

begin
t : = t + d; 12 : = / * / : t3 := t 2 * t; x := cx[l] * t,3 + cx[ 2] * t,2 + cx[3] * t + cx[4]; y := cy[ 1] * t,3 + cy[ 2] * t,2 + cy[3] * t + cy[4]; z := cz[ 1] * t3 + cz[ 2] * t2 + cz[ 3] * t + cz[ 4]; LineTo (x, y, z)

end end;

Utiliznd schema H o r n e r pentru evaluarea polinoamelor sunt necesare doar 9 multiplicri i 10 adunri. Multiplicrile pot fi evitate prin evaluarea iterativ. Fie f ( t ) := at 3 + bt2 + ct + d , tn := n, f n := f ( t n), A f ( t) := f ( t + 6) - f ( t) , A 2f ( t ) := A (A f (t) ) (diferene finite). Se observ c A f ( t ) = f ( t + 6 ) ^ f ( t) = 2>at25 + t(3a62 + 2b6) + a63 + b62 A 2f ( t) = A f ( t + 6 ) ^ A f ( t) = 6a62t + 6a63 + 2b52, A zf ( t) = A 2f ( t + S ) - A 2f ( t ) = 6aS3 i f n+1 = f n + Afn, A fn =
A / _ ! + A 2/ _ !, A 2/_!

c6,

A 2/ _ 2

A 3/ _ 2.

Astfel, pornind de la valorile de start fo = d, A f Q = aS3 + bS2 + cS, A 2f Q = Gad3 + 2bS2, A 3f Q = 6aS3,

se pot calcula recursiv valorile f n. Se definete vectorul diferenelor iniiale, D, ca fiind fo \ A /o D = A 2/ 0 V A 3/ o / ( /O (5 3 653 o < 5 2 262 o 0 (5 o o 1\ o o o/ / a\ b

C
\dj

= E(S)C.

\m 3

In aceast variant, algoritmul pentru trasarea unei curbe parametrice cubice presupune efectuarea unor multiplicri doar n faza de iniializare a valorilor recursive. La pasul n al algoritmului se efectueaz urmtoarele calcule:
X n + l = X n + A x n, { Vn+ 1 = yn + A yn, v zn~ ^ \ zri + A z ny

A x n + 1 = A x + A'2 Xn A y n + 1 = A yn + A 2 yn, Ao: A zn |" A* zu .

A 2x + A 3 x A 2 y n + 1 = A 2 yn + A 3 yn; A zri-\ .i A z >; A zu.

precum i trasarea dreptei ce unete proiecia punctului (xn, yn, zn) cu proiecia punctului (xn+i , y n+i , z n+i). Algoritmul presupune 9 adunri per pas i nici o multiplicare.
Procedure DrawCurbeFwdDif(
n, x, d x , d2x , d3x , y, dy , d2y, <J3y, z, dz , d2z , d3z )

{ n este numrul de pai de trasare a curbei,

70

pasul 8 fiind l / n , x ,d x ,d 2 x , d3x sunt valorile iniiale pentru x (t) la f = 0, prin C x = E( 5)CX} begin M oveToC, y , z ) ; for i := 1 to n do begin x := x + dx; dx := dx + d2 x; y : = y + dy; dy := dy + d2 y; z := z + dz; dz := dz + d2z; LineTo(*, y ,z ) end end {DrawCurveFwdDif}

calculate

d2 x := d2 x + d3x; d2 y := d2 y + d3y; d2z := d2z + d3z

D ezavantajul utilizrii acestui algoritm const n faptul c pentru valori m ari ale numrului de pai n rezultatele pot fi afectate de cum ularea erorilor de trunchiere. Trasarea unei curbe 3 D cu pas constant nu conduce ntotdeauna la imaginile dorite (vezi trasarea curbelor plane). E xist dou m odaliti de eliminare a acestui efect nedorit: 1. creterea gradului funciilor param etrice (se produc o serie de inflexiuni adiionale); 2. creterea numrului punctelor de control cu divizarea segmentelor de curb n mai multe segmente. Se consider exem plul unui segment de curb B ezier determ inat prin pa tru puncte de control. A cesta poate fi subdivizat n dou segmente avnd n total apte puncte de control (cele dou segmente noi au un punct comun i se suprapun pe segmentul original). D a t curba Q(t) definit de punctele Pi, P2 , P3, P4 , se cau t punctele L\, L2, L3, L 4 care definesc un segment de curb ce coincide cu Q(t) pentru 0 < t < 1/2 (analog R\, R2, R3, R 4 pentru 1/2 < t < 1). Pun ctul de pe curba B ezier care corespunde unui param etru t se poate obine astfel (figura 3 .21 .a): se determ in punctele L-2 i r P\P-2- H P2P3, R s -P3-P4 care m part segmentele P\ P-2- P2P3 i -P3-P4 n raportul t/( 1 t); analog se determ in L? J L2H i R 2 H R 3 care m part segmentele m enionate n acelai raport i L4 L 3R 2 to t n acelai raport. P un ctul L 4 este punctul cutat. In cazul t = 1/2 noile puncte de control pot fi uor calculate: L 2 = (Pi + P2 )/2, H = (P2 + P3 )/2, L 3 = (L 2 + H)/2, R 3 = (P3 + P4 )/2 , R 2 = ( H + R 3)/2, L 4 = Ri = (L3 + R 2 )/2. Noile puncte pot fi rescrise astfel:

r L B ~ o

/8 4 2 \1

0 4 4 3

0 0 2 3

0\ 0 0 1/

f p i\ P2 Pa

/1

1\

\P J

0 2 0 0 \0 0

4 4 0

2 4 8/

f pi\ P2 Pa

\P J

Se observ c noile puncte de control se afl n nchiderea convex a setului original de puncte de control. De aceea, n general, aceste puncte sunt mai apropiate de curb dect punctele de control iniiale. Aceast proprietate este valabil i pentru curbele s p lin e care respect proprietatea nchiderii convexe. In cazul curbelor B -sp lin e , se pot construi puncte de control n mod similar, 71

P2

(a)

(b)

Figura 3.21: Subdivizarea recursiv (a) Subdivizarea unui segment de curb Bezier (b) Testul de liniaritate a segmentului de curb Bezier

rezultnd urmtorii vectori geometrici: (4 1 8 0 \0 1 4 6 4 1 0 o\ 1 0 4 0 6 1/ (l (Pi-z\ Pi - 2 / ~ iR ^ 0 Pi- 1 _ 8 0 \0 \ Pi ) 6 4 1 0 1 4 6 4 o\ 0 1 (Pi-z\ Pi- 2 Pi- 1 \ Pi J

yL TB s

4/

Cele patru puncte de control sunt nlocuite cu un total de cinci puncte. Noile segmente de curb depind parial de vechile puncte de control. Astfel, dac modificarea unui punct de control din cele patru iniiale are loc dup ce di vizarea a fost realizat, este posibil obinerea unor noi segmente de curb neconectate (aceast problem poate fi evitat utiliznd curbe B -sp lin e neu niforme). Algoritmul bazat pe subdivizarea recursiv este indicat, n special, n cazul curbelor B ezier, deoarece subdivizarea este uor de realizat i testul de oprire a recurivitii este simplu: dac Pi i P 4 sunt punctele prin care trece segmentul de curb, iar P2, P3 punctele de control pentru determinarea derivatei, iar distana de la P 2 la P1P4 i distana de la P3 la P1P4 sunt sub un anumit nivel e (figura 3.21b), atunci segmentul de curb P1P4 este suficient de plat (din proprietatea de incluziune n nchiderea convex a mulimii punctelor de control) pentru a fi aproximat cu o dreapt (altfel se continu subdivizarea). Dac se utilizeaz alt tip de curbe dect B ezier, testul de liniaritate a segmentului de curb este mult mai complicat. Astfel trecerea la forma B ezier este recomandat pentru subdivizarea recursiv. Dat fiind o curb reprezentat prin vectorul geometric G\ i matricea de baz M i , cutm vectorul geometric G 2 pentru matricea de baz M 2 astfel nct curbele s fie identice: T M 2 G 2 = T Mi G 1. Astfel G 2 = M ^ 1 Mi Gi. De exemplu, matricea de trecere de la B -sp lin e la forma B ezier este (l 0 M b s 7. 6 0 \0 1 4 4 2 1 1 2 4 4 0>\ 0 0 11

M b b M b

72

3.9
3.9.1

Suprafee curbe
Descrierea suprafeelor curbe

Suprafeele curbe pot fi descrise: 1. explicit, prin ecuaii de tipul z = f ( x , y ); 2. implicit, printr-o ecuaie de tipul F ( x , y , z ) = 0; 3. parametric, prin ecuaii de tipul x = x(s,t), y = y(s,t), z = z(s,t). Suprafeele de rotaie sunt acele suprafee care se obin prin rotaia unui obiect plan n jurul unei drepte. Dac obiectul generator are ecuaia para metric (x (t ), y ( t ), z( t )), t [0,1], se afl n planul z = 0, iar rotaia se face n jurul axei y, atunci suprafaa de rotaie poate fi descris parametric prin (x(t) cos0,y(t), x(t) sinO). Suprafeele de rotaie sunt cazuri particulare de suprafee obinute prin baleiere spaial (translatarea unui obiect de-a lungul unei traiectorii). In grafica pe calculator sunt des utilizate suprafeele determinate polinomial prin funcia de dou variabile a r i y:
n m

m i y *V j = 0 i= 0

Suprafaa se noteaz Pm,nMatricea A poart numele de amprent a suprafeei. Se disting urmtoarele cazuri speciale: (a) Po,0) Po,i-, Pi,o sunt plane; (b) Phl este un paraboloid hiperbolic; (c) Po,n, Pm,o pentru m, n > 2 sunt suprafee cilindrice cu generatoarele paralele cu axa Ox respectiv Oy, iar curbele directoare ale suprafeelor cilindrice sunt coninute n planele yOz, respectiv x O z ; (d) P i:n, Pm,i pentru rn,n > 1 sunt suprafeele riglate, ale cror generatoare sunt coninute n planele y = corist, respectiv x = const. (e) P 2,2 sunt suprafee cuadrice; (f) Ps,s sunt suprafee bicubice. Un exemplu concludent de suprafee determinate prin polinoame sunt suprafeele de interpolare, definite prin puncte i prin curbe marginale. Suprafaa de interpolare definit de patru puncte de col este un patrulater strmb, o cuadric riglat. Modelarea suprafeelor de interpolare (sau de aprox imare) se bazeaz pe noiunea de petic (colecie de puncte mrginit de patru curbe). Un petic bicubic este descris parametric prin polinoame de grad 3. Suprafeele cuadrice (hiperboloidul, paraboloidul, sfera, elipsoidul, cilin drul, conul) sunt definite implicit printr-o ecuaie F ( x , y , z ) = 0 cu F polinom cuadric n x, y i z: F(x, y, z) = a n x 2 + (i22y 2 + a33z2+ +2a,2ixy + 2o,2zyz + 2ai^xz + 2a\rx + 2a24y +
2 0 .3 4 0 + a.4 4.

Suprafeele parametrice polinomiale bivariate definesc coordonatele unui punct de pe o suprafa utiliznd trei polinoame bivariate, cte unul pentru fiecare dimensiune. O problem important este cuplarea suprafeelor. Aceasta poate fi: 73

(a) de tip alipire, cnd se cere identitatea anumitor curbe marginale; (b) cuplare neted, ce impune suplimentar identitatea tangentelor (derivate pariale de ordinul nti) i a curburilor (derivate mixte) de-a lungul curbelor marginale.

3.9.2

Suprafee parametrice bicubice

Folosind dou familii de curbe cubice 3D se poate defini o suprafa curb n spaiu. O familie de curbe cubice 3D se poate obine introducnd, n ecuaiile parametrice ale unei curbe 3D, a unui parametru nou ce variaz de asemenea n intervalul [0,1]. Fie curba Q(s) = SMG. Dac G variaz funcie de un parametru t se obine o familie de curbe cubice: lG \ (i) \ G2(t) Q(s,t) = SMG(t) = S M Gz{t) \Gi (t)) Dac Gi(t) sunt polinoame cubice de acelai tip ca i cele n s, atunci Gi(t ) = TMGi , unde G, este vectorul de geometrie caracteristic, G, = (9 i i, 9 i2 , 9 i3 , 9 iA)T Notnd G x, G y, G z matricile 4 x 4 ce conin coordonatele carteziene ale elementelor de geometrie c?y, se obin expresiile parametrice ' x(s,t) = S M G xM t T t , GyM TT T, z(s,t) = S M G ZM TT T. Astfel, ecuaia matriceal este
/ 9u 9i2 9i3 9u \

9 21 Q(s,t) = S M 931 \ 941

922 9 23 932 933 942 943

924 934
944

M t T t = S M G M t T t , o < s,t < 1

unde M este matricea de baz, iar G este matricea geometric. Vectorul tangent la suprafa n direcia s este -I - Q ( s , t ) = ^ -(S M G M t Tt ) = os os = -^-(S) M G M t T t = (3s2,2s, 1,0) -M - G - M T - T t ,
Os

i vectorul tangent n direcia t este ^ Q ( s , t) = S M G M t (M2, 21, 1,0)T. Notm cu (xs, y s, z s) respectiv (x t,yt ,zt ) componentele acestor vectori. Atunci normala este d d Q(s,t) x Q(s,t) = (yszt - ytzs, z sx t - ztx s, x syt - x tys).

74

Suprafee Hermite O suprafa bicubic H e r m i t e se definete pe baza a patru puncte n spaiu corespunztoare valorilor extreme 0 i 1 pentru s i t, precum i prin cte trei tangente la suprafa n fiecare dintre aceste puncte. Fiecare vector tan gent are componentele determinate de derivatele de ordin 1 i 2 ale funciilor x(t,s), y(s,t), z(t,s). In cazul special cnd Q(0,t), Q( l, t) , Q ( s , 0) i Q (s ,l) sunt linii drepte, rezultatul este o suprafa riglat. Dac aceste linii sunt coplanare, atunci suprafaa H e r m i t e se reduce la un poligon planar. Matricea de geometrie poate fi construit pornind de la familia de curbe
Hermite:

x(s,t) = SMhGH x ( t )

fPi(t)\ Pi(t) SMh Ri(t)


\ R i(t)J

In figura 3.22.a sunt trasate cubicele n s definite la t = 0, 0.2, 0.4, 0.6, 0.8,1. Fiecare element al vectorului de geometrie poate fi reprezentat drept o curb
Hermite:

(Pi(*),P4(*),-RiW,-R4W) = T M h

f 9u 912 913 \9li

921 922 923 924

931 932 933 934

941 \ 942 943 944/

unde ij rezult din forma H e r m i t e pentru curbe. De exemplu, gz3 s r = (d2x)/(dsdt)( 0,0), deoarece este vectorul tangent la curba R\x {t ) n t = 0, care este la rndul su vectorul tangent la curba x(s, 0) n s = 0. Astfel ( G hx = *(0,0) x( l, 0) gsa:(0,0) Vg^a:(l)0 )
1 (0 , 1 )

* (M ) gsa:(0,1)

J W dt - o ,o ) ^ 1 0) d 9 sgt x(0 ,0 ) 3ftx (l>0)

57^(0, !) \ d9 sgt x ( 0 , 1) f ^(1,1 ) )

Elementele matricei geometrice sunt reprezentate n figura 3.22.b. Condiiile de jonciune a dou suprafee H e r m i t e se pun relativ simplu: capetele curbei de margine trebuie s coincid, iar tangentele la suprafee n aceste capete trebuie s fie proporionale. Astfel matricele de geometrie ale suprafeelor trebuie s concorde: linia a doua a primei matrice s coincid cu prima linia a celei de a doua, iar linia a patra a primei matrice s fie proporional, cu un factor unitar pozitiv, fa de linia a treia a celei de a doua matrice. Suprafee Bezier Pentru a defini o suprafa B e z i e r se folosesc cele 4 puncte de control core spunztoare valorilor (0,0), (0,1), (1,0), (1,1) ale parametrilor s i t i n plus alte 12 puncte de control prin intermediul crora se precizeaz tangentele la suprafa. Astfel geometria unei suprafee B e z i e r este caracterizat prin 75

.../ = i.o

"

49(0,1) Q(o,i)V ,
Q (M 0 jQ (M ) v^-

& Q (i,y
.......

(t = O .fi
/ j =0.4

/.r = w ^ .. ->/ .......|^?Q(>1)

..4 ~ ^

[ j = o:t^

Q(0,0)

(a) Figura 3.22: Suprafee Hermite (a) Interpolarea cubic ntre Pi(t) i P4 (t) (b) Tan gentele la suprafa

Pa Figura 3.23: Suprafa Bezier

coordonatele a 16 puncte de control (figura 3.23). suprafeelor Bezier este: / Q(s,t) =


\

Ecuaia parametric a

(!3 s(l 3 s 2(1

/ Pil

P 21
P31

\ Pil

P 12 P 22 P 32 Pi2

P l3

P li

P 23 P33 Pi3

-P 24

\ ( (1 - * ) 3 \ 3*(1 - t)2
3t2 ( l - t )

Psi Pii /

t3

Proprietile cele mai importante ale acestei suprafee sunt includerea n nchiderea convex a punctelor de control i posibilitatea simpl de subdivizare (se divizeaz suprafaa de-a lungul unui parametru, apoi cele dou noi suprafee de-a lungul celuilalt parametru). In figura 3.24 sunt prezentate dou suprafee B ezier ce au o latur comun.

3.9.3

Trasarea suprafeelor parametrice bicubice

Pentru generarea imaginii unei suprafee bicubice parametrice prin evaluare direct, se procedeaz n modul urmtor: 1. se parcurg valorile s ntre 0 i 1 cu anumit pas 6S = l/m-, 2. pentru fiecare valoare s* = iSs, i = 1, se parcurg valorile lui t ntre 0 i 1 cu anumit pas 5 t = 1/n ; 76

P < 8

Figura 3.24: (a) Dou petece oarecare de suprafa cu o latur comun (b) Dou suprafee B ezier cu patru punct de control identice

- pentru fiecare valoare tj = jStj j = 1 ,. . . , n se calculeaz (a) coordonatele punctului tj), y (s i ,t j ), z( s i, tj ); (b) proiecia punctului calculat anterior; 3. se traseaz curbele din cele dou familii (pentru fiecare s, respectiv pentru fiecare t) prin punctele calculate, ca linii poligonale. Acurateea redrii suprafeei depinde de alegerea pailor incrementali (figura 3.25). Evaluarea direct pentru suprafee este mult mai costisitoare dect n cazul curbelor deoarece ecuaiile suprafeei trebuie evaluate de 2/S2 ori. Pentru S = 0.1 aceast valoare este 200, acceptabil, dar pentru S = 0.01 este 20000. Astfel este de preferat s fie utilizat evaluarea iterativ. Valorile funciilor polinomiale se pot calcula iterativ , folosind diferene finite si urmrind algoritmul propus la trasarea curbelor spaiale. Dac n cazul curbelor s-a considerat matricea de start D = E(S) C , n cazul suprafeelor se consider D D X = E(5S) Cx E(Stf unde Ss este mrimea pasului pe s, St este mrimea pasului pe , iar Cx este matricea 4 x 4 a coeficienilor lui x(s,t). Matricea D D X are n prima linie valorile x(0,0), A^x(0,0), A fx (0 ,0 ), A|x(0,0). Astfel, aceast linie poate fi folosit pentru trasarea curbei cu proiecia x(0,t) pe axa x, cu increment St Cum celelalte linii ale lui D D X corespund diferenelor de ordin 1, 2 si 3 n s a

77

Figura 3.25: Petec de suprafa trasat prin curbe cu s sau t constant


H

Figura 3.26: Probleme n subdivizarea recursiv: urmrind algoritmul vor fi afiate patrulaterele ABCE , EFGD si GDCH ; corect este afiarea patrulaterelor A BCE , EFGD' si GD'CH

primei linii, aplicnd urmtoarea transformare liniilor lui D D X\ liniai:=linial+linia2, linia2:=linia2+linia3, linia3:=linia3+linia4, n prima linie a lui D D X se va obine x(Js,0), A^x(Js,0), A|x(Js,0) si A fx (J s,0). Aceste valori pot fi utilizate pentru trasarea curbei cu proiecia x(Ss,t) pe x. Pasul este repetat pentru a obine pe prima linie a lui D D X valoarea x(2Ss,t) etc. Trasarea curbelor cu t constant se face n mod similar. Pentru a calcula x(s,0) se transpune matricea D D X si se aplic procedeul de mai sus. Pentru algoritmul subdivizrii recursive testul de suprafa plat pentru o suprafa B ezier este realizat prin determinarea planurilor, care trec prin cte trei puncte de control ce aparin suprafeei, si determinarea distanelor de la celelalte 13 puncte de control la aceste plane: distana maxim trebuie s fie sub anumit nivel e pentru ca subdivizarea n patru noi suprafee s nu fie necesar. O suprafa aproape plat, specificat, de exemplu, prin colurile A , B , C , D, poate fi trasat fie prin muchiile cuadrilaterului A B C D , fie prin cele patru triunghiuri determinate de muchii si punctul interior P, definit ca medie a punctelor de col (figura 3.26).

78

3.10

Decupare

In cazul construirii unei imagini ce depete limitele zonei de lucru de pe ecran sau al spaiului vizibil, vor aprea o serie de primitive care vor intersecta frontiera (ecranului sau spaiului vizibil). Este necesar eliminarea din aceste primitive a poriunilor care ies din zona observabil. Aceast operaie este cunoscut sub numele de decupare (clip p in g , retezare, tiere).

Figura 3.27: Decupare 2D (a) Primitivele si dreptunghiul de decupare (b) Rezul tatul decuprii Procesul de decupare 2D decide care parte, dac exist, a unei primitive se afl n interiorul unei ferestre sau a unei zone de lucru (figura 3.27). Decuparea poate fi realizat: 1. analitic; 2. n timpul conversiei de scanare (combinarea primelor dou tehnici fiind numit forfecare) ; 3. prin copierea pixelilor unui poligon dintr-o regiune de memorie ce stocheaz primitivele nedecupate ntr-o alt regiune de memorie. In cazul tehnicii de forfecare fiecare pixel generat pentru o primitiv este testat fa de regiunea de decupare. Complicaii apar dac regiunea de de cupare nu este dreptunghiular. Deoarece decuparea analitic este uor de realizat n cazul liniilor si poligoanelor, decuparea acestora este realizat de obicei nanintea convertirii prin scanare, pe cnd alte primitive sunt decupate n timpul conversiei. Sarcina procesului clasic este eliminarea acelor pri ale primitivelor care sunt n afara ferestrei din W C S (sistemul coordonatelor lumii reale) si nu din NDCS (sistemul coordonatelor terminalului normalizate). Se evit, n acest caz, costul transformrii de normalizare pentru orice primitiv care nu apare pe ecran. Primitivele care se afl ntr-o fereastr sunt transformate si transferate ntr-o zon de lucru, iar celor care sunt parial sau complet n afara ferestrei li se aplic un algoritm de decupare. Algoritmii de decupare sunt aplicai si n cazul selectrii unor pri a prim itivelor dintr-o zon de lucru n vederea copierii, mutrii sau tergerii. Dificultatea procesului depinde de tipul primitivei creia i se aplic

79

(deoarece o curb general satisface o ecuaie neliniar, calcularea punctelor de intersecie cu marginea ferestrei necesit utilizarea unor metode numerice). Decuparea 3D este efectuat asupra corpurilor 3D pentru ncadrarea n volumul de vedere. Se elimin prin acest procedeu proiectarea unor primitive care nu se ncadreaz n fereastr (i ulterior n zona de lucru). Se consider n cele ce urmeaz problema decuprii bidimensionale a unei primitive plane fa de o fereastr convex.

3.10.1

Decuparea unui punct

Se presupune c fereastra este dreptunghiular i are limitele: superioar y =

ymax,inferioar y = ym in>lateral stng a: = x min, lateral dreapt a: = x maxPentru ca un punct P ( x , y ) s fie vizibil n fereastr trebuie satisfcute relaiile
Xmin ^ X < Xmax i Vmin ^ V ^ ymax-

3.10.2

Decuparea segmentelor de linii

In cazul segmentelor, problema se complic. O soluie pentru cazul cnd de senm pe ntreg ecranul o reprezint folosirea unei instruciuni de eroare ime diat dup apelarea instruciunii de trasare a segmentului n afara spaiului vizibil. Aceast soluie nu rezolv problema n cazul desenrii ntr-o fereastr mai mic dect ecranul. O alt variant este utilizarea unei subrutine de trasare a segmentelor de dreapt care testeaz nainte de aprinderea unui pixel, vizibilitatea acestuia fa de fereastr. Un segment de dreapt se afl fa de o fereastr ntr-una din urmtoarele patru situaii (figura 3.28.a): 1. complet n interior (segmentul AB), 2. complet n exterior (segmentele E F i IJ), 3. un capt n interior, cellalt n exterior (segmentul CD), 4. ambele capete n exterior i o parte a segmentului, n interior (segmentul GH). Un algoritmul simplu este urmtorul: dac capetele segmentului sunt n interior, traseaz segmentul; dac numai un capt este n interior, determin punctul de intersecie cu marginea ferestrei i traseaz subsegmentul de interior; altfel, calculeaz interseciile cu liniile ce definesc marginea ferestrei i dac punctele de intersecie sunt pe segmentele de dreapt ale marginii ferestrei, traseaz subsegmentul dintre acestea. Teste de acceptare/respingere Se consider cazul unei ferestre dreptunghiulare. Algoritmul de mai sus poate fi perfecionat prin efectuarea unor teste simple asupra capetelor segmentului. Segmentul care are ambele capete vizibile, este vizibil n ntregime (fereastra este o mulime convex). Testul care verific dac ambele capete ale segmen tului sunt n fereastr, poart numele de test de acceptare. Orice segment 80

1001

1000

1010

0001

0000

0010

0101

0100

0110

(b) (c) Figura 3.28: (a) Diferite segmente de drept poziionate distinct fa de fereastr (b) Cele nou regiuni din algoritmul Cohen-Sutherland (c) Exemplu pentru algoritmul Cohen-Sutherland

care are ambele capete de aceeai parte a ferestrei (sus, jos, stnga, dreapta) este complet invizibil. Testul care verific aceast condiie se numete test de respingere. Prin adugarea testelor de acceptare i respingere la algoritmul de trasare a unui segment de dreapt se obine un algoritm a crui eficien se manifest cu precdere n 2 situaii: (a) dac majoritatea segmentelor de reprezentat se afl n interiorul ferestrei; (b) dac majoritatea segmentelor de reprezentat se afl n afara ferestrei. Algoritmul Cohen-Sutherland Dac o linie nu este nici respins, nici acceptat, atunci se calculeaz ntro ordine prestabilit interseciile cu dreptele: y = ymax, x = Xmax, V = Vmin, x = Xmin ndeprtnd poriunile de segment care se situeaz n afara ferestrei (dreptunghiulare) . Rezult astfel un nou segment, iar procedura se bucleaz asupra ei nsi pn cnd un segment rezultat este acceptat sau respins. Se divide W CS n nou regiuni determinate de marginile ferestrei (figura 3.28.b). In prezentarea clasic, algoritmul Cohen-Sutherland asociaz fiecrui capt al unui segment un cod de 4 cifre: (a) prima cifr este 1 dac punctul este deasupra ferestrei, 0 altfel; (b) a doua cifr este 1 dac punctul este sub fereastr, 0 altfel; (c) a treia cifr este 1 dac punctul este n dreapta ferestrei, 0 altfel; (d) a patra cifr este 1 dac punctul este n stnga ferestrei, 0 altfel. Puterea algoritmului const n faptul c odat determinate codurile asociate capetelor segmentului, testele de acceptare sau respingere se realizeaz prin 81

operaii logice rapide (de exemplu, n limbajul C: testul de acceptare are succes dac codi\ c0 d2 este zero, iar testul de respingere, dac codi&icod^ nu este zero). Astfel, segmentul A B din figura 3.28 (a) este acceptat, iar E F respins. Rmn de analizat cazurile n care capetele segmentului sunt n regiuni diferite. Se consider c primul capt al segmentului (x\,yi) este n afara ferestrei (eventual printr-o inversare). Atunci codul asociat este nenul. Se determin primul bit nenul, aflnd astfel de care parte a ferestrei se afl primul capt. Presupunem c primul bit este nenul, deci yi > ymax- Se elimin poriunea din segment ce se afl deasupra liniei y = ymax- Fie (x\ ,yi ) punctul de intersecie cu y = ymax- Se determin codul punctului nou, necesar urmtorului pas. Analog se procedeaz pentru partea de jos, stnga i dreapta ferestrei. Se consider cele dou segmente din figura 3.28 (c). Punctul A are codul 0000, iar punctul D, 1001. Segmentul nu poate fi acceptat sau respins. Codul lui D indic faptul c segmentul trece peste latura de sus i peste latura stng a ferestrei. Urmrind ordinea biilor din codul lui D se determin, prima dat, intersecia segmentului cu latura de sus. Codul punctului B de intersecie este 0000, astfel nct segmentul A B este acceptat. Segmentul E I necesit iteraii multiple. Cum E are codul 0100<1010, codul lui J, se consider primul punct exterior. Testnd codul lui E, se determin intersecia F a lui E I cu dreapta suport a laturii de jos. Deoarece codul lui F este 0000, iar al lui I este 1010, testul de acceptare/respingere nu are succes. Punctul exterior este I. Testnd codul lui I de la stnga la dreapta se determin laturile ferestrei pe care F I le poate intersecta. Prima este latura de sus. Se determin H, punctul de intersecie. Codul lui H este 0010. Se face o diviziune a segmentului obinnd FG care este acceptat. Algoritmul complet este descris n procedura urmtoare.
Procedure CohenSutherlandLineClipAndDraw( *0, j/0, xl, yl, xmin, xmax , ymin , ymax :real; value: integer); {Algoritmul CS pentru decuparea segmentul de linie de la P0 = (x0,y0) la P l = (xl,yl) fa de dreptunghiul cu diagonala de la (xmin,ymin) la (xmax , ymax)} type edpe=(Left,Right,Bottom, Top); outcode= set of edye; var accept, done : boolean; outcodeO,outcodel,outcodeO ut : outcode ; {Coduri pentru P0, PI i punctul de intersecie cu latura ferestrei} x, y : real; Procedure CompOutCode(x, y :real; var code : outcode) {Calculeaz codul pentru punctul (x,y)} begin

code: = [] ; if y > ymax then else if y < ymin if x > xmax then else if x < xmin

code := [Top] then code: = [Bottom] ; code := code+ [Eight] then code := code+l Left] 82

end; begin
accept := false; d one:= false; CompOutCode (xO, yO, outcodeO ); CompOutCode (x l, y l,o u tc o d e l ) ;

repeat if (outcodeO = O ) and (outcode 1 = [ ] ) then {Accept.triv. } begin accept :=true; done :=true end else if (outcodeO * outcodel) < > [] then done :=true {Resp.triv.} else {Calcul de intersecii} begin {Determin captul exterior} if outcodeO < > [] then outcodeOut := outcode 0 else outcodeOut := ou tcod el; {Determin intersecia} if Top in outcodeOut then begin{lntersecie cu latura de sus}
x := xO + (x l *0) * (ym ax y0 )/ (yl yO); y := ym ax

end else if Bottom in outcodeOut then begin {Intersecie cu latura de jos} x := *0 + (xl *0) * (ym in y0 )/ (yl yO);
y := ym in

end else if Eight in outcodeOut then begin {Intersecie cu latura din dreapta}
y := yO + (y 1 yO) * (xm ax x 0 )/ (x l *0); x := xm a x

end else if Left in outcodeOut then begin {Intersecie cu latura din stnga}
y := yO + (y 1 yO) * (xm ax x 0 )/ (x l xO); x := xm a x

end; if (outcodeOut = outcodeO) then begin . r ( ) := .r: yO := y: CompOutCode (xO, yO, outcodeO) end else begin xl := x \ y 1 := y\ CompOutCode (xl, y l, outcodel) end end until done; if accept then Trasare (xO, yO, xl, yl, value)

83

end; {CohenSutherlandLineClipAndDraw}

Algoritmul, n aceast variant comun, nu este eficient: deoarece testele i decuparea se efectueaz ntr-o anumit ordine, se fac adesea operaii su plimentare (de exemplu, determinarea punctului H de pe EI). Algoritmul N ic h o ll-L e e -N ic h o ll ocolete calculul interseciilor externe ferestrei. Algoritmul biseciei Algoritmul elimin calculele necesare pentru determinarea interseciilor. La nceput se folosesc testele de respingere i acceptare trivil. Dac un segment nu verific nici unul din aceste teste, el este mprit n dou jumti egale. Cele dou jumti sunt analizate din nou i procesul continu pn la acceptare sau respingere. De obicei, la fiecare iteraie se poate accepta sau respinge jumtate din segmentul analizat. Acest algoritm ajunge la un rezultat dup maximum log2 N pai, unde N este dimensiunea maxim a segmentului (pe orizontal sau vertical), msurat n pixeli. Algoritmul de decupare a liniilor parametrice (algoritmul CyrusBeck) Metoda este utilizat pentru a tia o linie bidimensional printr-un dreptunghi sau un poligon convex, sau o linie tridimensional printr-un poliedru. Algorit mul Cohen-Sutherland determin interseciile segmentului de linie cu liniile suport ale laturilor poligonului-fereastr substituind valorile coordonatelor ast fel obinute n ecuaia segmentului de dreapt. Algoritmul liniei parametrice determin valoarea parametrului t din reprezentarea parametric a segmentu lui de linie pentru punctele n care segmentul intersecteaz liniile infinite pe care se afl laturile ferestrei. Dac poligonul este un dreptunghi, se calculeaz patru valori ale parametrului t, care apoi sunt comparate pentru a determina acelea care reprezint puncte interioare segmentului. Se reduce timpul fa de algoritmul Cohen-Sutherland deoarece se evit saltul repetitiv necesar pentru a tia segmentul prin laturile multiple ale dreptunghiului. Se consider c parcurgerea laturilor poligonului se efectueaz n sens trigonometric. Semiplanul interior asociat unei laturi este semiplanul deter minat de aceasta i care conine fereastra. Normala la o latur se consider, n acest caz, orientat spre exteriorul ferestrei. In figura 3.29 (a) s-au notat cu Pq, Pi capetele segmentului i E t o latur a ferestrei. Linia suport a segmentului este reprezentat parametric P(t) = Pq + (Pi ^ Po)t. Se presupune c xq < x \. Se consider un punct de pe latura Ei, iar Ni vectorul normal la latur. Datorit orientrii normalei nspre exterior i datorit sensului trigonometric de parcurgere a laturilor, produsul scalar Nt [P(t) PEi] este negativ pentru un punct din interiorul ferestrei, pozitiv pentru un punct din exteriorul ferestrei i zero pentru un punct de pe latura ferestrei. Atunci punctul de intersecie corespunde unui ti ce satisface Ni [P(ti) - PEi} = 0

84

Latura Ei

Ni (P(t) - PE,) < O Ni (P(t) PEi = O t) - PEi) > O


(a)

Figura 3.29: Algoritmul Cyrus-Beck (a) O latur i segmentul ce se decupeaz (b) Semiplanele interioare definite de laturi (c) Exemplu

unde reprezint produsul scalar. Deoarece

Ni [P0 + (Pi - P0)ti - PEi}= Ni (P0 - P Ei) + Ni- (Fi - PQ )ti = 0,


rezult

= 4

Nj (P0 - PEi) Ni (Fi P0)'

Pentru fiecare segment se determin cele patru valori ti corespunztoare liniilor suport ale laturilor ferestrei, Ei. Pasul urmtor const n determinarea valorilor ce corespund interseciilor cu laturile. Se adaug la list t = 0 i t = 1. Valorile t . [0,1] sunt eliminate deoarece nu conduc la puncte din interiorul segmentului P0Pi- Valorile t rmase sunt sortate (maxim ase puncte). Se determin punctele, ti, n care segmentul "intr n interiorul unui semiplan, prin Ni-(Pi Po) < 0 (unghi mai mare dect n/2) i punctele tE unde segmentul iese n exterior, prin Nt (Fi P0) > 0 (unghi mai mic dect ir/2). Se consider t = 0 cel mai mic ti, iar t = 1 cel mai mare tE. Segmentul interior ferestrei este definit de cel mai mare ti i cel mai mic tE. In cazul primei linii din figura 3.29 (c), cel mai mic ti este mai mare dect cel mai mare tE, astfel nct nici o poriune din segment nu se afl n interiorul dreptunghiului. In calcule PEi poate fi considerat unul dintre capetele laturii. Tabelul 3.3 indic pentru fiecare latur valorile lui Nt, coordonatele unui punct arbitrar a laturii, PEi, vectorul F0 PEi i parametrul t. Se observ c alegerea lui PEi pe latur nu influeneaz valoarea lui t. Produsul Nt (Fi F0), care determin dac intersecia este o intrare sau ieire din semiplan, se reduce la (x i xo) sau (j/i j/o); astfel, dac d x = (x\ Xo) este pozitiv, linia trasat de la 85

Latura de decupare stnga: x = xmin dreapta: jos: y sus: y

N{

PEi

Po - PEi

t-

Ni (Pq - PE ) y -Ni (Pi - P0)


( XQ
//: in )

(-1 .0 ) (1 .0)

{X min 5

y)

(xo -

Xmin

,yo-y)

(XI - xo)
-(xo Xmax)

x = xm ax
ymin ymax

(Xraax 5y)

(xo Xmax ^yo y) (xo - x , y o (xo - X , y o y m in ) y m a x)

(xi - x0)
.! [Uit ... Vmin )

= =

(Ori) (0,1)

(x, ym in ) (x, ym a x)

(yi - yo)
- ( y o Umax)

(yi - yo)

Tabelul 3.3: Calculele pentru algoritmul de decupare a liniilor parametrice

stnga la dreapta are o intersecie de tip I cu latura stng i de tip E cu latura dreapt a ferestrei. Algoritmul este descris n procedura ce urmeaz.
Procedure Clip2D(var x O ,y O ,x l,y l :real; var visible :boolean); { Decupeaz segmentul de linie cu capetele (*0,j/0) i (xl,yl) fa de dreptunghiul cu colurile (x m in ,y m in ) i (x m a x ,y m a x ); visible va fi adevrat dac segmentul decupat va fi returnat prin parametrii declarai cu var; dac linia este respins, coordonatele vrfurilor nu se schimb, iar visible este setat pe fals} var tI ,t E ,d x ,d y : real; function Clipt (denom, num :re al; var t i , t,E: real):boolean; var t : real; accept : boolean; begin accept :=true; if denom > 0 then {Intersectie tip 1} begin t := num,/denom,; {Valoarea lui t al interseciei} if t > tE then accept false {Segmentul va fi respins} else if t > t i then t i := t {A fost gsit un nou ti} end else if denom, < 0 then begin t := num,/denom,; {Valoarea lui t al interseciei} if t < t l then accept false else if t < tE then {A fost gsit un nou tE}
tE := t

end else

86

if num > O then {Linia n afara laturii} accept :=false;

Clipt := accept
end; {Clipt} begin
dx := *1 *0; dy := y l yO;

visible false;
if (dx = 0) and (dy = 0) and ClipPoint(ccO, yO) {Adevrat dac (xO,yO) interior} then visible :=true else begin
t i := O;t E := 1; if Clipt (dx, xm in x O ,tI ,tE ) then if Clipt ( dx, *0 x m a x ,tI ,tE ) then if Clipt(dy, ym in yO,t,I,t,E) then if Clipt ( dy, yO y m a x ,tI ,tE ) then

begin
visible :=true; if tE < 1 then

begin {Calculeaz intersecia de tip E}


*1 := xO + t E * dx; y l := yO + t E * dy;

end; if t i > O then begin {Calculeaz intersecia de tip 1}


*0 := xO + t l * dx; yO := yO + t l * dy;

end end end end; {Clip2D}

Algoritmul Cohen-Sutherland este eficient cnd testarea codurilor capetelor de linii poate fi efectuat uor (de exemplu prin operaii pe bit) i testele de acceptare sau respingere sunt aplicabile la majoritatea segmentelor. Decuparea liniilor parametrice este mai rapid cnd numrul segmentelor de decupat este mare. Algoritmul Nicholl-Lee-Nicholl Se d un segment de dreapt P Q i un dreptunghi de decupare, ca n figura 3.30. Determinnd poziia relativ a lui Q fa de liniile ce trec prin P i colurile ferestrei, se afl care laturi ale ferestrei intersecteaz PQ. Se studiaz poziia lui P, determinnd sectorul (din cele nou posibile) n care se afl. Funcie de aceast poziie se efectueaz diferite teste asupra lui Q. Presupunem c P se afl n regiunea de stnga-jos (figura 3.30). Dac Q se 87

afl sub xjmin sau la stnga lui x min, atunci PQ nu poate intersecta fereastra. Acelai lucru se poate afirma i dac Q se afl la stnga liniei de la P la colul de stnga sus sau dac Q se afl la dreapta liniei de la P la colul din dreapta jos. Se verific de asemenea poziia lui Q relativ la vectorul de la P la colul din stnga-jos. Fie cazul n care Q este deasupra. Dac Q se afl sub ym ax, Q este n interiorul dreptunghiului sau la stnga: PQ intersecteaz latura x = xm in sau/i latura x = x max. Dac Q se afl peste ym ax, Q este n regiunea de sus sau stnga-sus. Dac Q este deasupra liniei dintre P i colul dreapta-sus, PQ intersecteaz x = x min i y = ym ax>altfel x = x min i x = x max. De exemplu, pentru a testa dac Q este n stnga segmentului de la P la colul de dreapta-sus, (xmax, y max), se verific dac
(VQ ~ y p ) ( x n

x P) > (y max - v p )( xq - x P).

Dac rezultatul este pozitiv, se calculeaz intersecia cu latura de sus a ferestrei. In caz contrar, se determin intersecia cu latura din dreapta: ordonata y a interseciei este / \x max Xp yp + i v Q - y p ) XQ^ Xp Calcule similare se efectueaz pentru celelalte coluri. Valorile y g yp, x q x p se repet i pot fi calculate o singur dat. D(x min 5
Q (x p ,y Q )
max 5y max )

P{ xp , yp i-1 ' i n - ymin) E>(Xm ax: ymin) Figura 3.30: Algoritmul Nicholl-Lee-Nicholl

Procedure PartialNLNclip(var P, Q : point) ; { funcioneaz n cazul n care P este n regiunea de jos-stnga; celelalte cazuri sunt similare} var vizibil :boolean; {adevrat dac segmentul decupat este nenul} begin if Q.y < yMin then vizibil false else if Q.x < xMin then vizibil :=false else if LeftSide(Q,raza de la P la colul jos-stnga) then begin if Q.y < = yMax then begin vizibil :=true; P :=Intersection(PQ,iatura stnga); if Q.x > xMax then

88

Q : = Intersection(PQ,latura dreapta ); end else begin if LeftSide(Q,raza de la P la colul sus-stnga) then vizibil false; else if Q .x < x M a x then begin vizible :=true; P :=Intersection ( P Q , latura stn ga) ; Q :=Intersection(PQ, latura s u s ) ; end else if LeftSide(Q, raza P - col sus-dreapta) then begin vizible :=true; P :=Intersection ( P Q , latura stn ga) ; Q :=Intersection(PQ, latura s u s ) ; end else begin vizible :=true; P :=Intersection ( P Q , latura stn ga) ; Q :=Intersection(PQ, latura d reapta) ; end end

end else {caz Q n dreapta liniei P - col jos-stnga} end;

Algoritmul presupune mai puine mpriri i doar o treime din numrul de comparaii necesare algoritmului Cohen-Sutherland.

3.10.3

Decuparea poligoanelor

Rezultatul decuprii fa de o fereastr poligonal convex este: niciunul, unul (cazul poligon decupat convex) sau mai multe poligoane (cazul poligon decupat concav).

Teste de acceptare/respingere Considerm o linie poligonal cu un numr mare de segmente. Abordarea clasic a clippingului presupune aplicarea algoritmului la fiecare segment de dreapt n parte. Efortul de calcul este mare, mai ales dac linia poligonal se afl n exteriorul ferestrei. Metoda ariei mrginite (bounding boxes) de termin n prealabil cel mai mic dreptunghi care ncadreaz linia poligonal se determin colurile acestuia ca valori minime i maxime ale vrfurilor liniei 89

Figura 3.31: Algoritmul Sutherland-Hodgman (a) Etapele algoritmului (b) Modifi carea listei vrfurilor

poligonale. Dac dreptunghiul este n afara ferestrei, linia poligonal nu este trasat. Dac este complet n interior, linia poligonal este trasat n ntregime. Dac dreptunghiul i fereastra au doar o poriune comun se trece la decupare pe fiecare segment de dreapt n parte. Algoritmul Sutherland-Hodgman Algoritmul utilizeaz o strategie d iv id e - et - impera (d iv id e - and conquer) pentru a decupa un poligon convex sau concav relativ la un poligon convex care definete fereastra. Intrarea n algoritm este o list a vrfurilor, iar ieirea are o structur similar. Algoritmul comport un numr de etape egal cu numrul laturilor poligonului-fereastr (patru n cazul unui dreptunghi). Intr-o etap, poligonului curent i se aplic tehnica de tiere relativ la una din laturile poligonului-fereastr, rezultnd o list modificat de vrfuri (figura 3.31.a). La fiecare etap se parcurg un numr de pai egali cu numrul laturilor poligonului care se taie. In fiecare pas se adaug la lista de vrfuri 0, 1 sau 2 vrfuri noi ce aparin laturii curente a poligonului-fereastr. Se consider latura poligonului de decupat ce pornete de la vrful S la vrful P (figura 3.31.b). In primul caz, cnd latura poligonului este complet n interiorul ferestrei, se adaug P la lista de ieire. In al doilea caz, punctul de intersecie I este introdus ca nou vrf. In cazul al treilea, ambele vrfuri sunt n afara ferestrei, astfel nct nu se produc modificri n lista de ieire. In cazul al patrulea, att punctul de intersecie I, ct i P sunt adugate la lista de ieire. Algoritmul Liang-Barsky Algoritmul presupune decuparea fa de o fereastr dreptunghiular. Se consider poligonul care va fi tiat reprezentat prin secvena vrfurilor Pi, P2 , , Pn, parcurse ntr-un anumit sens (trigonometric sau conform fusu lui orar). Fiecare latur este considerat ca un vector (pornind, de exemplu, 90

de la un Pi la P%+i). Planul este divizat n nou regiuni determinate de la turile ferestrei. Fiecare latur a ferestrei mparte planul n dou semiplane. Semiplanul care conine fereastra este serniplan de interior. Cele nou regiuni se identific funcie de numrul de semiplane interioare care sunt incluse n interiorul lor (figura 3.32.a). Regiunile notate "interior 2 se numesc regiuni de col, iar cele notate "interior 3 , regiuni de latur. Dac ultima latur ce intersecteaz fereastra genereaz un vrf la marginea de sus a ferestrei i urmtoarea latur ce intersecteaz fereastra va crea un vrf la dreapta ferestrei, poligonul de ieire va trebuie s conin colul din dreapta sus a ferestrei (figura 3.32.b). In general, o latur care intr ntr-o regiune de col adaug un col de fereastr ca vrf de ieire. Un asemenea vrf este numit vrf turnant. Se determin valorile parametrului t ale interseciilor liniei ce conine P,P,. i cu laturile ferestrei. Dou intersecii sunt potenial de intrare, tini, tin2, dou de ieire 0uti> tout2. Valoarea tini este cea mai mic, iar tout2 este cea mai mare deoarece orice linie neorizontal i nevertical pornete dintr-o regiune de col i sfrete ntr-o alt regiune de col. Celelalte valori se afl ntre ele i pot fi n orice ordine. Dac < tou^ , linia intersecteaz fereastra, altfel linia trece printr-o regiune de col (figura 3.32.c). Relaiile dintre valorile t = 0, t = 1 i tini, tin2, 0uti> t0ut2 caracterizeaz contribuiile laturii la poligonul de ieire. Dac 0 < < tou^ < 1, segmentul de dreapt determinat de valorile i tou^ este latur a poligonului decupat. In caz contrar, linia nu intersecteaz fereastra, ci pornete dintr-o regiune de col, trece prin alta i se termin n a treia. Intrarea segmentului n regiunea de col intermediar (ce necesit adugarea unui col al ferestrei n lista vrfurilor poligonului decupat) este caracterizat prin 0 < tou^ < ti2 < 1. Algoritmul este schiat n urmtoarea procedur.
Procedure Assign(var *,j/:real; a,6:real); begin x := a; y := b; end; Procedure LiangBarskyPolygonClip( n : integer; x, y : tablou; {vrf .poligonului de intrare} var u, v : tablou; {vrf .poligonului de ieire} x M a x ,x M in ,y M a x ,y M in :real; {laturile ferestrei} var outC ontor : integer); {contor a lat.ieire} var x In ,x O u t,y I n ,y O u t : real; {Punct.de intrare i ieire} tO u tl,tI n 2 ,tO u t2 ,tI n X ,tO u tX ,tI n Y ,tO u tY : real; d elta X , deltaY : real; {Direcia laturii} i : integer; begin x[n + 1] := x[l]; y[n + 1] := y[l]; {nchide poligonul} for := 1 to n do begin deltaX := x[i + 1] *[*]; deltaY := y[i + 1] y[i]; {determin primele laturi ale ferestrei intersectate} if (d eltaX > 0) or (deltaX = 0) and (*[*] > x M a x )) then Assign (xln, xO ut, xM in , x M a x )

91

interior 2 interior 3 interior 2

interior 3 interior 4 interior 3

interior 2 interior 3 interior 2

(a)

Poligon ck intrare/

<* /
tini

tout~isS tou-to tin2

Poligon de ieire

tout2 tino_____ tini tout-i

<
(b)

Figura 3.32: Algoritmul Liang-Barsky (a) Definirea regiunilor (b) Vrf turnant (c) Interseciile cu laturile ferestrei

else Assign (x l n , xO ut, xM a x , xM iri ) ; if (deltaY > 0) or (deltaY = 0) and (y[i] > y M a x )) then Assign(j/In, yOut, yM in , y M a x ) else Assign(j/In, yOut, yM a x , y M in ) ; {determin valorile t pentru punctele de ieire} if d eltaX O 0 then tO u tX := (xO ut x\i])/deltaX else if (*[*] < = x M a x ) and (x M in < = *[*]) then tO u tX := oo else tO u tX := oo; if deltaY < > 0 then tO u tY := (yOut y\i])/deltaY else if (y[i] < = y M a x ) and (y M in < = y[i]) then tO u tY := oo else tO u tY := oo; {ordoneaz punctele de ieire} if tO u tX < tO u tY then Assign(tOirfl, tO'ut2, tO u tX , tO u tY ) then k s s ig n (tO u tlytO ut2ytO u tY \ tO u tX ); if (tOut2 > 0) then {poate exista o ieire} begin if deltaX O 0 then t l n X := (x l n x[i\)/deltaX else t l n X := oo; if deltaY O 0 then tl n Y := (y ln y[i])/deltaY else t l n Y := oo; if t l n X < tl n Y then tln,2 := t l n Y

92

else tln,2 := tln X ; if {tOut 1 < tln 2 ) then {segmentul invizibil} begin if(0 < tO'utl) and (tO'utl < = 1) then {linia trece printr-o regiune de col} if tln X < tlnY then OutputVert (u,v, outContor, xOut, yln) else OutputVert (u,v, outContor, x ln , yOut) end else {Linie trece prin fereastr} if (0 < tO ut) and (tln 2 < = 1) then begin if 0 < tln2 then {segment vizibil} if tln X > tlnY then OutputVert (u, v, outContor,

xln, y[i] + tln X * deltaY)


else OutputVert (u, v, outContor,

x[i] + tln Y * deltaX, y ln );


if 1 > tOut then if tIOutX < tOutY then OutputVert (u, v, outContor,

xOut, y[i] + tOutX * deltaY)


else OutputVert (u, v, outContor,

x[i] + tOutY * deltaX, yOut) ;


else OutputVert (ii, v, outContor, x[i + 1], y[i + 1]); end; if (0 < tO'ut2) and (tOut2 < = 1) then OutputVert (u , v, outContor, xOut, yO ut) ; end end end;

3.10.4

Decuparea curbelor plane

Cercurile i elipsele pot fi aproximate cu secvene de linii scurte, astfel nct pot fi tratate ca linii poligonale cu numr mare de segmente. Conicele, n general, sunt construite prin metode incrementale care permit includerea testelor de vizibilitate n fereastr. In cazul cercurilor sau elipselor se poate efectua un test preliminar de accep tare/respingere asupra dreptunghiului minim ce ncadreaz respectiva conic. Structura algoritmului incremental de trasare a curbei generale de grad doi f ( x , y ) = 0 cuprinde trei faze: 1. se calculeaz 6, A i se separ cazul trasrii conicelor degenerate; 2. se calculeaz toate interseciile curbei cu laturile ferestrei de vizualizare. In total pot exista maximum 8 puncte de intersecie. Pentru fiecare punct de intersecie se cerceteaz semnul funciei / la dreapta arcului de curb care pornete din acest punct i este orientat spre interiorul ferestrei.

93

Dac / < O la dreapta curbei, atunci punctul de intersecie este neglijat, deoarece arcul de curb trebuie trasat ncepnd de la cellalt capt, care corespunde altui punct de intersecie (algoritmul incremental pornete de la presupunerea c / < 0 la stnga direciei de naintare). In caz contrar se traseaz arcul. Pentru calculul interseciei cu laturile ferestrei, de exemplu cu y = ymin, se recomand modificarea ecuaiei f ( x , y min) = 0. Se observ c f ( x , ymin) + f ( x , ymin 1) < 0 (respectiv > 0) pentru toate punctele (x, ymin) mai apropiate (respectiv mai deprtate) de curb dect (x, ymin !) In cazul limit, de egalitate cu 0, punctele menionate sunt egal deprtate de curba ideal. Astfel pentru determinarea interseciei cu V = Vmin se recomand rezolvarea ecuaiei (analog factorului de decizie de la trasarea cercurilor) f ( x , y ) + f ( x , y - 1) = 0, cu y = ymin3. se traseaz curbele care nu intersecteaz marginile ferestrei de vizualizare (cercuri sau elipse complet incluse n fereastr): se calculeaz centrul curbei (xc, yc) i se apeleaz procedura de trasare incremental ncepnd cu punctul din dreapta de intersecie cu orizontala y = yc.

3.10.5

Decuparea 3D

Pentru corpurile descrise prin mai multe puncte, dintre care doar o parte se afl n volumul de observare, se prefer retezarea segmentelor n spaiu, pstrnd numai poriunile interioare volumului observabil, i abia dup aceea proiecia n 2D. Procesul este cunoscut sub denumirea de decupare 3D (3D c lip p in g ). Pot fi generalizai att algoritmul Cohen-Sutherland ct i cel al biseciei. In algoritmul Cohen-Sutherland 3D, spaiul este mprit n 27 de zone, pentru care se alctuiete cte un cod de 6 cifre (tabelul 3.4). Primele patru sunt aceleai ca i n plan; a 5-a valoare este 1 dac punctul se afl n faa volumului de observare i 0 altfel, a 6-a valoare este 1 dac punctul se afl n spatele volumului de observare (figura 3.33). Pentru calculul interseciilor cu planele limitatoare, n cazul algoritmului Cohen-Sutherland 3D, este comod s se transforme mai nti volumul de ob servare n volum de observare canonic. In acest caz calculele i comparaiile se simplific deoarece planele limitatoare nclinate au panta 1 sau -1. Coordonatele interseciei se pot calcula folosind forma parametric a ecuaiei unei drepte ce trece prin dou puncte. Fie segmentul / / _ > cu ex tremitile P i ( xi , y i , zi), P2 (x 2 , y 2 , Z2). Se calculeaz intersecia cu planul y = z. Forma parametric a dreptei este

X = (X2 ~ X\)t + X\, y = (1 /2 - y i ) t + yi, Z = (Z2 Zi)t + Zi,

0<t<l.

Deoarece y = z, are loc (j/2 yi)t + y1 = (z2 z\)t + z, de unde se obine t corespunztor punctului de intersecie: ,
t Plan(y=z)

_ y) _ ^

zi - yi

94

Bit setat b it l bit 2 bit 3 bit 4 bit 5 bit 6

Volum canonic al proieciei paralele y> 1 y< 1 x > 1 .1 - < I


Z

Volum canonic al al proieciei perspective y> z y< z x > z x < z


Z

>

> Zrnin

z< 1

z< 1

Tabelul 3.4: Constituirea codului n algoritmul Cohen-Sutherland 3D

100101 000101 010101


100100 000100 010100 100000 000000 010000

100001 000001 010001


101000 001000 011000

101001 001001 011001

Spate

Mijloc

100110 000110 010110

100010 000010 010010

101010 001010 011010

Fa

Figura 3.33: Algoritmul Cohen-Sutherland pentru decupare 3D

Segmentul l\ P -> intersecteaz planul y = z, dac 0 < tpian^ y=z^ < 1. Algoritmul Cyrus-Beck poate fi reformulat pentru decupare relativ la un poliedru. Dac n 2D cel mult 4 valori t trebuiau calculate pentru fiecare latur a ferestrei, n 3D, sunt necesare 6 valori. Valorile noi pentru Nt, PEi , Pq Pei , n cazul decuprii fa de un trunchi de piramid, sunt prezentate n tabelul 3.5, unde dx = x i &o, dy = yi yo, dz = z\ zq. Semnul lui (Pi Po) determin tipul interseciei: de ieire sau de intrare (n tabel, numitorul fraciilor). Algoritmul Cyrus-Beck 3D este schiat n urmtoarea procedur. Proce dura adiional C lip t determin dac intersecia este de tip intrare sau ieire.
Procedure Clip3D(var xO,yO, zO,xl,yl, zl, zmin : real; var accept : boolean); vartmin, tmax : real; dx, dy, dz : real; begin accept :=false;

tmin := 0; tmax := 1; dx := *1 *0; dy := y 1 yO; dz := zl :0: if Clipt ( dx dz, *0 + zO, tmin, tmax) then {Parte dreapt} if Clipt (dx dz, ^ * 0 + zO, tmin, tmax) then {Parte stng}
begin

dy = y 1 - y0; if Clipt (dy dz, yO + zO, tmin, tmax) then {jos} 95

Latura de decupare dreapta: x = z stnga: x = z jos: y = z sus: y = z fa: z = zmin spate: z = 1

Normala Ni

~Psi

t =

(1,0,1) (-1,0,1) (0,-1,1) (0,1,1) (0,0,1) (0,0,-l)

(x,y,-x) (x,y,x)

*0 + Zo
dx dz - x 0 + Zo d x -- d z - yo + Zo d y -- d z yo + zo - dy dz zo - Zmin
dz - Zo - 1

(x,y,y) (x,y,-y)
(x, y , Z m i n )

(x,y,~ 1)

dz

Tabelul 3.5: Calculele ce intervin n algoritmul Cyrus-Beck 3D

i f C l i p t ( dy dz,yO + zO, tm in, tm ax) then {s u s } i f C l i p t ( dz, zO zm in, tm in, tm a x) then { f a } i f C lip t(d z , zO 1 ,tm in ,tm a x ) then {s p a te } begin accept := tr u e ; {P arte l i n i e v i z i b i l } i f tm ax < 1 then begin *1 := *0 + tm ax * dx; y l := yO + tm ax * dy; z 1 := zO + tm ax * dz end; i f trnin > 0 then begin *0 := *0 + tm in * dx; yO := yO + tm in * dy; zO := z 0 + tm in * dz end end end end; {C lip3D }

96

4. Modelarea corpurilor tridimensionale


4.1 Scheme de reprezentare ale solidelor rigide

Atunci cnd dorim reprezentarea pe un ecran a unui solid din spaiul 3D apar o serie de probleme a cror soluie trebuie gsit: (a) cum modelm corpul n spaiul 3D; (b) cum construim o reprezentare a modelului; (c) cum transpunem reprezentarea 3D n 2D. Reprezentrile simple care permit recunoaterea unor suprafee si efectu area de calcule relative la aceste suprafee se obin printr-unul din urmtoarele procedee de modelare a corpurilor: modelarea suprafeelor; modelarea solidului. In primul caz, un corp este modelat prin precizarea frontierei sale, descris ca suprafa strmb n spaiu sau compus din poriuni de suprafee curbe. In cazul modelrii solidului, corpul este construit prin alturarea unor volume elementare, cuburi, piramide, tetraedre, sfere, cilindri care s aproximeze ct mai bine forma dorit. Ambele procedee se ncadreaz n clasa mai general a modelrii geometrice (numit si modelare a formelor). Reprezentarea obiectelor prin colecii de linii drepte, curbe, poligoane este adesea insuficient pentru reconstituirea obiectului reprezentat. De exemplu, despre obiectul din figura 4.1.a (reprezentarea prin cadru de srm, numai din

Figura 4.1: (a) Reprezentare prin cadru de srm a unui cub; (b) Fa suplimentar

informaii despre vrfuri si muchii) nu se poate spune c este un cub (spunem c reprezentarea este ambigu) pn cnd nu includem informaia conform creia fiecare poligon definete o fa poligonal ce mrginete un volum - n aceeai modalitate stocm informaia referitoare la obiect si dac una din feele 97

cubului lipsete (precum o cutie deschis). In cazul n care mai adugm un poligon (figura 4.1.b) obiectul construit nu mrginete un volum. Astfel n reprezentarea solidelor trebuie respectate o serie de proprieti precum urmtoarele: (a) domeniul reprezentrii trebuie s fie suficient de larg pentru a permite reprezentarea unor clase largi de obiecte fizice; (b) reprezentarea trebuie s fie neambigu (s nu existe dubii referitoare la obiectul reprezentat): o reprezentare trebuie s corespund unui i numai unui solid; n aceste condiii testul de egalitate a dou obiecte este simplu; (c) reprezentarea s fie fcut cu acuratee (reprezentarea obiectului fr aproximare); (d) o schem de reprezentare trebuie s fac imposibil crearea unei reprezentri invalide (a unei reprezentri care nu corespunde unui solid, precum cea din figura 4.1.b); (e) schema de reprezentare trebuie s permit crearea cu uurin a unei reprezentri valide (n mod tipic, cu ajutorul unui sistem interactiv de modelare a solidelor); (f) nchiderea la transformrile afine (aplicarea acestor operaii asupra unor solide valide trebuie s conduc tot la solide valide); (g) o reprezentare trebuie s fie compact (din punct de vedere al spaiului de memomare); (h) o reprezentare trebuie s permit utilizarea unor algoritmi eficieni pentru calculul proprietilor fizice i pentru crearea imaginilor. Construcia unei scheme de reprezentare care respect aceste proprieti este dificil i adesea sunt necesare o serie de compromisuri. In literatura de specialitate sunt considerate urmtoarele scheme de reprezentare a solidelor rigide: 1. Reprezentarea prin frontiere. In timp ce toate metodele ce urmeaz re prezint solidele direct, reprezentrile prin frontiere sunt indirecte prin aceea c ele reprezint direct (explicit) frontierele topologice ale solidului i nu solidul nsui. Aceast metod nlocuiete problema reprezentrii unei anumite mulimi prin reprezentarea unei mulimi de dimensionalitate redus. 2. Instanierea primitivelor pure. Se definesc familii de entiti, numite primitive generice sau pure, ai cror membrii se numesc instane (ex emplare) ale primitivelor. O primitiv generic poate fi privit ca un prototip parametrizat al unei piese mecanice. Schema se preteaz la tehnologiile de grup cnd se modeleaz familii de obiecte, n care membrii au aceeai structur, dar difer prin parametrii, un set dat de parametrii identificnd n mod unic un membru al familiei. Schema promoveaz standardizarea prototipurilor i este cel mai des utilizat n industrie. Dezavantajul este imposibilitatea de combinare a primitivelor generice pentru a crea o nou primitiv mai complex. 3. Mturare. Un solid sau o suprafa mrginit care se deplaseaz de-a lungul unei traiectorii "mtur un volum. In aceast schem un solid poate fi reprezentat printr-un cuplu: (corp n micare, traiectorie). Me toda folosete noiunile matematice de produs de mulimi sau operaii cu mulimi asupra unui numr infinit de mulimi.

98

4. Enumerarea ocuprii spaiale. Spaiul este mprit ntr-o reea fin de celule tridimensionale, de obicei cuburi, numite voxel (volume element) prin analogie cu pixel (p ictu re element). Un solid este reprezentat prin lista celulelor pe care le ocup, adic a celulelor care conin material. 5. Descompunerea n celule. Un solid este descompus n celule solide ele mentare, fr guri, ale cror interioare sunt dou cte dou disjuncte. Un solid este rezultatul lipirii celulelor componente care satisfac anumite condiii de potrivire a frontierelor. Schema constituie o generalizare a celei de a doua scheme, eliminnd restriciile referitoare la amplasarea celulelor n poziii fixe i la dimensiune i forme fixe pentru celule. Se bazeaz pe teoria triangulaiei. 6. Geometrie solid constructiv. O schem CSG (C on stru ctive S o lid Geometry) definete un solid ca o combinaie de blocuri constructive solide, combinaie realizat prin intermediul operaiilor de tip adunare sau scdere volumetric. Este o generalizare a celei de a treia scheme, nlocuind operatorul de lipire cu operatori care nu necesit satisfacerea unor condiii de frontier.

4.2

Metode de construcie a reprezentrilor

Exist trei metode de a construi modele geometrice ale solidelor rigide: (a) Descrierea procedural. Aceast metod const n reprezentarea unui obiect printr- un program a crui execuie produce un exemplar din res pectivul obiect. O procedur obiect poate avea parametrii, devenind un obiect generic. Descrierea procedural este convertit ntr-un model prin compilarea i executarea procedurilor obiect n contextul n care aceste proceduri sunt activate. Practic, limbajele de descriere ofer faciliti de apelare ale unor proceduri standard de descriere: pentru linie, cerc, curbe spline, cilindri. Procedurile se pot apela unele pe altele, permind descrierea unor obiecte complexe. Metoda este anevoioas deoarece uti lizatorii trebuie s aib cunotiine de programare. Se preteaz n cazul instanierii primitivelor pure. (b) Conversia bazei de date. Const n construirea modelului unui obiect prin vrfuri i muchii - tip cadru de srm (wire frame) - pornind de la mai multe proiecii n 2D ale obiectului. Proieciile obiectului n 2D se obin fie prin metoda descrierii procedurale, fie prin grafic interactiv. (c) Grafic interactiv. Se bazeaz pe organizarea tuturor comenzilor nece sare realizrii i manipulrii desenelor n grupuri relaionate logic, nu mite liste de meniu. Utilizatorul transmite comanda dorit sistemului prin selectarea acesteia din lista de meniu cu ajutorul unui dispozitiv de interaciune. Aceast modalitate de a dirija un sistem grafic se numete tehnica meniului. Listele de meniuri sunt organizate ierarhic ntr-o struc tur de arbore. Componena listelor de meniuri i structura ierarhic se obin n urma unui proces de generare.

99

4.3

Operaii booleene

O metod intuitiv si popular pentru combinarea obiectelor este utilizarea operaiilor booleene pe mulimi (figura 4.2).

Figura 4.2: Operaii booleene (a) Obiectele A si B (b) A U B (c) A fi B (d) A B (e) B - A

Din pcate aplicarea unei operaii booleene asupra a dou obiecte solide nu conduce ntotdeauna la un obiect solid (de exemplu, intersecia a dou cuburi poate conduce la un solid, un plan, o linie, un punct sau la mulimea vid figura 4.3). Se pot ns utiliza operatori booleeni regularizai, notai U*, iT si

Figura 4.3: Intersecia booleana a dou cuburi poate fi (a) un solid (b) un plan (c) o linie (d) un punct sau (e) mulimea vid

definii astfel nct aplicarea lor la solide conduce ntotdeauna la solide (de exemplu, intersecia celor dou cuburi din figura 4.3 poate fi numai de tip (a) sau (e) sau mulimea vid n cazurile (b), (c), (d)). Matematic acest deziderat este realizat prin A op* B = lnt(A op B ), unde op este U, D sau . Un operator boolean regularizat aplicat la dou mulimi nchise (n acest context numite regularizate) este tot o mulime nchis. Operatorii booleeni regularizai sunt utilizai ca tehnic de interfa cu utilizatorul la construirea unor obiecte complexe din obiecte simple si sunt inclui n majoritatea schemelor de reprezentare a solidelor (explicit n cazul geometriei solide constructive).

100

4.4

Reprezentarea corpurilor prin frontiere

Este numit si b -re p de la boundary rep resen ta tion . Obiectul este de scris prin vrfuri, laturi si fee. Feele curbe sunt aproximate de obicei prin poligoane; se pot ns construi sisteme de modelare bazate pe poriuni mici de suprafee standard. Variantele cele mai des utilizate sunt: reprezentarea prin reea de poligoane si reprezentarea poliedral. Frontiera unui obiect tridimensional poate fi reprezentat si prin procedee de reducere si mai drastic a dimensionalitii obiectului: numai prin puncte sau numai prin linii. Astfel, dac este necesar doar o reprezentare schematizat a obiectului, se pot utiliza: reprezentarea prin puncte, reprezentarea prin seciuni transversale, reprezentarea tip cadru-de-srm (wire-fram e).

4.4.1

Reprezentarea prin puncte sau seciuni transversale

Pentru mulimea punctelor care modeleaz un corp (n general suprafaa aces tuia) se pot pune dou tipuri de condiii: i) suprafaa corpului s treac efectiv prin punctele date; ii) distana dintre suprafaa real si punctele care definesc modelul s fie mic. Reprezentarea prin puncte se utilizeaz n domeniul medicinei si chimiei. In medicin, corpul se reprezint printr-o reea de puncte dispuse dup seciuni transversale (figura 4.4). In chimie, atomii sunt modelai prin sfere, reprezen-

Figura 4.4: Reprezentare prin puncte a corpului uman

tate prin puncte situate n nodurile unui reele geodezice. Elementul de baz al structurilor de date folosite pentru modelare este lista de puncte. O list complet de puncte conine coordonatele tuturor punctelor care descriu corpul. O list de puncte trunchiat conine numai informaiile re feritoare la o submulime de puncte, precum si alte informaii necesare pentru determinarea coordonatelor celorlalte puncte folosind simetrii, rotaii, translaii si scalri. Formele trunchiate sunt folosite pentru depozitarea informaiei nece sare regenerrii periodice a corpului. Reprezentrile prin seciuni transversale decurg direct din reprezentrile prin puncte situate n seciuni transversale paralele ntre ele. Punctele situate
101

n aceeai seciune se unesc ntre ele astfel nct s par reprezentat conturul seciunii respective. Uneori, pentru o mai bun precizare a formei obiectului modelat se folosesc dou curbe sau linii poligonale denumite ecuator si merid ian. Adugnd curbe longitudinale unei reprezentri prin seciuni transversale se obin reprezentrile de tip w ire-fram e.

4.4.2

Reprezentarea prin cadru de srm

Intr-o asemenea schem, un corp este reprezentat ca o mulime de segmente de dreapt sau poriuni de curbe (figura 4.5).

Figura 4.5: Reprezentare wire-frame a unei mini

Datele de intrare pot fi organizate astfel: (a) segmente explicite: pentru fiecare segment se precizeaz un indice (opional) si coordonatele extremitilor segmentului. Nu se utilizeaz lista de vrfuri. (b) segmente implicite: fiecare segment este precizat printr-o pereche de in dici care identific capetele acestuia ntr-o list de vrfuri (necesarul de memorie fa de forma precedent scade); (c) linii date prin indici: atunci cnd o linie poligonal poate fi descris prin concatenarea unui ir de segmente, este mult mai indicat utilizarea informaiilor: indice linie, numr de puncte pe linie, indici care reprezint capetele segmentelor ce compun linia n lista de vrfuri; (d) seciuni transversale i linii longitudinale: se procedeaz precum n cazul liniilor date prin indici, dar curbele transversale sunt n marea lor majo ritate chiar reprezentrile seciunilor transversale. Reprezentarea w ire-fram e a unui obiect nu permite definirea unor suprafee i, deci, calcularea ariilor, volumelor, maselor, centrelor de greutate sau afiarea pe ecran a poriunii vizibile a obiectului analizat. Dei reprezentarea wire-frame este simplist i nu furnizeaz informaii com plete asupra geometriei corpului, datorit uurinei de utilizare i a rapiditii de afiare a reprezentrii pe terminal, este mult utilizat. Folosind aceast teh nic se pot obine viteze mari de lucru i chiar efecte interesante de animaie.
102

4.4.3

Reprezentarea prin reea de poligoane

O reea de poligoane este o colecie de laturi, vrfuri si poligoane conectate astfel nct fiecare latur este partajat de cel mult dou poligoane (o latur conecteaz exact dou vrfuri, iar un poligon este o secven nchis de laturi). O latur poate fi comun pentru dou poligoane, iar un vrf, la cel puin dou laturi. Dac obiectul real are suprafee curbe, modelul poligonal este aproximativ (figura 4.6). Aproximarea poate fi mbuntit prin mrirea numrului de

Figura 4.6: (a) Obiect tridimensional reprezentat prin reea de poligoane (b) O seciune printr-un obiect curbat si reprezentarea sa poligonal

faete poligonale plane care modeleaz o suprafa curb. Dezavantajul const n necesarul sporit de memorie, dar este de reinut faptul c algoritmii care proceseaz suprafeele poligonale plane sunt mult mai simpli dect cei pentru suprafee curbe. Stocarea informaiei Elementul de baz pentru modelarea prin reea de poligoane este lista de vrfuri. Punctele ale cror coordonate sunt nscrise n list sunt vrfurile poligoanelor. Acestea mpreun cu laturile poligoanelor si cu faetele polig onale constituie elementele definitorii ale reelei poligonale. Stocarea informaiilor necesare reprezentrii vrfurilor, muchiilor si fae telor poligonale se face sub diferite forme. Criteriile de alegere a formei de stocare privesc dou caracteristici ale programului: memoria necesar si viteza de lucru. Reprezentarea reelelor poligonale se face astfel: (a) In reprezentarea explicit, fiecare poligon este reprezentat ca list de coordonate a vrfurilor: P = { ( x i , y i , z 1) , ( x 2, y2, z 2) , . . . , ( x n, yn, z n)}. Vrfurile sunt stocate n ordinea n care sunt ntlnite n parcurgerea poligonului. Laturile se construiesc prin unirea vrfurilor succesive din list. Pentru un singur poligon, aceast reprezentare este eficient din punct de vedere al spaiului; pentru o reea poligonal ns o cantitate considerabil de spaiu de memorare se pierde prin duplicarea coordo natelor vrfurilor comune. In plus, nu exist o reprezentare explicit a

103

vrfurilor si laturilor comune. Pentru trasarea unui vrf mpreun cu la turile incidente n acesta, trebuie gsite toate poligoanele care conin vrful - triplete de coordonate trebuie comparate pentru fiecare vrf (eventual toate coordonatele vor fi sortate). La trasarea reelei, fiecare latur va fi trasat de dou ori (n cazul ecranelor tip rastru, dac la turile sunt trasate n direcii opuse, e posibil ca anumii extra-pixeli s fie aprini). (b) Dac poligoanele sunt definite ca pointeri la o list de vrfuri

v = {(xi,yi,z1),(x2,y2 ,z2), - ,(xn,yn,Zn)},


fiecare vrf este stocat o singur dat (figura 4.7). In plus coordonatele

Figura 4.7: Reea de poligoane definit prin indexi la o list de vrfuri

vrfurilor pot fi uor schimbate fr a afecta descrierea poligoanelor. Pe de alt parte, laturile comune sunt, si n acest caz, trasate de dou ori. (c) Poligoanele sunt definite prin pointeri la liste de laturi. Structura de date asociat unei laturi din lista de laturi conine pointeri (sau indexi) spre dou vrfuri din lista de vrfuri, precum si spre unul sau dou poligoane la care aparine (figura 4.8). Astfel, un poligon este definit prin P =
V= (Vt, v2, 1 / 3. vt) = ((x,, y,. / , ) ------ (*,. y, z)) E, - (IV V r Py A )

Figura 4.8: Reea de poligoane defint prin list de laturi

(E i , . . . , E n), iar laturile prin M = (Vi, V2 , Pi, P 2) (dac latura aparine numai unui poligon, P2 este nul). In mod curent se utilizeaz reele de faete patrulatere plane sau triunghiu lare. Cele mai bune aproximri ale unor suprafee strmbe prin numr dat de vrfuri se obin folosind faete triunghiulare. Cnd se dispune de o memorie redus si se modeleaz corpuri de complexi tate relativ mare printr-un numr mare de puncte este recomandat utilizarea unui liste de vrfuri si un procedeu de parcurgere a acesteia pentru a determina 104

rnd pe rnd indicii corespunztori vrfurilor fiecrei faete. Se consider cazul generrii unui corp prin faete triunghiulare. Pentru a genera reeaua de faete sunt necesare: 1. o list de vrfuri n care un punct este menionat printr-un indice i coordonatele sale; 2. o list de distribuie a punctelor pe seciuni n care pentru fiecare seciune transversal se menioneaz numrul i indicii punctelor care o descriu; 3. o list de ramificaie n care pentru fiecare seciune a unui corp, cu excepia ultimei seciuni, se precizeaz pentru fiecare punct, n sen sul creterii indicilor, numrul de triunghiuri distincte care nu au mai fost considerate i au un vrf n acesta. Pentru primul punct dintro seciune, se numr numai triunghiurile formate cu puncte de pe seciunea urmtoare, n sensul creterii indicilor, pornind de la primul punct al seciunii urmtoare. Pentru cazurile n care este necesar a deosebi la un poligon o fa exterioar i una interior se stocheaz vrfurile sale ntr-o ordine convenit n baza de date. Ordinea normal este aceea pentru care vrfurile se stocheaz astfel nct laturile poligonului privite din exterior s fie aezate n sens trigonometric. In acest fel, direcia normalei exterioare la poligonul dat se poate obine ca produs vectorial a dou laturi consecutive neconfundate i nedegenerate pentru orice poligon convex. Aceast tehnic permite evitarea trasrii unei laturi date de dou ori, dup regula: o latur nu se traseaz dect atunci cnd este parcurs de la un vrf de indice inferior celui final (figura 4.9). In nici una dintre aceste reprezentri nu se poate determina cu uurin care laturi sunt incidente unui vrf (toate laturile trebuie cercetate). Informaii suplimentare pot fi adugate la structurile de mai sus pentru a rezolva acest inconvenient. De exemplu, la descrierea laturilor se pot include pointeri la cele dou laturi adiacente a fiecrui poligon, iar n descrierea vrfurilor se pot include pointeri la fiecare latur inciden n vrf.

Vi

(a)

(b)

Figura 4.9: Parcurgerea n sens trigonometric a laturilor

Consistena reprezentrii prin reea de poligoane Dac reeaua este generat interactiv se pot produce numeroare erori. O veri ficare de consisten presupune: 105

1. fiecare latur aparine cel puin unui poligon i maximum la un numr fixat de poligoane; 2. fiecare latur este descris o singur dat ntr-un poligon; 3. fiecare vrf aparine cel puin unui poligon; 4. fiecare vrf aparine la cel puin dou laturi; 5. vrfurile unei laturi sunt distincte; 6. poligoanele sunt nchise; 7. fiecare poligon care pointeaz spre o latur este referit prin pointer n structura asociat laturii; 8. laturile unui poligon se afl n acelai plan; 9. reeaua are o singur component conex (relaia de mprire a unei la turi ntre poligoane este o relaie binar de echivalen i se poate efectua o partiionare a reelei n clase de echiven numite componente conexe), etc.

4.4.4

Reprezentarea poliedral

Un poliedru este un solid care este mrginit de un set de poligoane a cror laturi sunt membrii a unui numr par de poligoane i satisfac anumite condiii adiionale. Un poliedru simplu este un poliedru care poate fi deformat ntr-o sfer (nu are guri). O condiie adiional pentru poliedre simple este formula lui Euler: V E + F = 2, unde V este numrul de vrfuri, E este numrul de laturi, iar F este numrul de fee. Pentru poliedre cu guri, o generalizare a formulei lui Euler este Ve + F H = 2(C G), unde H este numrul de guri n fee, G este numrul de guri care trec prin obiect, iar C este numrul de pri componente, ale obiectului, separate (figura 4.10). Condiii suplimentare trebuie impuse pentru a garanta c obiectele reprezentate sunt solide. Pentru a reprezenta direcia n care poligoanele constituie fee ale poliedrului, vrfurile poligoanelor sunt stocate n sensul acelor de ceasornic, aa cum sunt vzute din exteriorul solidului. Pentru evitarea duplicrii n reprezentare a coordonatelor vrfurilor comune feelor, fiecare vrf a unei fee va fi reprezentat printr-un index (sau pointer) n lista de coordonate. Muchiile sunt reprezentate implicit prin perechi de vrfuri adiacente n lista de vrfuri a poligoanelor.

4.4.5

Reprezentarea prin laturi mobile (laturi naripate)

Reprezentrile simple fac ca anumite calcule s fie extrem de costisitoare. De exemplu, descoperirea a dou fee care mpart o muchie (test cerut de exemplu n validarea solidului) necesit o cutare n lista de laturi. Reprezentarea prin laturi mobile este o soluie la aceast problem (figura 4.11). Fiecare muchie ntr-o asemenea structur este reprezentat prin pointeri la cele dou vrfuri, la cele dou fee care mpart latura, i la patru muchii adiionale care pornesc din vrfurile ei. Fiecare vrf are un pointer spre una din muchiile care pornesc din el, iar fiecare fa spre una din laturile sale. Vrfurile unei muchii sunt parcurse n ordine invers cnd se urmresc vrfurile fiecrei din cele dou fee crora le aparine muchia. Dac vrfurile unei muchii sunt N i P, faa din dreapta este referit ca fa P, dac se traverseaz muchia de la N la P i ca fa N cnd se traverseaz muchia de la P la N. De exemplu, in figura 4.11, 106

I /

24 36

15

(b)

Figura 4.10: (a) Poliedre simple si valorile lor V, E si F (b) Poliedru cu dou guri n faa de sus si o gaur n faa de jos

dac N = Vi , P = V2, atunci faa Fi este faa V2 a muchiei E i , iar F 2 este faa Vi a muchiei E i . Cele patru laturi spre care fiecare punct al muchiei pointeaz sunt: N : dou laturi care mpart vrful N al muchiei pe faa N si muchiile anterioare (n sensul acelor de ceasornic) din faa P, E% si E 2 n exemplu; P : dou laturi care mpart vrful P al muchiei pe faa P si muchiile ante rioare (n sensul acelor de ceasornic) din faa N, E 4 si E$ n exemplu. Aceste patru muchii sunt aripile de unde structura de acest tip a preluat numele. Acest reprezentare este posibil numai pentru fee fr guri. Structurarea permite determinarea n timp constant a vrfurilor sau muchiilor asociate cu o muchie.

4.5

Instanerea primitivelor

In acest caz sistemul de modelare definete un set de primitive de solide tridi mensionale care sunt relevante n domeniul aplicaiei. Aceste primitive sunt parametrizate (de exemplu, una dintre primitive poate fi o piramid regulat cu un numr de fee dependent de utilizator). O astfel de primitiv (figura 4.12) poate fi privit ca o familie cu membrii care variaz ntr-un numr mic de parametrii (tehnologie de grup este termenul utilizat n sistemele CAD pentru aceast tehnic). Instanierea primitivelor este utilizat pentru crearea unor obiecte complexe, reprezentate prin ierarhii. Singura modalitate de a crea un nou tip de obiect este aceea de a scrie un cod care l definete (incluznd si procedurile de trasare a obiectului, sau de determinare a proprietilor fizice).

107

Figura 4.11: Structur de date pentru E\\ Vi, V2 , Fi si F 2 au pointeri la una din laturile lor

pinion

gros = 0.5 dini 12 gaura= 0.3 (a)

Figura 4.12: Dou pinioane definite prin instanierea primitivelor

Figura 4.13: (a) Obiect 2D care se mic (b) Obiect 3D obinut prin translatare (c) Obiect 3D obinut prin rotire

108

4.6

Reprezentarea prin micare (mturare)

Micnd un obiect de-a lungul unei traiectorii, urma lsat de acesta definete un nou obiect. Cel mai simplu obiect construit astfel este definit de o suprafa bidimensional care se mic de-a lungul unui drum liniar normal la planul ariei, crendu-se un volum translaional. Volumele rotaionale sunt definite prin rotirea unei arii n jurul unei axe (figura 4.13). Cazul general corespunde volumelor generate prin arii sau volume care se schimb n form, aspect i orientare, urmnd o traiectorie curb oarecare (modelarea acestora este extrem de dificil i nu ntotdeauna conduce la un solid - de exemplu micnd o arie bidimensional n propriul plan se genereaz tot o arie bidimensional n plus obiectul n sine se poate auto-intersecta astfel nct calculul de volum este complicat). In aplicaiile grafice se ntlnete noiunea de cilindru generalizat ca referin la un volum de mturare a unei seciuni bidimensionale. Aplicarea operaiilor booleene regularizate este dificil fr convertirea obiectelor ntr-o alt reprezentare. In plus volumele simple de mturare nu respect proprietatea de nchidere fa de operaiile booleene regularizate. De aceea numeroare sisteme de modelare a solidelor permit utilizatorilor constru irea unor obiecte ca volume de mturare, dar stocarea informaiilor despre aceste obiecte se realizeaz n alte reprezentri.

4.7

Reprezentarea prin partiionare spaial

In aceast reprezentare un solid este descompus ntr-o colecie de solide (reprezentate prin primitive) adjuncte, care nu se intersecteaz i sunt mult mai simple dect solidul reprezentat. Primitivele pot varia n tip, mrime, poziie, parametrizare i orientare.

4.7.1

Descompunerea celular

Fiecare sistem de reprezentare prin celule definete un set de celule-primitive care sunt parametrizate. Descompunerea celular difer de instanerea primitivelor prin aceea c putem compune obiecte complexe ntr-o manier asemntoare lipirii. Dei reprezentarea obiectului este neambigu, ea poate s nu fie unic (figura 4.14). Validarea descompunerii presupune testarea la intersecie a perechilor componente, test dificil de realizat.

(b)

(c)

Figura 4.14: Celule prezentate la (a) pot fi transformate pentru a construi acelai obiect n diferite moduri, cel puin dou fiind prezentate la (b) i (c)

109

4.7.2

Enumerarea ocuprii spaiale

Este un caz special de descompunere celular n celule identice aranjate ntro gril fix si regulat. Aceste celule sunt adesea numite v ox els (volume elements) n analogie cu termenul de p ix e l. Tipul cel mai comun de celul este cubul. Reprezentarea unui obiectului obiect presupune controlarea prezenei sau absenei unui celule la fiecare poziie a grilei (se decide numai care celule sunt ocupate si care nu). Astfel obiectul poate fi descris printr-o list unic si neambigu de celule ocupate. Testul de apartenen a unei celule la un obiect se realizeaz foarte simplu. Acest tip de reprezentare este des utilizat n aplicaiile biomedicale, n analiza datelor volumetrice obinute din surse pre cum scanarea tomografic axial computerizat (CAT). Unul dintre dezavanta jele acestei reprezentri este faptul c numai obiectele a cror fee sunt paralele cu feele cuburilor elementare si a cror vrfuri se potrivesc exact pe gril vor fi reprezentate cu exactitate. In celelalte cazuri, obiectele vor fi aproximate (figura 4.15). Acurateea reprezentrii poate fi mbuntit prin reducerea di mensiunii celulelor, ns apar probleme relative la stocarea informaiei relative la obiecte ntr-un spaiu de memorie rezonabil.

Figura 4.15: Tor reprezentat prin enumerarea ocuprii spaiale

4.7.3

Arbori octali

Prin utilizarea arborilor ca variant ierarhic de enumerare a ocuprii spaiale se pot evita problemele de stocare a informaiei. In cazul unei figuri bidimen sionale, aria de reprezentare este divizat n patru pri egale care pot aparine obiectului, s conin parial obiectul sau s nu conin pri ale obiectului. In cazul al treilea este necesar subdivizarea n alte patru pri egale despre care se poate afirma acelai lucru ca si n cazul anterior (figura 4.16). Informaia refer itoare la obiect este stocat sub forma unui arbore (figura 4.17). Generalizarea la cazul 3D presupune nlocuirea ptratelor cu cuburi; n fiecare nod al ar borelui reprezentrii vor exista nu 4 ci 8 legturi la noduri fii (figura 4.18). Operaiile booleene pot fi realizate cu uurin, iar transformrile simple pre cum rotaia cu 90 sau scalarea cu un factor 2 pot fi efectuate rapid. Una

110

(a)

(b)

Figura 4.16: Un obiect definit prin (a) enumerarea ocuprii spaiale (b) prin arbori

Figura 4.17: Structura de date pentru obiectul din fgure 4.16; F=plin, P=parial plin, E =gol

dintre operaiile complicate n aceast reprezentare este gsirea vecinului unui nod din reprezentare (cu care mparte o fa, muchie sau vrf).

Figura 4.18: Enumerarea cuburilor

111

4.7.4

Arbori binari pentru partiionare spaial (arbori


B S P )

Spaiul este divizat n perechi de subspaii, fiecare separat printr-un plan de orientare si poziie arbitrare. Fiecare nod intern a unui arbore BSP este asociat cu un plan si are doi pointeri spre doi fii, unul de fiecare parte a planului. Presupunnd c se cunosc normalele la suprafee, ce pointeaz spre exteriorul obiectului, fiul stng va fi n interiorul obiectului, iar fiul drept n exterior. Dac semispaiul de o parte a planului este divizat n continuare, atunci fiul va fi rdcina unui subarbore (figura 4.19). Dac semispaiul este omogen, atunci fiul este reprezentat printr-un nod terminal (regiune complet n interiorul poliedrului - celul ,,in - , sau complet n afara poliedrului - celul ,,out ). Teste, precum clasificarea punctual (determinarea poziiei unui punct fa de un solid), pot fi cu uurin realizate utiliznd aceast reprezentare.

(a)

(b)

Figura 4.19: Reprezentare BSP n 2D (a) Poligon concav (b) Arborele BSP

4.8

Geometria constructiv a solidelor (CSG)

In CSG, primitivele simple sunt combinate utiliznd operatorii booleeni regularizai care sunt direct inclui n reprezentare. Un obiect este stocat ca un arbore cu operatori ca noduri interne si primitive ca noduri terminale (figura 4.20). In anumite implementri primitivele sunt solide simple precum cuburi sau sfere, asigurndu-se astfel cerina ca obiectele obinute prin combinare reg ularizat s fie solide valide. Descompunerea celular si enumerarea ocuprii spaiale sunt cazuri speciale de CSG n care unicul operator este operatorul de lipire - reuniunea unor obiecte ce trebuie s aib intersecia boolean regular izat nul. CSG nu ofer o reprezentare unic. Aplicnd aceeai operaie la dou obiecte care iniial erau la fel se poate ajunge la rezultate diferite, precum este artat n figura 4.21 (a), (b), (c). La (d) si (e) faa obiectului (b) respectiv (c) este ridicat rezultnd dou obiecte diferite. Cu toate acestea, datorit abilitii n editarea modelelor, la tergere, adugare, nlocuire, cuplat cu forma relativ compact n care modelele sunt stocate, CSG este reprezentarea dominant n modelarea solidelor.

112

Figura 4.20: Un obiect definit prin CSG si arborele su

Figura 4.21: Obiectul din figura (a) poate fi definit prin operaii CSG diferite, precum se arat n (b) si (c); ridicnd faa superioar a lui (b) si (c) se obin obiecte diferite dup cum se observ n (d) si (c)

4.9

Compararea reprezentrilor

Au fost discutate cinci tipuri de reprezentare: instanierea primitivelor, mod elarea prin micare, reprezentarea prin frontiere, partiionarea spaial (in cluznd si descompunerea n celule), si geometria constructiv. Pe baza cri teriilor expuse n prima seciune a capitolului curent, aceste reprezentri pot fi comparate. In majoritatea sistemelor de modelare a solidelor se utilizeaz reprezentri multiple deoarece anumite operaii sunt mai eficiente ntr-o reprezentare dect n alta. Convertirea dintr-o reprezentare n alta se face cu aproximaie, astfel nct procesul este neinvertibil (se pierde din informaie).

113

Acuratee. Reprezentarea spaial i b-rep prin poligoane produc doar aproximri n cazul a numeroare obiecte. In anumite aplicaii, precum gsirea unui drum pentru un robot, aceasta nu este o problem dac aproximarea este realizat la o rezoluie adecvat. Pe de alt parte, pentru a crea imag ini realiste sau pentru calcularea interseciei obiectelor rezoluia trebuie s fie destul de nalt, fapt irealizabil n practic. De aceea sistemele ce produc imag ini de calitate nalt utilizeaz adesea CSG cu primitive nepoliedrale i b-rep cu suprafee curbe. Instanierea primitivelor poate produce imagini de calitate ns nu permite ca dou obiecte simple s fie combinate prin operatori booleeni. Domeniu. Domeniul obiectelor care pot fi reprezentate prin instanierea primitivelor sau micare este limitat. In tehnica enumerrii ocuprii spaiale poate fi reprezentat orice solid, dei adesea este necesar o aproximare. Permind unei reprezentri b-rep folosirea i altor tipuri de fee i muchii dect poligoane mrginite de linii drepte, aceasta poate fi utilizat cu succes pentru reprezentarea unei clase foarte variate de obiecte. Unicitate. Numai reprezentarea prin arbori octali i enumerarea ocuprii spaiale garanteaz unicitatea reprezentrii. Instanierea primitivelor nu garan teaz, n general, unicitatea: de exemplu, o sfer poate fi reprezentat printr-o primitiv sfer sau ca un elipsoid (dac setul de primitive este ales cu atenie, unicitatea poate fi asigurat). Validitate. Dintre toate reprezentrile, b-rep este cea mai dificil a fi validat (nu numai vrfurile, muchiile i structura de date a unei fee pot fi inconsistente, dar se poate ca feele i muchiile s se intersecteze). Pe de alt parte un arbore BSP definete n mod implicit o reprezentare valid, dar nu n mod necesar un solid mrginit. In ceea ce privete un arbore CSG (ntotdeauna mrginit dac primitivele sale sunt mrginite) sau un arbore octal verificarea de validitate este simpl; n cazul enumerrii ocuprii spaiale un asemenea test nu este necesar. nchidere. Prin instanierea primitivelor obiectele nu pot fi combinate, iar reprezentarea prin micare nu satisface condiia de nchidere la operaiile booleene. In b-rep apar adesea probleme cu nchiderea la operaiile booleene, ns aceste cazuri pot fi depistate i evitate. Compacitate. Din acest punct de vedere CSG este recomandat datorit abilitii de nregistrare rapid a operaiilor booleene i a transformrilor.

114

5. Realism vizual
5.1 Prelucrarea reprezentrilor simple ale ima ginii

Prelucrarea reprezentrilor simple este o etap de procesare grafic de com plexitate superior transformrilor simple ale imaginii. Scopul este mrirea cantitii de informaie disponibil pe ecran pentru a permite utilizatorului s neleag relaiile 3D existente ntre mai multe corpuri sau ntre componentele unui corp. Crearea unor imagini realiste este un scop important n domenii precum simularea, design-ul, jocuri si divertisment, cercetare si educaie, con trol si comand. Dificultatea fundamental n atingerea realismului vizual este complexitatea lumii reale. Termenul de imagine realist este utilizat pentru a referi o imagine care cap tureaz o cantitate apreciabil de efecte de interaciune a luminii cu obiectele fizice reale. Crearea unor imagini realiste implic un numr de etape. In primul rnd sunt generate modele ale obiectelor. Apoi se specific condiiile de vizualizare si condiiile de luminare. Sunt determinate suprafeele vizibile de ctre observator. Culoarea fiecrui punct n proiecia unei suprafee vizibile este o funcie de lumina reflectat si transmis de obiecte. Procesul de creare a imaginii din modele se numete interpretare (rendering). Pentru ca utilizatorul s neleag relaiile spaiale tridimensionale ntre mai multe obiecte, o simpl reprezentare poate fi adesea suficient (n figura 5.1 informaia este suficient pentru ca utilizatorul s declare obiectele ca fiind

Figura 5.1: Reprezentare prin poligoane a dou case

dou case, una n spatele celeilalte); n anumite contexte, adugarea unor detalii pot distrage atenia privitorului de la informaii mult mai importante care se furnizeaz. Prin proiectare se pierd informaii importante crendu-se adesea ambi guiti n imagine. Un exemplu concludent este reprezentarea prin cadru de srm a unui cub. Astfel, nu putem spune dac cubul (a) din figura 5.2 reprezint cubul solid (b) sau (c). In figura 5.3 se prezint efectul numit iluzia scrilor: n imagine sunt reprezentate scri care sunt vzute de sus, de jos, sau este descris un alt obiect dect o scar? Orice informaia suplimentar precum un obiect aezat pe scar poate rezolva ambiguitatea. 115

(a)

(b)

(c)

Figura 5.2: Iluzia cubului

Figura 5.3: Iluzia scrilor

Proieciile cele mai uor de realizat sunt proieciile ortografice. Obiectul reprezentat n figura 5.4 este uor de neles, ns dac obiectul reprezentat nn\

Figura 5.4: Proiecii ortografice ale literei L tridimensionale

este compus din numeroase pri nelegerea lui poate necesita ore de studiu. In proieciile axonometrice si oblice, coordonata 2 influeneaz coordonatele x si y din proiecie, ns obiectele de aceeai mrime aflate la distane diferite de planul de proiecie apar n imagine la aceeai mrime. Proiecia perspectiv poate produce adesea imagini ambigue: n figura 5.5.a poate fi o proiecie par alel a unui trunchi de piramid sau o proiecie perspectiv a unui paralelipiped dreptunghic. Interpretarea propieciei perspective este adesea bazat pe pre supunerea c obiectele mici sunt obiecte ndeprtate. Astfel, urmrind figura 5.5.b privitorul poate presupune c cea mai mare cas este cea mai apropiat de observator; n realitate, acea cas poate fi mai departe de observator dect casa mic n proiecie, ar dimensiunile reale ale ei pot fi mari comparativ cu dimensiunile casei mici (informaiile de detaliu precum trasarea ferestrelor pot rezolva aceast ambiguitate; dac utilizatorul este informat c n imagine sunt prezentate linii paralele, punctul de fug poate oferi informaia lips n stabilirea poziiei relative a celor dou case). In efectul numit iluzia adncimii pri ale obiectului care sunt mai ndeprtate de observator sunt afiate cu o intensitate mai sczut dect cele mai apropiate. Aceast tehnic este eficient n prezentarea unor scene cu 116

Figura 5.5: (a) Proiecia perspectiv a unui cub (b) Proiecia perspectiv a dou case

distane mari n adncime ntre obiecte. In decuparea n adncime se utilizeaz un plan de secionare ce se deplaseaz (dinamic) odat cu creterea adncimii - la un moment dat trebuie determinate punctele obiectelor care intersecteaz planul de secionare (aceste puncte vor constitui noua informaie care trebuie adugat la imaginea precedent). Texturile pot conduce adesea la rezolvarea ambiguitilor produse prin proiecie. In mod ideal texturile trebuie s respecte forma si orientarea suprefeelor pe care sunt aplicate. Pe ecranele monocrome, metoda texturii poate fi folosit pentru simularea umbrelor prin densitate de puncte. Culoarea poate fi de asemenea utilizat cu succes n relaia dintre obiecte. Deoarece nlturarea liniilor i suprafeelor invizibile din punctul observa torului distruge structura intern a obiectelor opace, aceasta nu trebuie s fie unica soluie ntr-o imagine pentru stabilirea relaiilor de adncime dintre obiectele scenei. In majoritatea tehnicilor utilizate n mediile grafice aceeai imagine este prezentat ambilor ochi ai utilizatorului. Creierul uman ns combin cele dou imagini diferite preluate prin ochi (pereche stereo) ntr-una singur si o interpreteaz ca fiind tridimensional. Exist o serie de tehnici pentru a oferi diferite imagini pentru fiecare ochi, incluznd holografia si ochelarii cu filtre polarizate. In concluzie, reprezentrile realiste ale corpurilor 3D se pot obine astfel prin combinarea cel puin a urmtoarelor patru metode: 1. eliminarea tuturor elementelor si prilor corpului care sunt mascate n anumite condiii de privire; 2. simularea iluminrii corpului cu un sistem de surse de lumin bine pre cizat (punctiforme, surse distribuite, lumin paralel, lumin ambiant); 3. reconstituirea detaliilor existente pe suprafa (a texturii materialului). 4. reconstituirea culorilor si nuanelor n care obiectul (corpul) original ar aprea, luminat n condiiile precizate. Metodele de asistare a procesului cognitiv prin mijloace grafice utilizate n sistemele CAD-CAM propun urmtoarele tehnici: (a) utilizarea imaginii perspective , care ncorporeaz informaii de profunz ime; (b) efectul cinetic de profunzime (proiecii dinamice): aceast tehnic se bazeaz pe micarea obiectului relativ la poziia observatorului. O micare edificatoare este rotaia n jurul unei axe verticale: liniile apropi 117

(c)

(d)

(e)

(f)

(g)

ate se mic mai rapid dect cele ndeprtate, liniile din pri opuse ale axei de rotaie se mic n sensuri contrare. indicii de intensitate: aceast metod implic variaia intensitii liniilor. Liniile ndeprtate vor aprea mai terse dect cele mai apropiate de u tilizatorul sistemului; secionarea n adncime: informaii referitoare la a 3-a dimensiune pot fi oferite prin deplasarea unui plan perpendicular pe axa Oz de-a lun gul acesteia. Planul numit limitator posterior dezvluie observatorului, pe msura deplasrii sale, obiectul, oferind astfel informaii relative la profunzime; secionarea frontal: planul de secionare este frontal, iar partea eliminat de acesta este cea mai apropiat de observator. Metoda este mai util dect cea anterior, deoarece poate furniza, printr-o poziionare adecvat a obiectului, orice seciune plan prin corpul respectiv; umbrirea: cunoscnd direcia luminii (pentru iluminarea paralel) sau poziia sursei (pentru iluminarea cu o surs punctiform), umbrele pot furniza informaii utile pentru sugerarea poziiei n spaiu. variaia de culoare: de-a lungul axei Oz se poate introduce o variaie spectral de culoare, de exemplu, de la rou (punctele apropiate) la violet (punctele ndeprtate), care s furnizeze informaii cu privire la relaiile de profunzime ntre elementele corpului.

5.2

Determinarea liniilor i suprafeelor vizibile

Date fiind un set de obiecte 3D i o specificare a vizualizrii, se cere deter minarea liniilor i suprafeelor obiectelor care sunt vizibile, fie din centrul de proiecie pentru proieciile n perspectiv, fie de-a lungul direciei de proiecie n cazul proieciilor paralele (figura 5.6).

(a)

(b)

< c>

Figura 5.6: Reprezentarea unui cap (a) fr ascunderea liniilor invizibile (b) cu linii ascunse trasate ca linii ntrerupte (c) cu ascunderea liniilor invizibile

Se pot imagina urmtoarele dou tipuri de coduri pentru rezolvarea proble mei:

118

f o r fiecare obiect din mediu do begin determin acele pri ale obiectului care nu sunt obstrucionate de alte pri ale oricrui alt obiect traseaz aceste pri n culoarea corespunztoare end sau f o r fiecare pixel din imagine do begin determin obiectul cel mai apropiat de observator care are o parte proiectat pe pixel traseaz pixelul n culoarea corespunztoare end Exist, corespunztor acestor modaliti de abordare a problemei, dou tipuri de algoritmi: 1. algoritmi spaiu-obiect (precizie obiect): depind de precizia cu care obiectele sunt definite i determin vizibilitatea fiecrui obiect; 2. algoritmi spaiu-imagine (precizie imagine): depind de rezoluia mediului de afiare i determin vizibilitatea pe pixel. Pentru n obiecte i p pixeli efortul de calcul este proporional, n primul caz, cu n 2 i, n al doilea caz, cu np. Dei n majoritatea situaiilor n 2 -C np, algoritmii spaiu-imagine sunt mai rapizi deoarece subrutinele de comparare individual sunt mult mai simple dect n cazul algoritmilor spaiu- obiect i deci consum mai puin timp. Algoritmii spaiu-obiect ofer o acuratee deosebit a imaginii. Algoritmii spaiu-imagine ofer rapiditate n construcia imaginii. Calculul n spaiuobiect se realizeaz cu precizie arbitrar. Imaginea final va fi corect chiar i mrit de mai multe ori. Soluiile n spaiu-imagine sunt calculate cu o rezoluie mai mic, de obicei cea a dispozitivului de afiare.

5.2.1

Simplificarea calculelor

Coeren Algoritmii de vizibilitate in seama ades de avantajele coerenei - gradul n care fiecare parte a unui mediu sau proiecia acestuia prezint similariti locale. Exist numeroase tipuri de coheren. Printre acestea se remarc: 1. coerena obiectelor: dac un obiect este complet separat de altul, comparaiile trebuie efectuate numai ntre cele dou obiecte nu i ntre feele sau muchiile componente; 2. coerena feelor: proprietile suprafeelor variaz de obicei puin de a lungul unei fee, permind astfel ca rezultatele calculelor core spunztoare unei pri ale feei s fie modificate incremental pentru a fi utilizate la prile adiacente; 3. coerena muchiilor: o muchie i schimb vizibilitatea numai dac trece prin spatele unei laturi vizibile sau strpunge o fa vizibil; 119

4. coerena liniilor scanate: setul de obiecte vizibile care se intersecteaz cu linia de scanare difer puin de setul corespunztor liniei precedente; 5. coerena ariilor: un grup de pixeli adiaceni este adesea acoperit de aceeai fa vizibil; 6. coerena adncimii: pri adiacente ale unei aceleiai suprafee sunt apropiate n adncine, pe cnd suprafee diferite la aceeai locaie de ecran sunt de obicei mult separate n adncime; astfel dac este calcu lat adncimea unui punct al suprafeei, adncimile punctelor din restul suprafeei pot fi determinate prin ecuaii simple cu diferene; 7. coerena cadrelor: imaginile aceluiai mediu la dou puncte succesive n timp sunt aproape similare, excluznd mici schimbri n obiecte i puncte de vedere; astfel, calculele realizate pentru o imagine pot fi reutilizate pentru urmtoarea imagine din secvena de cadre. Poziia observatorului Se consider c planul de proiecie este xO y al sistemului de vizualizare, iar (a) n cazul proieciei perspective, observatorul se afl pe axa z la o cot pozitiv, (b) n cazul proieciei paralele, direcia de proiecie este paralel cu axa z i n sens invers acesteia. Dac condiiile de vizualizare nu respect aceste reguli, se impune o faz de preprocesare n care obiectul este rotit i translatat pentru a se ncadra n condiiile standard. Teste de adncime Se pune problema dac dou puncte se acoper unul pe cellalt n proieciile pe planul xOy. In cazul proieciei paralele, dou puncte A (x \ ,y i,z i), B (x 2 ,y 2 ,Z2) sunt pe aceeai linie de proiecie dac i numai dac x\ = X2 , yi = t/2In cazul proieciei perspective, pentru simplificarea calculelor, comparaiile individuale privind relaiile de profunzime se fac dup aplicarea transformrii care duce centrul de proiecie n origine. Relaiile de verificat pentru ca A i B s fie pe aceeai linie de proiecie sunt: x\jz\ = X2 /Z2 , J/i/zi = 1 /2/22 (figura 5.7). Pentru fiecare comparare a dou puncte trebuie efectuate patru mpriri. O soluie pentru evitarea acestor mpriri este aplicarea unei transformri 3D obiectului real astfel nct obiectul transformat obinut s aib o proiecie paralel identic cu proiecia perspectiv a obiectului real (figura 5.8). Aceast transformare mut centrul de proiecie la ^00 pe axa z i transpune liniile de proiecie n linii paralele cu axa z, deci paralele ntre ele (vezi capitolul 2). Teste de interioritate Se pune problema interioritii unui punct fa de un contur poligonal. Fie F = (P\. /-j....... P) un poligon n planul de proiecie cu vrfurile P i(xi,yi), i = l , . . . , n i Pn = P i. Fie P (x ,y ) punctul pentru care trebuie s se efectueze testul de interioritate. In geometria elementar exist dou proceduri bine

120

Figura 5.8: Un cub (a) nainte si (b) dup transformarea perspectiv

cunoscute pentru realizarea testului de interioritate a unui punct fa de un contur poligonal n planul de proiecie: 1. calcularea sumei unghiurilor. Se noteaz cu a* msura unghiului fcut de segmentele PPi si PPi+i, (i = 1, . . . , n 1). Atunci, P este n exteriorul conturului poligonal dac ^27=1 ai ~ si este n interiorul conturului dac Y X i ai = ^ ( % ura 5.9.a); 2. calcularea numrului de intersecii (testul par-impar). Se consider o semidreapt, care pornete din punctul P si nu trece prin niciunul din vrfurile poligonului. Punctul este exterior poligonului dac numrul de intersecii ale semidreptei cu laturile lui F este par si este interior lui F dac acest numr este impar (figura 5.9.b). Teste minimax Testele minimax sunt utile n diverse momente ale algoritmilor: la calculul suprapunerii a dou poligoane n planul de proiecie, la calculul interioritii proieciei unui punct fa de proiecia unui poligon, la calculul interseciei a dou segmente, la calculul de adncime a unui punct fa de un poligon sau chiar a dou poligoane ntre ele n spaiul obiect. Aceste teste presupun doar comparaii. Ele pot duce la respingerea a nu meroase cazuri nefavorabile, dac sunt utilizate naintea calculelor propriu-zise.
121

( a )

(b)

Figura 5.9: Teste de interioritate prin (a) suma unghiurilor (b) numr de intersecii

( a ) (b) Figura 5.10: (a) Extinderile plane ale poligoanelor (b) Suprapunerea extinderilor plane

De exemplu, dou poligoane din planul de proiecie nu au nici un punct de intersecie dac valoarea minim a proieciei pe axa x a celui de al doilea este mai mare dect valoarea maxim a proieciei pe aceeai ax a primului. Se numete extindere plan (extindere ecran) a unui poligon dat din 3D, dreptunghiul de arie minim circumscris proieciei poligonului i care are o latur orizontal (figura 5.10.a). Pentru determinarea extinderii ecran se cal culeaz maximul i minimul coordonatelor proieciilor pe ecran ale vrfurilor poligonului (patru valori ce definesc colurile dreptunghiului). Dou poligoane ale cror extinderi ecran sunt disjuncte (nu se suprapun) nu se pot acoperi unul pe altul. Dac extinderile se suprapun, cu privire la suprapunerea poligoanelor nu se poate afirma nimic. In acest caz exist dou situaii (figura 5.10.b): (a) att extinderile, ct i proieciile poligoanelor, se suprapun; (b) extinderile se suprapun, dar proieciile poligoanelor sunt disjuncte. Analog se pot defini extinderile unidimensionale i spaiale. O extindere unidimensional se definete, relativ la un plan de coordonate, ca fiind zona band de lime minim n care se nscrie proiecia poligonului n acel plan, situat ntre dou drepte paralele i paralele cu una din axele de coordonate ale planului. Cazuri particulare sunt extinderile dup x, y, z ale poligoanelor (figura 5.11.a).
122

Figura

5 .1 1 :

(a) Extinderea unidimensional dup z (b) Extinderea spaial

Cnd extinderile dup z a dou poligoane nu se suprapun, atunci poligonul cu extinderea dup z mai apropiat de observator va acoperi cellalt poligon (cel puin parial) dac extinderile ecran se intersecteaz. Determinarea extin derii dup z se face cutnd maximul i minimul valorilor lui z pentru vrfurile poligonului considerat. Extinderile spaiale ale poligoanelor sunt paralelipipedele de volum minim n care se nscriu poligoanele respective i care au feele paralele cu planele triedrului de referin (figura 5.11.b). nainte de a compara dou poligoane, se compar extinderile acestora. Se elimin astfel o bun parte din calculele de intersecii, simplificnd i accelernd tratarea imaginii. Alunecare spate-fa Dac un obiect este aproximat printr-un poliedru solid, feele lui poligonale nchid volumul. Dac toate feele sunt definite astfel nct normalele la suprafee sunt orientate n exterior, atunci poligoanele a cror normal este orientat n direcia opus observatorului, nu vor fi vizibile de ctre observa tor. O asemenea fa poate fi identificat prin D N < 0 , unde D este raza de la observator la suprafa, iar N este normala la suprafa. Feele astfel determinate pot fi eliminate din calculele de vizibilitate, dac obiectul nu are guri (figura 5.12). Partiionaroa spaial Permite mprirea unei probleme mari ntr-un numr de probleme mai mici. Ca pas de preprocesare, se asigneaz obiecte sau proieciile lor la grupuri coer ente spaial. De exemplu, planul de proiecie se poate mpri cu o gril rect angular i se determin n fiecare spaiu al grilei care proiecii ale obiectelor se afl n ele. Astfel proiecia unui obiect trebuie comparat, pentru testul de suprapunere, numai cu acele proiecii care apar n spaiile grilei pe care le ocup. Partiionarea spaial presupune utilizarea unei grile tridimension ale. Procesul de determinare a obiectelor intersectate de un proiector poate fi accelerat prin determinarea n primul rnd a partiiilor pe care proiectorul le intersecteaz, i numai apoi testarea interseciei cu obiectele asociate cu aceste partiii. Dac obiectele sunt distribuite inegal n spaiu, este mult mai eficient o partiionare adaptiv, n care mrimea partiiei variaz. O posibilitate pen-

123

Figura 5.12: Seciune printr-un poliedru: poligoanele A, B , D , F sunt poligoane de spate, iar poligoanele (7, E, G , H sunt poligoane de fa

tril a realiza acest deziderat este subdivizarea recursiv a spaiului pn cnd un anumit criteriu de terminare este mplinit (de exemplu, subdivizarea poate fi oprit cnd n fiecare partiie exist un numr de obiecte mai mic dect un numr prestabilit).

5.2.2

Algoritmi spaiu-obiect pentru determinarea lini ilor vizibile

Algoritmul Robertson Este primul algoritm care a fost propus pentru determinarea liniilor vizibile ale unui poliedru. Se presupune c fiecare segment de linie este muchie pen tru un poligon convex. Iniial se utilizeaz alunecarea fa-spate pentru a nltura muchiile comune unei perechi de poligoane de spate. Apoi fiecare muchie rmas este comparat cu fiecare poliedru. Se aplic testele minimax pentru eliminarea poliedrelor a cror extinderi nu se intersecteaz cu cele ale segmentului. Un poliedru poate ascunde segmentul de linie sau poate deter mina ca ntregul segment, o parte sau dou a segmentului s rmn vizibile. Segmentele rmase sunt comparate cu urmtorul poliedru. Testul de vizibili tate se bazeaz pe o versiune parametric a proiectorului pornit de la observator la un punct al muchiei testate. Se determin acele valori ale ecuaiei liniei care fac ca proiectorul s treac printr-un poliedru, rezultnd astfel invizibilitatea punctului de capt. Proiectorul trece printr-un poliedru dac conine anumite puncte care sunt n interiorul tuturor feelor frontale ale poliedrului. Algoritmul reprezentrii incomplete Se consider o reprezentare poliedral a unui corp convex si o mulime de puncte care definesc aceast reprezentare (mulimea include cel puin vrfurile faetelor poligonale). Imaginea se reconstituie pe principiul: un segment este vizibil atunci cnd capetele sale sunt vizibile. Se alege ca obiectiv un anumit punct de pe suprafaa corpului si se depisteaz eventualele obstacole ce se interpun ntre punct si observator. 124

/
( a )

/
(b )

Figura 5.13: (a) Reprezentarea poliedral a unui paralelipiped (b) Imagine prin algoritmul reprezentrii incomplete

(a) (b ) ( c ) Figura 5.14: (a) Reprezentarea poliedral a unui corp concav (b) Imagine prin al goritmul reprezentrii incomplete (c) Imagine mbuntit prin creterea numrului de puncte ce descriu suprafaa Pentru determinarea vizibilitii punctelor reprezentrii poliedrale se par curg urmtoarele etape: (a) se iniializeaz cu valoarea zero un vector de dimensiune egal cu numrul de puncte prin care este reprezentat corpul. Acest vector este numit zona atributelor de vizibilitate. Simbolul 0 marcheaz punctele vizibile. Valoarea 1 indic un punct invizibil. (b) pentru fiecare fa poligonal se parcurg toate punctele reprezentrii cutnd acelea a cror proiecie pe ecran se afl n interiorul sau pe frontiera proieciei faetei, numite puncte obiectiv. Pentru fiecare punct obiectiv, 1. se calculeaz intersecia dintre dreapta de la punctul obiectiv la ob servator i suprafaa poligonal curent, rezultnd un punct numit punct masc potenial; 2. se compar distana de la observator la punctul obiectiv cu cea de la observator la punctul masc potenial. Dac prima este mai mare atunci se modific atributul corespunztor punctului din 0 n 1 (punctul este invizibil). In final zona atributelor de vizibilitate stocheaz informaii complete cu privire la vizibilitatea punctelor prin care corpul este aproximat. In figura 5.13.(b) se prezint rezultatul aplicrii algoritmului la paralelipi pedul (a). Algoritmul spaiu-obiect incomplet, ce reprezint numai curbele sau seg mentele cu ambele capete vizibile, se poate aplica cu succes dac corpul descris este convex, are un numr mic de faete sau dac imaginea ocup o zon mare pe ecran. Pentru corpurile concave, problema se complic (figura 5.14).

125

Algoritmul invizibilitii cantitative (algoritmul ppel) Algoritmul invizibilitii cantitative (algoritmul Appel) opereaz asupra solide lor formate din fee plane mrginite de poligoane. Metoda folosit este aceea de a testa vizibilitatea segmentelor din care sunt alctuite feele solidului. Invizibilitatea cantitativ a unui punct al unei linii este numrul de poligoane care mascheaz respectivul punct. Cnd o linie trece n spatele unui poligon, invizibilitatea cantitativ a punctelor sale este incrementat cu 1; cnd iese, este decrementat cu 1. O linie este vizibil numai dac invizibilitatea punctelor sale este 0 (figura 5.15). Se presupune c poligoanele din reprezentare nu se ntreptrund. Atunci o linie i schimb invizibilitatea cantitativ dac trece prin spatele unei linii de contur. O linie de contur este o muchie comun unei fee de spate i a uneia frontale. Se presupune c toate poligoanele au normala la suprafa orientat spre ex teriorul corpului. Un poligon de spate este identificat printr-un produs scalar pozitiv ntre normala la suprafa i vectorul ce pornete din centrul proieciei la un punct oarecare al poligonului. In figura 5.15.a A B, CD , DF, K L sunt linii de contur, iar CE, EF, J K nu sunt linii de contur. O linie de contur trece prin faa unei muchii dac strpunge triunghiul format de capetele muchiei i ochiul observatorului (figura 5.15.b). Se aplic testul punct interior unui triunghi, schimbarea invizibilitii cantitative este determinat de semnul produsului vectorial dintre muchie i linia de contur. Intr-un prim pas al algoritmului, se elimin muchiile care aparin unor fee total invizibile (poligoane de spate). In pasul al doilea se determin liniile de contur. Apoi se determin invizibilitatea cantitativ a vrfurilor. Pentru determinarea vizibilitii vrfurilor se consider un vrf iniial care se proiecteaz pe toate feele poligonale ale reprezentrii. Se rein doar proieciile interioare feelor. Numrul proieciilor mai apropiate de observa tor dect vrful studiat indic invizibilitatea cantitativ a acestuia. Aceast valoare se propag de-a lungul unei muchii, fiind modificat la trecerea prin spatele unei linii de contur. Cnd se atinge captul final al unei muchii, in vizibilitatea cantitativ asociat (emanat prin muchie) devine invizibilitatea cantitativ a tuturor liniilor care pornesc din respectivul punct. In propagarea invizibilitii cantitative apar probleme la vrfurile liniilor de contur care sunt comune mai multor fee frontale (de exemplu J K are invizi bilitatea cantitativ 0, iar K L , 1). Aceast schimbare poate rezulta dintr-un test suplimentar al muchiei fa de laturile care mpart vrful. Algoritmul A p p e l presupune c toate laturile poligoanelor sunt trasate ntro direcie consistent relativ la poligon, astfel nct semnul schimbrii n in vizibilitatea cantitativ este determinat de semnul dintre produsul vectorial a laturii cu linia de contur. Algoritmul poate beneficia de avantajele partiionrii spaiale. Fiecare muchie trebuie astfel comparat numai cu muchiile sau obiectele din spaiile grilei care conin proiecia sa. Aplicaie. Se consider o reprezentare poliedral prin triunghiuri. Mulimea liniilor de contur (conturul aparent) este mulimea segmentelor care au ambele capete vizibile i sunt laturi ale unor faete triunghiulare cu dou vrfuri vizi bile i unul invizibil. Segmentele din conturul aparent se pot depista uor dup 126

(b)
Figura 5.15: (a) Definirea liniilor de contur n algoritmul Appel (b) Schimbarea invizibilitii cantitative

parcurgerea algoritmului spaiu-obiect incomplet pe baza consultrii zonei atri butelor de vizibilitate. Se observ c, n cazul cnd ambele capete ale unui seg ment oarecare au acelai atribut de vizibilitate, numrul interseciilor cu con turul aparent este par, iar atunci cnd atributele sunt diferite, impar. Fiecare fa este descris prin coordonatele celor trei vrfuri i proieciile lor. Pen tru fiecare faet se parcurg laturile acesteia i pentru fiecare latur, numit latur curent se parcurge din nou corpul, faet cu faet. Pentru fiecare faet parcurs, dac are dou vrfuri vizibile i unul invizibil, atunci latura faetei cu dou capete vizibile face parte din conturul aparent i este numit segment curent. Se proiecteaz latura curent i segmentul curent pe planul de proiecie. Se calculeaz intersecia dintre dreapta suport a laturii curente proiectate i dreapta suport a segmentului curent proiectat. Dac intersecia se afl att ntre extremitile laturii curente proiectate ct i ale segmentului curent proiectat, atunci se stocheaz coordonatele interseciei. Se ordoneaz interseciile obinute, pornind de la un capt (ales arbitrar ca origine a laturii curente) ctre cellalt. Se obin astfel anumite intervale pe latura curent. Se consider intervalul dintre prima extremitate a laturii curente i prima intersecie. Pe acest interval latura se consider vizibil dac extremitatea laturii este vizibil i invizibil n caz contrar. Aceast informaie se reprezint printr-o variabil numit atribut de vizibilitate al intervalului (care are dou valori, 0 i 1, la fel ca atributul punctului). Pn la epuizarea intervalelor, se traseaz sau nu intervalul dup cum precizeaz atributul de vizibilitate al intervalului, apoi se complementeaz atributul de vizibilitate fa de 1.

5.2.3

Algoritmi spaiu-imagine

Vizualizarea suprafeelor descrise explicit Se consider cazul special al unui suprafee descrise explicit printr-o ecuaie de tipul y = f ( x ,z ) . Prin discretizarea funciei / pe o gril regulat n x i z se obine o matrice de valori y reprezentnd nlimi fa de grila n x i z aflat n planul y = 0. Presupunem c fiecare coloan a matricei corespunde unei singure valori x, iar

127

Figura 5.16: Reprezentarea unei suprafee explicite (a) fr sau (b)cu ascunderea liniilor

fiecare linie, unei singure valori 2. Indicii si valoarea elementului matriceal specific n mod unic un punct din spaiu. O trasare tip cadru de srm poate fi construit prin aproximarea liniar (figura 5.16). Se traseaz un set de linii poligonale ce trec prin punctele definite de fiecare linie a matricii (linii poligonale de 2 constant) si un set de linii poligonale ortogonale care trec prin punctele definite de fiecare coloan (linii poligonale cu x constant). Se consider n primul rnd problema trasrii liniilor poligonale de 2 con stant. Presupunem c cea mai apropiat linie poligonal este o latur a suprafeei. Liniile poligonale ce urmeaz a fi trasate se afl n plane par alele de 2 constant. Se traseaz liniile n ordinea cresctoare a distanei de la observator. Dac se traseaz o nou linie poligonal, ea este vizibil numai acolo unde proiecia sa se ridic deasupra celei mai nalte sau se afl sub cea mai joas siluet. Deoarece noua linie poligonal se afl ntr-un plan mai ndeprtat dect precedentele, nu poate acoperi liniile poligonale anterioare. Se consider frontiera siluet a liniilor poligonale care au fost trasate pn la un moment dat (figura 5.17). Cnd o linie poligonal nou este trasat, ea este vizibil numai acolo unde proiecia sa se ridic deasupra acestei siluete sau coboar sub siluet. De aceea pentru a determina care pri vor fi trasate, este nece sar compararea valorilor y ale proieciei cu cele corespunztoare ale siluetei calculate pn n acel moment. Dac se utilizeaz numai informaia referitoare la valorile y minime si maxime ale siluetei este vorba de algoritmul liniei orizontului (algoritmul Wright). Din punct de vedere al clasificrii algoritmilor de determinare a lini ilor vizibile, acesta este un exemplu de algoritm spaiu-imagine. Pentru reprezentarea siluetelor se utilizeaz dou tablouri unidimension ale, Ymin si Ymax, care conin valorile minime si maxime curente ale valo rilor proiectate y pentru o mulime finit de valori x (valorile sunt actualizate dup calcularea valorilor y ale fiecrei noi linii). Tablourile Ymin si Ymax sunt iniializate cu valori y care sunt sub, respectiv deasupra, tuturor valorilor y proiectate ale suprafeei. Cnd se traseaz o nou linie, valorile y proiectate ale fiecrei perechi de vrfuri adiacente sunt comparate cu valorile locaiilor core spunztoare n tablourile unidimensionale (figura 5.18). Dac ambele capete ale segmentului de linie sunt invizibile, tablourile siluetelor rmn neschim bate (segmentul C D ). Dac ambele capete ale segmentului sunt vizibile rela128

Figura 5.17: Siluete


y

Figura 5.18: Valorile y pentru poziiile de pe linie ntre punctele de capt trebuie interpolate si comparate cu cele din matricele siluete

tiv la una dintre siluete, atunci segmentul de linie este vizibil n ntregime si tablourile siluetelor trebuie actualizate (cazul AB sau E F ). Coordonatele x a dou vrfuri adiacente ntr-o linie poligonal de 2 constant de obicei corespund cu locaii neadiacente n tablourile siluetelor. In aceast situaie, valorile y care sunt inserate n locaii intermediare ale siluetelor pot fi obinute prin in terpolare liniar ntre valorile y proiectate a dou elemente adiacente a lui Y. In cazurile n care fie doar un vrf este vizibil i celelalt este invizibil (cazul B C sau D E ), fie ambele vrfuri sunt vizibile, dar fa de siluete diferite (cazul F G ), valorile y interpolate trebuie comparate cu cele ale locaiilor intermediare din tablourile siluetelor pentru a determina punctele de intersecie. Calitatea imaginii produse de algoritm depinde de relaia dintre numrul de puncte considerate pentru o siluet si rezoluia dispozitivului de afiare In figura 5.19 a treia linie nu va fi trasat dei trece peste intersecia celorlalte dou. (este necesar utilizarea unor tablouri-siluete cu rezoluie mai nalt).

129

Figura 5.21: Suprafa trasat prin linii poligonale cu x si z constant

Dac se traseaz liniile poligonale cu x constant, linia poligonal cu x con stant cea mai apropiat de observator (dreapt n figura 5.20) nu formeaz o latur a suprafeei. Pentru a trasa suprafaa corect, se traseaz liniile poligo nale de la dreapta celei mai apropiate n ordinea de la stnga la dreapta, iar cele la stnga celei mai apropiate, de la dreapta la stnga. In ambele cazuri, trasarea liniei poligonale se face n ordinea cresctoare a distanei de la obser vator. Suprapunerea liniilor poligonale cu x constant si 2 constant (figura 5.21) nu permite ntotdeauna o reprezentare corect a suprafeei. Un exemplu conclu dent este prezentat n figura 5.22. Soluia corect presupune trasarea concomi130

(a)

(b)

(c)

(d)

Figura 5.22: (a) Linii cu z constant; (b) Linii cu x constant; (c) Suprapunerea figurilor (a) si (b); (d) Soluia corect

Figura 5.23: Liniile poligonale cu x constant trebuie s fie procesate n ordinea corect: (a) linii procesate corect (b) linii procesate incorect

tent a liniilor poligonale. Setul de linii poligonale care sunt aproape paralele cu planul de vizualizare (n figura dat se consider cele de 2 constant) sunt procesate n ordinea descris mai sus. Dup ce o linie poligonal de 2 constant este trasat, se construiesc segmentele de linie poligonal cu x constant dintre linia poligonal nou trasat si urmtoarea linie poligonal. Segmentele de linie cu x constant se traseaz utiliznd aceeai structur de date-siluete care a fost utilizat pentru trasarea liniei poligonale de 2 constant. Procesarea are loc n ordinea cresctoare a distanei fa de observator. In figura 5.23.b liniile cu x constant au fost procesate n ordine incorect, de la dreapta la stnga (linii succesive sunt umbrite n matricea de liniile trasate anterior). Algoritmul tamponului de adncime Algoritmul 2-buf f e r sau al tamponului de adncime (algoritmul Catmull) este destinat eliminrii suprafeelor ascunse si este unul dintre cei mai simplii algo ritmi de vizibilitate. Este necesar nu numai f rame-buf f er-ul F n care sunt stocate culorile pixelilor, ci si un z -b u ffe r Z cu acelai numr de intrri n care o valoare 2 este stocat pentru fiecare pixel. z-buf feru l este iniializat la valoarea 2 a planului de decupare din spate, iar f rame buf feru l este iniializat cu culoarea fondului. Cea mai mare valoare care va fi reprezentat n z-buf f er corespunde planului de decupare frontal, cel mai apropiat de observator. Primitivele sunt convertite prin baleiere n f rame-buf f e r ntr-o ordine aleatoare. Dac un punct al prim itivei este proiectat si este mai apropiat de observator dect punctul curent nregistrat n buf fere , atunci culoarea si adncimea acestuia vor nlocui valori vechi. 131

Etapele algoritmului z-buffer-ecran pentru o reprezentare poliedral sunt urmtoarele: (a) se creeaz o matrice, fiecrui pixel corespunzndu-i un element din ma trice, numit z- buf f er-ecran; se iniializeaz z-bu ffer-u l la o valoare foarte mic pe care suntem siguri c z-tul punctelor corpului nu o pot a tinge i se iniializeaz ecranul la valoarea de intensitate corespunztoare fondului. (b) pentru fiecare fa poligonal se transpune poligonul astfel: pentru fiecare punct-pixel de coordonate (q, w) din interiorul sau de pe frontiera proieciei poligonului: 1. se reine cota z a punctului care are pe ecran proiecia n pixelul (q,w); 2. se compar z cu z(q,w ), valoarea existent n z-buffer la linia w, coloana q. Dac este mai mare (punctul este mai apropiat de ob servator) scrie z n z-buffer la linia w i coloana q i aprinde pix elul (q, w) conform informaiei de culoare sau umplere a poligonului curent. Algoritmul ofer avantajul de a putea trata suprafee strmbe (cuadrice, suprafee parametrice bicubice). Dezavantajul const n necesarul de memorie pentru funcionarea eficient. Pentru o rezoluie de 512x512 i o reprezentare a valorilor z pe 4 octei, necesarul de memorie depete IMo. Procedurile W r i t e P i x e l i E e a d P i x e l dintr-o procedur de trasare a unei primitive trebuie suplimentate cu procedurile W r i t e Z i E e a d Z care citesc i scriu n z buflfer.
Procedure z B u ffe rO var p z : in te g e r ; begin f o r y := 0 to Y m a x do f o r x := 0 to X m a x do begin W riteP ixel ( x , y , Background_value ) ; WriteZ (cc, y, 0) end f o r ea c h p o ly g o n do f o r fiecare p i x e l d in p r o i e c i a p o li g o n u l u i do begin
p z : = v a lo a r e a z a p o li g o n u l u i p r o i e c t a t p e p i x e l u l ( x , y ) ;

i f p z >=EeadZ(a:, y ) then begin WriteZ (cc, y , p z ) ; W riteP ixel (x, y , c u i.p o li g o n p r o i e c t a t p e p i x e l ( x , y ) ) end end end;

Figura 5.24 arat ce este posibil a se ntmpla la adunarea a dou poligoane (z-ul este indicat prin numr, culoarea prin nuane de gri).

132

Figura 5.24: z -b u ffe r: culoarea unui pixel este indicat prin nuan de gri, iar valoarea z este prezentat ca numr (a) adugarea unui poligon cu z constant n z-buf fe ru l gol (b) adugarea unui alt poligon care-1 intersecteaz pe primul

In mod normal 2 poate fi recuperat din ecuaia planului poligonului. Fie ax + by + cz + d = 0 ecuaia acestui plan. Atunci 2 = (ax + by + d)/c. Dac valoarea zi este determinat la (x, ?/), putem determina valoarea 2 la ( x +Ax , y) printr-o simpl incrementare a valorii z\ cu aAx/c (coeren n adncime). In convertirea prin scanare A x = 1 iar incrementul rmne constant. Un calcul similar se poate efectua pentru a determina prima valoare 2 de pe urmtoarea linie de scanare (incrementul fiind b/c). Algoritmul liniei de baleiaj Algoritmul s c a n - l i n e opereaz n spaiul-imagine crend imaginea linie cu linie. Diferena fa de algoritmul de conversie scan const n faptul c se trateaz o mulime de primitive, nu numai una singur. Se consider o reprezentare poliedral. Se presupune c nu exist poligoane care se strpung. Astfel calculul de adncime necesare la compararea a dou poligoane se face o singur dat. Se ine o gestiune a interseciilor si a proieciilor muchiilor si poligoanelor pe xOy prin: 1. o list a muchiilor ET (edge table). Intrrile n tabel sunt sortate n grupuri pe baza coordonatei y cea mai mic a laturii si, intrrile unui grup, pe baza coordonatelor x ale punctului de cpt cu y minim, iar intrrile cu acelai punct de minim, n ordinea cresctoare a x-ilor corespunztor celuilalt capt (cu y maxim). Fiecare intrare conine: (a) coordonata x a extremitii cu cel mai mic y, (b) coordonata y a celuilalt capt (maxim), (c) incrementul n x, inversul pantei muchiei, utilizat n saltul de la o linie de baleiaj la alta, 133

Figura 5.25: Dou poligoane procesate cu algoritmul sc a n -lin e

(d) codul de identificare al poligonului care conine muchia (o muchie apare de mai multe ori n list, corespunztor fiecrui poligon); 2. o list a poligoanelor PT (poligon table). Intrarea corespunztoare unui poligon conine informaiile: (a) codul de identificare, (b) coeficienii ecuaiei planului suport, (c) informaii privind culoarea sau umplerea poligonului, (d) o variabil de stare, iniializat de-a lungul procesului de baleiaj, care indic poziia poligonului relativ la linia de baleiaj (aceasta se afl n interior sau exterior poligon); 3. o list a muchiilor active AE T (active edge table) ine evidena muchi ilor intersectate de linia de baleiaj n ordinea cresctoare a x-ilor core spunztori interseciilor. Primul pas al algoritmului const n crearea primelor dou liste. Laturile sunt procesate de la stnga la dreapta. Apoi se baleiaz ecranul linie cu linie. Pentru fiecare linie, se creaz lista muchiilor active si se ordoneaz interseciile n aceasta. Se parcurge pixel cu pixel linia curent. Pentru fiecare pixel se compar abscisa curent cu interseciile din al treilea tabel. Dac abscisa core spunde unei intersecii, atunci: 1. se identific poligonul, se modific variabila de stare prin complementare (presupunem l= n intersecie, 0=afar); 2. se testeaz variabilele de stare: (a) dac o singur variabil are valoarea 1, linia de baleiaj taie n acel punct proiecia unui singur poligon si valorile corespunztoare ump lerii poligonului se trec n frame-buffer; (b) altfel, se calculeaz pentru fiecare poligon cota 2 din ecuaia planului (din PT). Se aprinde pixelul conform informaiilor corespunztoare poligonului celui mai apropiat (z -ul cel mai mare n ipoteza obser vatorului la 2 pozitiv). Se consider cazul celor dou poligoane din figura 5.25, pentru care
ET = (AB, A C , F D , F E ,D E , C B ),

134

Figura 5.26:

ET,

PT

si

AET

pentru algoritmului liniei de baleiaj

PT = (ABC, D E F ).

Variaia listei muchiilor active este prezentat n figura 5.26. Cnd linia de baleiaj cu y = a intersecteaz A B , variabila de stare a poligonului A B C se schimb. Fiind o unic intersecie, intersecia dintre poligon si linia de baleiaj este vizibil. La intersecia cu A C , variabila de stare este complementat. nainte de trecerea la noua linie de baleiaj se actualizeaz AET. La y = f3 exist dou poligoane care se intersecteaz cu linia de baleiaj, dar la un mo ment dat doar un poligon este vizibil. La y = 7 si intersecia cu D E , dou poligoane au variabila de stare setat. Se evalueaz 2 din ecuaia planelor pen tru y 7 si x corespunztor interseciei. In cazul dat, z-ul poligonului D E F este mai mare, deci punctul este vizibil si determin caracteristicile pixelului. Dac poligoanele se ntreptrund, algoritmul este modificat pentru a determina punctele de penetraie n linia de baleiaj (liste noi ET, PT si AET). Algoritmul poate fi utilizat si pentru suprafee curbe - ET si A E T sunt nlocuite cu o tabel de suprafee, repectiv o tabel de suprafee active. Algoritmi de subdivizare a ariilor n arii elementare Algoritmii de subdivizare a ariilor exploateaz coerena ariilor. Se consider o reprezentare poliedral. Se presupune c poligoanele nu se ntreptrund. O arie elementar este o zon a imaginii n care se poate determina uor care poligon dintr-o mulime dat este vizibil. Algoritmii bazai pe subdivizarea ariilor utilizeaz o strategie d ivide-et-impera. Prin mprirea imaginii n zone de arie din ce n ce mai mic se caut obinerea de zone n care s se situeze cel mult o parte a unui poligon din reea. Divizarea se oprete cel trziu n stadiul n care elementul de arie devine un pixel. Algoritmul Warnock. Fiecare arie este divizat n patru arii de mrimi egale. In fiecare etap a procesului recursiv, proiecia fiecrui poligon se afl, relativ la aria de interes, n una din urmtoarele situaii (figura 5.27): (a) conine aria de interes; (b) intersecteaz aria; (c) este inclus n arie; (d) este disjunct ariei. In procesul recursiv, aria de interes este tratat astfel: 1. dac aria nu conine nici un poligon, atunci este afiat culoarea de fond; 135

(a )

'

(b )

(c)

"

(d )

Figura 5.27: Relaii ale proieciei unui poligon cu elementul de arie: (a) nconjurtor (b) intersecteaz (c) coninut sau (d) disjunct

Aria de interes

(a)

Aria de interes
(b )

Figura 5.28: Dou situaii de nconjurare a ariei de interes n algoritmul Warnock

2. dac exist un singur poligon cu care se intersecteaz sau care este coninut n arie, atunci aria este colorat iniial cu culoarea fondului si apoi partea poligonului coninut n arie este convertit prin baleiere; 3. dac exist un singur poligon nconjurtor, dar nu si poligoane inter sectate sau poligoane coninute, atunci aria este umplut cu culoarea poligonului; 4. cazul contrar este cel al mai multor poligoane intersectate, coninute sau nconjurtoare. Algoritmul impune divizarea ariei pn cnd exist un poligon nconjurtor care se afl n faa celorlalte poligoane, ntreaga arie fiind umplut cu culoarea acestuia. Testul de poligon frontal (cazul 4) se realizeaz prin calcularea coordo natelor 2 ale planelor tuturor poligoenelor nconjurtoare, care intersecteaz sau sunt coninute la cele coluri ale ariei; dac exist un poligon nconjurtor a crui valori 2 ale colurilor sunt mai mari dect ale celorlalte poligoane, atunci ntreaga arie este umplut cu culoarea poligonului nconjurtor. In figura 5.28.a, cele patru intersecii ale poligonului nconjurtor sunt toate mai apropiate de punctul de vedere (n cazul aceestei figuri, punctul de vedere se afl la infinit pe axa z) dect sunt interseciile celorlalte poligoane (se va umple aria cu culoarea acestui poligon). In situaia din figura 5.28.b, dei poligonul intersectat se afl de partea opus planului poligonului nconjurtor, algorit mul cere divizarea ariei pn cnd poligonul nconjurtor are valorile 2 cele mai

136

1 2 2 1 /

1 2\ 2 1 4 3

1 9 2 1

y h
2 1 1

i
1

n- T

Figura 5.29: Exemplu pentru algoritmul Warnock

mari sau se ntlnesc cazurile 1, 2 sau 3. In figura 5.29 se consider un exemplu de subdivizare (triunghiul se afl n faa dreptunghiului). Numerele nscrise n ptrate se refer la cazurile mai sus menionate. Algoritmul opereaz n spaiul obiect, cu excepia conversiei scan. Cea mai mic arie este pixelul. La o rezoluie de 1024 x 1024 sunt necesare cel mult zece nivele de subdivizare. Algoritmul Weiler-Atherton. Subdivizarea ecranului este realizat de a lungul frontierei poligoanelor (n locul dreptunghiurilor din algoritmul Warnock). Algoritmul este asociat cu o metod de clipping. Fiind un algo ritm de subdivizare a ariilor, a fost inclus n aceast seciune, dei este un algoritm hibrid. Primul pas const n sortarea poligoanelor funcie de valoarea z cea mai mare. Poligonul cel mai apropiat de observator este utilizat n procesul de decu pare al celorlalte poligoane, rezultnd dou liste coninnd pri ale acestora sit uate n interiorul, respectiv exteriorul proieciei primului poligon. Poligoanele din lista de interior se afl, teoretic, n spatele poligonului i, deci, trebuie terse, fiind invizibile. Dac un poligon din lista de interior este mai apropiat dect poligonul de decupare, sortarea iniial nu ofer o ordine corect a prioritilor. Un asemenea poligon frontal este procesat recursiv pentru decupare fa de prile aflate n lista de interior. Cnd divizarea recursiv este terminat, al goritmul continu procesarea poligoanelor din lista de exterior. Decuparea este realizat cu o copie a poligonului iniial i nu cu fragmentele acestuia, procesul de decupare fiind mai puin costisitor. Algoritmul utilizeaz o stiv pentru a trata cazurile de suprapunere, ca cel din figura 5.30.C. Stiva conine o list a poligoanelor care sunt poligoane curente de decupare, dar a cror utilizare a fost ntrerupt datorit subdivizrii recursive. Dac un poligon din lista de interior se afl n faa poligonului de decupare, el este cutat n stiv. Dac este gsit n stiv, nu mai sunt necesare alte recursii, deoarece toate bucile de poligon din interiorul poligonului aflate n spate au fost deja eliminate. Algoritmul este descris n urmtoarea procedur:
Procedure W A _visibleSurface() begin

137

polyList :=lista

u n o r c o p i i a t u t u r o r p o lig o a n e lo r ;

s o r t e a z p o l y L i s t n o r d in e d e s c r e s c t o a r e d u p v a lo a r e a z

c le a r s t i v a ; w hile p o l y L i s t O n i l do WA_subdivide ( p r i m u l p o li g o n d in p o l y L i s t , p o l y L i s t ) end; procedure WA_subdivide( c l i p P o l y y o n :p o l y y o n ; var p o l y L i s t : L i s t O f P o l y y o n s ) var i n L i s t , o u t L i s t : L i s t O f P o ly y o n s ; begin i n L is t := n il; o u tL is t := n il; f o r fiecare p o li g o n n p o l y L i s t do begin
d e c u p e a z p o l i g o n u l r e la t i v la c l i p P o l y y o n , p i e s e l e in t e r io r e s e p la s e a z n i n L i s t , p i e s e l e e x t e r io a r e s e p la s e z n o u t L i s t n l t u r p o li g o a n e l e d in s p a t e le c l i p P o l y y o n d in i n L i s t

end; f o r fiecare p o lig o n d in i n L i s t c a r e n u e s t e n s t i v a i n u e s t e p a r t e a l u i c l i p P o l y y o n do begin push c l i p P o l y y o n n s t i v a ; WA_subdivide ( p o ly y o n , i n L i s t ) ; pop s t i v a end; f o r S e c a r e p o li g o n d in i n L i s t do afieaz p o lig o n ;
p o ly L is t := o u tL is t

end;

Algoritmul Encarnacao al reelei de explorare. Se aplic la suprafeele curbe care sunt definite ca reele de linii. Fragmentele (careurile) suprafeelor curbe sunt specificate numai prin cele 4 vrfuri ale lor, iar liniile drepte sunt folosite pentru a defini muchiile lor. Numele algoritmului deriv din faptul c o reea rectangular bidimensional de linii, numit reea de explorare, este suprapus pe planul-imagine al suprafeelor. Se constituie o list de fragmente de suprafa pentru fiecare arie a reelei de explorare. Dac n careu se afl prea multe elemente de suprafa se descompune careul de rastru n patru subcareuri. Testele mimimax sunt folosite pentru a stabili care arii de explorare vor fi suprapuse de un fragment specific de suprafa. Imediat ce s-a terminat preselectarea (constituirea listei), se execut algoritmul principal de vizibilitate. Un segment de linie este rupt ntr-un ir de puncte de test, spaiate n mod egal ntre vrfuri. Fiecare punct este testat pentru vizibilitate fa de fragmentele de suprafa care se afl n interiorul aceleiai arii de explorare cu punctul de testare. Ori nici un fragment din suprafa nu acoper punctul de testare, n care caz punctul de test este vizibil, ori cel puin un fragment acoper punctul de testare, n care caz este invizibil (se compar coordonata z a punctului de 138

test cu coordonatele z ale planurilor asociate fiecrui fragment de suprafa din lista asociat ariei curente de explorare). Dac toate punctele care se afl de-a lungul muchiei fragmentului sunt vizibile, ntreaga muchie se traseaz. Dac se constat c unele puncte sunt invizibile, sunt trasate numai acele seciuni ale muchiei fragmentului care se afl ntre punctele vizibile de test.

5.2.4

Algoritmi hibrizi: algoritmi cu list de prioritate

Algoritmii cu list de prioritate determin ordinea vizibilitii obiectelor. De exemplu, dac nici un obiect nu se suprapune cu altul n extensiile dup z, atunci este necesar doar o sortare a obiectului n ordinea cresctoare a lui z i trasarea lor n ordine. Poligoanele mai apropiate acoper ulterior poligoanele mai ndeprtate deja trasate. Dac obiectele se suprapun n extensiile lor dup axa z este necesar mprirea lor n mai multe obiecte astfel nct ordonarea menionat s fie posibil. Un algoritm de acest tip este hibrid, deoarece combin operaii n spaiul obiect cu operaii n spaiul imagine. Comparrile i mprirea obiectelor se realizeaz cu precizie obiect. Conversia scan care permite rescrierea pixelilor este realizat cu precizie imagine. Deoarece lista obiectelor sortate este creat cu precizie obiect, se poate realiza o retrasare corect la orice rezoluie. Algoritmii cu list de prioritate difer n modalitatea n care se determin ordinea obiectelor. Algoritmul de sortare n adncime Algoritmul de sortare n adncime (d ep th -sort), cunoscut i sub numele de algoritmul pictural sau algoritmul N e w e l l - N e w e l l - S a n c h a , convertete poligoanele unei reprezentri poliedrale n fram e-buf f e r n ordinea de scresctoare a distanei de la observator. Se parcurg trei etape: se sorteaz poligoanele conform ordinii cresctoare a valorii z celei mai mici a vrfurilor (sortare n spaiu-obiect); rezolv orice ambiguitate cauzat de suprapunerea extensiilor z (com parare n spaiu- imagine) prin descompunerea poligoanelor la nevoie; se transpun prin baleiaj, pe rnd, poligoanele pe ecran, n ordinea cresctoare a celei mai mici coordonate z. Poligoanele ndeprtate sunt primele transpuse pe ecran. Cele mai apropiate le mascheaz prin suprascriere. Compararea dintre dou poligoane presupune cinci nivele de testare (elimina torii). Dac extinderile z a dou poligoane consecutive Pi i P2 din lista sortat se suprapun, atunci: (1) Se compar extinderile dup x. Dac sunt disjuncte, poligoanele nu se suprapun; (2) Se compar extinderile dup y. Dac sunt disjuncte, poligoanele nu se suprapun; (3) Se testeaz dac Pi este n partea opus observatorului fa de planul lui P 2 . Se determin ecuaia planului lui P2 . Planul mparte spaiul n 2 zone. Dac P\ este n ntregime n zona mai ndeprtat, atunci este transpus primul pe ecran; 139

Figura 5.30: Cazuri n care extinderile dup z a poligoanelor se suprapun

Figura 5.31: (a) Testul 3 este fals, dar testul 4 este adevrat (b) Testul 3 este adevrat

(4) Se testeaz dac P2 este de aceeai parte cu observatorul fa de planul lui P \. Se determin ecuaia planului lui P i . Dac P2 se afl n ntregime n zona mai apropiat de observator, Pi este transpus pe ecran; (5) Se testeaz dac proieciile poligoanelor n planul (x, y) nu se suprapun. Dac nu se suprapun, Pi poate fi trasat naintea lui P2 (figurile 5.30 si 5.31). Dac cele 5 teste relativ la faptul c Pi nu acoper pe P2 se termin cu succes, trebuie testat urmtorul poligon care se suprapune n extinderea 2 cu P i . Dac unul din teste eueaz, se presupune pe moment c P ascunde pe Q si de aceea trebuie testat dac Q poate fi trasat naintea lui P. Testele 1, 2 si 5 nu trebuie repetate, se repet numai testele 3 i 4 n variant modificat. In cazul figurii 5.30.a, testul 3 modificat va avea succes. In cazul figurii 5.30.b, testele sunt neconcludente; unul dintre poligoane trebuie divizate de planul celuilalt, astfel nct poligonul ce se divizeaz se terge din list, fiind nlocuit cu prile sale. In cazul figurii 5.30.C se va crea o bucl n algoritm deoarece ntre fiecare dou poligoane se poate stabili o ordine. Pentru a evita ciclarea poligonul introdus ultimul n list va fi marcat. Dac primele cinci teste au euat i poligonul curent P2 este marcat, atunci nu se aplic testele 3 i 4 modificate, ci se divide Pi sau P2. Dac cele toate testele eueaz, se compar proieciile celor dou poligoane. Se calculeaz interseciile latur cu latur ale celor 2 proiecii. Dac cel puin una din intersecii este simultan inclus n laturile ambelor poligoane, atunci poligoanele se suprapun, se determin intersecia celor dou poligoane i fiecare poligon este nlocuit n list prin poligoanele componente. In caz contrar, poligoanele nu se mascheaz unul pe altul i se transpun pe ecran n oricare ordine.

140

Algoritmul arborelui binar de partiionare spaial (BSP) Este o metod extrem de eficient pentru determinarea relaiilor de vizibilitate ntre grupuri statice de poligoane tridimensionale. Este indicat utilizarea n special n cazul n care poziia observatorului se schimb, nu ns i poziia obiectelor. Se bazeaz pe urmtoarea observaie. Dac un plan separ o grup de poligoane de alte grup, iar grupul este de aceeai parte a planului cu ob servatorul, atunci grupul poate ascunde, dar nu poate fi ascuns de celelalte grupuri. Fiecare grup poate fi subdivizat dac se aleg plane corespunztoare de separare. Partiionarea mediului poate fi reprezentat printr-un arbore bi nar cu rdcina n primul plan de partiionare ales. Nodurile interne sunt de asemenea plane de partiionare; nodurile terminale sunt regiuni n spaiu. Algoritmul permite determinarea ordinii corecte pentru convertirea poligoanelor prin construirea unui arbore binar de poligoane, numit arborele BSP. Rdcina acestui arbore este un poligon care este utilizat pentru a mpri mediul n dou semispaii. Un semispaiu va conine toate poligoanele rmase n faa poligonului rdcin, relativ la normala la suprafa; cellalt subspaiu conine poligoanele din spatele poligonului rdcin. Orice poligon care are pri n ambele subspaii va fi divizat relativ la planul poligonului rdcin. Cte unul dintre poligoanele frontale i de spate vor deveni fii nodului rdcin i fiecare fiu este utilizat recursiv pentru a determina subgrupuri de poligoane relative la planele fiilor. Construcia arborelui se termin cnd fiecare nod conine numai un singur poligon (figura 5.32). Odat construit arborele, acesta poate fi traversat ntr-o manier asemntoare inordinii pentru a stabili prioritatea de afiare a poligoanelor dintr-un punct arbitrar de vedere. Dac observatorul este n semispaiul frontal al poligonului rdcin, atunci algoritmul trebuie s afieze prima dat poligoanele din spatele poligonului rdcin (care pot fi acoperite de acesta), apoi poligonul rdcin i n final poligoanele din semiplanul frontal (care pot acoperi poligonul rdcin). In mod similar se procedeaz n cazul cnd obser vatorul este n semispaiul din spatele rdcinii (ordinea de afiare a subarborilor acesteia este inversat). Dac poligonul este vzut numai ca o muchie n proiecie ordinea de afiare a subarborilor stnga-dreapta nu conteaz (figura 5.33).
type
B SP Jree= root

record :p o l y g o n
B S P J tree

b a c k C h ild , f r o n t C h i l d

end; fu n c tio n BSP_makeTree (pc% : U s t O f P o l y g o n s ) : ~ B S P J t r e e ; var r o o t :p o l y g o n ; b a c k L i s t , f r o n t L i s t : l i s t O f P o ly g o n s ; p , b a c k P a r t , f r o n t P a r t : p o l y g o n ; {p o lig o a n e convexe} begin i f p o l y L i s t e s t e v id then BSP_makeTree: = n il e ls e

141

Figura 5.32: Arbore BSP (a) naintea recursiei cu poligon 3 ca rdcin (b) construire subarbore stng (c) complet (d) arbore cu polig.5 ca rdcin

142

Figura 5.33: diferite

Dou traversri ale arborelui BSP corespunztoare la dou proiecii

begin
root b a c k L is t

:=BSP_selectAndRemovePoly { p o l y L i s t ) ; := n i l ; f r o n t L i s t := n i l ;

f o r fie c a r e p o lig o n r m a s n p o l y L i s t begin i f p o lig o n p n f a a r d c in ii then BSP.addToList(p, f r o n t L i s t ) e ls e i f p o lig o n p n s p a t e le r d c in ii then BSP.addToList (p, b a c k L i s t ) e ls e { P oligon u l p tre b u ie d iv iz a t } begin B S P .sp litP o ly (p, root, f r o n t P a r t ,b a c k P a r t ); BSP.addToList ( f r o n t P a r t , F r o n t L i s t ) ; BSP.addToList ( b a c k P a r t ,b a c k L i s t ) end end; BSP_makeTree: =BSP_combineTree(BSP_makeTree( f r o n t L i s t ) , r o o t , BSP_makeTree ( b a c k L i s t ) ) end end; procedure BSP.displayTree ( t r e c : ~B S P - t r e e ) ; begin i f a r b o r e n u e s t e v id then i f o b s e r v a t o r n fa a r d c in then begin BSP_displayTree ( t r c c ~ .b a c k C h i l d ) ; displayP olygon (tr e e ~ . r o o t ) ; BSP_displayTree ( t r c c ~ . f r o n t C h i l d ) end e ls e begin BSP_displayTree ( t r c c ~ . f r o n t C h i l d ) ;

143

displayPolygon(tree~ . r o o t ) ; BSP_displayTree ( t r e e ~ .b a c k C h i l d ) end end;

5.2.5

Algoritmul drumului optic (ray-tracing)

Algoritmul r a y -tr a c in g determin vizibilitatea suprafeelor trasnd o raz imaginar de lumin de la ochiul observatorului la obiectele din scen. Sunt date un centru al proieciei (ochiul observatorului) i o fereastr ntr-un plan arbitrar. Fereastra este divizat ntr-o gril dreptunghiular ale crei elemente core spund pixelilor din imaginea final. Pentru fiecare element al grilei din fer eastr, raza vizual este trasat de la centrul proieciei prin centrul elemen tului spre scen (figura 5.34). Pixelul corespunztor elementului se aprinde conform informaiilor obiectului care este intersectat primul (prototipul algo ritmilor spaiu-imagine). Raza este definit parametric. Pentru fiecare obiect este necesar o reprezentare care permite determinarea cu uurin a interseciei cu raza. Algoritmul r a y -tr a c in g poate fi sintetizat astfel:
s e le c t e a z c e n t r u l p r o i e c i e i i fe r e a s tr a d in p la n u l d e p r o i e c i e

f o r S e c a r e li n i e d e b a l e ia j n im a g in e do f o r S e c a r e p i x e l d in lin ia d e b a le ia j do begin
d e t e r m i n r a z a d e la c e n t r u l d e p r o i e c i e p n la p ix e l;

f o r S e c a r e o b i e c t d in s c e n do i f o b i e c t u l e s t e i n t e r s e c t a t i e s t e c e l m a i a p r o p ia t p n n a c e s t m o m e n t then
r e i n e in t e r s e c i a i n u m e le o b i e c t u l u i s e t e a z c u lo a r e a p i x e l u l u i la c e a a o b i e c t u l u i c e l m a i a p r o p ia t

end;

C de proiecie

Fereastra Scen

Figura 5.34: Algoritmul drumului optic Problema principal asociat cu acest algoritm este timpul de calcul al interseciilor. Pentru o imagine 1024 x 1024 a 100 de obiecte este necesar calcularea a 100M de intersecii. In consecin, mbuntirea eficienei algo ritmului presupune fie accelerarea, fie evitarea calculelor de intersecii. 144

(a)

(b)

Figura 5.35: (a) Plcile infinite ce ncadreaz un obiect bidimensional (b) Ierarhia volumelor

Dac algoritmul z-buf f er calculeaz informaia numai pentru acele obiecte care se proiecteaz pe pixel, algoritmul r a y -tr a c in g intersecteaz (teoretic) fiecare raz cu fiecare obiect al scenei. Algoritmul z -b u ffe r aproximeaz obiectele ca mulimi de valori z n lungul liniilor de proiecie ce intersecteaz obiectul, pe cnd algoritmul r a y -tr a c in g aproximeaz obiectele ca mulimi de intersecii n lungul fiecrei linii de proiecie ce intersecteaz scena. Optimizarea calculelor de intersecii Volumele mrginite ofer o modalitate atractiv de descretere a timpul necesar calculelor de intersecii. Un obiect care este relativ greu de testat la intersecie cu o raz poate fi inclus ntr-un volum a crui intersecii se pot calcula cu mai mult uurin (precum o sfer, un elipsoid, un solid rectangular). Obiectul nu trebuie testate pentru intersecie dac raza nu intersecteaz volumul su de mrginire. Un volum de mrginire poate fi, de exemplu, i un poliedru convex definit prin perechi de plane paralele ce mrginesc obiectul (figura 5.35.a). Evitarea calculelor de intersecii Se aplic o tehnic de preprocesare pentru partiionarea razelor i obiectelor n clase pentru a limita numrul de intersecii cerute, pe baz de: ierarhie, partiionare sau modelarea obiectelor prin CSG. Ierarhie. Volumele mrginite pot fi organizate ntr-o ierarhie cu obiectele scenei la nivelul inferior i volume mrginite ca noduri interne (figura 5.35.b). Un volum-fiu nu va intersecta o raz dac volumul-tat nu o intersecteaz. Astfel testul de intersecie ncepe cu rdcina i multe ramuri ale ierarhiei sunt respinse uor. Procedura poate fi mbuntit printr-o eviden a interseciilor corespunztoare unei raze. Schematizat, parcurgerea ierarhiei se face astfel:
procedure HIER_traverse(r : r a y ; n : n o d e ) begin if r in t e r s e c t e a z v o lu m u l m r g in it a l u i n then if n e s t e n o d t e r m in a l then
in t e r s e c t e a z r c u o b i e c t u l n

145

else for Secare fiu c a lui n do HIER_traverse(r, c) end;

Aceast procedur poate fi modificat innd seama c scopul traversrii este gsirea celei mai apropiate intersecii a razei cu obiectele scenei
Procedure KayKajiva; var

p: *obiect; t : f loat; c : ''nod;


begin t := oo; p :=nil; if raza intersecteaz volumul mrginit a rdcinii then
insereaz rdcina n coad;

while coada este nevid i distana la nodul top < t do begin c := nod top eliminat din coad; if c este nod terminal then begin
intersecteaz raza cu obiectul c; if raza se intersecteaz cu obiectul iar distana pn la intersecie < t then

begin
t :=distana; p := obiect

end end else for fiecare fiu c do begin


intersecteaz raza cu volumul de mrginire; if raza intersecteaz volumul then insereaz fiul n coad

end end end;

Partiionare. Ierarhia volumelor mrginite organizeaz obiectele de jos n sus, iar p a rtiion a rea divide spaiul de sus n jos. Se determin prima dat volumul care mrginete scena. Acest volum este divizat n subvolume egale, fiecrei partiii fiindu-i asociat o list de obiecte pe care le conine parial sau n ntregime. Se vor cuta interseciile numai cu acele obiecte care se afl n volumele prin care trece raza. In cazul interseciei unui corp cu raza este necesar testul de apartenen a punctului de intersecie la partiie. De exemplu, n figura 5.36, obiectul B este intersectat este intersectat n partiia 3 dei este ntlnit n partiia 2. Pentru a nu efectua interseciile unui corp cu raza de mai 146

lt

Figura 5.36: Divizarea volumului care mrginete scena

multe ori este necesar ntreinerea unei liste a interseciilor funcie de obiect. Dac obiectele nu sunt uniform distribuite n spaiu este de preferat utilizarea unei subdivizri adaptive a scenei care produce partiii inegale (de exemplu, utiliznd arbori octali). Partiionarea spaial i ierarhia pot fi foliste mpreun pentru a combina avantajele (de exemplu, ierarhii cu noduri interne tip list sau grile tridimensionale). Modelare prin CSG. Dac obiectele sunt modelate prin CSG, intersecia fiecrei raze cu obiectele primitive conduce la o mulime de valori t, fiecare specificnd un punct n care raza intr sau iese din obiect. Astfel fiecare t de finete nceputul unui interval n care raza este fie n interiorul, fie n exteriorul obiectului. Dac obiectul este obinut prin operaii booleene din mai multe primitive, intervalele de intersecie ale razei cu obiectul compus se pot obine aplicnd aceleai operaii booleene asupra intervalelor de intersecie cu primi tivele din care este compus obiectul (figura 5.37). Fiecare obiect compus este descris printr-un arbore n care nodurile terminale sunt primitivele, iar nodurile intermediare, operaiile booleene. Dac nu exist o intersecie a subarborelui stng cu raza, atunci obiectul nu se va intersecta cu raza n condiiile n care operaia din nodul rdcin este o diferen sau o intersecie. Funcia CSG_combine, descris mai jos n pseudocod, preia dou liste de puncte de intersecii i le combin ntr-o unic list care este ordonat n funcie de t cresctor.
function CSG_intersect (var raza: ~Ray; var nod : ''CSG-node): var

intervList

leftlntersect,rightlntersect : intervList;
begin if nod este compus then begin leftlntersect :=CSG_intersect (raza, nod".leftChild); if ( leftlntersect =nil) and (nod".op < > union) then CSG_intersect:=nil else begin riyhtlntersect :=CSG_intersect (raza, nod".riyhtChild); CSG_intersect:=CSG_combine (nod" .op,

leftlntersect, riyhtlntersect) 147

Figura 5.37: Combinarea intervalelor de intersecie raz-obiect

end end else CSG_intersect :=interseciile obiectului cu raza end;

Supra-esantionarea Fenomenul de a lia s in g spaial poate aprea datorit rezoluiei insuficiente a reelei de eantionare. Problema este rezolvabil prin mrirea rezoluiei reelei doar n mod relativ: dac se mrete dimensiunea unui ochi al reelei, deci si a imaginii, efectul reapare. Obiectele prea mici relative la dimensiunea unui ochi (al reelei) pot adesea ,,scap reelei de eantionare (figura 5.38). Orict de multe raze (orict de dese) de eantionare se folosesc, ar putea exista obiecte mai mici dect distana dintre raze. Pe de alt parte, s-ar putea afirma c, dac un obiect este att de mic nct nu poate fi depistat de razele de eantionare, atunci nu are importan dac apare n imagine sau nu. O soluie posibil, simpl din punct de vedere conceptual, pentru problema de mai sus, const n utilizarea mai multor raze care trec prin acelai pixel, culoarea final fiind o medie a culorilor acestor raze. Supra-esantionarea este

148

Figura 5.38: Obiect prea mic pentru a fi intersectat de razele de eantionare

ns extrem de costisitoare: dac factorul de multiplicare al razelor pentru un pixel este n, atunci timpul de trasare crete de cel puin n ori. Pentru a evita scparea unor obiecte printre razele ce trec prin poziii fixe, se poate utiliza o distribuie aleatoare a razelor (dar uniform) peste regiunea corespunztoare pixelului, prin supra-eantionare stohastic. Algoritmul de supra-eantionare adaptiv pornete de la o reprezentare prin cinci raze (figura 5.39). Dac fiecare din razele de start au culori apropiate, se va utiliza media lor. Dac razele de start difer n culoare, atunci se subdivide pixelul n regiuni mai mici i se repet pasul pentru fiecare nou regiune. Astfel, multiplicarea razelor nu se face pe regiuni de culoare constant, ci adaptiv, acolo unde apar variaii. Se consider c, n figura 5.39 (a), razele care trec prin A, D i E au culori similare, ceea ce nu poate fi afirmat i despre B, C i E. Regiunea mrginit de B i E este studiat mai n amnunime. Se traseaz noi raze prin F, G, H (figura 5.39.b). Se compar cele cinci culori. Presupunem c razele ce trec prin F, B, H i G au culori similare, mai puin E cu G. Regiunea mrginit de G i E este studiat mai amnunit. Se traseaz trei noi raze, prin J, K i L din figura 5.39.C. Presupunem c toate razele noii regiuni au culori similare. Se revine la regiunea iniial, pentru a studia n amnunime perechea de raze ce trec prin C i E. Se traseaz dou noi raze, prin Al i N din figura 5.39.d. Presupunem c razele specifice noii regiuni au culori similare, mai puin cele care trec prin C i M . Regiunea mrginit de aceste dou puncte este analizat n amnunime (figura 5.39.e). Presupunem c n noua subregiune nu exist variaii semnificative de culoare. Culoarea final este determinat printr-o medie ponderat: 1 (A 4 J+ K H + AI D F + G B + G H + G

G+ K

L+K M +Q

E+K P+Q C+Q

E+M R+Q

N + M

Calcule de intersecii Partea principal a oricrui pachet de programe pentru r a y -tr a c in g ("inima o constituie un set de rutine de intersecie raz-obiect.

149

(a)
A

C F

D B G L M

(b)
A

C
p

D B
" 1 J

(c)

H
i

(d)

1 1 1

N R C

(e)

Figura 5.39: Pai ntr-un algoritm de super-eantionare adaptiv

Intersecia razei cu o sfer soluia algebric. Fie raza definit prin R o(xo,yo,zo) i direcie D(xd,yd,Zd), vector normalizat, astfel nct ecuaia parametric (explicit) a razei este R(t) = R q + t D, t > 0. Sfera se definete prin centru C (x c,y c,z c) i raz r. Atunci ecuaia interseciile corepund unui t ce verific ecuaia: (x0 + tx d - x c)2 + (y0 + tyd - ycf + (zo + tzd - zcf = r2. Soluiile ecuaiei de grad doi sunt: _ - b - y'b2 - 4c h ---------7 .---------- j 2a _ - b + Vb2 - 4c h -------------------- , 2a

unde a = x 2 d+ % y d 2 + z2 d = 1, b = 2[xd(x0 - x c) + yd(yo - Vc) + zd(z0 - zc)], c = (xq x c)2 + (yo t/c)2 + (zo zc)2 r2. Algoritmul de intersecie decurge astfel: Pas 1: se calculeaz a, b, c (8 adunri/scderi i 7 nmuliri); Pas 2: se calculeaz discriminantul ecuaiei n t (1 scdere, 2 nmuliri i 1 comparaie); Pas 3: se calculeaz to i se decide dac soluia cutat, adic to > 0 ( 1 scdere, 1 nmulire, 1 radical i 1 comparaie); Pas 4: dac to < 0, atunci se calculeaz ti i se decide dac e soluia cutat, adic ti > 0 (1 scdere, 1 nmulire i 1 comparaie); Pas 5: se calculeaz componentele punctului de intersecie (3 adunri, 3 nmul iri); Pas 6: se calculeaz normala la suprafa n punctul de intersecie (3 scderi, 3 nmuliri). Pentru cazul cel mai defavorabil se efectuaez 17 adunri/scderi, 17 nmuliri, 1 radical, 3 comparaii. Numrul de operaii se poate reduce prin abordarea soluiei geometrice.

150

Figura 5.40: (a) O singur intersecie (b) Calculul valorilor w

Intersecia razei cu o sfer soluia geometric. Fie L = \C i?o|Dac L2 < r2, originea razei este n interiorul sferei, iar dac L 2 > r2, originea este pe sfer sau exterioar sferei, astfel nct raza poate s nu intersecteze sfera. Problema determinrii distanei minime de la raz la centrul sferei este echivalent cu a gsi intersecia razei cu planul perpendicular pe raz i care trece prin C. Se noteaz cu i produsul scalar t\ = (C Ro) D. Dac i < 0, atunci centrul sferei este n spatele lui Ro (figura 5.40.a). Distana minim este L2 uf. Se determin cantitatea 2 = r2 L2 + u\. Dac 2 < 0, raza nu intersecteaz sfera (figura 5.40.b). Altfel, valoarea parametrului t corespunztor interseciei este _ f 1 y/u2 , 1 1 + y/u2 , raz cu origine exterioar sferei, raz cu origine interioar sferei.

Algoritmul de intersecie bazat pe aceste calcule const n urmtorii pai: Pas 1: determin L2 (5 adunri/scderi, 3 nmuliri); Pas 2: calculeaz 1 (2 adunri, 3 nmuliri); Pas 3: test de exterioritate i ndeprtare: 1 < 0 i \ L \ > r (2 comparaii); Pas 4: determin 2 (2 adunri/scderi, 1 nmulire); Pas 5: test dac 2 < 0 (1 comparaie); Pas 6: calculeaz t corespunztor interseciei (1 adunare/scdere, 1 radical); Pas 7: calculeaz coordonatele punctului de intersecie (3 adunri, 3 nmuliri); Pas 8: calculeaz normala n punctul de intersecie (3 adunri, 3 nmuliri). In cel mai defavorabil caz se efectueaz 16 adunri/scderi, 13 nmuliri, 1 radical, 3 comparaii. Se observ reducerea numrului de operaii fa de soluia algebric, fapt ce permite o procesare mai rapid. Intersecia razei cu un plan. Fie vectorul unitar normal la plan Pn(a, b, c), iar d, distana de la originea sistemului de coordonate la plan. Din ecuaia planului Pn (Ro + tD) + d = 0 rezult t- ul interseciei
^

_ ~

Pn ' Ro + d P -D '

Numitorul expresiei, vj = Pn D, este o valoare decisiv pentru intersecie. Dac va = 0, atunci raza este paralel cu planul (deci nu intersecteaz planul). 151

Dac Vd > O, normala la plan se "ndeprteaz de raz i, dac planele sunt considerate cu o singur fa (exterior), atunci algoritmul se termin. Altfel, se calculeaz numrtorul expresiei lui t, vq = (Pn Ro + d) i apoi t = vq/vdDac t < 0, atunci linia definit de raz intersecteaz planul n spatele originii razei i, deci, nu exist intersecia cutat. In mod obinuit, normala la plan de care este nevoie n algoritm este cea aflat de aceeai parte a planului ca i raza. De aceea este necesar ajustarea semnului normalei Pn n funcie de relaia sa cu vectorul de direcie D al razei. Astfel, Pn este nlocuit n ecuaii cu Pn dac Vd < 0. Algoritmul de intersecie const n urmtorii pai: Pas 1: se calculeaz Vd i se compar cu 0 (2 adunri, 3 nmuliri, 1 comparare); Pas 2: se calculeaz Vq i t i se compar t cu 0 (3 adunri, 3 nmuliri, 1 comparare); Pas 3: se calculeaz coordonatele punctului de intersecie (3 adunri, 3 nmul iri); In total, n cel mai defavorabil caz, se efectueaz 8 adunri/scderi, 9 nmuliri, 2 comparri. Intersecia cu un paralelipiped. Acest tip de intersecie este util att n cazul obiectelor paralelipipedice, ct i n cazul cnd obiecte complicate (com plexe) sunt ncadrate ntr-un paralelipiped (volume de mrginire) cu care se testeaz intersecia i, n caz afirmativ, se ncearc determinarea interseciei cu obiectul n cauz. Ideea de baz const n a considera un paralelipiped ca volu mul obinut prin intersecia a trei perechi de plane paralele. Raza intersecteaz fiecare pereche de plane paralele ntr-un punct mai apropiat i ntr-un punct mai ndeprtat. Dac cea mai mare dintre valorile apropiate este mai mare dect cea mai mic dintre valorile ndeprtate, atunci raza nu intersecteaz paralelipipedul (altfel, l intersecteaz). Fie un paralelipiped cu laturi paralele cu axele de coordonate, definit prin: punctul cel mai apropiat de origine, B i( x i ,y i ,z i ) i punctul cel mai ndeprtat de origine, B h(xh,y h,z h). Algoritmul de test al interseciei este urmtorul: 1. fie tmin = tmax = oo (arbitrar de mari); 2. pentru fiecare pereche de plane paralele delimitatoare ale paralelipipedu lui (paralele cu axele x, y, z) se efectueaz urmtoarele (exemplificare pentru cazul planelor paralele cu axa x): (a) dac Xd = 0, raza este paralel cu planele i dac X Q nu se afl ntre planele parelele (X 0 < X\ sau X Q > X^), atunci nu exist intersecie; (b) altfel, raza nu este paralel cu planele i - calculeaz distanele pn la interseciile cu planele: ti = (X i X 0 ) / X d , h = (X h - X 0)/X d; - dac ti > t2, interschimb ti cu t2; - dac ti > tmin, atunci ti = tmin', - dac t2 < tmax, atunci t2 = tmax 5 - dac tmin > tm ,ax, atunci paralelipipedul nu este intersectat; - dac tmax < 0, atunci paralelipipedul este n spatele razei; (c) continu cu alte perechi de plane

152

3. dac testele de respingere de mai sus nu au succes, raza intersecteaz paralelipipedul n dou puncte corespunztoare lui t min i tmax

5.2.6

Comparaii ntre algoritmii de vizibilitate

Algoritmii de vizibilitate pot fi clasificai dup ordinea n care sorteaz informaia. Algoritmul de sortare n adncime efectueaz o sortare dup z, apoi dup x i y (testele 1 i 2); astfel este numit un algoritm zxy. Algoritmul liniei de baleiaj sorteaz dup y (o sortare n grup), apoi dup x i n final se face o cutare n z a poligoanelor celor mai apropiate de observator; este un algoritm yxz. Algoritmul Warnock realizeaz consecutiv sortarea n x i y, apoi se face o cutare dup z; este un algoritm (xy)z. Algoritmul z -b u ffe r nu realizeaz o sortare explicit dup o anumit direcie; este un algoritm de tip (xyz). Deoarece obiectele sunt, n general, egale n complexitatea n cele trei dimensiuni, algoritmii nu se pot ierarhiza, ca eficien, pe baza sortrii. Algoritmii difer de asemenea n modalitatea de utilizare a coerenelor (de exemplu, algoritmul liniei de baleiaj utilizeaz coerena liniilor de baleiaj). Algoritmul de sortare n adncime este eficient n cazul unui numr mic de poligoane (cu creterea numrului de poligoane, testele de suprapunere sunt mai frecvente i subdivizarea poligoanelor este mai des cerut). Pe de alt parte, algoritmul z -b u ffe r are o performan constant relativ la creterea numrului de poligoane din scen, deoarece numrul de pixeli acoperii de un singur poligon descrete. Testele i calculele din metoda Warnock sunt relativ complexe, astfel nct n general implementrile acestui algoritm sunt mai lente dect cele corespunztoare metodelor de mai sus. Alegerea unui algoritm de vizibilitate este de asemenea influenat de condiiile de vizualizare. Dac se va aplica o procedur complicat de um brire este de preferat un algoritm care traseaz doar pri ale obiectelor (pre cum algoritmul liniei de baleiaj); n acest caz alegerea algoritmului de sortare n adncime nu este prea fericit, deoarece obiectele se traseaz n ntregime. Dac sistemul de vizualizare presupune inter activitate, atunci se prefer al goritmul z-b u ffe r. Algoritmul arborelui BSP, pe de alt parte, poate genera foarte rapid imagini ale mediului static, dar necesit procesri adiionale dac mediul se schimb. Acomodarea la noi primitive este un avantaj al algoritmului liniei de baleiaj.

5.3

Iluminare i umbre

Pentru ca imaginea s fie ct mai realist este util simularea iluminrii obiec tului preciznd: 1. sistemul de surse luminoase cu care se face iluminarea (tipul surselor, poziia acestora n sistemul de referin adoptat), 2. caracteristicile optice ale suprafeelor - exist astfel: (a) zone mate, care disperseaz lumina reflectnd-o n mod egal n toate direciile (de exemplu, o bucat de cret); (b) zone lucitoare, care reflect lumina numai dup anumite direcii relative la observator i sursa de lumin (de exemplu, o oglind); 153

(c) zone transparente sau translucide cu fenomene de refracie i aten uare; 3. poziia relativ a suprafeelor corpului i a sistemului de surse luminoase. Procesele de eliminare a suprafeelor ascunse i simulare a iluminrii se pot desfura simultan.

5.3.1

Surse de lumin

Sursele de lumin pot fi punctiforme (punctuale) sau distribuite. Exemple de surse punctiforme sunt becurile cu incandescen, flcrile de dimensiuni mici. Ca exemplu de surs distribuit se poate meniona tubul fluorescent. Sursele punctiforme produc un efect realist deoarece iluminarea unei suprafee depide de orientarea ei, mai precis de cosinusul unghiului dintre normala la suprafa n fiecare punct considerat pe aceasta i dreapta care unete punctul respectiv cu sursa. Iluminarea este mai puternic pentru suprafee orientate perpendicular fa de razele de lumin provenite de la surs i scade odat cu nclinarea suprafeelor fa de direcia luminii. Pe lng aceste tipuri de surse se pot ntlni situaii n care obiectele sunt scldate ntr-o lumin de intensitate n general moderat i care pare s vin din toate prile - aceasta poart numele de lumin ambiant (produs al reflexi ilor multiple de la suprafeele aflate n scen). Este cea mai uor de modelat deoarece iluminarea suprafeelor este constant i independent de orientarea lor. Imaginea format depinde astfel numai de intensitatea luminii ambiante i de proprietile suprafeei corpului modelat. Acest tip de iluminare nu produce o imagine realist (muchiile de jonciune ale poligoanelor cu aceleai proprieti superficiale nu se pot distinge). In realitate este puin probabil s se ntlneasc situaii n care un anumit corp s se afle numai n lumina ambiant. Dac sursa se afl la o distan suficient de mare de obiectul iluminat pen tru ca razele incidente s fie considerate paralele ntre ele, iluminarea este paralel sau direcional. Prin acest procedeu poate fi modelat mai bine lu mina solar. Pentru precizarea unei surse de lumin paralel sunt suficiente intensitatea iniial, direcia i sensul de iluminare. Dac n cazul iluminrii cu surse punctiforme, distana la surs este o informaie important, n cazul iluminrii paralele influena ei devine nesemnificativ, intensitatea fiind practic invariant cu distana de la surs. Variaiile intensitii luminoase pe suprafaa unui obiect ofer informaii importante cu privire la forma suprafeei respective. Informaii suplimentare pot fi obinute prin analiza umbrelor pe care elemente ale corpului modelat le arunc asupra unui fundal al imaginii sau asupra altor elemente ale aceluiai corp.

5.3.2

Modele de iluminare

Ecuaia iluminrii variaz n funcie de tipul sursei luminoaase. L um ina am biant. Lumina mediului nconjurtor (lumina ambiant) se rsfrnge egal pe toate suprafeele i n toate direciile, astfel nct ecuaia

154

Sursa de lumin N L Observator 1 y2 Observator 2

Sursa de lumin N L Vi Observator 1 % Observator 2

(a) (b) Figura 5.41: Iluminare (a) reflexie difuz (b) reflexie specular

iluminrii este
I la ka

unde I este intensitatea rezultat, Ia este intensitatea luminii ambiante, con stant pentru fiecare obiect, iar ka este coeficientul de reflexie ambiant, pro centul n care suprafaa reflect lumina ambiant (ntre 0 i 1), caracteristic a materialului. R e le x ie difu z (lam b ertia n ). Se consider obiectul luminat de o surs punctual de lumin a crui raze eman uniform n toate direciile ce pornesc de la un singur punct. Suprafeele mate au proprietatea de a mprtia lumina inciden, prin reflecie difuz, n mod aproximativ egal dup toate direciile posibile. Oriunde s-ar afla observatorul, o aceeai plac va avea o imagine de strlucire constant. Intensitatea luminii reflectate de o anumit faet din reprezentarea poliedral a unui corp este independent n acest caz de poziia observatorului. Ea depinde numai de unghiul 9 dintre direcia L de la sursa de lumin i normala la suprafa N (figura 5.41.a). Faetele luminate dup o direcie mai apropiat de normal vor reflecta lumina cu intensitate mai mare. Intensitatea luminii reflectate se exprim dup legea reflexiei cosinus: I = Ipkd cos 0, unde I este intensitatea luminii reflectate, Ip este intensitatea sursei de lumin punctual, iar kd este un coeficient care depinde de natura i proprietile optice ale materialului ce produce reflexia difuz, numit coeficient de reflexie difuz (ntre 0 i 1). Dac L i N sunt versorul direciei de propagare a luminii (raza inciden) i, respectiv, versorul normalei la faet, atunci are loc ega litatea I = Ipkd(L N ). Aceast relaie nu ine seama de variaia intensitii luminoase n raport cu distana la surs. Astfel, proieciile a dou suprafee paralele de material identic se pot suprapune ntr-o imagine uniform. Pentru o surs punctiform ideal, intensitatea luminoas este invers proporional cu ptratul distanei R dintre surs i punctul n care se msoar aceast inten sitate. In majoritatea situaiilor reale, obiectele observate sunt scldate i n lumin ambiant, astfel nct ecuaia iluminrii este: I = Iaka + (1/ R?)Ipkd cos 8.

155

Sunt situaii n care observatorul se afl fa de surs la o distan mult mai mic dect sursa luminoas, ceea ce face ca influena lui R2 s fie exagerat i imaginea nerealist. Astfel, reprezentrile cele mai realiste se obin folosind formula I = Iaka + IpkdCos8/(d+ D), unde d este o cot care d deprtarea relativ a faetei considerate de surs (pentru cea mai apropiat faet fa de surs d se poate lua 0). D este termenul de atenuare i este un numr suficient de mare, astfel ales nct variaia lui d pe domeniul su s provoace variaia lui I n limitele dorite. Mai general,
I

Ia k a

f a f l p k d COS $ ,

unde f at este factorul de atenuare. Lumina colorat este tratat scriind ecuaiile separat pentru fiecare component a modelului de culoare. Cele trei componente primare ale luminii Ipr , Ipg , Ipb sunt reflectate n proporiile kdOdR, kdOdG, kdOdB- Tripletul (Orf/j, OrfG) Orfs) definete componentele cu lorii obiectului n sistemul RGB. Od este culoarea difuz a obiectului. De exemplu, pentru componenta roie ecuaia iluminrii este Ir
=

laRkaOdR

fatlpRkdOdR COS 0 .

Reflexia specular (selectiv). Este asociat cu suprafeele lucioase. Se consider, de exemplu, un glob rou metalizat din pomul de iarn, sau un mr lustruit, iluminat cu o surs punctiform. Pe suprafaa acestora se pot distinge zone de rou nchis, care reflect lumina mai puin intens, zone care reflect lumina cu un rou intens, precum i o mic zon care apare alb i pare o surs de lumin de aceeai natur cu lumina inciden aflat pe suprafaa obiectului. La schimbarea poziiei observatorului pata de lumin i schimb i ea poziia pe suprafaa corpului. Aceast pat este produsul reflexiei selective sau spe culare, n timp ce intensitile provenind de la celelelte puncte de pe suprafaa corpului sunt rezultatul reflexiei difuze. Reflexia selectiv se produce deoarece suprafeele netede i lustruite reflect lumina n mod inegal. O suprafa perfect lucioas (o oglind perfect) reflect lumina numai dup direcia din planul de inciden pentru care unghiul de reflexie este egal cu cel de inciden (n direcia R, simetrica lui L fa de N din figura 5.41.b). Se consider a unghiul dintre direcia de observare V i direcia de reflexie specular R. Suprafeele pot fi i oglinzi imperfecte (de exemplu, obiectele din vinilin). Pentru astfel de suprafee intensitatea reflexiei speculare scade brusc odat cu creterea diferenei dintre unghiul de reflexie real i unghiul de inciden. Mode lul empiric de simulare a reflexiei speculare presupune descreterea intensitii luminoase proporional cu cos | a | unde m este un numr natural nenul, care depinde de natura suprafeei iluminate, exponentul de reflexie specular al ma terialului (de la 1 la ordinul sutelor). Pentru o oglind perfect, m oo, astfel nct intensitatea reflectat este maxim pentru a = 0. Se introduce noiunea de factor de reflexie specular, care este o funcie de unghiul de inciden 8, S : [0,90] [0,1] i care arat ce fracie din intensitatea luminoas inciden este reflectat specular n cazul unei incidene 8. Ecuaia iluminrii este
h = l a x k a Od x + f at Ipx [ kdOdx

co s 0 + S ( 0 ) cos |a|],

156

N S S

Figura 5.42: Calcularea vectorului de reflexie

unde A = R ,G ,B . In modelul de iluminare Phong, S(6) este setat pe ksO s\, unde ks este coeficientul de reflexie specular cu valori ntre 0 si 1, iar Os\ este culoarea specular a obiectului. Ecuaia iluminrii este, n acest caz, Ix = IaxkaOdX + fatIpx[kdOdX(N L) + ksOsX(R . V ) n]. Vectorul R se calculeaz pe baza lui L si N (figura 5.42): R = N cos 6 + 5, iar S = N cos 0 - L, deci R = 2N ( N L) - L, iar R V = (2 N ( N - L ) L) - V). Dac sursa de lumin este la infinit, N L este constant pentru un poligon dat, pe cnd R ' V variaz de-a lungul poligonului. Pentru suprafee curbe sau pentru o surs de lumin la o poziie finit, ambele produse N L si R L variaz de-a lungul suprafeei. Dac exist m surse de lumin, atunci m
h = Ia\kaO dX + Y JfauIpxAkdOdx {N Li) + ksO,x(Ri V ) n].
2=1

Transparen. Modelele simple de transparen nu includ refracia (ameste carea) luminii printr-un solid transparent. Pentru simularea transparenei nere fractate se utilizeaz dou metode: 1. transparen interpolat : dac poligonul transparent 1 se intercaleaz ntre observator si poligonul opac 2, ecuaia iluminrii este

(1 h i ) I \ i + k f i I \ 2 ,
unde kt\ este coeficientul de trasparen al poligonului 1 (ntre 0 si 1). Dac kt\ = 0, poligonul este opac si nu transmite lumin. Dac kt\ = 1, poligonul este perfect transparent. Valoarea 1 kti desemneaz opaci tatea poligonului; 2. transparen filtrat: poligonul 1 este un filtru transparent, astfel nct I\ I\i + ktiOt\I\2, unde Ot\ este transparena culorii A a poligonului 1. Modele complexe includ refracia, transluciditatea difuz, atenuarea luminii cu distana. Transparena cu refracie este un fenomen des ntlnit, dar greu de modelat (figura 5.43). Relaia dintre unghiul de inciden O i si unghiul de refracie 0t este dat de sin O j rjx sin 0t ]iX unde rji\ si rjtx sunt indicii de refracie a materialelor prin care trece lumina. 157

Figura 5.43: Refracie

5.3.3

Iluminarea reprezentrilor poliedrale

Metodele de modelare a iluminrii reprezentrilor poliedrale cele mai des utili zate sunt urmtoarele: 1. metoda iluminrii constante; 2. metoda interpolrii intensitii luminoase; 3. metoda interpolrii normalei la suprafa. Metoda iluminrii constante. Aceast metod presupune calcularea in tensitii o singur dat pentru fiecare poligon, deci unui poligon i este car acteristic n condiiile precizate de iluminare si observare o anumit intensi tate, constant pe toat suprafaa sa. Exist situaii pentru care calculele de iluminare se pot face cu vitez foarte mare si anume cele n care direciile nor malelor la faetele corpului sunt n numr mic, faetele fiind n numr relativ mare, dar grupate n clase de faete paralele (situaie des ntlnit n scene arhitecturale). Pentru fiecare direcie din scen se calculeaz intensitatea core spunztoare. Faetele se sorteaz n clase dup direciile normalelor. Dac nu se ine cont de variaia iluminrii cu distana la surs, atunci fiecare clas se transpune pe ecran cu intensitatea calculat pentru direcia reprezentativ clasei respective. Dac se ine seama de variaia iluminrii cu distana, atunci faetele din fiecare clas se sorteaz n subclase dup distana la surs, inten sitatea corespunztoare fiecrei subclase calculndu-se prin incrementare. Pentru ca o situaie de observare real s dea o imagine de tip iluminare constant, e nevoie s fie ndeplinite trei condiii: (a) suprafaa poliedral este chiar suprafaa corpului reprezentat si nu o aproximare a acestuia; (b) observatorul este la infinit astfel nct a s fie constant pentru fiecare suprafa poligonal; (c) sursa de lumin se afl la infinit, (0 constant pentru fiecare suprafa poligonal). Datorit acestor condiii, mai ales a doua, situaia este rar ntlnit n practic.

158

Totui, datorit simplitii de calcul, metoda este cea mai folosit. Calculule pentru fiecare poligon se fac ntr-un singur punct interior privilegiat al acestuia, de obicei centrul de greutate. Principalul dezavantaj al iluminrii constante este acela c muchiile faetelor poligonale sunt accentuate artificial datorit efectului de band Mach. Astfel, dac faeta A este luminat, iar faeta B umbrit, zona de muchie a faetei A va aprea puternic luminat mrind contrastul cu faeta B (deci scond muchia n eviden), iar zona de frontier a faetei B apare mai umbrit. In cazul imaginilor monocrome, cnd umbra i lumina sunt simu late prin densitatea de puncte, efectul este mai puin sesizabil. Metoda interpolrii intensitii luminoase (algoritmul Gouraud) . D rezultate calitativ superioare, eliminnd discontinuitile de intensitate. Inter polarea vectorului de intensitate se face astfel: (a) se calculeaz normalele la fiecare poligon; (b) se calculeaz vectorii normali medii n fiecare vrf al poliedrului, adic se calculeaz n fiecare vrf media versorilor direciilor normale la toate faetele alturate vrfului (figura 5.44);

Figura 5.44: Media normalele la suprafee constituie normala n vrf

(c) se calculeaz n fiecare vrf intensitile locale, folosind normalele medii anterior calculate; (d) pentru fiecare linie de baleiaj i pentru fiecare poligon se parcurg etapele urmtoare: - se calculeaz intensitile locale n interseciile liniei de baleiaj cu laturile poligonului (extremitile segmentului de linie situat n poligon) prin interpolare liniar ntre valorile corespunztoare vrfurilor ce mrginesc laturile respective; - pentru fiecare pixel de pe segmentul de linie de baleiaj inclus n poligon se calculeaz intensitatea corespunztoare prin interpolare liniar ntre valorile calculate la extremitile segmentului, valorile obinute transpunndu-se pe ecran.

159

Figura 5.46: Interpolarea normalelor

De exemplu, pentru triunghiul din figura 5.45 intensitile punctelor de pe linia de baleiaj sunt: I a = h ~ (h ~ yi - y 2 Ib = h ~ (Jl - h ) ^ ^ , IV = h ~ (Ib ~ Ia y i - yz x h - xa

Se poate utiliza pentru creterea eficienei algoritmului ecuaii cu diferene pentru diferite intensiti de pe linii de scanare succesive. Metoda interpolrii normalei la suprafa (algoritmul Phong). Cele mai bune rezultate se obin prin aceast metod. Dup ce se calculeaz nor malele medii locale n toate punctele care modeleaz corpul, se calculeaz, pentru fiecare segment de linie de baleiaj coninut ntr-o faet, normalele n extremiti prin interpolare ntre normalele medii locale calculate n capetele laturii pe care se afl fiecare extremitate (figura 5.46). Apoi se interpoleaz normala ntr-un pixel de pe linia de baleiaj, ntre normalele calculate n ex tremiti (relaiile sunt analoage celor din metoda descris anterior, inten sitile fiind nlocuite cu vectori). Calculele sunt complicate cci normalele calculate sunt mrimi vectoriale si deci interpolarea se face dup cele 3 compo nente ale vectorului considerat n sistemul de referin xyz. Intensitatea este calculat numai dup determinarea n fiecare pixel a normalei locale. Metoda nu este indicat atunci cnd display-ul este monocrom (cnd este necesar simularea intensitii prin densitate de puncte). Interpolarea n algoritmii de iluminare se face dup aplicarea transformrii perspective, n coordonate 3D ale ecranului si nu n sistemul de coordonate a lumii nconjurtoare.

160

5.3.4

Umbre

Dac iluminarea nu este frontal, atunci devin importante poziiile surselor punctiforme i direciile dup care se face iluminarea paralel. Exist posibil itatea ca pri vizibile ale corpului s nu fie iluminate, fiind umbrite de alte pri. Pentru reprezentarea corect a umbrelor n cazul iluminrii cu surse punctiforme, calculele de vizibilitate pentru corpul considerat se fac de dou ori: din poziia observatorului i din poziia sursei. Pentru fiecare punct al unei suprafee se urmrete: (a) dac este vzut att de surs ct i de observator, atunci pixelul este vizibil i luminat de surs; (b) dac nu se vede din poziia observatorului, atunci pixelul este invizibil; (c) dac se vede din poziia observatorului, dar nu se vede din poziia sursei, atunci este vizibil, dar umbrit. Dac un punct al unei suprafee nu poate fi vzut de sursa de lumin, calculele de iluminare trebuie s fie ajustate pentru ca s in seama de acest fapt. Astfel ecuaia iluminrii devine: m h = laxkaOdx + ^ 2 Siatjp \ i [kdOdx{N Lj) + ksOsX(Ri V ) n}.
i=
1

unde

_ f0 1

dac lumina i este blocat n acest punct dac lumina i nu este blocat n acest punct '

Algoritmii pentru determinarea umbrelor, respectiv a vizibilitii, sunt de fapt aceiai. Cele mai des utilizate metode sunt urmtoarele: 1. generarea la conversia scan a umbrelor; 2. utilizarea algoritmilor de vizibilitate cu dou parcurgeri. Generarea scan a umbrelor. Pentru o reprezentare poliedral, utiliznd sursa de lumin drept centru al proieciei, laturile poligoanelor care potenial produc umbre sunt proiectate pe poligoanele care intersecteaz linia curent de baleiaj. Cnd linia de baleiaj intersecteaz una din laturile acestor poligoane de umbr, culoarea imaginii este modificat (figura 5.47). O implementare brut a acestui algoritm presupune calculul proieciilor fiecrui poligon pe oricare alt poligon. Se poate introduce o faz de preprocesare n care toate poligoanele reprezentrii sunt proiectate pe o sfer centrat n sursa de lumin. Perechile de proiecii ale cror extensii nu se suprapun pot fi eliminate. Utilizarea algoritmilor spaiu-obiect cu dou parcurgeri. Se deter min n primul rnd suprafeele vizibile din punctul de vedere al sursei de lu min, ieirea fiind o list de poligoane luminate, fiecare asociat cu numrul de identificare a poligonului din care provine. Se aplic apoi algoritmul din punc tul de vedere al observatorului, utiliznd o copie a bazei de date anterior create, rezultnd n final o nou list de poligoane. Algoritmul W eiler-A therton poate fi utilizat cu succes.

161

Lumin

Figura 5.47: Poligonul A produce umbra A! n planul poligonului B

Utilizarea algoritmilor spaiu-imagino cu dou parcurgeri. Se con sider, de exemplu, algoritmul z-b u ffer. Algoritmul pornete cu calcularea i stocarea z-b u ff er-ului pentru imaginea vzut din punctul de vedere al sursei de lumin. Apoi z-buf f er-ul i imaginea sunt calculate din punctul de vedere al observatorului utiliznd un algoritm z -b u ffe r cu urmtoarele modificri: dac un pixel este clasificat ca fiind vizibil, coordonatele sale n sistemul observa torului (xo, yo, zo) sunt transformate n coordonate n sistemul sursei de luminii (x'0,y'0,z'0). Coordonatele x ! 0 i y'0 sunt utilizate pentru a selecta valoarea zl din z-b u ff er-ul sursei de lumin cu scopul de a fi comparat cu valoarea trans format z'0. Dac zl este mai apropiat de lumin dect z! 0, atunci exist ceva care blocheaz lumina de la punct, iar pixelul este umbrit; altfel punctul este vizibil de ctre sursa de lumin, z-b u ff er-ul sursei de lumin poate fi privit ca un buf f e r de umbrire. Algoritmul poate fi uor adaptat la cazul surselor de lumin multiple.

5.3.5

Implementarea transparenei

Adugarea efectelor de transparen n momentul n care se utilizeaz un al goritm de tip z -b u ffe r este destul de dificil, deoarece poligoanele sunt trans puse n ordinea n care sunt ntlnite, z-b u ff er-ul nu conine informaia care poligoane transparent se afl n faa unor poligoanelor opace, i informaia rel ativ la ordinea poligoanelor. Pentru a rezolva aceast problem se propune urmtorul algoritm (a lui Mannen). In primul rnd sunt procesate poligoanele opace cu un z-buf f er convenional. Apoi obiectele transparente sunt procesate ntr-o mulime separat de buf fe r e care conin, pentru fiecare pixel, o valoare a transparenei i un bit special, n completare la culoarea pixelului i valoarea z. Bitul este iniializat pe off i fiecare valoare z este setat pe o valoare core spunztoare poziiei celei mai apropiat posibil. Dac valoarea z a obiectului transparent este mai apropiat dect valoarea z-buf f er-ului opac, dar este mai departe dect valoarea din z-b u ff er-ul de transparen, atunci culoarea, val oarea z, i transparena sunt salvate n buf ferele de transparen, iar bitul este setat pe on . Dup ce toate obiectele au fost procesate, buf ferele obiectelor transparente conin informaia celui mai deprtat obiect transparent pentru fiecare pixel a crui bit este setat. Informaia pentru pixelii cu bitul setat este amestecat cu cea a fram e-bu ff er-ului i z-bu ffer-u l original. Valoarea z de 162

transparen a pixelului cu bitul setat va nlocui valoarea z din z-buflter-ul opac i bitul este resetat. Acest proces se repet pentru a transpune succesiv obiecte mai apropiate pe fiecare pixel.

5.3.6

Metoda recursiv a drumului optic

Pentru a determina culoarea unui pixel, trebuie constituit o list a tuturor razelor de lumin care pleac din punctul de pe primul obiect intersectat de dreapta de la ochi la pixel, culoarea pixelului fiind o combinaie a culorilor acestor raze. De exemplu, o raz de lumin roie i o raz verde care cad amndou ntr-un punct al unui obiect, pot constitui mpreun o singur raz galben ce pleac din respectivul punct nspre ochi. Razele de lumin pot fi clasificate astfel: (a) raze directe, care duc lumina prin pixel la ochi; (b) raze de iluminare sau umbre, care duc lumina de la surs la un obiect; (c) raze reflectate de obiecte; (d) raze de transparen, care trec printr-un obiect transparent. Culoarea luminii radiate de un punct de pe suprafaa unui obiect (ntr-o anumit direcie) este, n esen, funcie de combinaia luminii ce provine de la: 1. surse de lumin, 2. alte obiecte ce reflect lumina, 3. lumina transmis prin obiecte. Pentru a afla culoarea luminii reflectate i a celei transmise trebuie determinate obiectele de la care provine aceast lumin. Pe de alt parte, culoarea luminii care pleac de la oricare dintre aceste obiecte se determin n acelai mod, de unde rezult caracterul recursiv al calculelor. Algoritmul r a y -tr a c in g de baz poate fi extins pentru a trata umbrele, reflexie i refracie. Algoritmul de baz determin culoarea pixelului la cea mai apropiat intersecie a razei vizuale. Pentru a calcula umbrele se traseaz raze adiionale de la punctul de intersecie la fiecare din sursele de lumin. Dac una dintre aceste raze intersecteaz un obiect n calea sa, atunci obiectul iniial este umbrit n acel punct de intersecie cu raza vizual, iar algoritmul de iluminare ignor contribuia sursei de lumin spre care raza a fost blocat. Fiecare raz de relecie i refracie pot produce recursiv alte raze reflectate i refractate (figura 5.48). Astfel razele formeaz un arbore, precum cel din figura 5.49. O ramur a acestui arbore este terminal dac razele reflectate sau refractate nu intersecteaz un alt obiect, sau o anumit adncime prestabilit a fost atins. Modelul de iluminare poate fi extins pentru a include i reflexia specular i transparena refractat: m = Ia\kaOd\ + ^ SifatilpAi [kdOd\(N Z/j) + ks( N ffj) ] + ksIr\ + kt.If,\ i= 1 unde Ir\ este intensitatea razei reflectate, kt este coeficientul de transmisie, cu valori ntre 0 i 1, iar It\ este intensitatea razei transmise prin refracie. 163

N Normal la suprafa R, Raz reflectat i, Raz de umbr f, Raz transmis

Figura 5.48: Recurivitatea razei


Punct de vedere

Figura 5.49: Arborele razei

Valorile Ir\ si It\ sunt determinate prin evaluarea recursiv a ecuaiei de mai sus la cea mai apropiat suprafa care este intersectat de razele reflectate si transmise. In cele ce urmeaz sunt prezentate, n pseudocod, elementele principale ale unui algoritm r a y - t r a c i n g recursiv. RT.trace determin cea mai apropiat intersecie pe care raza vizual o realizaez cu un obiect si apeleaz RT.shade pentru a determina culoarea punctului. In primul rnd RT.shade determin culoarea ambiental a interseciei. Apoi o raz este schiat pn la fiecare surs de lumin pentru a determina contribuia sa la culoare. Un obiect opac blocheaz total lumina, pe cnd un obiect transparent scaleaz contribuia sur sei de lumin. Apelurile recursive la RT.shade trateaz razele de reflexie pentru obiecte reflective si razele de refracie pentru obiectele transparente. RT.trace reine arborele razei numai atta timp ct este necesar pentru determinarea culorii pixelului curent.
selecteaz centrul de proiecie i fereastra n planul de proiecie for fiecare linie de scanare do

164

f o r Secare pixel din linia de scanare do begin determin raza de la centrul de proiecie la pixel; p ixel := ET_trace (raza, 1) end; Procedure ET_trace (r a z a : R T -ray;adn cim ea:in tegei) : R T.color; begin determin cea mai apropiat intersecie a razei cu un obiect; i f obiect atins then begin calculeaz normala la intersecie ET_trace: =RT_shade(cel mai apropiat obiectul atins, raza, intersecia, normala, adncimea) end e ls e ET_trace: =Background_value; end; procedure ET_shade( obiect : R T-object; {o b ie c t u l in t e r s e c t a t } raza : R T jra y ; {ra za in c id e n } punct : R T jpoint; {pu n ctu l i n t e r s e c i e i } norm ala : R Tjnorm al; {normala n punct} adncim e.'integer; {adncimea n a rb o re le r a z e i} ) :E T _color; var culoare : R T jcolor ; {c u lo a r e a r a z e i} rR aza,tR a za , sR aza : R T jray; {ra z e r e f l e c t . .r e f r a c t l u m i n } rC u loare,tC u loa re : RT-color; { c u i. raze r e f l e c t . . r e f r a c t . } begin culoare := termenul luminii ambiente; f o r Secare surs de lumin do begin sR aza :=raza de la lumin la punct; i f produsul scalar dintre normal i direcia luminii este pozitiv then begin calculeaz ct lumin este blocat de suprafa; scaleaz corespunztor termenii luminii speculare i difuze; adun termenii la culoare; end end i f adncimea<maxDepth then begin i f obiectul este reSectiv then begin rR aza :=raza n direcia reSexiei de la punct; rC uloare := K I-tia.ee (rR ay, depth + 1 ); scaieaz rC uloare cu coeScientul specular; adun rC uloare la culoare end;

165

i f obiectul este transparent then begin tR aza :=raza n direcia de refracie de la punct; i f nu apare reflexie intern then begin tC uloare :=R T -tra.ce(tR aza,adncim e+l ) ; scaleaz tC uloare cu coeficientul de transmitere; adun tC uloare la culoare end end end RT_trace: =culoare end;

Numrul de raze care trebuie procesate crete exponenial cu adncimea pn la care sunt trasate razele. In cel mai ru caz, arborele unei raze (n condiiile unei singure surse de lumin) va conine 2 1 raze, unde n este adncimea arborelui. Dac exist m surse de lumin numrul maxim de raze devine m ( 2 1). In plus, deoarece razele pot veni din orice direcie, nu se pot utiliza tehnici de decupare fa de volumul de vedere i nici alunecarea spate-fa relativ la observator. Numeroase tehnici de reducere a efortului de calcul au fost elaborate pentru algoritmul recursiv (de exemplu, prin control adaptiv a adncimii arborelui razele nu mai sunt urmrite dac contribuia pixelului la culoare este estimat a fi sub un anumit nivel - , prin buf fe r e de lumin - un cub centrat n sursa de lumin i aliniat cu axele sistemului lumii nconjurtoare, cu fiecare fa mprit ntr-o gril rectangular, fiecrui ptrat findu-i asociat o list de suprafee sortate n adncime n ordinea n care sunt vzute de la lumin, iar o raz de lumin este procesat prin determinarea ptratului prin care trece, astfel nct raza este testat la intersecie numai cu lista de suprafee asociat ptratului - , sau prin clasificarea razelor). Performae deosebite se obin prin combinarea metodei drumului cu metoda radiositii. Opus modalitii de abordare a algoritmilor clasici, metoda radiositii determin n primul rnd interaciunile legate de luminarea scenei, independent de sistemul de vizualizare, i doar apoi se aplic determinarea suprafeelor vizibile i interpolarea iluminrii conform unui sistem oarecare de vizualizare. Presupunerea de baz este conservarea energiei luminii ntr-un mediu nchis. Radiana este rata n care energia prsete suprafaa.

5.4

Atributele primitivelor

Imaginea unui primitive poate fi controlat prin atributele sale. Fiecrei pri mitive i sunt specifice anumite atribute. Atributul punctului este culoarea. Atributele unei linii (drepte sau poligonale) sunt: (a) stilul liniei (continu sau solid, ntrerupt, punctat sau corespunztoare unui ablon) (b) grosimea liniei; 166

(c) culoarea; (d) stilul peniei (pentru liniile groase, umplerea cu texturi a zonelor drep tunghiulare asociate) Un ablon (model, pattern ) este desemnat printr-o matrice. Inhibarea aprinderii sau aprinderea, conform unei anumite culori, a unui pixel (x, y) de pe o primitiv se realizeaz n urma testrii valorii nscrise n matricea ablon m x n l a poziia (x mod m, y mod n). De exemplu considerm c ablonul poate fi reprezentat printr-un ir string 16 bii (dac ablonul se repet dup fiecare 16 bii). Funcia W riteP ixel din algoritmii incrementali este nlocuit cu i f s tr in g [i mod 16] then W riteP ixel (x, y, value) ; unde i este variabila ciclului incremental. In aceast situaie lungimea liniuelor ntrerupte n cazul primitivei linii variaz cu unghiul liniei (mai lung n cazul liniilor nclinate dect la liniile orizontale sau verticale). O soluie este conver tirea direct a liniuelor ca segmente de linii individuale, de lungime invariant cu unghiul de nclinare (vrfuri sunt calculate exact, ca funcie de stilul lin iei selectate). Liniile groase sunt create ca secvene de dreptunghiuri solide si transparente a cror vrfuri sunt calculate exact ca funciei de stilul liniei. Grosimea unei primitive este distana dintre marginile primitivei calculat pe perpendiculara pe tangenta sa. Primitivele ce se traseaz cu o anumit grosime se bazeaz pe convertirea prin scanare a unei primitive cu grosimea de un pixel. Ingrosarea unei linii se poate efectua prin urmtoarele procedee: 1. duplicarea pixelilor pe coloane pentru pante subunitare si pe linii, n caz contrar (figura 5.50). Aceast tehnic are mai multe dezavantaje: (a) liniile se termin ntotdeauna vertical sau orizontal; (b) grosimea liniilor depinde de nclinare: dac pentru o linie orizon tal grosimea este , la acelai numr de pixeli, o linie cu panta 1 are grosimea t/\^2, obinndu-se un efect negativ asupra strlucirii (contrast ntre liniile orizontale sau verticale si cele nclinate); (c) problema centrrii primitivei duplicat n cazul unei grosimi numr par (n mod obinuit se va trece la urmtorul numr impar); (d) grosime redus la schimbarea octanilor unei elipse (figura 5.51)

Figura 5.50: Segment trasat prin metoda duplicarea pixelilor pe vertical

2. alegerea unei penie dreptunghiulare al crui centru strbate primitiva trasat la un pixel (figura 5.52). Grosimea variaz cu nclinaia: seg mentele orizontale par mai subiri dect cele nclinate. In cazul unui arc de cerc n dreptul bisectoarei cadranului 1, primitiva are un numr 167

O o

Figura 5.51: Semicerc gros trasat prin duplicarea pixelilor pe coloan

de pixeli de approximativ y/2 mai mare dect n dreptul axei x (figura 5.53). Acest fenomen poate fi eliminat dac se utilizeaz o peni circu-

Figura 5.52: Segment de linie trasat cu o peni dreptunghiular

Iar. In ceea ce privete implementarea trebuie evitat rescrierea pixelilor (utiliznd o tehnic incremental).

Oo

Figura 5.53: Semicerc gros trasat cu o peni dreptunghiular 3. umplerea ariei dintre margini:

se construiesc dou primitive aflate la distana de t / 2 de traiectoria primitivei ideale (cu un singur pixel). Pen tru primitivele cu aria definit, frontiera original poate fi considerat ca fiind marginea exterioar, iar cea interioar va fi construit n interiorul primitivei. Avantajul acestei metode const n faptul c pot fi tratate att primitive cu grosimi impare ct si primitive cu grosimi pare. Grosimea efectiv a unei linii este independent de unghiul de nclinare fa de axe. In cazul cercurilor se convertete cercul exterior de raz R + t/2 si cercul 168

interior de raz R t j 2, apoi spaiul dintre aceste primitive este umplut (se poate observa cum primitiva ideal, de un pixel, apare deplasat). In cazul elipselor se traseaz elipsa cu semidiametrele a t /2 si b t /2 si cea cu semidiametrele a + t /2 si b + t/2, apoi se umple spaiul dintre ele (figura 5.54).

Figura 5.54: Semicerc gros trasat prin umplerea spaiului dintre dou cercuri con centrice

Atributele poligoanelor, cercurilor i elipselor sunt cele ale liniei de frontier plus stilul de umplere (textura interiorului). Atributele textului sunt multiple: (a) stil sau font (Roman, Helvica etc); (b) mod de tiprire (drept, ngroat, nclinat); (c) dimensiune (msurat n puncte tipografice - un punct aproximativ 1/72 inch); (d) lime; (e) spaiu ntre caractere; (f) spaiu ntre linii consecutive; (g) direcia de scriere (orizontal, vertical sau sub un anumit unghi).

5.5

Atenuarea efectelor datorate discretizrii imaginii

Se consider disponibil un d isp la y care are cel puin dou nivele de intensitate. Liniile apar n rastru ca nite scrie. Primitivele curbe precum cercul si elipsele sunt de asemenea aproximate (esantionate), ajungndu-se la un acelai efect vizual, numit a lia s (pornind de la teoria procesrii de semnale, unde a lia s este un semnalul discret transmis prin legturi de telecomunicaie ca nlocuitor al semnalului continuu). Fenomenul a lia s in g (n acest context, asperitate) este rezultatul conversiei scan de tipul tot sau nimic (un pixel este aprins sau stins). Aplicarea tehnicilor

169

Figura 5.55: Segment de linie discret (a) pe un display monocrom (b) aceeai linie pe un display cu rezoluie dubl

care reduc sau elimin fenomenul sunt referite ca a n tia lia s in g (netezire , compensare). O prim metod este creterea rezoluiei, respectiv utilizarea unui d isp la y cu o rezoluie superioar (figura 5.55). O alt tehnic este cea a pixelilor n diferite stadii. Salturile n liniile de pe ecran sunt ajustate prin mutarea cu o micropoziie a unor pixeli. Sistemele care permit o asemenea tehnic sunt construite astfel nct poziii individuale de pixeli pot fi deplasate cu o fraciune din latura pixelului, de obicei 1/4, 1/2 sau 3/4. Aceste dou metode diminueaz efectul de scri, dar nu l elimin. O metod des utilizat pe display-urile care permit mai multe nivele de intensitate este metoda ariilor. Ideea de baz este aceea c punctele si liniile de pe un ecran au dimensiuni finite. Se consider c un pixel este aproximativ un ptrat, iar o linie are grosimea cel puin egal cu latura ptratului-pixel (figura 5.56a). In loc de a trasa linia cu un singur pixel corespunztor fiecrei poziii pe axa O x , toi pixelii peste care se suprapune o parte din aria liniei, sunt aprini cu o intensitate proporional cu aria de suprapunere (metoda ariilor fr greutate). Aceast tehnic are trei proprieti: 1. intensitatea unui pixel care intersecteaz o latur descrete proporional cu creterea distanei dintre centrul pixelului i segmentul de linie; 2. primitiva de trasare a segmentului nu influeneaz intensitatea unui pixel dac nu intersecteaz aria acestuia; 3. arii egale contribuie egal la intensitate (figura 5.57). Metoda ariilor cu greutate pstreaz primele dou proprieti, dar nu i a treia: arii egale pot contribui inegal la intensitate, deoarece o arie mic apropiat de centrul pixelului are o mai mare influen dect o arie egal aflat la o distan mai mare. Aria de influen a unui pixel corespunde cercului determinat de centrele celor patru pixeli vecini mai apropiai. Pentru a face distincia ntre cele dou metode a ariilor se consider cele dou cazuri din figurile 5.58 i 5.59. In primul caz, se consider o funcie de greutate, W (x ,y ), reprezentnd subvolume ale unui cub a crui baz este pixelul curent. Considerm c intensitatea pixelului va fi proporional cu aria acoperit multiplicat cu greutatea, Imax W s . Pentru metoda ariilor fr greutate, nlimea cubului este 1, iar W s E [0, 1]. Astfel, dac linia acoper ntreg pixelul, intensitatea acestuia va f i maxim I m a x 1 = I m a x In metoda

170

(a)

(b)

Figura 5.56: (a) Primitivele transpuse pe ecran au dimensiuni finite (b) Variaia intensitii funcie de pant

Figura 5.57: Intensitate proporional cu aria acoperit

ariilor cu greutate, W (x, y) reprezint subvolume ale unui con a crui baz este un cerc definit de centrele celor patru pixeli nvecinai cu cel curent. Aceast funcie are un maxim n centrul pixelului si descrete liniar cu distana de la centrul pixelului. Prin utilizarea acestei metode se elimin efectul nedorit de contrast ntre pixeli adiaceni. Algoritmul G u p t a -S p r o u ll de trasare a segmentelor de linii presupune precalcularea subvolumelor funciei de greutate definite de linii aflate la diferite distane de centrul pixelului i stocarea valorilor ntr-un tabel. Pixelii sunt reprezentai prin cercuri care se suprapun (figura 5.60). Fie F i l t e r ( D , ) funcia discret stocat, unde D este distana (dependent de unghiul de nclinare) ntre pixel i centrul liniei, t este este o constant pentru linii de o anumit grosime, iar F i l t e r este o funcie dependent de funcia de greutate. De exemplu, pentru t = 1, valori ale funciei trebuie furnizate pentru D ntre 0 i 1.5. Numrul de valori din acest interval depinde de numrul de niveluri de intensitate. Relum algoritmul incremental pentru cazul segmentului de linie cu panta ntre 0 i 1 (figura 5.61). Din figur se observ c ^ vdx D = v cos o = . =. y j dx 2 + dy2 171

Figura 5.58: Filtru cubic pentru un pixel

Figura 5.59: Filtru conic pentru un pixel circular cu diametrul a dou uniti

Distana v pe vertical ntre punctul de pe linia ideal si centrul pixelului ales este doar o diferen ntre coordonatele pe axa y. Dac linia trece sub pixelul ales, v este negativ; dac trece pe deasupra, v este pozitiv. Doar valoarea absolut a lui v este utilizat de funcia F ilt e r . Pixelul selectat este n mijlocul a 3 pixeli a cror intensitate este influenat la trasarea liniei. Pixelul de deasupra celui selectat se afl la o distan de 1 v pe vertical de la linia ideal, iar pixelul de sub cel selectat se afl la 1 + v. v poate fi calculat direct sau incremental. De preferat este varianta a doua. Considerm variabila decizional d = 2F (x p + 1,yp + \) unde F (x ,y ) = ax + by + c cu b = dx. Dac se selecteaz E 2vdx = 2 (y - yP)b = 2 [a(xP + 1) + byP + c] = 2F (x P + l,y p ) = = 2a(xp + 1) + 2b (y p + b + 2 c = d + dx ,

172

Figura 5.60: O linie de grosime 1 intersecteaz aria a 3 pixeli

Figura 5.61: Calcularea distanelor pn la linie n algoritmul punctului de mijloc

astfel nct

d + dx 2 ^ dx 2 + dy2

cu numitorul constant. Numrtorii fraciilor D corespunztoare pixelii de pe aceeai abscis, dar la yp + 1 respectiv yp 1 sunt obinui din 2(1 v)dx = 2dx 2vdx, respectiv 2(1 + v)dx = 2dx + 2vdx. In mod similar, n cazul n care se selecteaz pixelul (xp + 1, 2 /p + 1), 2i;(ix = 2F (xp + 1 ,2 /p + 1) = 2a(xp + 1) + 2b(yp + ^ + b + 2c = d dx iar numrtorii corespunztori pixelilor 2 /p +2 si yp sunt 2(1v)dx = 2 dx2 vdx si 2(1 + i?)dx = 2<ix + 2i;(ix. In algoritmul punctului de mijloc n varianta Gupta-Sproull, reprezen tat prin procedura ce urmeaz, funcia W riteP ixel este nlocuit cu I n t e s ify P ix e l pentru pixelul aprins si vecinii si pe vertical, care acceseaz

173

tabelul de de coresponden ntre valoarea absolut a distanei i numere ce reprezint fracii din intensitatea maxim.
Procedure AntiAliasedLineMidpoint(xl, y l , x 2 , y 2 :integer) ; var d x , d y , i n c r E ,i n c r F ,d, x , y, v :integer; fr, d x f r :real; procedure IntensifyPixel (x, y :integer, d i s t a n c e :real); var i n t e n s i t y :real; begin {Tabel cu index ntreg} i n t e n s i t y :=Filter(Round(Abs(distance))); WritePixel (x, y, i n t e n s i t y ) ; end; begin d x := x 2 xl; d y := ;/2 yl;
d

:= 2 * d y d x;

incrE

:= 2 * dy;

incrF

:= 2 * ( d y d x ) ;

v := 0;
f r := 1/(2*Sqrt (cfa * d x + d y * d y ) );

cfa/r

\ = 2 * dx * fr;

y : = y 1; IntensifyPixel (x, J / ,0) ; IntensifyPixel (x, y + 1, d x f r ) ; IntensifyPixel(x, / 1, d x f r ) ; while x < x 2 do begin if d < 0 then begin {Alege E} x:= xl; f r : = d + d x; d := d + incrE; x := x +

end else begin

fr

: = d d x;

d := d + i ncrF ; x := x +

1;
1

y : = y +

end; IntensifyPixel(x, y,v * f r ) ; Intensif yPixel (x, y + 1 , d x f r v * f r ) ; Intensif yPixel (x, y 1 , d x f r + v * f r ) end {while} end;

Corectarea intensitii pixelilor se utilizeaz de asemenea pentru anularea i altor efecte a trasrii liniilor pe rastru. Astfel, o linie orizontal de aceeai lungime cu una nclinat va aprea mai luminat dect cea din urm, chiar dac 174

numrul de pixeli este identic. Explicaia const n faptul c intensitatea per unitate de lungime (geometric) este mai redus n cazul segmentului nclinat. In figura 5.56 (b) segmentul C B are panta 1 i este de y^2 ori mai lung dect segmentul orizontal CA, dei au acelai numr de pixeli n reprezentarea dis cret. Dac intensitatea per pixel este I, intensitatea per unitatea de lungime a segmentului C A este I, iar a segmentului C B este I/V2. Pentru compen sarea acestui efect nedorit, se ajusteaz intensitatea de trasare a fiecrei linii n funcie de panta acesteia. Liniile verticale i orizontale sunt trasate cu in tensitate redus, n timp ce liniile nclinate la 45, cu intensitate maxim. Tehnica a n tia lia s in g este utilizat pentru obinerea unor imagini de cali tate. Datorit efortului de calcul implicat, tehnica este utilizat de obicei doar n ultimul pas al crerii unei imagini.

5.6

Umplerea poligoanelor

Umplerea poligoanelor presupune, n primul rnd, un algoritm pentru deter minarea poziiei unui punct relativ la un poligon (se testeaz dac punct este sau nu n interiorul poligonului i n caz afirmativ, se aprinde, eventual cu o anumit culoare sau intensitate). Fiecare algoritm de umplere poate fi logic descompus n urmtoarele: 1. metoda de propagare care determin urmtorul punct ce va fi tratat; 2. procedura de start care iniializeaz algoritmul; 3. procedura de determinare a interiorului poligonului; 4. procedura de setare care schimb starea pixelului. Algoritmii de umplere se difereniaz funcie de urmtoarele dou situaii: (a) umplerea se realizeaz odat cu trasarea poligonului; (b) umplerea se realizeaz dup ce poligonul a fost trasat.

5.6.1

Primitiva poligon plin

In primul caz, una din problemele principale este aceea de a defini interiorul i exteriorul. Problema nu este simpl dac poligonul nu este convex. Regula par-impar, menionat la algoritmii de determinare a liniilor i suprafeelor ascunse, este des utilizat pentru determinarea interiorului unui poligon. Se alege un punct oarecare din interiorul regiunii ce urmeaz a fi testat i o linie dreapt ce pleac din acel punct spre o direcie arbitrar i nu trece prin nici un vrf. Fie pe aceast dreapt un segment delimitat de punct i altul oarecare ce nu aparine interiorului dreptunghiului ce ncadreaz figura. Dac segmentul intersecteaz laturile poligonului de un numr impar de ori, regiunea este considerat de interior. In figura 5.62 se prezint regiunile interioare ale unui poligon concav. Tehnica par-impar este utilizat i n procesul de selectare a unui obiect cu ajutorul cursorului grafic.

175

Punct exterior Punct exterior Punct interior Punct interior

Figura 5.62: Determinarea regiunilor interioare prin regula par-impar

(a)

(b)

Figura 5.63: Conversia scan a poligoanelor (a) exemplu poligon concav (b) poligon cu laturi orizontale

Figura 5.64: Intervale de umplere cu pixelii marginali marcai cu negru (a) aplicnd algoritmul punctului mijlociu apar pixeli n exterior (b) pixeli corect alei

176

Conversia scan a poligoanelor pline Se consider poligonul din figura 5.63.a. Trebuie s determinm care pixeli de pe fiecare linie de scanare sunt n interioriul poligonului i s setm pixelii corespunztori la valorile corespunztoare. Acest proces trebuie repetat pentru fiecare linie de scanare care intersecteaz poligonul. Cea mai simpl variant de trasare const n utilizarea algoritmilor de trasare a segmentelor de linii ce formeaz frontiera poligonului i inerea evidenei pixelilor intersectai de fiecare linie de baleiaj. In aceast manier se vor aprinde anumii pixeli din afara poligonului (fiind mai apropiaie de o latur), fr a ine seama dac sunt n interiorul sau exteriorul poligonului. Acest fenomen poate avea consecine negative n momentul cnd se traseaz mai multe poligoane de culori diferite, pixelii menionai fiind susceptibili a ocupa regiuni ale poligoanelor nvecinate (sau n momentul n care are loc tergerea unui poligon din colecie). Este de preferat s se traseze numai pix elii care sunt strict n interiorul regiunii. Algoritmul de scanare trebuie ajustat n consecin (figura 5.64). Construim un algoritm incremental pentru calcularea pixelilor care mrginesc zonele pline. Distincia dintre interior i exterior este realizat la trecerea liniei de baleiaj. Se presupune c iniial se pornete din afara oricrui poligon. Astfel dup prima intersecie cu o latur, se trece de la exterior la interior. La a doua intersecie cu o latur a unui poligon se trece de la in terior la exterior. Repetnd acest procedeu, se observ c dup un numr impar de intersecii, pixelii sunt n interior, iar dup un numr par, n exterior (consecin a regulii par- impar). Prin convenie, laturile se consider interioare poligonului. Pentru fiecare linie de baleiaj, algoritmul de umplere presupune: 1. determinarea interseciilor liniei de baleiaj cu fiecare din laturile poligonu lui; 2. sortarea interseciilor n ordinea cresctoare a absciselor; 3. aprinderea pixelilor ntre perechi de intersecii care se afl n interi orul poligonului pe baza paritii n curs. Paritatea iniial este par. Aprinderea pixelilor are loc numai dac paritatea este impar. Paritatea se schimb la intersecia laturilor poligonului. In pasul 3 apar urmtoarele probleme: (a) Dat fiind o intersecie cu un x, fracionar, arbitrar, cum determinm care dintre pixelii aflai de o parte i de alta a interseciei sunt de interior: dac ne apropiem de o intersecie fracionar din dreapta i din interiorul poligonului, atunci punctul de interior va avea abscisa egal cu partea ntreag a coordonatei x a interseciei; dac ne aflm n afara poligonului, se adaug o unitate la partea ntreag. (b) Cum tratm cazul special al interseciei cu x ntreg: dac ne apropiem de intersecie din exterior, pixelul va fi considerat de interior; dac ne apropiem de intersecie din interior, pixelul va fi considerat de exterior. (c) Cum tratm cazul special al vrfurilor poligonului: se traseaz i ine seama n calcul de paritate numai de un vrf, al unei laturi, a crui y este minim relativ la acea latur (n cazul n care un vrf are y maxim pentru o latur, el va fi trasat numai dac are y minim relativ la o latur

177

adiacent). In figura 5.63.a, la scanarea liniei y = 3 vrful A este numrat o singur dat la paritate i este trasat fiind vrf cu y minim pentru latura F A i maxim pentru latura AB. Linia de scanare y = 1 ntlnete doar pe B; deoarece liniile A B i CD au ambele y minim n B, acesta va fi numrat de dou ori la paritate (intrare n intervalul de pixeli, trasare pixel, ieire din intervalul de pixeli). La intersecia liniei y = 9 cu vrful F nu se va trasa pixelul (F are y maxim pentru ambele laturi F A i E F , trecerea prin acest vrf neafectnd paritatea). (d) Cum tratm cazul n care avem linii orizontale: de exemplu, se consider cazul poligonului din figura 5.63.b. Se pornete de la latura de jos. Cum la A, y este minim, iar A B coincide cu linia de baleiaj, paritatea este impar i segmentul A B este trasat. Cum B C are B ca minim, paritatea devine, dup B, par. La vrful J, latura JJ are J ca minim pe axa y, dar nu i latura JA, astfel nct paritatea devine impar i intervalul de umplere ncepe cu J. Intervalul de umplere care pornete de la latura IJ i atinge C continu, deoarece C este maxim local pe axa y (pentru B C i C D ). La D, minim local, paritatea se schimb i intervalul de umplere este nchis. La I, maxim local, paritatea rmne i segmentul IH nu este umplut. La H, minim local, paritatea se schimb i intervalul de umplere este deschis la H i nchis la intersecia cu E F . In mod similar, G F nu este trasat. La calcularea interseciilor trebuie evitat tehnica brut de testare a fiecrei laturi a poligonului relativ la interseciile cu fiecare linie nou de scanare. De obicei, doar un numr redus de laturi intersecteaz linia de baleiaj. De aseme nea, majoritatea laturilor care intersecteaz linia i vor intersecta i linia i + 1 (fenomen numit coerena laturilor). Cnd trecem de la o linie de scanare la alta, putem calcula noua valoare x a interseciei a laturii pe baza valorii x vechi a interseciei (precum n cazul trasrii liniilor), utiliznd x *+1 = x* + 1 /to, unde to este panta laturii. In algoritmii incrementali anteriori aritmetica fracionar este evitat prin calcularea unei variabile de decizie ntreag i verificarea sem nului ei n vederea alegerii pixelului celui mai apropiat de curb. Se consider o latur cu panta mai mare dect +1 ca fiind latura stng a unui poligon (cazurile contrare sunt tratate n mod similar). Presupunem c se pornete de la coordonatele ntregi {xmin, ymin) Cnd y este incre mentat, coordonata x a punctului de pe linia ideal va crete cu l/m , unde = (ymax ymin)/(xmax x min) este panta liniei, x va avea o parte ntreag i una fracionar, care poate fi exprimat ca o fracie avnd nu mitorul ymax ymin- De exemplu, dac x m ,in este 3, iar panta este , secvena de valori a lui x va fi 3, 3|, 3|, 3| = 4| etc. Dac partea fracionar a lui x este nenul, aceasta va trebui rotunjit pentru a determina pixelul de interior al poligonului. Cnd partea fracionar a lui x devine mai mare dect 1, x trebuie incrementat i din partea fracionar se scade 1. Utilizarea fraciilor poate fi evitat urmrind doar numitorul fraciei to: se consider o variabil increment care contorizeaz adunrile ce se fac la numitor pn cnd acesta depete numitorul, moment n care numrtorul trebuie decrementat cu numitorul i x trebuie incrementat. Construim un algoritm care preia avantajele coerenei laturilor. Evidena mulimii de laturi ce intersecteaz o linie de baleiaj se realizeaz printr-o struc tur numit tabelul laturilor active (AET). Laturile din acest tabel sunt sortate 178

poin,er

A E T

FA

EF

DE

CD

|"*-|^| 9 | 2 | O | -| > j 9 | 2 | ^ | - j ^ j 11 j 10 | -f- j *-|> | 11 | 13 | O |

k|

/m a x*
(a) pointer DE CD

l~ *~ M " M * ! *~M" M
(b)

Figura 5.65: AET la (a) linia-scan 9 (b) linia-scan 10

dup abscisele x ale interseciilor (figura 5.65). La trecerea la o nou linie de baleiaj, se actualizeaz tabelul: se elimin laturile care nu mai intersecteaz linia de baleiaj, se adaug noile laturi intersectate si se calculeaz valorile abs ciselor pentru laturile care au rmas tabel, printr-un algoritm incremental. Pentru simplificarea operaiei de adugare de laturi se creeaz un tabel al latu rilor (ET) care conine toate laturile sortate dup coordonatele y cele mai mici. Tabelul de laturi este constituit din mai multe subtabele corespunztoare n numr cu numrul liniilor de baleiaj. Fiecare subtabel conine descrierea la turilor n ordinea cresctoare a absciselor x a punctelor ce se afl pe linia de baleiaj (figura 5.66). Fiecare intrare a subtabelelor conine coordonata y maxim a laturii, coordonata x a captului laturii cu y minim si incrementul lui x utilizat la trecerea de la o linie de baleiaj la alta (1/pant).

Figura 5.66: Tabelul E T Algoritmul este urmtorul: 179

1. seteaz y pe cea mai mic valoare coordonat y din ET cu y -ul primei liste nlnuite nevide; 2. iniializeaz AET pe lista vid; 3. repet pn cnd AET i ET sunt vide: (a) mut din lista corespunztoare lui y din ET n AET acele laturi pentru care ymin = y (laturi de intrare), apoi sorteaz AET pe baza lui x (sortare rapid deoarece ET este presortat) (b) aprinde pixelii de pe linia de scanare corespunztoare lui y utiliznd perechi de coordonate din AET; (c) elimin din AET acele intrri pentru care y = y max (laturile nu vor fi utilizate la urmtoarea linie de scanare); (d) incrementeaz y cu 1 (coordonatele urmtoarei linii de scanare); (e) pentru fiecare latur care rmne n AET, actualizeaz x pentru noul
y-

Tringhiurile i patrulaterele pot fi tratate precum cazuri speciale de poligoane deoarece au doar dou laturi care se intersecteaz cu linia de scanare (excluznd laturile orizontale). Cum un poligon arbitrar poate fi descompus ntr-o reea de triunghiuri, trasarea lui se poate efectua pe baza acestei descom puneri (trasarea triunghiurilor componente). Triangularizarea este o problem clasic n geometrie i este uor de realizat pentru poligoane convexe; este ns dificil n cazul poligoanelor concave. Strategia descris n algoritmul de mai sus poate fi utilizat i n cazul cercurilor i elipselor.

5.6.2

Umplerea regiunilor din rastru

In cazul umplerii unui poligon deja trasat, intervin o serie de probleme adiionale n implementarea algoritmilor. Aceste probleme sunt generate de structura discret a frame b u f f er-ului. Una dintre acestea este determinarea laturilor unui poligon dup ce acesta a fost deja figurat pe ecran. O alt pro blem este determinarea interiorului. O regiune din rastru este o colecie de pixeli. Exist dou tipuri de regiuni conexe. O regiune este 4-conex dac oricare doi pixeli ai regiunii pot fi unii printr-o secven de pixeli utiliznd doar mutri n direciile sus, jos, stnga, dreapta. O regiune este 8-conex dac oricare doi pixeli ai regiunii pot fi unii printr-o secven de pixeli prin micrile anterior menionate, plus cele pe diagonale. O regiune 4-conex este 8-conex, dar nu i reciproc (vezi colecia de pixeli aprini din figura 5.67). O regiune poate fi definit n dou moduri: 1. o regiune definit prin interior relativ la un pixel P este cea mai mare regiune conex de pixeli a cror valoare din fra m e-b u ffer este aceeai cu a lui P i care conine pe P; 2. o regiune definit prin frontier relativ la un pixel de interior P i unul de frontier Q este cea mai mare regiune conex de pixeli a cror valoare nu coincide cu valoarea frontierei (valoarea lui Q) i care conine pe P (interiorul poate conine pixeli de culori diferite).

180

> K .> > K .> ) \ ) V .) ' Figura 5.67: Regiune 8-conex n rastru Algoritmi recursivi In cazul n care poligonul este deja trasat n rastru, se pot utiliza tehnicile recurive de umplere. Se presupune c se cunoate un punct din interiorul poligonului. Dac este aprins, atunci este pe o latur a poligonului. Se aplic tehnica par-impar pentru depistarea unui punct de interior care nu este pe nici o latur a poligonului. Dac punctul interior considerat nu e aprins, se aprinde i se continu algoritmul pentru cei patru (sau opt) pixeli vecini. Dac pixelul curent este aprins, se renun la apelul recursiv. Anumii pixeli pot fi vizitai ns de mai multe ori. Algoritmii care umplu regiunile definite prin interior sunt numii algoritmi f l o o d - f i l l , iar cei pentru regiunile definite prin frontier, boundary-f i l l . Procedurile recursive care implementeaz aceste tehnici sunt urmtoarele:
Procedure F lo o d F ill4 ( x ,y :in te g e r ; {punct de s t a r t } valVeche, {v a lo a re ce d e fin e te in t e r i o r u l} valNou : color) ; {v a lo a re de n lo c u ir e } begin i f EeadPixel(a:, y) = valV'eche then begin W riteP ixel (x, y, valNou ) ; F lood F ill4 (a :, y 1, valVeche, val Nou ) ; F lood F ill4 (a :, y + 1, valVeche, valNou) ; F lood F ill4 (a : l,y , valVeche, valNou) ; F lood F ill4 (a : + l,y,valVeche,valNou) end end; procedure B oundaryF ill4( x , y :in te g e r ; {punct de s t a r t } val Margine, {v a lo a re ce d e fin e te marginea} valNou : color) ; {v a lo a re de n lo c u ir e } var

c : color-,
begin c := readP ixel(cc, y ) ; i f c O val Margine and {Nu s -a a tin s marginea} c < > valNou then {Nu s -a mai tr e c u t pe a i c i } begin W riteP ixel (x, y, valNou) ; BoundaryFill4(a;, y 1, val Margine, valNou) ; BoundaryFill4(a;, y + 1, val Margine, valNou) ;

181

o o

oooooooo
ooo O O OOO
-I

&
O

o o O

oooooooo
ooo Cu O O Ct- O O O
O*

-I

o o O

oooooooo
ooo Cu O O Ct- O O O o
-I

o o O

oooooooo
ooo Cu O O ooo o
-i

o o O
o

o ooo oo ooo ooo


(a)

o4- o o < y - o o ooo ooo


(b)

ooo<y-oo ooo ooo


(c)

O o

oooooo ooo ooo


(d)

Figura 5.68: Paii algoritmului de umplere pe baz de stiv

BoundaryFill4(a; + \,y,valMaryine,valNou ) ; BoundaryFill4(a; \,y,valMaryine,valNou) end end;

Pentru suprafee mari, pot interveni probleme de memorie - numrul mare de proceduri neterminate poate necesita o stiv sistem de dimensiune mare. Algoritmi pe baz de stiv Un algoritm care evit problemele algoritmilor recursivi este cel care lucreaz cu intervale de umplere. Aceste intervale sunt mrginite la ambele capete de pixeli de valoarea frontierei. Un interval este identificat prin pixelul su cel mai din dreapta. Se consider un punct de interior cunoscut. Se umple intervalul continuu de pixeli ce conine punctul de start. Apoi linia de deasupra este examinat de la dreapta la stnga pentru a determina cel mai din dreapta pixel al intervalului. Adresa acestui pixel este memorat n stiv. La fel se procedeaz cu linia de sub cea umplut. In figura 5.68 se d un exemplu: intervalul de umplere ce conine punctul de start este figurat n (a) (punctul de start este ngroat). Adresele pixelilor numerotai sunt introdui n stiv. Numerele indic ordinea din stiv, 1 fiind procesat ultimul. Algoritmul se oprete cnd stiva este goal.

5.7

Texturi

Textura se definete ca o structur compus din elemente primitive (tipare) care se repet mai mult sau mai puin regulat.

5.7.1

Clasificare

Texturile sau detaliile ce apar pe suprafeele obiectelor de modelat pot fi: 1. constante ca mrime i orientare pe suprafaa obiectului; 2. de mrime i orientare variabil, corespunztor poziiei faetelor a cror textur o reprezint; 3. neregulate.

182

Figura 5.69: Textur transpus pe suprafa

Texturile de primul tip sunt folosite pentru aplicaiile 2D, iar n 3D se prefer texturile de al doilea tip. Texturile de primul tip se codific n baza de date prin matrice. Elementele matricei caracteristice texturi se numesc t e x e li . Se alege un element repetabil prin translaie pe orizontal si vertical. Funcie de precizia dorit si rezoluia disponibil se digitizeaz acest element printr-o partiie m x n a ariei pe care este reprezentat. Fiecrui pixel astfel obinut i se asociaz un element al unei matrice ^ c u m linii si n coloane, ocupnd poziia corespunztoare si avnd valoarea 1 dac simbolul conine pixelul si 0 dac pixelul este neutilizat. Dac se folosete un monitor care admite mai multe niveluri de intensitate pe pixel, atunci valoarea elementului E{j poate fi chiar intensitatea corespunztoare pix elului din poziia i, j. Detaliile superficiale, cum sunt textele sau simbolurile marcate pe suprafaa obiectelor, pot fi tratate ca texturi de categoria a doua. Transpunerea pe ecran a texturii se poate face i la o anumit scar. Dac textura apare mrit, nu se pun probleme deosebite, pur i simplu se constru iete o alt matrice pe baza lui E dar avnd s-m linii i s-n coloane, unde s este factorul de scar. Dac s m i s n nu sunt numere ntregi, ele se aproximeaz prin adaus, iar intensitile n pixeli se aleg din gama disponibil ca fiind cele mai apropiate de intensitile medii calculate. Texturile tridimensionale, dei mai puin utilizat, pot conduce la imagini mult mai realiste dect dac se utilizeaz texturi bidimensionale proiectate pe suprefeele obiectelor.

5.7.2

Aplicarea texturilor pe suprafee

O metod de a reda texturile de tipul doi const n a le introduce n baza de date prin puncte caracteristice, pentru ca apoi s li se aplice aceleai transformri precum tuturor punctelor corpului. Se marcheaz ns apartenena texturii la faetele pe care apare efectiv, iar transpunerea pe ecran se face numai pentru punctele vizibile ale poligoanelor respective (figura 5.69). Se consider exemplul unei texturi ce trebuie aplicat pe o suprafa plan. Se caut o funcie de mapare a unui punct P (x ,y ,z ) de pe suprafaa plan la un punct T (u ,v) din spaiul uv n care se definete textura. Datele de intrare necesare maprii sunt: N, vectorul unitate normal la suprafaa plan, 5, vector 183

Figura 5.70: Maparea texturii (a) pe un cilindru (b) pe o sfer

unitate ortogonal pe N, din suprafaa plan, care aliniaz axa absciselor u , un punct Po(xo, yo, zo) care va corespunde cu T (0, 0) al texturii, k , factor de scalare pentru textur. In aceste condiii, maparea este definit prin u V ' S/k, v = V - T/k , unde V = (x xo, y yo, z zo )T, iar T = N x S. In cazul maprii pe un cilindru de raz r si nlime h (figura 5.70.a), se deduce transformarea ,, f arccos(z/r)/(27r), v ~ y / 5 u | i _ arccos(2:/r)/(27r), x>0 altfel

In cazul maprii pe o sfer (figura 5.70.b) sunt necesare urmtoarele informaii: ne, vectorul unitate normal la sfer ntr-un punct de la ecuator, np, vectorul unitate ortogonal pe ne si normal la polul nord, Pc{x c, yC Jz c), cen trul sferei, r, raza sferei, P ( x , y , z ) punctul care va fi mapat la T(u,v). Atunci ,, _ v _ (p/ir, / 0/ ( 2tt), v - j i _ e /(27r)
184

dac altfel

(n p

x ne) n > 0

unde n = ((x x c)/r, (x x c)/r, (x x c)/r)T , ip = arccos(^rij, n) < p^ O altfel

arccos((ne n )j sin(<p)) O

5.7.3

Generarea texturilor tip fractal

Termenul de fractal din matematic a fost generalizat de comunitatea graficii pe calculator. In grafic, un fractal se refer la orice obiect care are o msur substanial a similaritii n sine, statistic sau exact. Astfel, numai fractalii generai prin procese recursive infinite sunt obiecte fractale adevrate. Pe de alt parte, obiectele generate prin procese finite pot conduce la schimbri ne vizibile n detaliu dup o anumit etap, astfel nct sunt aproximri adecvate ale modelului ideal. Ceea ce se nelege prin similaritate n sine este sugerat de exemplul curbei lui Koch. trei. Pornind de la o linie cu un salt (figura 5.71), se nlocuiete fiecare segment al liniei cu o figur identic cu cea original, redus cu factorul trei. Acest proces este repetat: fiecare segment al figurii (b) este nlocuit cu figura asemntoare ntregii figuri (b). Dac procesul este repetat la infinit, rezultatul este similar n sine, adic ntregul obiect este similar (prin translaie, rotire, scalare) cu o poriune a sa. Un obiect care arat la fel dac este scalat se spune c este substanial similar n sine.

(a)

(b)

Asociat cu noiunea de similaritate n sine este cea de dimensiune fractal. Pentru a defini aceast noiune se consider urmtoarele obiecte: 1. Un segment de linie, care este unidimensional, divizat n n pri egale. Ficare parte a sa arat precum originalul scalat cu factorul n = n1^1. 185

2. Un ptrat (figur bidimensional) divizat n n subptrate egale. Fiecare arat la fel precum originalul redus cu factorul = n1/2 (de exemplu, considernd nou subptrate, factorul este de reducere este 3). Dac divizm imaginea rezultat prin aplicarea procedeului din figura 5.71, repetat la infinit, n patru pri (analog bucilor asociate cu cele patru seg mente originale din figura 5.71.a), fiecare bucat rezultat arat ca si originalul redus cu factorul trei. Spunem c fractalul construit are dimensiunea d, dac d verific ecuaia 41/ d = 3, adic d = log2 4 / log2 3 1.26. Cele mai cunoscute obiecte fractale sunt
(a ) m u lim e a J u lia -F a t o u ,

(b) mulimea Mandelbrot. Aceste obiecte sunt generate urmrind regula x > x 2 + c, unde x este un numr complex. Se reamintete faptul c dac un numr complex are modulul subunitar, irul recursiv al ptratelor converge la zero, iar dac modulul este supraunitar, ptratele devin din ce n ce mai mari. Dac modulul este unitar, irul ptratelor are tot modulul unu. Numerele de modul unitar formeaz o frontier ntre cele atrase spre zero si cele atrase spre infinit. Dac se aplic repetat regula x > x 2 + c fiecrui numr complex, pentru o anumit valoare nenul a lui c, anumite numere complexe vor fi atrase la infinit, altele spre numere finite. Trasnd frontiera dintre cele dou submulimi se obine mulimea Julia-Fatou, care depinde de valoarea numrului complex c. Dou exemple sunt prezentate n figura 5.72.

(a)

(b)

Figura 5.72: Mulimea Ju lia-F atou pentru (a) c = 0,12375 + 0, 056805z (b) c = -0 ,0 1 2 + 0,74 i

Dac se calculeaz mulimile J u l i a - F a t o u pentru toate valorile c com 186

plexe i se coloreaz cu negru punctele c pentru care mulimea J u l i a - F a t o u este conex si cu alb punctele pentru care mulimea nu este conex, se obine mulimea M a n d e l b r o t din figura 5.73. Din fericire, exist o cale mai uoar de a genera aproximaii ale mulimii Mandelbrot. Pentru fiecare valoare c se aplic regula x > x 2 + c cu x = 0 + Oi de un numr finit de ori (de exemplu, de 1000 de ori). Dac dup aceste iteraii numrul complex obinut este n afara discului centrat n zero si de raz dat (de exemplu, 100), atunci c va fi colorat alb, altfel negru. Cu ct numrul de iteraii si raza discului cresc, imaginea rezultat este o aproximare mai bun a mulimii Mandelbrot.

Figura 5.73: Mulimea Mandelbrot

Imaginea pe ecran poate fi generat recursiv prin mai muli pai astfel nct schimbrile sub dimensiunile pixelului nu mai trebuie efectuate. Formele autoasemenea (curba K o c h de exemplu) corespund unui mod liniar de adugare a detaliilor (sunt replici exacte ale formei iniiale, la o scar mai mic). Detaliile pot fi adugate i ntr-un mod neliniar, obinndu-se astfel fractali autoptratici (mulimile fractale invariante la o transformare ptratic - de exemplu mulimea Mandelbrot), autoinveri (mulimi fractale invariante la o transformare de inversiune) etc. Metodele de generare a fractalilor descrise mai sus se bazeaz pe recursivitate (care la nivelul limbajului de programare implementeaz proprietatea de autoasemnare) sau pe calcul iterativ. In modelarea sistemelor naturale, transformrile deterministe aplicate n generarea unei figuri pot fi combinate n mod aleator. Rezultatele privind fractalii sunt extrem de sugestive pentru modelarea formelor naturale ca munii, arborii sau coasta mrii. De exemplu, se consider urmtorul algoritm de generare a unui munte fractal, algoritm bazat pe subdivizarea recursiv. Fie cazul unidimensional. Presupunem c pornim de la un segment de linie de pe axa x. Imprim segmentul n dou buci i mutm mijlocul la o distan arbitrar n direcia y , obinnd figura 5.74.b. Se continu subdi vizarea fiecrui segment i se calculeaz poziia nou a punctului de mijloc al

187

segmentului de la (ar*, j/*) la (&j+i, y%+i): _ I i + Xj+i


X nou

_ t/i + t/i+i
?

V n ou

(*^i+l

R \% nou) i

unde F(-) este o funcie ce determin extinderea perturbaiei in termenii di mensiunii segmentului care se perturb i R(-) este un numr aleator ntre 0 i 1 selectat pe baza lui x nou. Dac P( s) = s, atunci primul punct nu poate fi afiat mai sus de 1, fiecare din urmtoarele dou puncte, nu mai sus de 1/2 .a.m.d., nct toate punctele rezultate se ncadreaz n ptratul unitate. Dac P( s) = sa forma liniei frnte depinde de parametrul a. Pot fi utilizate i alte funcii, ca de exemplu P( s) = 2- s . Algoritmul poate fi uor generalizat la dou dimensiuni. Se pornete de la un triunghi precum cel din figura 5.75. Se marcheaz mijloacele laturilor. Co ordonatele y ale fiecrui punct de mijloc sunt modificate n maniera descris n cazul unidimensional, astfel nct rezultatul s fie un set de mai multe triunghi uri. Cele patru triunghiuri nclinate se proceseaz n mod analog. Repetarea recursiv a acestei divizri conduce la o imagine realist a unui munte.

Figura 5.75: Generarea unui munte tractai

188

5.8

Culoare

Culoarea unui obiect nu depinde numai de obiectul n sine ci i de sursa de lumin care-1 lumineaz, de culoarea suprefeei nconjurtoare i de sistemul de vizualizare uman. In plus anumire obiecte reflect lumina (obiecte compacte), altele transmit lumina (obiecte transparente).

5.8.1

Lumina acromatic

Lumina acromatic este ceea ce se distinge pe ecranul unui televizor alb-negru. Cantitatea luminii este singurul atribut al luminii acromatice. Aceast canti tate poate fi discutat n sensul fizic al energiei, n care termenii de intensitate i luminozitate sunt utilizai, sau n sensul de percepie a intensitii, n care termenul de strlucire este utilizat. Diferitelor niveluri de intensitate li se aso ciaz anumii scalari (0, negru, 1, alb, ntre 0 i 1, diferite scale de gri). Considerm un dispozitiv c u n + 1 nivele de intensitate (tipic n = 255). Se pune o prim problem a corespondenei intensitilor din domeniul [0,1] cu nivele de intensitate a dispozitivului. mprirea intervalului [0,1] n subintervale egale este soluia cea mai simpl, dar nu cea mai bun, datorit proprietii ochiului de perceptare diferit a intensittilor n raporturi de nivele de inten sitate i nu n valori absolute a intensitii (valori absolute doar pe scara de strlucire - definit ca intensitatea percepiei). De exemplu, diferena dintre intensitile 0.10 i 0.11 este perceput la fel ca diferena dintre 0.50 i 0.55. Astfel nivelele de intensitate din [0,1] trebuie spaiate logaritmic i nu liniar. Dac se consider Io intensitatea minim care poate fi atins, atunci

I0 = I0, h = rl0, h = r h = r2I0, ... , In = rnI0 = 1,


deci r = (1/Jo)1/ , Ij = 0 < j < n. De exemplu, pentru 4 nivele, adic n = 3, i Jo = 1/8, se obine r = 2 i intensitile |, |, |, 1. Io n cazul unui display este ntre 1/200 i 1/40. Minimul nu este 0 deoarece fosforul reflect lumina inciden pe display. O alt problem este numrul de nivele de intensitate necesare pentru a reproduce o imagine cu trecere continu de la negru la alb astfel nct repro ducerea s par continu. O asemenea situaie apare cnd r < 1.01 (sub rata de 1.01 ochiul uman nu distinge diferena dintre dou intensiti succesive). Astfel,

n = logr( l / / 0) > logi_0i ( l //0),


cu meninuea c 1/Jo este o caracteristic dependent de dispozitiv. In cazul display-urilor n minim variaz n intervalul [400,530], pe cnd n cazul dis pozitivelor de tiprire a ziarelor, pentru care Io = 0.1, n minim este 234. Acestea sunt valorile teoretice; n practic ns datorit efectului de ameste care a cernelii sau apariia/dispariia aleatoare a unor pixeli suplimentari n reproducere, n descrete considerabil pentru anumite medii de afiare. Astfel pentru tiprirea ziarelor sau crilor sunt suficiente 64 de nivele pentru a crea impresia unei imagini continue.

189

5.8.2

Simularea intensitii pe monitoarele monocrome

Se consider c alb i negru sunt cele dou niveluri de intensitate de care se dispune la nivelul unui pixel pe d isp la y. Tehnica folosit este cea a texturilor constante. In principiu, se asociaz fiecrui nivel de intensitate o textur cu o densitate corespunztoare de puncte deschise. Simularea nivelurilor de intensitate luminoas prin texturi de tip constant se bazeaz pe proprietatea ochiului uman de a aciona ca integrator spaial (la distane mari fa de obiectul privit sau atunci cnd zona observat are dimensiuni mici). Metoda reduce evident din rezoluie, cci un element de textur va fi reprezentat pe o arie din ecran de civa pixeli. Tehnica aproximrii nivelurilor de intensitate luminoas prin densitate de puncte albe i negre pe o anumit suprafa elementar (h a lf-to n in g ) este folosit n tiprirea fotografiilor alb-negru. Fiecare element de imagine are o finee precizat prin numrul de niveluri de intensitate care pot fi simulate. Cel mai simplu element de imagine este o arie de 2 x 2 pixeli pe un ecran monocrom, pe care se pot produce 5 niveluri diferite de intensitate (figura 5.76.a). In general, o arie d e n x i pixeli poate reproduce n 2 + 1 niveluri de intensitate. Pentru a folosi arii mai mari de 4 x 4 pixeli (peste 17 niveluri de intensitate) este necesar un monitor cu o rezoluie mai mare de 512 x 512 pentru a obine rezultate satisfctoare. Peste 32 de niveluri pe pixeli fac ca tranziiile s fie abia percetibile. Imaginile realizate prin discretizarea inten sitii luminoase n 64 de clase au practic acelai aspect cu originalul. Pentru o matrice 3 x 3 de pixeli se recomand setul din figura 5.76 (b). Funcie de ordinea n care se aprind pixelii se poate construi o matrice carac teristic. In cazul dat, / 6 8 4\ D = 1 0 3 . V5 2 7 j Pentru a aprinde o poriune de pixeli cu intensitatea I ntre 0 i 9 se aprind pixelii a cror valoare corespunztoare n matrice este mai mic dect I. Dac imaginea are dimensiunea matricii-rastru, problema aprinderii unui pixel (x , y) depinde de intensitatea dorit I ( x, y) n acel punct i de matricea D. Fie n dimensiunea acesteia din urm. Se calculeaz i = x mod n i j = y mod n. Atunci, dac I ( x , y) > Dij, pixelul ( x,y) se aprinde. In construirea setului de texturi (pattern-uri) trebuie s se in seama de anumite reguli: 1. Texturile trebuie astfel proiectate nct s nu produc efecte vizuale ar tificiale n arii mari de intensitate identic. De exemplu, texturile din figura 5.77.a pot produce senzaia de haurare. 2. Texturile trebuie s constituie o secven cresctoare, astfel nct orice pixel aprins pentru nivelul de intensitate j s rmn aprins i pentru nivelurile de intensitate k > j. Se minimizeaz astfel diferenele dintre texturi succesive i efectele de contur. 3. Texturile trebuie s creasc de la centru nspre exterior pentru a crea efectul de cretere a mrimii punctului. 4. Pentru uurarea trasrii imaginilor pe imprimante, pixelii aprini trebuie s fie asociai cu pixeli vecini aprini. De exemplu, texturile din figura 5.77.1) nu pot fi acceptate. 190

(a)

-&---- &- 0 ----O -

-i>-o o N/ N/ N N/ N/ N /> >( Ni || 7 -ii N/ Nt \ N/ S { | (\ 1 -a {\ { 's / 'N i N N C) i C)


L :

(b)

0 (b (fa (fa <b-iM > o ( \ /> >1

4H

8 9 Figura 5.76: Simularea intensitii - abloane pentru tehnica h a lf-to n in g cu (a) cinci niveluri de intensitate (b) nou niveluri de intensitate

Figura 5.77: Texturi contraindicate

Tehnica h a lf-to n in g este utilizat i la display-uri binivel. Considernd un d isp la y cu doi bii per pixel i deci patru niveluri de intensitate, prin njumtirea rezoluiei se crete numrul nivelurilor de intensitate la 13 (se consider texturi de dimensiune 2 x 2: avem patru pixeli la dispoziie, fiecare avnd posibilitatea de a lua trei valori n afara negrului, adic se obin 4 x 3+1=13 niveluri de intensitate). Utiliznd un d isp la y color cu trei bii per pixel, cte unul pentru fiecare culoare (rou, verde, albastru) se pot utiliza texturi 2 x 2 pentru a obine 125 culori diferite: fiecare textur poate afia cinci intensiti pentru rou, verde sau albastru, rezultnd 53 combinaii de culori.

5.8.3

Lumina cromatic

Pentru descrierea luminii cromatice se utilizeaz trei msuri: 1. nuana, care face distincie ntre culorile fundamentale; 2. saturaia: se refer la ct de departe este culoarea fa de un gri de intentitate egal. Culorile pastelate sunt relativ nesaturate. Culorile nesaturate conin mai mult lumin alb dect culorile vii, saturate De exemplu, rou este saturat, roz este nesaturat relativ la rou; 191

Saturaie Alb Tente Culoare

Strlucire

Figura 5.78: Relaia dintre tente, umbre i tonuri

3. luminozitatea include noiunea acromatic de percepere a intensitii unui obiect reflectant. Strlucirea este utilizat pentru a referi intensitatea perceput de obiectele care emit lumin. Culoarea poate fi specificat prin tente, tonuri i umbre. O tent rezult prin adugarea unui pigment alb la un pigment de culoare pur, descrescnd saturaia. O umbr se obine adugnd un pigment negru la culoarea pur, descrescnd luminozitatea. Un ton este rezultatul adugrii att a pigmentului negru ct i a unuia alb la pigmentul pur. In figura 5.78 se prezint relaia dintre tente, umbre i tonuri.

5.8.4

Modele de culoare

Un model de culoare const ntr-o specificare a unui sistem de coordonate tridi mensionale i a unui domeniu vizibil n sistem n care toate culorile particulare unei game pot fi descrise. Modelele orientate hardware cele mai utilizate sunt modelul R G B pentru monitoare color, YIQ pentru sisteme TV color i C M Y pentru anumite printere color. Din pcate aceste sisteme nu permit exprimarea direct a noiunilor de nuna, saturaie i strlucire. Pentru nlturarea acestui inconvenient au fost construite o serie de alta modele precum H S V (sau HSB), H L S i HVC.
M o d e l u l R GB (Red-Green-Blue)

Sistemul RG B utilizeaz sistemul de coordonate cartezian, iar ca domeniu, un cub. Vrfurile sistemului de coordonate carteziene au semnificaiile din figura 5.79.a. Diagonala principal reprezint nivelurile de gri. Acest model este utilizat la C R T color. Este un sistem de tip aditiv (contribuii individuale sunt adunate pentru a obine rezultatul). Gama de culori reprezentat depinde de dispozitiv.
M o d e l u l C M Y (Cyan-Magenta-Y e l l o w )

Este specificat printr-un cub asemntor i este utilizat la anumite imprimante color. 192

Albastru(0,0,l) C yan(0,l,l)

Negru
(b)

Negru
(c)

Figura 5.79: Modele de culoare (a) Modelul RGB (b) Modelul HSB (c) Modelul HLS

Sistemul C M Y este un sistem substractiv (se folosesc filtre pentru a substrage culoarea din lumina alb). Se utilizeaz acelai sistem de coordonate i domeniu ca n cazul modelului RGB, ns n acest caz alb-ul este n originea sistemului. Culorile sunt specificate prin ceea ce este nlturat sau sustras din lumina alb (contrar adugrii la negru de la sistemul RGB). De exemplu, galbenul absoarbe albastru din lumina alb reflectat (care este sum de rou, verde i albastru). Relaia dintre modelul C M Y i RG B este exprimat prin schimbarea coordonatelor (c , m , y ) = (1,1,1) (r, g, b ). Un alt model, CMYK, utilizeaz negrul (notat K) ca a patra culoare; acest sistem este utilizat la anumite dispozitive de copiere. Modelul YIQ Sistemul Y IQ este utilizat n transmiterea televiziunii color. Componenta Y se reler la luminozitate i este singura comnponent recunoscut de televizoarele alb-negru; cromacitatea este codat n componentele I i Q . Se utilizeaz tot sistemul cartezian de coordonate i domeniul este definit de un poliedru convex care poate fi transformat ntr-un cub. Matricea de transformare din R G B n YIQ are elemente nenule i distincte pentru a rezolva o problem des ntlnit n televiziune: dou culori diferite aezate alturat pe un monitor color apar diferite, dar pe un monitor monocrom, pot prea uneori identice - dac cele dou culori au valori Y diferite n modelul YIQ problema este evitat. Modelul H SB i modelul H LS Modelul H SB (Hue-Saturation-Brightness, nuan-saturaie-strlucire) este bazat pe intuiia artistic pentru tente, umbre i tonuri (figura 5.78). Sistemul de coordonate este cilindric i subsetul din spaiu n care modelul este definit 193

este o piramid cu ase fee (figura 5.79.b). Nuana H este unghiul din ju rul axei verticale, pornind de la rou considerat 0. Culorile complementare formeaz un unghi de 180. Saturaia S se msoar de la axa vertical la la turile hexagonului. Valorile intermediare ale strlucirii V de la 0 la 1, pentru S = 0, corespund nivelurilor de gri. Adugarea pigmentului alb corespunde descreterii lui S fr schimbarea lui V. Umbrele sunt create pstrnd 5 = 1 i descrescnd V. Tonurile sunt create descrescnd att S ct i V. Hexagonul de baz a modelului corespunde cu proiecia modelului R G B de-a lungul diagonalei principale privit de la alb la negru. Orice subcub a mod elului R GB corespunde unui hexagon dintr-un plan cu V constant. Se poate realiza astfel o coresponden ntre modelele H S B i RGB, diagonala principal din modelul R GB definind axa V din modelul HSB. Modelul H LS (Hue-Lightness-Saturation, nuan-luminozitate-saturaie) este definit prin corpul din figura 5.79.C. Poate fi privit ca o deformare a modelului HSB.

5.8.5

Metoda tabelului de culori

Intr-un sistem cu rastru ce permite afiarea mai multor culori, numrul de bii necesari pentru reprezentarea unui pixel n frame buffer depinde de: numrul de culori disponibile, metoda de stocare a valorilor-culoare. Tabelele de culoare pot fi structurate pentru a permite utilizatorului folosirea unor combinaii de culori fr a cere o dimensiune mare a zonei tam pon. Un exemplu concludent este tabelul 5.1. Cod culoare 0 1 2 3 4 5 6 7 Rou 0 0 0 0 1 1 1 1 Verde 0 0 1 1 0 0 1 1 Albastru 0 1 0 1 0 1 0 1 Culoare afiat Negru Albastru Verde Cyan Rou Magenta Galben Alb

Tabelul 5.1: Exemplu de tabel de culori Cnd o culoare particular este specificat ntr-un program aplicativ, val oarea binar corespunztoare este stocat n fr a m e b u f f e r pentru fiecare pixel ce va fi afiat n acea culoare. O alt metod pentru stocarea codurilor de culoare a pixelilor (ce necesit o zon tampon mai redus ca dimensiune dect pentru metoda anterioar) este cea a tabelului de celule-culori (color l o o k u p table, lut). Valorile din zona tampon cadru reprezint indici n tabelul de celule-culori. Presupunem c se rezerv cte 4 bii pentru informaiile de intensitate (adic avem 16 niveluri de intensitate) pentru fiecare dintre cele trei tunuri de electroni (rou, verde, al bastru). Spre deosebire de cazul tabelului 5.1, fiecare intrare n tabel utilizeaz 12 bii pentru specificarea unei culori, deci un total de 163=4096 culori diferite 194

Frame buffer

Color lut

Display

Figura 5.80: Tabelul de celule-culori pentru un sistem cu 8 bii per pixel

Intensitate 0.0 0.33 0.67 1.0

Valorile n frame buffer 0 (00) 1 (01) 2 (10) 3 (11)

Culoarea afiat Negru Gri nchis Gri deschis Alb

Tabelul 5.2: Codificarea nivelurilor de gri sunt disponibile. O referin de 6 bii din fram e-buf f e r (limitare datorat dimensiunii memoriei video) permite accesarea a 2=64 de poziii n tabelul de celule. Sistemele ce utilizeaz aceast tehnic permit utilizatorului s selecteze orice combinaie de 64 de culori dintr-o palet de 4096 de culori. Intrrile n tabelul de celule pot fi schimbate oricnd pentru a permite noi combinaii de culori (schimbarea paletei de culori). In figura 5.80 este schiat organizarea tabelului de celule pentru o referin de 8 bii. Pixelul de coordonate ( x,y) ce are valoarea 67 n frame b u ffe r este afiat pe ecran cu o culoare ce corespunde tunului rou de electroni la 9/15 din maxim, cel verde la 10/15, iar cel albastru la 1/15. Utilizarea tabelului de celule poate crete puternic numrul opiunilor de culori fr creterea mrimii imaginii n memorie. Sistemele cu culori de calitate nalt utilizeaz 24 de bii pentru fiecare poziie n tabelul de celule i 9 bii per pixel n frame buffer. Astfel se per mite selectarea de ctre utilizator a 512 culori dintr-o gam de aproximativ 16 milioane de culori-intrri ale tabelului de celule. Pentru monitoarele care nu au capabiliti privind culoarea, comanda de selectare a culorii poate fi utilizat n programele aplicative pentru a seta nivelul de intensitate, sau scala de gri. Numeroase aplicaii utilizeaz valori numerice ntre 0 i 1 pentru a seta nivelurile scalei de gri. Un exemplu este prezentat n tabelul 5.2. Stocarea nivelurilor de intensitate este similar cu stocarea codurilor de culori. Dac se aloc un bit pentru un pixel, sunt posibile doar dou valori din scala de gri (negru i alb). Dac se aloc trei bii per pixel, se permit 8 nivele diferite de intensitate. Sistemele cu calitate nalt a imaginii permit 24 sau mai muli bii pentru stabilirea nivelului de intensitate per pixel.

195

5.9

Animaie

Animaia, arta de a da via unor imagini, presupune nu numai micare, ci i o serie de efecte vizuale. Tehnica animaiei const n variaia n timp a poziiei, umbre, culori, transparen, texturi, schimbri de lumin i puncte de vedere, apropiere i ndeprtare (zoom). Animaia presupune o reprezentare a corpurilor din 4D. Dac anumite obiecte sau aspecte din imaginile animate se schimb prea repede relativ la numrul de imagini afiate ntr-o secund, apare fenomenul de clipire (temporal a lia s in g ). Animaia imaginilor video presupune o schim bare de cel puin 30 de imagini per secund (fp s = frame per second). Animaie convenional Se realizeaz pe baza standardului urmtor: se concepe povestea, se nregis treaz sunetele, se deseneaz imaginile cheie (key frames), se construiesc i maginile intermediare (inbetweening). Rezultatul este filmul de test (p e n cil t e s t ) care ulterior este colorat. Acest model de construcie a imaginilor a nimate poart denumirea de animaie pe baz de imagini cheie (key-frame animation). Modelul se aplic i n animaia pe calculator. Anumite etape ale animaiei convenionale se preteaz la asisten com puterizat, n special fazele de construire a imaginilor intermediare i colorare, nainte de aceste dou faze, imaginile cheie sunt digitizate (prin scanare sau trasare cu ajutorul unor echipamente grafice specifice) i sunt postprocesate (filtrate pentru eliminarea zgomotelor i netezirea contururilor). In faza de compunere a imaginilor, n care figurile principale i imaginile de fond sunt combinate pentru a genera imagini distincte, se pot utiliza de asemenea tehnici automate. Interpolare In procesul de creare a imaginilor intermediare apar o serie de probleme. Cal culatorul primete o poziie iniial i una final. Animaia bazat pe imagini cheie dezvolt secvene animate continue prin interpolarea atributelor scenei. Imaginile cheie trebuie s aib un nivel nalt de coeren a imaginii, altfel imaginile intermediare nu vor sugera o micare real. Ochiul uman percepe circumstanele n care are loc interpolarea: de exem plu, dac este vorba de o aruncare la un anumit unghi a unei mingi (figura 5.81) sau o alunecare pe o suprafa. Interpolarea liniar (adecvat celei de a doua situaii), care este uor de realizat, are numeroase limitri. Date valorile w , i Vf ale unor atribute (poziie, culoare, mrime) din imaginea iniial, respectiv cea final, valoarea w * a unei imagini intermediare este w * = (1 t)vi + tvf, cu variabila temporal t [0,1]. Valoarea vt variaz neted de la w , la Vf. Dndu-se trei imagini-cheie n aruncarea unei mingi sub anumit unghi, respec tiv poziia iniial, cea final i cea corespunztoare nlimii maxime, prin interpolare liniar se creeaz o micare continu, dar cu o schimbare brusc a vitezei n punctul de maxim (interpolarea liniar genereaz discontinuiti ale derivatelor). Astfel, pentru interpolarea imaginilor cheie consecutive se uti lizeaz adesea funciile sp lin e (vezi capitolul anterior, seciunea curbe cubice). 196

Figura 5.81: Interpolare liniar a micrii unei mingi (a) Poziii cheie (b) Interpolare liniar

O figur reprezentat printr-o linie poligonal poate fi interpolat ntre imaginile cheie prin interpolarea fiecrui vrf al liniei poligonale, de la poziia sa iniial la cea final. Aceast idee este fundamental n tehnica de animaie pe baz de schelet, n care obiectelor n micare le sunt asociate scheletele (acestea sunt interpolate, si nu obiectele n totalitate). Fie exemplul micrii unui picior (figura 5.82): scheletul poate fi constituit dintr-o linie poligonal

Figura 5.82: Utilizarea tehnicii scheletului

cu patru vrfuri, respectiv vrful tlpii, mijlocul acesteia, centrul genunchiului si un punct ce definete legtura cu corpul. Trasarea a 5-6 polilinii-schelet corespunztoare, interpolarea cu funcii s p lin e a poziiilor consecutive ale vrfurilor si reconstituirea piciorului pe baz de schelet pot conduce la o imag ine realist a efecturii unui pas. Animaia bazat pe deformarea liber a formelor utilizeaz seturi de puncte de control care definesc un volum n spaiu. Cnd aceste puncte sunt mutate, orice obiect coninut este deformat cu o cantitate dependent de relaia sa cu punctele setului (figura 5.83). In cazul bidimensional se utilizeaz o matrice de 197

Figura 5.83: Deformarea liber a formelor

puncte de control n aceeai modalitate n care se definesc suprafeele cubice. Pentru o interpolare cuadratic se folosesc matrice 3 x 3, iar pentru interpolare cubic, matrice 4 x 4 . In figura 5.84 se consider cazul deformrii unei grilei rectangulare definit de 9 puncte de control (interpolare cuadratic). Pentru
(a) LY (b) ly

Figura 5.84: Deformarea liber a formelor

controlul spaiului bidimensional se utilizeaz 2 parametrii, w i ;, un punct oarecare fiind definit astfel:

(Pn Pl2 P 13 \ / (1 v)2 \ P'(x',y') = ( ( l - u ) 2, 2 u ( l - u ) , u 2) P21 P22 P23 2(1 - v)


\ p 31 P32 P33J \

V2

Ullde 1 1 = (x Xmin) /(xmax Xmin) i V = (y ymin)/i]Jmax Vruin)' Dac nu exist deformare P'(x',y') = P( x, y) . Generalizarea la 3D este imediat: sunt neecsari 3 parametrii, u, v, w, iar n cazul interpolrii cuadratice, 27 puncte de control. Animaia deplasamentelor consider mai multe stri ale obiectelor din care se obin obiectele intermediare care vor deveni parte a secvenei animate. Ideea de baz este asocierea unor vectori de deplasare (figura 5.85) unor puncte ce definesc suprafaa unui obiect (fiecare vector presupune dou sau mai multe deplasamente). 198

Figura 5.85: Transformarea unui ptrat ntr-un cerc prin deplasamente

In animaia unor obiecte tridimensionale trebuie interpolate att poziia ct si orientarea acestora. Poziia poate fi interpolat ca si n cazul 2D prin specificarea poziiei centrului unui obiect n fiecare din imaginile cheie. Prob lema principal este interpolarea orientrii corpurilor. De obicei, o rotaie este specificat prin trei rotaii dup axele principale. Ordinea aplicrii aces tor rotaii de baz nu poate fi aleatoare. Mulimea tuturor rotaiilor posi bile corespunde unei structuri algebrice: cuaternionii. Rotaiile sunt cuaternionii unitari, care sunt simboluri de forma a + bv + cv^ + dv, unde a, b, c, d sunt numere reale ce satisfac relaia a2 + b2 + c 2 + d2 = 1; cuaternionii se multiplic pe baza legii de distributivitate si pe baza urmtoarelor reg uli: W [ 2 = v ^ 2 = v ^ 2 = - 1 , V i V 2 = V3 = -^2^1, V 2V ? J = W [ = ~ V 3V 2 , V3V = v i V1V3 . Rotaia de unghi cp n jurul vectorului unitate (6, c, d)T corespunde cuaternionului cos (cp/ 2) + b sin(ip / 2)W [ + c sin(ip/2 )v^ + d sin (cp/2 )vs. Efectuarea unor rotaii succesive presupune multiplicarea cuaternionilor core spunztori. Deoarece a2 + b2 + c 2 + d2 = 1, cuaternionii pot fi privii ca puncte ale unei sfere n 4D. Pentru interpolarea dintre doi cuaternioni, se poate con sidera cel mai scurt drum de pe sfer dintre acetia (arc). Denumirea acestui procedeu este acela de interpolare sferic liniar. Efecte simple de animaie Dac se construiesc imagini color cu 8 bii per pixel ntr-un fra m e-b u ffer de 640 x512, numai o singur imagine conine 320 Kb de informaie. Transfer area unei noi imagini nspre frame buf f e r la fiecare 1/30 parte dintr-o se cund necesit o rat de transfer de 9Mb informaie per secund, astfel nct realizarea animaiei este practic imposibil pentru majoritatea calculatoarelor mici. Pentru evitarea stocrii unor asemenea cantiti de informaii se recurge la metoda tabelului de celule-culori (look-u p ta b le s sau lu t animat ion) si compunerea imaginilor prin utilizarea tabelului de culori. De exemplu, scurg erea printr-o conduct poate fi simulat prin ciclarea unei secvene de culori din lu t. Schimbrile brute de culoare pot fi evitate prin schimbarea gradat a indicelui din lut n mai multe imagini intermediare, de la culoarea iniial, la cea final.

199

In cazul animaiei unor obiecte de dimensiuni mici pe un fond fix se utili zeaz tehnica sprite-urilor. Un s p r it e este o regiune dreptunghiular mic care este suprapus peste fram e-buf f e r la nivel video. Locaia sprite-ului la fiecare moment n frame b u ffe r este specificat n anumii regitrii, mod ificarea valorilor acestora cauznd deplasarea sprite-ului. Sprite-ul poate ascunde valori din fram e-buf f e r sau poate fi ascuns de acestea. Se utilizea z la implementarea cursoarelor n fram e-buf f e r i generarea animaiei prin mutarea sprite-u lu i deasupra unei imagini de fond. Mai multe sprite-uri presupun definirea unei liste de prioriti (cine pe cine acoper). O aplicaie a sprite-urilor, extrem de popular, este cea a jocurilor video, n care animaia const aproape n ntregime din sp rite-u ri care se mic pe un fundal fix. Deoarece locaia i mrimea fiecrui s p r it e este stocat n regitrii, este uor de verificat coliziunea dintre sprite-uri. Traiectoriile obiectelor pot fi generate prin urmrirea unui film real. O asemenea tehnic este roto sco p e: se realizeaz un film n care oameni sau animale interpreteaz roluri din scenariul animaiei, apoi animatorii, pe fon dul existent, nlocuiesc personajele reale cu echivalentul lor desenat. Micarea personajelor animate poate fi realizat urmrind micarea personajelor pe care le nlocuiesc. Aceast tehnic produce o animaie cu micri realistice. O alt tehnic este cea care asociaz o serie de indicatori punctelor cheie ale corpu lui unei persoane. De exemplu, mici luminie pot fi ataate punctelor cheie din arhitectura uman i poziiile acestor luminie sunt nregistrate din direcii diferite pentru a furniza o poziie 3D pentru fiecare punct cheie n orice moment (tehnica marionetei grafice). Atenuarea efectelor datorate discretizrii temporale Fenomenul de clipire a imaginii, ce pare n cazul unei micri foarte rapide tem poral a lia s in g ), poate fi parial rezolvat prin creterea rezoluiei tempo rale. Dac, de exemplu, se urmrete rotirea spiei unei roi (figura 5.86), la o vitez de rotaie mare, adic la un anumit raport cu rata expunerii , spia pare s se nvrteasc n sens invers, sau chiar s stea pe loc. Fenomenul apare deoarece micarea este prea rapid pentru a fi nregistrat corect. Imaginile consecutive sunt similare, aa cum n 2D o linie de scan nu difer prea mult de urmtoarea. Se poate ine seama, pentru simplificare, de o an umit coeren n construirea imaginilor. Fiecare obiect descrie o regiune din 4D. De exemplu, o sfer care nu se mic descrie n 4D un cilindru. In mod similar, un cerc din 2D ce se deplaseaz dintr-un col al ecranului n cel opus descrie un cilindru n spaiul 2D+timp. Aplicnd divizarea hiperspaiului 4D i utilizarea unor tehnici de tip r a y -tr a c in g se poate economisi timp considerabil n construirea de imagini consecutive. O alt tehnic pentru a n t ia lia s in g temporal este animaia pe cmpuri. O imagine video convenional este trasat n dou etape: prima dat liniile scan pare, apoi cele impare. Fiecare linie scan este retrasat, aproximativ, la fiecare 1/30 dintr-o secund (presupunem c raza tubului de electroni parcurge ecranul de 60 de ori pe secund). Dac culorile pixelilor liniilor pare sunt calculate la timpul t, iar liniile impare la t+60-1 (s), apoi imaginea este compus ntr-o singur hart de bii, iar acest proces se repet pentru fiecare imagine,

200

Timp: t = O

t= 1

Xr.ro!

Xr.ro!

Nr.rot.: Figura 5.86: Animaie: (a) Eantionare corect (b) Imposibilitate de precizare a direciei de naintare (c) Eantionare incorect: impresia deplasrii n sens invers

atunci animaia este realizat cu un efect de 60fps, chiar dac fiecare line scan este reactualizat la un interval de 1/30 dintr-o secund. Dezavantajul acestei tehnici const n faptul c imaginile de pe ecran constau din linii ale unor imagini construite la timp diferii i poate aprea un fenomen de clipire. M etode de control a animaiei Controlul explicit este forma cea mai simpl de control al animaiei. Anima torul descrie tot ceea ce se realizeaz n animaie, specificnd att schimbri simple precum scalarea, translaia, rotaia, ct i informaiile despre imaginile cheie i metodele de interpolare. Aceast interpolare poate fi dat explicit (prin descriere matematic) sau, ntr-un sistem interactiv, prin directa manipulare a unui moiise, jo y s t i c k sau alt dispozitiv de intrare. Animaia procedural introduce proceduri algoritmice pentru a controla atributele unui obiect, surs de lumin sau observator (de exemplu, pentru animarea unor mecanisme fizice). In cazul unui control procedural, elementele distincte ale unui model comunic n scopul determinrii proprietilor lor. Acest tip de control se utilizeaz pentru generarea micrilor greu de specificat prin control explicit. Anumite obiecte din lumea fizic se mic descriind linii drepte, dar micrile majoriti obiectelor sunt determinate de alte obiecte cu care vin n contact, astfel nct micrile rezultate nu mai sunt liniare. Micrile acestora pot fi descrise prin constrngeri. Animaia se poate realiza doar innd seama de aceste constrngeri, prin control bazat pe constrngeri (animaie compor tamental). Se genereaz prile unui ansamblu (linii, cercuri, etc), apoi se definesc constrngerile de tip punct ("linia are un capt fix ), legtur ("linii unite la un capt ), unghiuri ("linii paralele ). Micarea ansamblului se real izeaz respectnd regulile de constrngere. Utilizarea actorilor este o form nalt de control procedural. Un actor, n 201

animaie, este un program mic, invocat odat pentru o imagine, pentru determi narea caracteristicilor unui obiect (actorul este un obiect n sensul programrii orientate obiect). Un actor, poate trimite mesaje altor actori pentru a controla comportarea lor. Limbaje de animaie Limbajele de animaie pot fi clasificate astfe: (a) limbaje bazate pe notaii tip list liniar, (b) limbaje cu scop general care nglobeaz i directive de animaie, (c) limbaje grafice. Intr-un limbaj bazate pe notaii tip list liniar, fiecare eveniment din animaie este descris printr-un numr de imagine iniial i unul de imagine final, precum i o aciune care are loc. Aciunile presupun anumii parametrii ( de exemplu, "rotete obiectul Casa ntre imaginile 20 i 34 n jurul axei 1 cu 45 de grade, determinnd creterea rotaiei la fiecare imagine din tabelul C . Limbajele generale ce includ directive de animaie se bazeaz pe gener area procedural a obiectelor i a animaiei. Valorile variabilelor limbaju lui pot fi utilizate ca parametrii pentru rutinele ce genereaz animaie, astfel nct asemenea limbaje sunt indicate pentru simulri. Entitile primitive ale unui asemenea limbaj includ vectori, culori, poligoane, colecii de poligoane (solide), colecii de obiecte (grupuri), puncte de vedere, lumini, volum de vedere. Obiectele pot fi transformate geometric (exemple: deplasare sus, jos, stnga, dreapta, nainte, napoi, mrire, micorare). O asemenea transformare primete ca argument un obiect i returneaz o copie transformat a obiectului. Problema principal a limbajelor textuale este dificultatea animatorului de a-i imagina rezultatul execuiei unui ir de comenzi. In locul unor descrieri explicite ale aciunii, n limbajele grafice de animaie, animatorul construiete o imagine a aciunii. Un prim pas a fost realizat prin introducerea curbelor P. O curb P este o reprezentare parametric a micrii (sau a unui alt atribut) a unui obiect sau ansamblu de obiecte din interiorul unei scene. Animatorul descrie micarea unui obiect prin specificarea grafic a coordonatelor sale ca funcie de timp.

202

6. Interfee utilizator
Dei nu exist o definiie unanim acceptat i general valabil pentru interfaa, utilizator, se poate spune c aceasta reprezint ansamblul dispozitivelor logice (de interaciune ntre utilizator i aplicaie) i a sarcinilor (task-uri) elementare de interaciune (implementate cu diverse tehnici de interaciune) care asigur introducerea interactiv a datelor de intrare, controlul interactiv al execuiei programului i obinerea rezultatelor intermediare sau finale.

6.1

Elemente de baz ale interfeelor utilizator

In contextul general al graficii interactive i n particular, al interfeelor grafice avantajele i dezavantajele dispozitivelor de interaciune sunt abor date la unul dintre urmtoarele trei nivele: dispozitiv task dialog La nivelul dispozitivelor implicate, se analizeaz caracteristicile hardware ale acestora fr a se trata aspectele utilizrii prin intermediul software-ului. De exemplu, la acest nivel se analizeaz ergonomia formei unui mouse prin comparaie cu a altuia, posibilitatea organizrii eficiente a spaiului (pe birou!) n cazul utilizrii unui dispozitiv n locul altuia, etc. La nivelul task (sarcin) se compar tehnicile de interaciune implicate n realizarea aceleiai sarcini utiliznd diverse dispozitive. De exemplu, n urma unei astfel de analize se poate concluziona c un utilizator experimentat poate fi mai eficient utiliznd tastatura dect selecia din meniuri cu un mouse sau, c utilizarea unui mouse este de preferat pentru selectarea unui obiect afiat pe ecran dect prin utilizarea tastelor de deplasare a cursorului, etc. La nivelul dialogului se analizeaz modul de nlnuire n secvene a sarcinilor de interaciune sub aspectul eficienei, ergonomiei i fiabilitii. De exemplu, dei poziionarea cursorului este mai rapid cu un mouse, dac mn utilizatorului este deja pe tastatur i sarcina care urmeaz poziionrii pre supune utilizarea tastaturii, atunci utilizarea tastelor de deplasare ar putea fi mai convenabil si, deci, trebuie oferit ca alternativ.

6.2

Dispozitive de intrare

Dispozitivele de intrare pot fi analizate din dou puncte de vedere: fizic i logic. Dispozitivele fizice de intrare se refer la acele dispozitive hardware prin care utilizatorul introduce informaii ntr-un sistem de calcul. Dispozitivele logice de intrare reprezint tipurile de interaciune posibile ntr-o aplicaie. Dezvoltarea unor aplicaii de avangard a exercitat presiuni asupra proiectanilor de dispozitive care au oferit noi tipuri de dispozitive. Pe de alt

203

parte (feedback!), noile dispozitive fizice disponibile reprezint o provocare pentru proiectanii de aplicaii pentru a dezvolta noi tehnici de interaciune. Dispozitive specializate de intrare mai puin comune sunt: (a) dispozitive pentru recunoaterea vocii; (b) diverse tipuri de tablete grafice, sensibile la presiune sau orientare; (c) dispozitive de interaciune tridimensional. Astfel, unele dintre dispozitivele de interaciune 2D au fost extinse pentru a permite interaciuni 3D (de exemplu: jo y s tick -u l, tra ck b a ll-u l, sp a ceb a l1-ul, data g lov e, etc. Astfel de dispozitive se utilizeaza frecvent n aplicaii din domeniul realitii virtuale (V irtu a l E ea lity ). In cele ce urmeaz ne vom limita la discutarea aspectelor legate de dispoz itivele logice. Dispozitive logice de baz sunt: 1. locatorul, 2. tastatura, 3. valuatorul, 4. selectorul.

6.2.1

Locatorul

Locatorul este un dispozitiv utilizat pentru a indica o poziie i/sau o orientare n spaiul de lucru. Dispozitivele fizice utilizabile ca locator pot fi clasificate funcie de trei caracteristici independente: 1. dup sistemul de coordonate propriu: (a) dispozitivele absolute (de exemplu, digitizoarele) au o origine i pre cizeaz poziiile n raport cu acea origine; (b) dispozitivele relative (de exemplu mouse, tr a c k b a ll, jo y s t ic k ) nu au o origine absolut, ele preciznd doar modificri fa de poziia anterioar; 2. dup modul de interaciune: (a) dispozitivele directe (de exemplu, lig h tp en sau touch screen) la care poziia curent este indicat prin poziionarea dispozitivului pe ecran; (b) dispozitivele indirecte (de exemplu, mouse sau jo y s t ic k ) la care mutarea cursorului (poziiei curente) pe ecran se face fr a atinge ecranul. Astfel de dispozitive presupun realizarea unei coordonri ntre ochiul i mna utilizatorului. 3. dup tipul poziionrii: (a) dispozitivele continue (de exemplu, jo y s t i c k sau mouse) sunt dis pozitive care transform o deplasare lin i continu a mini ntr-o deplasare similar a cursorului pe ecran. (b) dispozitivele discrete (de exemplu, sgeile de pe tastaur) permit deplasarea cursorului doar pe direcii prestabilite, cu incremeni de deplasare prestabilit, eventual n poziii prestabilite. Observaie. Viteza de deplasare a cursorului la dispozitivele continue este afectat de rata C/D (C ontrol - to - D isplay), adic de viteza de deplasare a mini raportat la deplasarea cursorului.

204

6.2.2

Tastatura

Reprezint unul dintre dispozitivele de intrare cele mai comune. In principal, este utilizat pentru introducerea irurilor de caractere. Poate fi utilizat ns i pentru a suplini locatorul (poziionare), valuatorul (precizarea unei valori) sau selectorul (alegerea unei variante din mai multe posibile). Cel mai des ntlnit tip de tastatur este tastatura Qwerty. Exist ns i alte tipuri de tastaturi, cum ar fi tastatura Dvorak, la care literele frecvent utilizate sunt plasate n poziii de baz ale degetelor, sau tastatura pentru stenodactilografie.

6.2.3

Valuatorul

Valuatorul este un dispozitiv logic care permite introducerea unui numr ce reprezint o valoare numeric a unui parametru. Din punct de vedere fizic, valuatoarele pot fi de tipul poteniometrelor radio, rotative sau liniare. Poziia poteniometrului fa de origine precizeaz valoarea numeric. Valuatorul poate fi cu plaj fix de valori, valorile obinute de la un asemenea dispozitiv fiind absolute (de exemplu, butoane gen poteniometru de volum), sau cu plaj nemrginit de valori, valorile obinute fiind relative (poteniometrii fr poziie maxim i minim).

6.2.4

Selectorul

Selectorul sau ntreruptorul este un dispozitiv logic care permite selecia unei variante din mai multe alternative posibile (list de stri sau aciuni posibile). Dispozitivele fizice tipice pentru selectare sunt tastele funcionale dar i dispozitive specializate de tip ntreruptor (de exemplu, butoanele mouse-ului sau a track ball-u lu i).

6.3

Sarcini de interaciune

O sarcin de interaciune (tip de interaciune, unitate de interaciune, in t e r a c t io n task) reprezint unitatea de informaie semnificativ n contex tul aplicaiei (interactive) pe care utilizatorul o poate produce cu ajutorul unui dispozitiv de interaciune. Observaie. O sarcin de interaciune difer de un dispozitiv logic de intrare prin aceea c definete ce realizeaz utilizatorul, n timp ce dispozitivele logice precizeaz cum, se realizeaz o anumit interaciune. Sarcinile de interaciune sunt centrate utilizator, n timp ce dispozitivele logice de intrare reprezint un concept orientat ctre programator i pachetele grafice. Se pune ntrebarea: ct de mic sau ct de mare este o astfel de unitate de informaie? De exemplu, deplasarea unui dispozitiv de poziionare pe o anumit distan, determin o unitate de informaie dac noua poziie sem nific repoziionarea unui obiect sau specificarea unui capt de segment. In schimb mutarea cursorului peste un element de meniu nu reprezint o unitate de informaie. 205

Sarcinile de interaciune pot fi clasificate astfel: 1. sarcini de interaciune de baz (Basic In te r a c tio n Task, prescurtate BIT), care sunt uniti de informaie indivizibile (pe baza acestei definiii i analogiei cu chimia, le putem numi atomi de interaciune)-, 2. sarcini de interaciune compuse (Composite In te r a c tio n Task, pres curtate CIT), care se obin prin agregarea (compunerea) mai multor BIT (molecule de interaciune). O tehnic de interaciune reprezint modul n care se realizeaz o sarcin de interaciune. De exemplu, o selecie poate fi realizat printr-un clic cu mouse-ul pe un element de meniu, prin introducerea numelui (identificatorului) elementului de selectat de la tastatur, prin apsarea unei taste funcionale asociat cu varianta, sau utiliznd un dispozitiv de recunoatere a vocii. Un alt exemplu este cel al unui dispozitiv de intrare folosit n mai multe tipuri de interaciune.

6.3.1

Sarcini de interaciune de baz

Un set complet de BIT-uri pentru grafica interactiv este constituit din: (a) poziionare, (b) selecie, (c) introducere de text, (d) cuantificare (introducere de valori numerice). Fiecare dintre aceste sarcini de interaciune de baz poate fi realizat prin mai multe tehnici de interaciune. Poziionarea Poziionarea necesit specificarea unui set de coordonate bidimensionale sau tridimensionale. Tehnica folosit de obicei pentru poziionare implic fie mu tarea cursorului pe ecran n poziia dorit i apoi apsarea unui buton, fie precizarea coordonatelor prin intermediul unei tastaturi reale sau virtuale. Indiferent de tehnica utilizat, apar o serie de probleme generale pentru toate aceste tehnici: 1. sistemele de coordonate, 2. rezoluia, 3. grila, 4. feedback-ul, 5. timpul de acomodare. Sisteme de coordonate. Sistemul de coordonate devine o problem impor tant atunci cnd, n cursul poziionrii, se primete reacia de la sistemul asupra cruia se acioneaz. De exemplu, dac un dispozitiv de tip locator este mutat spre dreapta pentru a "trage un obiect, apare problema direciei de mutare a obiectului. Exist cel puin trei posibiliti: obiectul se mut (a) n sensul pozitiv al axei x din sistemul de coordonate al ecranului (DCS);

206

(b) n sensul pozitiv al axei x din sistemul de coordonate ale lumii nconjurtor (WCS); (c) n sensul pozitiv al axei x din sistemul de coordonate propriu al obiectului. Prima soluie este cea mai viabil ntruct respect principiul compatibilitii stimul - reacie, care afirm c rspunsul sau reacia sistemului la aciunea utilizatorului trebuie s fie n aceeai direcie i/sau cu aceeai orientare, iar magnitudinea rspunsului trebuie s fie proporional cu aciunea. Rezoluia. Rezoluia necesar pentru poziionare poate varia de la aplicaie la aplicaie. Dac poziia se introduce numeric (de la tastatur) rezoluia poate fi orict de mare. Dac poziionarea se face prin tehnici de mutare a cursorului (utiliznd un locator) apar limitri de ordin fizic. In mod obinuit, rezoluia dispozitivelor de tip moiise, tablet grafic etc, este de la a 500-a pn la a 2000-a parte din unitatea de rezoluie a dispozitivului de afiare. Prin utilizarea transformrilor de tip window - to - view port, de exem plu, pentru a mri o regiune din W CS, este posibil s se realizeze o coresponden ntre unitatea de rezoluie a ecranului i o unitate de rezoluie a sistemului de coordonate ale lumii nconjurtoare, arbitrar de mic, coresponden care, de fapt, corespund unei mriri de rezoluie. Grila. Un ajutor important n realizarea sarcinii de poziionare l poate oferi o gril (g rid , reea rectangular) suprapus peste aria de lucru pentru a uura alinierea poziiilor sau obiectelor. De asemenea, grila poate fi util pentru a fora ca punctele de capt ale primitivelor grafice s cad pe gril (prin rotunjirea coordonatelor locatorului la coordonatele celui mai apropiat nod al grilei). Feedback. Exist dou tipuri de poziionare: spaial i lingvistic. In poziionarea spaial, utilizatorul cunoate poziia dorit prin raport cu ele mentele spaiale din apropiere. In poziionarea lingvistic, utilizatorul cunoate valoarea numeric a coordonatelor poziiei dorite. Feedback-ul reprezint mar carea poziiei curente prin cursor sau prin coordonatele numerice. Timpul de acomodare. Din punct de vedere al factorului uman se pune problema reducerii timpului n care se ajunge la o bun coordonare ochi - mn n procesul de poziionare. Un caz specific de poziionare, care presupune un timp de acomodare mai lung, l reprezint poziionarea continu (o succesiune de poziii care definesc o curb). Selecia Selecia, ca tip de interaciune, are scopul de a alege un element dintr-un set de alternative. In mod tipic, seturile de alternative constau din 1. comenzi 2. seturi de valori ale unor atribute 3. clase de obiecte 4. instane de obiecte 207

De exemplu meniul l in e s t y le (dintr-un program de desenat) const dintr-un set de valori pentru atributul l in e s ty le , iar meniul o b je c t type (linie, cerc, dreptunghi, text, etc.) este un set de clase de obiecte. Pe de alt parte, mulimea tuturor obiectelor din suprafaa de desen constituie un set de instane de obiecte. Anumite tehnici de interaciune pot fi folosite pentru a selecta din oricare din aceste seturi de alternative. Alte tehnici, ns, sunt utile numai pentru selecii din anumite clase. De exemplu, prin poziionarea pe reprezentarea vizual a unui element dintr-un set de alternative se poate face o selecie in diferent de tipul setului, pe cnd selecia dintr-un set de instane de obiecte nu se poate face prin utilizarea tastelor funcionale. Ceea ce difereniaz tehnicile de interaciune care se pot utiliza pentru selecie este caracterul fix sau variabil al numrului de elemente ale setului de alternative. Din acest punct de vedere, un set de alternative poate fi clasificat ca fiind cu dimensiunea (relativ) fix cu dimensiunea variabil In prima clas intr seturile de comenzi, atribute, clase de obiecte, care n mod obinuit au un numr fix de elemente, fr a se exclude ns posibilitatea lrgirii sau reducerii acestuia (nu foarte des i nu foarte mult!). In a doua clas, setul de alternative poate fi relativ mare i se poate schimba frecvent (la fiecare nou actualizare). Selecia din seturi de alternative cu dimensiune variabil. Dou tehnici sunt considerate ca fiind potrivite pentru acest tip de interaciune: nu mirea (naming) i indicarea (poin tin g). Selecia obiectelor prin numire. In cazul acestei tehnici, utiliza torul tasteaz numele obiectului pe care vrea s-l selecteze. Evident, exist situaii cnd aceast tehnic nu este eficient (de exemplu, cnd utilizatorul nu cunoate numele obiectelor din diverse motive: sunt prea multe, nu apar explicit pe suprafaa grafic, etc.). Dac ns utilizatorul cunoate numele obiectelor din setul de alternative, selecia prin numire poate fi mai eficient dect selecia prin indicare (de exemplu, aceast tehnic permite selecii mul tiple prin utilizarea de w ildcards). Dac se apeleaz la selecia prin numire este indicat ca dup fiecare tast apsat s se afieze, ca feedback, lista obiectelor al cror nume se potrivete cu numele parial introdus. In momentul n care aceast list conine un singur element, numele parial introdus poate fi completat de ctre program n mod automat (auto com pletion). Selecia prin indicare. Aceast tehnic presupune poziionarea cursoru lui pe obiectul dorit i apoi selecia propriu zis, fie cu ajutorul unei taste, fie cu un clic pe un buton de mouse. i n cazul acestei tehnici pot apare probleme atunci cnd obiectele sunt dispuse pe mai multe nivele (se acoper unele pe altele). Soluia const de regul n precizarea nivelului (la y er) pe care se face selecia. Exemple: AutoCAD, Meniuri ierarhice, etc (figura 6.1). Selecia din seturi de alternative cu dimensiune (relativ) fix. In cazul acestui tip de interaciune, tehnica cea mai frecvent utilizat o constituie 208

Mutare cursor

Mutare cursor

Gata

Gata
i v

3pre frunze b b ie c t V ierarhi1.

4- ierarhie

A lt com and

A lt com and

A lt com and

Figura 6.1: Diagrama de stare a tehnicii de selecie prin indicare a unui obiect dintr-o ierarhie de obiecte

selecia din meniuri. Problematica proiectrii meniurilor include urmtoarele: ordinea elementelor dintr-un meniu; meniuri cu un singur nivel sau meniuri multinivel; plasarea meniurilor; reprezentare vizual; dimensiunea i forma meniurilor; taste funcionale. Ordinea elementelor dintr-un meniu. Elementele de meniu pot fi or ganizate dup diverse criterii de ordonare: 1. alfabetic, 2. grupare logic dup scopul funcional, 3. dup frecvena utilizrii (cele mai frecvent utilizate la nceput), 4. n ordinea importanei (cele mai importante la nceput). Modul n care se ordoneaz elementele meniurilor trebuie s fie consistent n toate meniurile aplicaiei. Meniuri cu un singur nivel sau meniuri multinivel. In cazul n care numrul elementelor de meniu este prea mare pentru a fi afiate simultan, meniul respectiv poate fi divizat ntr-o ierarhie structurat logic sau ntr-o secven liniar de elemente care se afieaz succesiv (utiliznd s c r o l l bars). In cazul meniurilor ierarhice utilizatorul face o selecie din setul de alter native de la nivelul cel mai de sus, ceea ce i pune la dispoziie un alt set de alternative de pe nivelul imediat inferior. Ierarhiile de meniuri pot fi prezentate n diverse moduri: 1. cu reacoperire 2. n cascad 3. panouri de ierarhie Plasarea meniurilor. Meniurile pot fi statice i vizibile permanent, sau pot apare dinamic, la cerere (pop-up, pull-dow n, etc.). Pentru anumite aplicaii, mai ales cele care presupun existena unui d is p la y specializat pentru "obiectul propriu-zis, se poate plasa meniul pe un al doilea monitor.

209

Meniurile statice sunt indicate n cazul utilizrii unui d is p la y (fereastr) doar pentru afiarea meniurilor i precizarea comenzilor. Meniurile pop-up apar pe ecran pentru a oferi posibilitatea unei selecii fie: (a) ca urmare a unei aciuni explicite a utilizatorului (apsarea unei taste funcionale, selecia unei icoane, etc); (b) automat, cnd desfurarea dialogului (utilizator-aplicaie) presupune o selecie. Observaii: 1. Meniul pop-up apare de obicei n poziia curent a cursorului (spre care e focalizat atenia utilizatorului). 2. La apariia meniului poate fi prezentat ca selecie curent (care trebuie confirmat): (a) alternativa implicit (cea mai frecvent folosit, cea mai "general , etc); (b) ultima alternativ utilizat. 3. Meniurile pop-up pot fi dependente de context (sensibile la context). Meniurile pull-dow n (p u lle d -o u t) sunt ancorate ntr-o baz de meniu (care conine "titlul meniurilor pull-dow n). Activarea acestor meniuri poate fi: explicit (selecie fcut cu cursorul pe titlu); implicit (meniul "apare cnd cursorul ajunge deasupra titlului). Reprezentarea vizual. Problema principal este dac meniul va conine nume ale elementelor din setul de alternative sau reprezentri grafice (icoane) ale acestora. Reprezentarea textual (prin nume) a alternativelor are avantajul claritii dar confer un aspect "ncrcat meniului, n timp ce reprezentarea grafic (prin icoane) poate mri randamentul utilizrii meniului dac icoanele sunt sugetive. Uneori se dubleaz alternativele textuale cu icoane care vor fi din ce n ce mai des folosite, pe msur ce utilizatorul se acomodeaz cu ele (exemplu: meniul din M S Word). Selecia curent. In cele mai multe situaii este de preferat ca elementul curent selectat din meniu s fie marcat pentru a se deosebi ntr-un fel sau altul de celelalte elemente. Selecia curent poate fi marcat n diferite moduri: 1. afiare n video invers sau cu alt culoare, 2. marcare cu diverse semne grafice, 3. afiare sub titlul meniului. Dimensiunea i forma meniurilor. La proiectarea meniurilor trebuie realizat un compromis ntre dimensiunea mai mare a elementelor de meniu care permite o selecie mai uoar i dimensiunea mai mic care are avantajul c ocup mai puin spaiu din suprafaa util a ecranului. Taste funcionale. In cazul n care numrul elementelor de meniu este relativ mic, se pot asocia unora sau tuturor elementelor cte o tast funcional ceea ce permite o selecie mult mai rapid (n cazul unui utilizator versat). Interaciunea de tip text Sarcina de interaciune text permite introducerea de iruri de caractere crora aplicaia nu le asociaz o semnificaie aparte. De exemplu introducerea nu melui unei comenzi nu intr n aceast categorie de interaciune, spre deosebire 210

de etichetarea obiectelor unui desen sau introducerea de text n cadrul unui editor de texte, care sunt interaciuni de tip text. In mod obinuit tehnica de interaciune pentru introducerea de text presupune utilizarea tastaturii. O alternativ la folosirea tastaturii pentru introducerea textului o reprezin t utilizarea unui scanner. In principiu, aceast tehnic presupune utilizarea ulterioar (dup scanarea textului) a unei componente de recunoatere optic a caracterelor (O p tica l Character E ecog n ition - OCR) care are sarcina de a transforma bitmap-ul obinut dup scanare n succesiunea de coduri ASCII corespunztoare textului din imagine. Tehnica OCR apeleaz intens la algoritmi de recunoatere a formelor pentru identificarea caracterelor din imaginea cu text. Problemele care apar la utilizarea acestei tehnici de introducerea textului includ: 1. mbuntirea imaginii scanate; 2. eliminarea fondului; 3. decuparea unitilor de recunoscut (litere); 4. scalare; 5. orientare; 6. poziionare. O alt alternativ, relativ recent aprut, o reprezint utilizarea dispoziti velor de recunoaterea vocii, prin intermediul crora textul vorbit este trans format n succesiune de coduri ASCII. Cuantificarea Acest tip de interaciune presupune specificarea unei valori numerice, de regul ntre o valoare minim i una maxim. Tehnicile de interaciune utilizate includ: 1. tastarea valorii; 2. poziionarea unui "poteniometru ; 3. modificarea unui contor pentru incrementare/decrementare.

6.3.2

Sarcini de interaciune compuse

Tipurile de interaciune compozite (CIT) sunt combinaii de tipuri de interaciune de baz. Exist trei tipuri de baz de CIT: 1. celule de dialog (d ia lo g boxes), 2. tehnici de construcie, 3. manipulare dinamic. Celule de dialog De mult ori este necesar o selecie multipl dintr-un set de alternative. De exemplu, atribute de text, ca italic, bold, underline. etc. nu se exclud reciproc i utilizatorul ar dori s selecteze mai multe simultan. In plus pot s existe mai multe seturi de alternative care trebuie precizate simultan. De exemplu, tipul obiectului de desenat, grosimea liniei, aspectul liniei fac parte din seturi de alternative diferite care se pot preciza ntr-un pas de selecie, anterior aciunii de desenare a obiectului respectiv. 211

Tipurile de meniuri din care se poate face o singur selecie la un moment dat (pu ll-dow n , pop-up) nu sunt satisfctoare pentru selecii multiple fiindc dispar dup o selecie fcut, fiind necesar activarea lor pentru o a doua selecie. Aceast problem poate fi depit prin utilizarea celulelor de dialog care reprezint o form de meniu ce rmne vizibil pn cnd este prsit n mod explicit (cu acceptarea seleciilor fcute sau cu anularea lor). Seleciile fcute ntr-o celul de dialog pot fi corectate pe loc. De asemenea, atributele sau valorile specificate ntr-o celul de dialog pot fi aplicate imediat, pentru ca utilizatorul s vad efectul seleciei fcute nainte de a prsi celula de dialog. Tehnici de construcie Un mod de a desena o linie impune utilizatorului s precizeze punctul de start i punctul de sosire, dup care linia este desenat. Cu aceast tehnic ns, utilizatorul nu are posibilitatea de a vedea rezultatul nainte ca aciunea s rmn definitiv. O tehnic superioar const n utilizarea benzilor elastice (rubberband). Dup precizarea poziiei de start, orice nou poziie a cursorului este interpre tat ca punct de sosire temporar i linia este desenat corespunztor. De abia n momentul selectrii punctului de sosire definitiv linia devine permanent. Starea de band elastic este activ atta timp ct un buton al dispozitivului de poziionare i de selecie este apsat. In aceast poziie deplasarea curso rului provoac deplasarea liniei. Pornind de la aceast tehnic de desenare a liniilor se deriveaz tehnica desenrii dreptunghiului elastic, cercului elastic, elipsei elastice. O alt tehnic de construcie privete desenarea de linii frnte care pre supune o succesiune de selecii (ale capetelor segmentelor care alctuiesc linia poligonal) intercalate cu poziionri (care precizeaz poziia capetelor). In oricare dintre aceste tehnici pot fi aplicate asupra poziiei cursorului anumite constrngeri. De exemplu, cursorul poate fi obligat s se deplaseze pe anumite direcii sau la distane limitate de poziia de start. Un alt tip de constrngere l reprezint utilizarea unui, aa numit, cmp de gravitate, pentru a uura suprapunerea a doua poziii: n momentul n care cursorul intr n cmpul de gravitate al unui punct de capt al unui obiect existent pe suprafaa de desen, poziia care va fi selectat va coincide cu (va fi atras spre) acest punct. Manipulare dinamic In multe situaii nu este suficient desenarea de obiecte geometrice, ci este nece sar i modificarea acestora. Modificrile posibile includ schimbarea poziiei, rotirea i scalarea. Schimbarea poziiei se realizeaz prin tehnica de click -a n d -d ra g , care im plementeaz succesiunea buton apsat-deplasare-buton eliberat, corespunznd seleciei obiectului, deplasrii n noua poziie i seleciei noii poziii. Tehnici similare se utilizeaz pentru rotirea sau scalarea unui obiect i care presupun selecia obiectului, precizarea noii orientri (prin definirea unghiului de rotaie) sau a noii dimensiuni (prin definirea factorul de scal) i, apoi, selecia noii situaii. 212

Deplasarea, rotirea sau scalarea afecteaz un obiect n ntregime. Uneori, este de dorit ns mutarea unui punct individual dintr-un obiect. Aceast operaie se poate realiza de asemenea prin tehnica click -a n d -d ra g .

6.4

Principii n proiectarea interfeelor utiliza tor

Pentru a asigura calitatea unei interfee din punct de vedere utilizator trebuie avute n vedere o serie de principii de proiectare: 1. consisten, 2. asigurarea feedback-ului, 3. minimizarea posibilitilor de eroare (la utilizare), 4. asigurarea posibilitii de revenire din eroare, 5. posibilitatea utilizrii pe nivele de ndemnare, 6. reducerea necesitii de memorizare.

6.4.1

Consistena

Un sistem este consistent dac modelul conceptual, funcionalitatea, secvenialitatea i legtura cu dispozitivele hard sunt uniforme i respect cteva reguli simple i deci nu prezint excepii i condiii speciale. Principalul scop urmrit prin consistena unui sistem este de a permite utilizatorului s generalizeze cunotine despre un aspect al sistemului la alte aspecte. De asemenea consistena permite evitarea frustrilor care apar cnd un sistem nu se comport ntr-un mod logic. Metoda principal de a asigura consistena este proiectarea top-down a sis temului. Exemple de consisten: La ieiri, (a) se vor utiliza ntotdeauna aceleai codificri (de exemplu rou stop, verde pornete); (b) mesajele despre starea sistemului apar ntotdeauna ntr-o poziie logic fixat; (c) elementele de meniu i vor pstra ntotdeauna aceiai poziie relativ n meniu. La intrri, (a) tastele (CE, TAB, BS, etc) au ntotdeauna aceleai funciuni; (b) comenzile globale (Help, S ta tu s, Cancel) pot fi inversate oricnd; (c) comenzile generice (Move, Copy, D elete) sunt disponibile i pot fi apli cate, cu rezultate previzibile, asupra oricrui tip de obiect din sistem.

213

6.4.2

Asigurarea feedbackului

Are ca scop permanenta informare a utilizatorului asupra strii sistemului, asupra efectelor aciunilor ntreprinse i asupra aciunilor posibile ce urmeaz a fi ntreprinse. Reacia sistemului se poate asigura pe trei nivele, corespunztoare nivelelor de proiectare: semantic: funcional, sintactic: a secvenializrii, lexical: a legturii cu dispozitivele (hard) fizice. Nivelul cel mai de jos este cel hardware: fiecare aciune a utilizatorului cu un dispozitiv de intrare ar trebui s provoace o reacie imediat i evident (de ex. caracterele tastate vor fi afiate pe ecran, mutarea mouse-ului este fidel urmat de micarea cursorului). La nivel sintactic acceptarea/neacceptarea fiecrei uniti (cuvnt) a limba jului de intrare (comand, poziie, obiect, etc), trebuie semnalat de sistem. De exemplu, un obiect selectat sau un element de meniu selectat va fi "iluminat , astfel nct utilizatorul s tie c aciunea sa a fost acceptat. La nivel funcional, o form de f e e d b a c k o constituie notificarea faptului c aciunea comandat este n curs de efectuare (dac dureaz mai mult de cteva secunde). Alt form de f e e d b a c k la nivel funcional presupune anunarea terminrii operaiei fie printr-un mesaj, fie prin afiarea rezultatelor. Trebuie fcut o distincie ntre feedback-ul din domeniul problemei i respectiv cel din domeniul controlului. Feedback-ul n domeniul problemei se refer la obiectele de manipulat: existena, poziia, apariia. Feedback-ul n domeniul controlului se refer la mecanisme de control ale sistemului interactiv: stare, valori curente i implicite, meniuri, etc.

6.4.3

Minimizarea posibilitilor de eroare

Ideea este aceea de a respecta urmtoarea regul: Nu pregti capcane pentru utilizator! Exemple: 1. Nu oferi posibilitatea alegerii unui element de meniu care va genera mesaje de genul: selecie ilegal, comand invalid, etc.! 2. Nu lsa utilizatorul s selecteze Move, Copy, D e l e t e cnd nimic nu este selectat! 3. Nu lsa utilizatorul s selecteze P a s t e dac clipboard-ul este gol! In general, "oferta care se face utilizatorului pentru a selecta din ea trebuie s fie senzitiv la context: sistemul ghideaz utilizatorul n funcie de contextul respectiv, fcnd imposibil selectarea comenzilor nepermise.

6.4.4

Asigurarea posibilitii de revenire din eroare

De regul patru tipuri de corectare a erorilor sunt avute n vedere la proiectarea interfeelor utilizator: Undo, bort, Cancel, Correct. Dac s-a lansat o operaie din greeal, este recomandat Undo. Acesta se poate asigna pe un nivel sau pe mai multe nivele (caz n care se pstreaz 214

comenzile i starea sau parametri ntr-o stiv). In acest context (Undo multi nivel) este util o comand Eedo. In cursul execuiei operaiei n cauz, dac utilizatorul i d seama c a comis o eroare, trebuie s i se asigure posibilitatea ntreruperii operaiei i revenirea la starea anterioar seleciei respectivei operaii printr-o comand bort. Undo i Abort pot fi comasate ntr-o singur comand. Dac utilizatorul decide, n cursul specificrii parametrilor pentru o operaie, c a greit, el poate renuna prin comanda Cancel la terminarea specificrii i lansrii operaiei. De asemenea, dac nu operaia, ci doar anumii parametri sunt eronai, utilizatorul poate dispune de facilitatea de a corecta ceea ce a greit.

6.4.5

Posibilitatea operrii pe mai multe nivele

Diverse aplicaii trebuie proiectate astfel nct s permit utilizarea lor pe di verse nivele de complexitate: de la nivelul unui utilizator fr experien, care de abia nva comenzile de baz i are nevoie de sprijin din partea sistemului, pn la nivelul unui utilizator cu experien, care este dispus s renune la anu mite informaii ajuttoare n schimbul unei viteze sporite de lucru. Utilizatorul cu experien trebuie s poat face uz de tehnici de interaciune mai rapide. Metodele utilizate pentru a permite utilizarea interfeei pe mai multe nivele de ndemnare sunt: 1. acceleratori (taste funcionale n loc de meniu), 2. prompteri (ghidarea aciunii urmtoare), 3. help, 4. extensibilitate (posibilitatea combinrii unor comenzi elementare ntr-una mai complex), 5. ascunderea complexitii (set minimal de comenzi).

6.4.6

Minimizarea memorizrii

Reducerea necesitii de memorizare a comenzilor disponibile n sistem se rea lizeaz de obicei prin apelul la capacitatea utilizatorului de a recunoate (intui) semnificaia comenzilor reprezentate fie prin numele lor fie printr-o icoan. Pe de alt parte, necesitatea memorizrii comenzilor poate fi redus prin asigu rarea unor servicii de tip Help ca cele menionate mai sus.

6.5

Software pentru interfee utilizator

Software pentru interfee (grafice) utilizator exist pe diverse nivele (figura 6.2). Dispozitivele logice de intrare (locator, valuator, p ic k , c h o ic e , s tr in g , strok e - GKS, PHIGS) pot opera ntr-unul din modurile: 1 . r e q u e s t; 2 . sample; 3. e v e n t.

215

Aplicaie
UIMS
(biblioteci +utilitare) Sistem de gestiune a ferestrelor i pachetelor grafice

Toolkit

Sistemul de operare

Hardware
Figura 6.2: Software pentru interfee utilizator

Figura 6.3: Tratarea evenimentele din coad

Fiecrui dispozitiv i este asociat o msur (tipul informaiei returnate de dispozitiv). Modurile de operare indic modalitatea prin care programul de aplicaie recepioneaz o schimbare a msurii dispozitivelor lor. In modul requ est (la cerere) programul de aplicaie solicit o intrare de la dispozitiv care ntoarce odat cu controlul i msura asociat aciunii utili zatorului (de exemplu, deplasare) asupra dispozitivului. Aciunea se numete t r ig g e r . Dezavantajele sunt urmtoarele: (a) intrarea se face n mod sincron; (b) nu exist posibilitatea de feedback dinamic pentru c aplicaia nu re capt controlul dect dup terminarea aciunii. In modul sample (p o llin g ) dispozitivele sunt cercetate (baleiate) unul dup altul n sperana surprinderii unei modificri a msurii. Dezavantajul const n faptul c, n timp ce se proceseaz intrarea de la un dispozitiv, se pot pierde intrrile de la alte dispozitive. In modul event intrrile (acionrile asupra dispozitivelor) sunt asincrone n sensul c orice eveniment asociat cu un dispozitiv genereaz o intrare ntr-o coad de evenimente (figura 6.3) de regul FIFO (se poate avea ns n vedere i asocierea de prioriti diferitelor clase de dispozitive).

216

6.5.1

Sisteme de gestiune a ferestrelor

Un sistem de gestiune a ferestrelor (window-management system) asigur ma joritatea caracteristicilor importante ale interfeelor utilizator moderne: rularea aplicaiilor n ferestre distincte pe ecran, abilitatea de a redimensiona i muta ferestrele, meniuri pop-up i pull-dow n, ferestre de dialog (d ia lo g boxes). Un sistem de gestiune a ferestrelor este, n principal, un gestionar de resurse. El aloc spaiu pe ecran diverselor programe care ncearc s foloseasc ecranul i apoi gestioneaz utilizarea zonelor de ecran alocate, astfel nct programele s nu interfereze (pe ecran) unele cu altele. De asemenea, sistemul de gestiune a ferestrelor aloc programelor care solicit intrri resursele dispozitivelor de interaciune i, apoi, direcioneaz informaia de intrare de la dispozitiv ctre coada de evenimente a programului destinaie. Un sistem de gestiune a ferestrelor are dou pri: 1. gestionarul de ferestre (window manager) cu care interacioneaz utiliza torul atunci cnd solicit crearea, redimensionarea, mutarea, deschiderea, nchiderea, etc. unei ferestre; 2. sistemul de ferestre (window system), care reprezint componenta funcional responsabil cu crearea, redimensionarea, mutarea, deschi derea, nchiderea, etc. efectiv a unei ferestre. Gestionarul de ferestre este construit deasupra sistemului de ferestre i utili zeaz serviciile pe care acesta i le pune la dispoziie, pentru a satisface cererile utilizatorului. Programele construite deasupra sistemului de ferestre sunt denumite uneori programe client, iar sistemul de ferestre este denumit program server. In anumite sisteme de gestiune a ferestrelor construite pe o arhitectur client-server, precum X-Windows, gestionarul de ferestre este el nsui un client al sistemului de ferestre (figura 6.4). Utilizator

Figura 6.4: Relaia dintre sistemul de ferestre, sistemul de operare i programulaplicaie

Anumite sisteme de ferestre sunt astfel proiectate nct s suporte mai muli manageri de ferestre, fiecare cu aspect i reacie (look and f e e l ) distincte (X-Windows). 217

Observaie. Managerul de ferestre, i nu sistemul de ferestre, este cel care determin aspectul unei ferestre i modul n care utilizatorul interacioneaz cu aceasta. De obicei se integreaz un pachet de subrutine grafice n sistemul de ferestre care asigur o parte din funcionalitatea sistemului de ferestre, dar care pot fi apelate i direct.

6.5.2

Tratarea ieirilor n sistemele de ferestre

Resursa de ieire alocat de sistemul de ferestre unui program client este spaiul ecran, care trebuie astfel gestionat nct clienii s nu interfereze unii cu alii n utilizarea spaiului ecran. Strategiile de alocare a spaiului ecran pot s varieze n mod considerabil de la un sistem de ferestre la altul, dar, n principiu, se ncadreaz n trei categorii mari. Principala diferen const n modul de afiare a zonei din fereastr devenit vizibil n urma mririi ferestrei, n urma descoperirii ferestrei sau n timpul defilrii (figura 6.5).

(a)

(b)

(c)

Figura 6.5: Lrgirea ferestrei (a) la dimensiunea ferestrei (b) necesit decuparea primitivelor fa de regiunea (c) Strategii: Un sistem de ferestre minimal nu-i asum nici o responsabilitate n afiarea suprafeei nou expuse a ferestrei, ci transmite un eveniment de tipul fereastr expus clientului asociat ferestrei . Un astfel de sistem de ferestre nu salveaz partea acoperit a ferestrei. Cnd un client afieaz o informaie n fereastr, primitivele de ieire sunt decupate relativ la partea vizibil a ferestrei. La mrirea suprafeei vizibile a ferestrei, clien tul asociat ferestrei recepioneaz un mesaj de tip fereastr expus i este responsabil cu afiarea primitivelor corespunztoare zonei proaspt expuse a ferestrei. Sistemele de ferestre care dispun de mai mult memorie salveaz partea acoperit a ferestrei, astfel nct clientul este degrevat de sarcina afirii poriunii proaspt expuse. Problema care se pune este ct din fereastra acoperit trebuie salvat. In mod tipic, se salveaz dimensiunea maxim posibil a ferestrei (egal cu dimensiunea ecranului). Anumite sisteme de ferestre salveaz chiar poriuni mai mari dect ecranul, soluie care, dei costisitoare, devine din ceea ce mai atractiv datorit tendinei de scdere a preului memoriei calculatoarelor. Clientul este implicat n reafiare doar n cazul n care se face o defilare n fereastr, dincolo de poriunea salvat, sau n cazul unei scalri.

218

O stategie puin diferit const n pstrarea de ctre managerul de fere stre a unei copii complete pentru fiecare fereastr. De cte ori o parte a unei ferestre este descoperit, poriunea corespunztoare din copia fere strei este afiat pe ecran. Actualizarea ferestrei conform acestei strategii este lent ntruct clientul asociat poate s scrie n poriunea acoperit a ferestrei i este necesar refacerea copiei. Actualizarea unei ferestre com plet descoperite se face mai rapid ntruct copia ei trebuie actualizat doar n momentul dinaintea acoperirii ferestrei. O alternativ a acestei strategii const n partiionarea fiecrei ferestre n regiuni rectangulare, doar acelea care nu sunt vizibile fiind salvate. O strategie diferit este utilizat de sistemele de ferestre care menin o list a primitivelor (vizibile sau nu) afiate n fiecare fereastr. La fiecare reafiare a ferestrei, lista asociat este parcurs i se fac decuprile necesare. Aceast strategie presupune utilizarea unui hardware pentru conversie de scanare rapid. O alt problem care apare frecvent este efectul operaiei de redimensionare a unei ferestre asupra informaiei vizibile n fereastr. Exist dou posibiliti i programul client ar trebui s fie capabil s le trateze pe amndou. In primul caz, n momentul redimensionrii ferestrei de ctre utilizator, fereastra W CS i modific dimensiunea n mod corespunztor, utilizatorul "vznd mai mult sau mai puin din lume , n funcie de operaia de redi mensionare (mrire sau micorare) efectuat (figura 6.6.c).

1 1 1 1

i i i

l l Jj

r - :
(c)

1 U

--- 1

i ^
(d)

\ I I

------------- (a) (b) (e)

Figura 6.6: Relaiile dintre fereastra W CS i fereastra managerului (de ferestre) (a) Imagine n W CS (b) Imaginea printr-o fereastr (c) Lrgirea ferestrei n W CS (d) Lrgirea ferestrei managerului cu scalare uniform (e) Lrgirea ferestrei managerului cu scalare neuniform

In al doilea caz (figura 6.6.d), dimensiunea ferestrei W CS rmne fix astfel nct prin mrirea ferestrei se vede aceeai scen, dar la o scar mai mare. In acest caz se mai pune i problema scalrii neuniforme pe cele dou axe (figura 6.6.e) . Anumite sisteme de ferestre permit crearea de ferestre ierarhice, adic fere stre care conin subferestre (figura 6.7). Acestea pot fi utilizate de exemplu la implementarea ferestrelor de dialog: ntreaga fereastr de dialog este definit ca o fereastr i fiecare cmp, buton, s c r o ll-b a r , este definit ca o subfereastr i evenimente de tipul buton - mouse apsat sunt disponibile pentru fiecare subfereastr. Aceasta inseamn c fiecare eveniment este nsoit de numele subferestrei n care a aprut. 219

Figura 6.7: Divizarea unei ferestre n ferestre ierarhice

In mod tipic un sistem de ferestre ar trebui s dispun de urmtoarele funciuni: 1. creaz o fereastr nou (care devine fereastr curent); 2. seteaz poziia ferestrei curente; 3. seteaz dimensiunea ferestrei curente; 4. selecteaz o fereastr (care devine fereastr curent); 5. plaseaz o fereastr invizibil deasupra tuturor celorlalte (aceasta este noua fereastr curent); 6. ascunde fereastra curent i expune toate ferestrele acoperite de aceasta; 7. seteaz titlul ferestrei curente; 8. citete poziia ferestrei curente; 9. citete dimensiunea ferestrei curente; 10. plaseaz fereastra curent deasupra tuturor celorlalte; 11. plaseaz fereastra curent sub toate celelalte; 12. terge fereastra. Pe lng spaiul ecran, sistemul de ferestre este responsabil i de alocarea unei alte resurse: intrri ale tabelei de culori (look-u p table). In principiu, dou strategii de alocare a intrrilor n tabela de culori sunt utilizate: se partajeaz intrrile ntre toi clienii, alocndu-se fiecruia un numr fix. Dezavantajele metodei sunt: (a) n cazul n care sunt puini clieni, rmn intrri neutilizate n tabele; (b) pot exista clieni crora li se vor aloca mai puine intrri dect au nevoie, ceea ce implic degradarea calitii modului de afiare al ferestrei (din punct de vedere al culorilor). se aloc toate intrrile necesare clientului a crui fereastr conine cur sorul. Dezavantajul const n faptul c aspectul coloristic al ferestrelor se poate modifica dramatic (chiar dac pentru scurt timp!), n momentul trecerii cu cursorul dintr-o fereastr ntr-alta. O alt soluie posibil const n alocarea de culori n loc de intrri n look -u p table. Toi clienii care utilizeaz aceleai culori vor lucra cu aceeai in deci n tabela de culori. In cazul n care un client solicit o culoare pentru care nu exist intrare n tabel, i aceasta nu este plin, se creeaz o nou intrare. Dac tabela este plin, atunci se va folosi indexul culorii celei mai apropiate de cea solicitat. Dezavantajul evident este acela c cea mai apropiat culoare ar putea fi inacceptabil de departe de cea solicitat.

220

6.5.3

Tratarea intrrilor n sistemele de ferestre

Resursa de intrare alocat i gestionat de ctre sistemul de ferestre pentru clienii si reprezint setul de dispozitive de intrare i evenimentele generate de acestea. Sistemul de ferestre trebuie s dispun de informaiile necesare pentru a dirija evenimentele spre clientul cruia i sunt destinate. Procesul de dirijare a evenimentelor ctre clientul adecvat poart denumirea de multiplexare. Pe lng evenimentele generate de diverse dispozitive, un sistem de ferestre poate lua n considerare i generarea unor evenimente speciale, ca, de exemplu, intrarea ntr-o nou fereastr (window e n t e r ), respectiv ieirea din fereastra curent (window le a v e ), care permit evidenierea (h ig h lig h tin g ) ferestrei care conine cursorul. Un alt tip de eveniment special - window damage - ar putea fi utilizat pentru a preciza sistemului de ferestre c fereastra clientului cruia i este destinat evenimentul trebuie reafat. In cazul n care exist ferestre ierarhice, evenimentele pot fi dirijate i ctre subferestre. Dou modaliti sunt utilizate, n principal, de ctre sistemele de ferestre pentru dirijarea evenimentelor ctre clieni: 1. evenimentul este dirijat ctre clientul a crui fereastr conine cursorul (r e a l-e s ta te -b a s e d event rou tin g); 2. evenimentul este dirijat ctre un client precizat de ctre un alt client, posibil, dar nu obligatoriu, acelai ( lis t e n e r event rou tin g). De ex emplu, managerul de ferestre poate avea o comand prin care utilizatorul poate dirija intrrile de la tastatur ctre clientul care posed o anumit fereastr.

6.6

Utilitare pentru tehnici de interaciune

Utilitarele pentru tehnici de interaciune (in te ra ctio n -te ch n iq u e t o o l k i t s ) sunt subrutine care implementeaz legtura cu hardware-ul n cadrul unei interfee utilizator. Acestea determin caracteristica interfeelor utilizator de scris de termenul lo o k and f e e l " (aspect i reacie). Tehnicile de interaciune pot fi implementate direct n aplicaie, dar aceast soluie are dou dezavantaje majore: 1. este consumatoare de timp; 2. nu rspunde necesitii utilizatorului de a ntlni interfee similare la aplicaii distincte. Utilitarele pentru tehnici de interaciune, de fapt, colecii de subrutine de bibliotec accesibile programelor de aplicaie, nltur ambele dezavantaje menionate. Utilizarea aceleiai colecii n toate aplicaiile i chiar n sistemul de ferestre reprezint o metod des folosit n scopul unificrii aspectului interfeelor. Modalitile de implementare sunt urmtoarele: peste sistemul de gestiune a ferestrelor, sau, n lipsa lui, peste pachetul de subrutine grafice. Exemple: colecia de subrutine care nsoete sistemul de gestiune a fere

221

strelor Andrew, OSF/Motil, Inte r V i e w s , implementare OpenLook. In sistemul de gestiune a ferestrelor X - W i n d o w s tehnicile de interaciune sunt denumite w i d g e t s (Windows ga D GETS) i o list tipic de astfel de w i d g e t s include: fereastr de dialog, fereastr de selecie fiier, fereastr de avertizare, fereastr de ajutor (help), fereastr de mesaje, butoane radio, banc de butoane radio, butoane de selecie (marcare), bancuri de selecie, butoane basculante, bancuri de butoane basculante, meniu fix, meniu pop-up, bar de defilare, fereastr de introducere text, fereastr de aplicaie. Fiecare w i d g e t este implementat ca o fereastr care poate conine la rndul ei subferestre. Utilitarele pentru tehnici de interaciune dispun, n mod tipic, de notificatori (pentru intrare/ieire n/din ferestre) pentru a permite apelul de proceduri de rentoarcere atunci cnd anumite evenimente se produc n subferestrele lor. In lista de w idgets de mai sus apar att elemente de baz ct i altele compuse. De obicei, coleciile de subrutine dispun de mijloace de compunere a widget-urilor. De exemplu, fereastra de dialog conine att butoane radio, ct i butoane de selecie binar. Crearea de ierarhii de ferestre este o activitate migloas pentru orice pro gramator (chiar dac se dispune de o colecie de w i d g e t s-uri). De aceea s-au realizat editoare interactive pentru proiectarea (crearea i modificarea) aspec tului ferestrelor de dialog (care, de regul, conin celelalte tipuri de widgets). Ieirea din astfel de editoare este o reprezentare a ferestrei compuse, fie ca structur de date care poate fi translatat n cod surs, fie sub form de cod compilat. In toate situaiile sunt ns prevzute mecanisme pentru editarea legturilor cu aplicaia. O soluie alternativ pentru crearea de meniuri i ferestre de dialog o cons tituie utilizarea unui limbaj de nivel nalt pentru descrierea acestora. In fine, proiectantul de interfee poate crea un widget sau poate compune mai multe w idgets n mod interaciv, prin exemple (sistemul P eridot).

6.6.1

Sisteme de gestiune a interfeelor utilizator

Sistemele de gestiune a interfeelor utilizator ( U s e r - I n t e r f a c e M a n a g e m e n t S y s t e m - UIMS) asist utilizatorul n proiectarea i implementarea aspectului interfeei dar i, n anumite cazuri, a semanticii acesteia. Orice U I M S ofer 222

mijloace pentru definirea secvenelor de aciuni utilizator admisibile, pentru specificarea aspectului interfeei i a coninutului mesajelor de help si eroare. Un UIMS poate mri considerabil productivitatea programatorului, facilitnd n acelai timp rafinarea iterativ a interfeei pe msur ce se ctig experien. Aplicaiile dezvoltate peste un UIMS constau, n mod tipic, dintr-un set de subrutine, denumite uneori rutine de aciune sau rutine de aciune semantic. UIMS-ul apeleaz rutina de aciune adecvat ca rspuns la o intrare (input) produs de utilizatorul aplicaiei. In schimb, rutina de aciune influeneaz dialogul - de exemplu, modificnd aciunile utilizator posibile n continuare. Se poate spune c UIMS i rutinele de aciune partajeaz controlul dialogu lui. Acest model este cunoscut sub denumirea de model cu control partajat (s h a r e d -co n tr o l m odel). Prin opoziie cu acest model, exist UIMS-uri n care rutinele de aciune nu au nici o influen asupra dialogului. Aceste UIMSuri se ncadreaz n modelul cu control extern (e x te r n a l-c o n tr o l model). Serviciile specifice pe care diverse UIMS-uri le ofer proiectantului de interfee utilizator pot varia dar componenta esenial, care nu lipsete din nici un UIMS, o reprezint specificarea secvenei dialogului. Aceast component controleaz ordinea n care tehnicile de interaciune sunt puse la dispoziia utilizatorului aplicaiei. Secvenializarea dialogului Secvenele admisibile de aciuni ale utilizatorului pot fi definite ntr-o varie tate de moduri: via reele de tranziie (numite i diagrame de stri), reele de tranziie recursive, limbaje bazate pe evenimente sau prin exemple, (unde proiectantul demonstreaz sistemului succesiunile de aciuni permise i sistemul "nva care secvene sunt posibile). Comun tuturor acestor metode este con ceptul unei stri a interfeei utilizator i aciuni ale utilizatorului asociate care pot fi executate din aceast stare. Fiecare din metodele de specificare codific starea interfeei utilizator ntr-un mod specific,care generalizeaz folosirea u neia sau a mai multor variabile de stare. Dac se creaz o interfa utilizator senzitiv la context, rspunsul sistemului la aciunile utilizatorului trebuie s depind de starea curent a interfeei. Cea mai simpl i cea mai puin puternic, dar totui util, metod de specificare a succesiunii dialogului o reprezint reeaua de tranziie sau dia grama de stri. Reelele de tranziie au o singur variabil de stare, un ntreg ce indic starea curent. Aciunile utilizatorului cauzeaz tranziii de la o stare la alta; fiecare tranziie are asociat cu ea zero sau mai multe rutine de aciune care sunt apelate cnd tranziia se ntmpl. Pe lng aceasta, strile pot avea rutine de aciune asociate care sunt executate oricnd se intr n aceast stare. Reelele de tranziie sunt utile, n special, pentru gsirea incosistenelor n secvenializarea dialogului, i pot fi folosite fr probleme pentru a determina numrul necesar de pai pentru a completa o secven de sarcini de interaciune. Reelele de tranziie au totui dezavantaje. In primul rnd, starea interfeei utilizator este, n mod tipic, bazat pe un numr de variabile de stare, i necesi tatea de a gsi toate combinaiile posibile de valori ale acestor variabile specifice unei stri este dificil i non-intuitiv pentru proiectantul interfeei utilizator. Reeaua de tranziie din figura 6.8 descrie o aplicaie cu urmtoarele comenzi: selecteaz obiect (stabilete obiectul curent - CSO); 223

deselecteaz obiect (nu mai exist CSO!); creaz obiect (stabilete un CSO); terge CSO (nu mai exist CSO!); copiaz CSO n c lip b o a rd (trebuie s existe un CSO; umple clip b oa rd ul); preia (paste) din c lip b o a rd (trebuie sa existe ceva n clip b oa rd ; creaz un CSO); golete clip board-u l (clip board-u l trebuie s conin ceva i va rmne gol).
Creare Selectare obiect Creare obiect Creare

Copy Paste

Figura 6.8: Reea de tranziie cu patru stri

Diferite construcii specializate au fost dezvoltate pentru a simplifica reelele de tranziie. De exemplu, putem alinia problema de h e l p prin folosirea subreelelor ntr-un mod analog subrutinelor, pentru a ascunde un detaliu repetitiv localizat. Reelele de tranziie care pot apela recursiv subreele sunt numite reele de tranziie recursive. Variabilele de stare n acest caz sunt ntreaga stiv de stri salvate plus starea reelei de tranziie curent active. Notaia B a c k u s - N a u r (BNF) poate de asemenea fi folosit pentru a defini secvenializarea, i este echivalent ca putere de reprezentare cu reelele de tranziie recursive (ambele sunt echivalente cu automatele push-down). Mai multe U I M S mai vechi au fost bazate pe specificaii BNF. Cnd reelele de tranziie devin mai complicate, cu expresii logice la tranziii i apeluri de subrutine, se ajunge la specificaii asemntoare unor programe (program-like). In definitiv, limbajele de programare reprezint cel mai pu ternic mod de a specifica secvenializrile i condiiile multiple asociate, de multe ori, cu tranziiile. Mai multe limbaje bazate pe evenimente au fost dezvoltate special pentru specificarea interfeelor utilizator. Este de remarcat c limbajele bazate pe evenimente, spre deosebire de limbajele de programare tradiionale, nu au un 224

flux explicit de control. In schimb, oricnd o condiie i f devine adevrat, aciunile asociate sunt executate. Aadar, limbajul bazat pe evenimente este un sistem de reguli de producie. Limbajele bazate pe evenimente sunt mai puternice dect reelele de tranziie, reelele de tranziie recurive i gramaticile, dar prea complicate pentru cazurile simple. Un mod diferit de a defini sintaxa (secvenializarea) dialogului este prin exemplu. In acest caz, UIMS-ul se plaseaz ntr-un mod de nvare , i apoi se trece prin toate secvenele acceptabile de aciuni. Proiectantul poate ncepe cu un meniu principal, selecteaz un cmp din acest meniu i merge printr-un director pentru a localiza submeniul, celula de dialog sau obiecte speci fice aplicaiei, pentru a fi prezentate utilizatorului ca rspuns la selectarea meniului principal. Obiectul apare pe ecran i proiectantul poate s indice poziia, mrimea sau alte atribute pe care obiectul trebuie s le aib atunci cnd aplicaia este ntr-adevr executat. Proiectantul continu s execute cteva operaii asupra obiectului vizualizat i apoi arat care obiect urmeaz, sau cum rspunde obiectul vizualizat la operaie; proiectantul repet acest pro ces pn cnd toate aciunile asupra tuturor obiectelor sunt definite. Aceast tehnic funcioneaz pentru secvenializri prin item-uri (elemente) care au fost deja definite de proiectant.

225