Sunteți pe pagina 1din 208

Felicia Ionescu

PROGRAMAREA
APLICAIILOR GRAFICE
Editura PRINTECH
Bucureti
Descrierea CIP a Bibliotecii Naionale
IONESCU, FELICIA
Programarea aplicaiilor grafice.
Felicia Ionescu, Bucureti: PRINTECH, 1999
2! "# :il# $ c%#
ISBN 973-97!-93-"
1#Pro&ra%are
'#'2
#efere$i %&ii$ifici'
Pro(# Dr# In&# R# )trun&aru
*#l# Dr# In&# +# ,ri&ore
E(i&)ra P#IN*EC+
)"laiul In-e"en-enei !1!, Bucureti, )ector .
Tel: 92 !// ..'
,irec&or E(i&)r-'
Ecaterina 0ilic1
Co$.ilier E(i&orial'
0i2aela To%a
Toate -re"turile asu"ra acestei e-iii a"arin autorului# Re"ro-ucerea "arial1 sau total1
a te3tului sau a ilustraiilor -in aceast1 carte este "osibil1 nu%ai cu acor-ul scris al
autorului#
C)pri$.
/ I$&ro()cere 0$ grafica pe calc)la&or /
1#1 4"licaii ale &ra(icii "e calculator 1
1#2 )iste%e &ra(ice !
1#! )iste%e -e re(erin1 tri-i%ensionale '
1 2o(elarea o3iec&elor 7
2#1 0o-elarea "oli&onal1 a obiectelor 5
2#1#1 Re"re6entarea "oli&oanelor 5
2#1#2 Re"re6entarea "olie-relor 11
2#1#! I%"le%entarea %o-elului "oli&onal 1!
2#1#' ,enerarea %o-elului -in -escrierea %ate%atic1 1.
2#1#/ ,enerarea %o-elului "rin baleiere s"aial1 17
2#1#. ,enerarea %o-elului "ornin- -e la o %uli%e -e "uncte
care a"arin su"ra(eei -e (rontier1 a obiectului
15
2#1#7 Re-area i%a&inii obiectelor "oli&onale 19
2#2 0o-elarea obiectelor "rin reele -e "etice 5
2#! 0o-elarea "rin co%"unerea obiectelor 21
2#' 0o-elarea "rin -i8i6are s"aial1 22
3 *ra$.form-ri geome&rice 1!
!#1 Trans(or%1ri &eo%etrice 9n s"aiu 2/
!#1#1 Trans(or%1ri &eo%etrice "ri%iti8e 2/
!#1#2 )iste%ul -e coor-onate o%o&ene 25
!#1#! Co%"unerea trans(or%1rilor &eo%etrice !1
!#1#' Trans(or%1ri in8erse !/
!#1#/ Trans(or%area siste%elor -e re(erin1 !7
!#1#/#1 Rotaia (a1 -e o a31 "aralel1 cu una -in a3ele
siste%ului -e re(erin1
'
!#1#/#2 )calarea (a1 -e un "unct oarecare 9n s"aiu '2
!#1#/#! Rotaia (a1 -e o -rea"t1 oarecare 9n s"aiu '2
!#1#/#' Trans(or%area -e %o-elare ''
!#1#. 4lte trans(or%1ri &eo%etrice 9n s"aiu '.
!#2 Trans(or%1ri &eo%etrice 9n "lan '7
Si.&eme (e 4i5)ali5are 9
'#1 Trans(or%area -e obser8are /1
'#2 Trans(or%area -e "roiecie /.
'#2#1 Proiecia "aralel1 /7
'#2#2 Proiecia "ers"ecti81 /7
'#2#! )iste%ul -e re(erin1 nor%ali6at /9
'#! )iste%ul -e 8i6uali6are stan-ar- ..
'#!#1 De(inirea siste%ului -e re(erin1 -e obser8are .7
'#!#2 De(inirea trans(or%1rii -e nor%ali6are .7
'#' )iste%ul -e re(erin1 ecran !D 72
'#/ Decu"area obiectelor 7'
'#/#1 Decu"area 9n "lan 7'
'#/#2 Decu"area su"ra(eelor relati8 la 8olu%ul -e 8i6uali6are 79
'#/#! Eli%inarea obiectelor a(late 9n e3teriorul 8olu%ului -e
8i6uali6are
52
'#/#' :olu%ul -e -eli%itare 5!
'#/#/ Detecia coli6iunii 5'
! *ra$.formarea (e ra.&r) 6!
/#1 Re"re6entarea culorilor 9n siste%ele &ra(ice 5.
/#1#1 0o-elul R,B 5.
/#1#2 0o-elul H): 55
/#2 ,enerarea se&%entelor -e -rea"t1 59
/#! ,enerarea "oli&oanelor 91
/#' Eli%inarea su"ra(eelor ascunse 9!
/#'#1 Co%"ararea a-;nci%ilor 9'
/#'#2 Eli%inarea su"ra(eelor ascunse 9n s"aiul obiect 9/
/#'#! Eli%inarea su"ra(eelor ascunse 9n s"aiul i%a&ine:
al&orit%ul <=bu((er
9.
/#'#' Eli%inarea su"ra(eelor orientate in8ers 99
/#/ 4nti=aliasin& 12
/#. Te3turarea 1!
/#.#1 4"licaia te3turilor 1'
/#.#2 Filtrarea te3turilor 1.
7 Bi3lio&eca grafic- Ope$8L /"9
.#1 De68oltarea "ro&ra%elor &ra(ice (olosin- utilitarul ,>?T 111
.#1#1 Funcii -e control ale (erestrei -e a(iare 111
.#1#2 Funcii callbac@ 112
.#1#! Funcii -e e3ecuie 11!
.#1#' ,enerarea obiectelor tri-i%ensionale 11!
.#2 Caracteristicile biobliotecii +"en,> 11'
.#2#1 Poarta -e a(iare +"en,> 11'
.#2#2 Bu((erul -e ca-ru 11/
.#2#! +"eraiile -e ba61 +"en,> 117
.#2#' Pri%iti8e &eo%etrice 12
.#2#/ Re"re6entarea culorilor 9n +"en,> 12!
.#! )iste%ul -e 8i6uali6are +"en,> 12/
.#!#1 )iste%ele -e re(erin1 12/
.#!#2 Trans(or%1ri &eo%etrice 127
.#' Decu"area su"ra(eelor i eli%inarea obiectelor a(late 9n e3teriorul
8olu%ului -e 8i6uali6are
1'1
.#'#1 Eli%inarea su"ra(eelor ascunse 1'2
.#'#2 )elecia su"ra(eelor 9n (uncie -e orientare 1'2
.#/ >iste -e -is"laA +"en,> 1'!
.#. Te3turarea 9n +"en,> 1'/
.#.#1 De(inirea te3turilor 1'/
.#.#2 Filtrarea te3turilor 1/2
7 2o(ele (e refle9ie %i il)mi$are /!7
7#1 Consi-eraii teoretice asu"ra re(le3iei lu%inii 1/7
7#2 0o-elul P2on& -e re(le3ie a lu%inii 1.
7#! 0o-ele -e u%brire 1.2
7#!#1 0o-elul -e u%brire constant1 1.2
7#!#2 0o-elul -e u%brire ,ourau- 1.2
7#!#! 0o-elul -e u%brire P2on& 1..
7#' Funciile +"en,> -e calcul a ilu%in1rii 1.7
7#'#1 De(inirea surselor -e lu%in1 1.7
7#'#2 De(inirea "ro"riet1ilor %aterialelor 1.9
7#'#! Nor%alele 9n 8;r(urile "ri%iti8elor &eo%etrice 17'
7#'#' Controlul "o6iiei i al -ireciei surselor -e lu%in1 17.
7#'#/ Co%binarea culorilor 15
7#'#/#1 Trans"arena 151
7#'#/#2 4nti=aliasin& 15'
6 Crearea %i 4i5)ali5area .ce$elor 4ir&)ale /67
5#1 Re"re6entarea scenelor 8irtuale 159
5#2 >i%baBul :R0> 192
5#2#1 Construirea (or%elor &eo%etrice 19/
5#2#2 No-uri -e &ru"are 19.
5#2#! 4ni%aia 9n :R0> 21
Bi3liografie 1"3
Prefa
Do%eniile -e a"licaie ale &ra(icii "e calculator s=au e3tins o -at1 cu creterea
"uterii -e calcul a calculatoarelor i cu ie(tinirea a-a"toarelor i a acceleratoarelor
&ra(ice: reali6area inter(eelor utili6ator -e68oltate 9n nu%eroase "ro&ra%e utilitare i
%e-ii -e "ro&ra%are, "roiectarea asistat1 -e calculator CC4D D Computer Aided
DesignE, "re6ent1rile &ra(ice interacti8e, 8i6uali6area -atelor tiini(ice, te2nolo&ia
%ulti%e-ia, realitatea 8irtual1. Fn acelai ti%", a"ariia a nu%eroase biblioteci, li%baBe
i "ro&ra%e utilitare Ctool@itsE care "ro"un -i(erite %o-alit1i -e abor-are a a"licaiilor
&ra(ice (ace i %ai -i(icil1 sarcina "ro&ra%atorului -e a selecta cea %ai a-ec8at1
te2nic1 -e soluionare a "roble%ei -orite#
Fn aceast1 lucrare se "une accentul "e cone3iunea -intre as"ectele teoretice ale
&ra(icii i i%"le%entarea "ro&ra%elor -e &enerare a i%a&inii obiectelor i scenelor
8irtuale tri-i%ensionale# >ucrarea se ba6ea61 "e %aterialul -e curs Grafica pe
Calculator, "re-at la anul I:, s"eciali6area In&ineria In(or%aiei, secia Electronic1
4"licat1 i In&ineria In(or%aiei a Facult1ii -e Electronic1 i Teleco%unicaii# Fn
"ri%ele ca"itole sunt "re6entate o"eraiile -e ba61 9n &ra(ica "e calculator: %o-elarea
obiectelor tri-i%ensionale, trans(or%1ri &eo%etrice 9n s"aiu, siste%e -e 8i6uali6are,
trans(or%area -e rastru# Fn cea -e=a -oua "arte a lucr1rii se reiau toate aceste as"ecte
ale &ener1rii i%a&inilor -in "ers"ecti8a "ro&ra%1rii, (olosin- biblioteca &ra(ic1
+"en,>, siste%ul -e -e68oltare ,>?T i li%baBul -e %o-elare 9n realitatea 8irtual1
:R0># De ase%enea, sunt "re6entate as"ectele a8ansate ale &ener1rii i%a&inilor
tri-i%ensionale Canti=aliasin&, u%brire, te3turareE, at;t -in "unct -e 8e-ere teoretic, c;t
i al abor-1rii 9n "ro&ra%are#
?nul -in sco"uri "rinci"ale ale c1rii este -e a o(eri soluii -e i%"le%entare a
a"licaiilor &ra(ice "rin "re6entarea %eto-elor actuale i accesibile -e re6ol8are a
(iec1rei eta"e a "rocesului -e &enerare a i%a&inilor# Fn acest sens, a"roa"e toate
i%a&inile ilustrati8e ale -i(eritelor te2nici au (ost "ro-use -e autoare "rin "ro&ra%e
&ra(ice -escrise 9n te3t#
+cto%brie, 1999 4utoarea
1
Introducere n grafica pe calculator
Fn stan-ar-ul I)+ CInternational )tan-ar-i6ation +((iceE se -e(inete &ra(ica
"e calculator Ccomputer graphicsE ca G%eto-e i te2nici -e con8ersie a -atelor c1tre i
-e la un -is"o6iti8 &ra(ic C-is"laAE "rin inter%e-iul calculatoruluiH# Fn "lus, se %ai
%enionea61 c1 aceste %eto-e re"re6int1 %o-ul cel %ai "uternic -e co%unicare 9ntre
o% i calculator#
In(or%aia "re6entat1 8i6ual este "erce"ut1 -e o% 9n %o-ul cel %ai natural#
)tructuri co%"le3e i relaiile 9ntre ele "ot (i "erce"ute 9ntr=un ti%" %ai scurt, 9ntr=un
nu%1r %ai %are i cu %ai "uine erori 9n "re6entarea 8i6ual1 -ec;t 9n oricare alt %o-
-e "re6entare#
Noiunea -e grafic pe calculator este asi%ilat1 9n cele %ai %ulte re(erine
-in -o%eniu cu aceea -e &ra(ic1 &enerati81 Csau sinte61 -e i%a&ineE, a8;n- ca -irecie
-e con8ersie i trans(or%are a -atelor aceea -e a crea "e -is"laA i%a&inea unor obiecte
a c1ror -escriere este stocat1 9n %e%oria calculatorului#
/./Aplicaii ale graficii pe calc)la&or
Do%eniile -e a"licaie ale &ra(icii "e calculator s=au e3tins o -at1 cu creterea
"uterii -e calcul a calculatoarelor i cu ie(tinirea a-a"toarelor i a acceleratoarelor
&ra(ice# Fn continuare sunt "re6entate c;te8a -in cele %ai i%"ortante -o%enii -e
a"licaie ale &ra(icii "e calculator#
?na -in cele %ai e3tinse utili61ri ale &ra(icii este 9n reali6area inter(eelor
utili6ator -e68oltate 9n nu%eroase "ro&ra%e utilitare, %e-ii -e -e68oltare
i "ro&ra%are, siste%e -e o"erare, ba6e -e -ate# Inte(eele &ra(ice sunt
%ult %ai G"rietenoaseH -ec;t inter(eele "rin co%en6i -ate 9n linia -e
co%an-1 i "er%it instruirea ra"i-1 a utili6atorilor nee3e"eri%entai 9n
(olosirea unor ast(el -e a"licaii#
+ alt1 ra%ur1 i%"ortant1 -e a"licare a &ra(icii "e calculator o constitue
"roiectarea asistat1 -e calculator CC4D D Computer Aided DesignE,
(olosit1 9n electronic1, %ecanic1, aeronautic1, ar2itectur1, etc# Do%eniul
-e "roiectare asistat1 C4D a re"re6entat %ult1 8re%e cea %ai i%"ortant1
a"licaie a &ra(icii "e calculator i a "rileBuit -e68oltarea a nu%eroase
te2nici -e &enerare i 8i6uali6are a %o-elelor tri-i%ensionale#
Pre6ent1rile &ra(ice interacti8e C9n a-%inistraie, te2nolo&ie, statistic1,
%ana&e%ent, "lani(icare, co%an-a i con-ucerea "roceselor in-ustrialeE
&enerea61 o &a%1 8ariat1 -e re"re6ent1ri su&esti8e ale -atelor nu%erice#
4st(el -e "re6ent1ri "er%it anali6a siste%elor %ult %ai su&esti8 -ec;t
-atele "re6entate 9n tabele#
Fn te2nolo&ia %ulti%e-ia "re6entarea -e i%a&ini &ra(ice sinteti6ate, te3te,
i%a&ini 8i-eo i sunet sunt inte&rate 9ntr=o sin&ur1 a"licaie C-e instruire
interacti81, telecon(erine, etcE# Cone3iunea -intre &enerarea -e i%a&ini
tri-i%ensionale i "re6entarea -e i%a&ini 8i-eo ani%ate re"re6int1 cel %ai
i%"ortant as"ect al soluiei %ulti%e-ia#
Realitatea virtual este te2nica "rin care se obine i%ersiunea Ctotal1 sau
"arial1E a obser8atorului 9ntr=un %e-iu tri-i%ensional &enerat interacti8
-e calculator#
Realitatea Virtual a cunoscut 9n ulti%ii ani o i%ens1 -e68oltare i "ublicitate#
Fn re8iste, %a&a6ine, la tele8i6iune, s=a "re6entat aceast1 Gnou1 i (antastic1
te2nolo&ieH -in cele %ai 8ariate "uncte -e 8e-ere# Cu8;ntul G8irtualH este (olosit 9n
%o- obinuit 9n -o%eniul calculatoarelor "entru a -ese%na o entitate care si%ulea61 o
alt1 entitate# De e3e%"lu, ter%enul G%e%orie 8irtual1H se re(er1 la si%ularea
%e%oriei "rinci"ale "rin %e%oria 2ar-=-iscului# Cu8;ntul GrealitateH se re(er1 la
%e-iul "erce"ut -e o% "rin inter%e-iul si%urilor# Deoarece GrealitateaH este
"erce"ut1 "rin inter%e-iul si%urilor, este "osibil1 GalterareaH acesteia "rin
%o-i(icarea -atelor "erce"ute -e unul sau %ai %ulte si%uri# De aceea, Realitatea
Virtual se re(er1 la %o-alitatea "rin care calculatorul %o-i(ic1 %o-ul 9n care o
"ersoan1 "erce"e realitatea, "rin si%ularea unei alte realit1i# 4ceast1 realitate, sau
%e-iu, si%ulat -e calculator este nu%it1 Realitate Virtual#
Dintre cele cinci si%uri care sunt (olosite "entru "erce"ia realit1ii, nu toate
sunt la (el -e i%"ortante 9n crearea unui %e-iu 8irtual# )i%ul &ustului i al %irosului
au aciuni li%itate 9n "erce"erea realit1ii Ccu e3ce"ia ser8irii %eseiIE i "uine
cercet1ri au (ost e(ectuate "entru (olosirea lor 9n %e-ii 8irtuale# )i%ul tactil este %ult
%ai util, %ai ales atunci c;n- se %ani"ulea61 obiecte 9n %e-iul 8irtual# ,reutatea,
te%"eratura, -uritatea, re6istena la e((ort, toate aceste in(or%aii se obin "rin si%ul
tactil# Din acest %oti8, cercet1ri i%"ortante au (ost (1cute "entru a si%ula Gatin&ereaH
obiectelor 8irtuale i, 9n %o%entul -e (a1, e3"eri%entele 9n %e-iul 8irtual "er%it
&enerarea in(or%aiilor tactile# Cele %ai i%"ortante si%uri (olosite 9n realitatea
8irtual1 sunt 816ul i au6ul, -eoarece cele %ai %ulte in(or%aii -es"re %e-iul
9nconBur1tor se obin "rin inter%e-iul oc2ilor i al urec2ilor# Din acest %oti8, cele %ai
%ulte cercet1ri 9n -o%eniul realit1ii 8irtuale au (ost (1cute 9n -o%eniul &ener1rii
i%a&inii i a sunetelor# Dintre a"licaiile cele %ai i%"ortante ale realit1ii 8irtuale se
"ot enu%era:
)i%ulatoare -e antrena%ent, 9n s"ecial si%ulatoare -e 6bor, 9n care se "ot
e3ersa %ane8re -i(icile, (1r1 a "une 9n "ericol 8iaa "ilotului sau
securitatea a"aratului -e 6bor#
Proiectare 9n -i(erite -o%enii -e acti8itate Cconstrucii, ar2itectur1E#
Proiectantul are "osibilitatea Gs1 8a-1H re6ultatele "roiectului sub (or%a
i%a&inii acestuia 9n ti%" real, s1 obser8e -etaliile 9%"reun1 cu alte
"ersoane interesate, i s1 ia -eci6ii -e %o-i(icare 9nainte -e construirea
"rototi"ului#
:i6uali6area tiini(ic1, "rin care se obine i%a&inea -i(eritelor %o-ele sau
(eno%ene inaccesibile -e (i obser8ate alt(el Cstructuri ato%ice, (lu3uri -e
in(or%aie, etcE#
Fn -o%eniul %e-ical, 9n s"ecial c2irur&ie, se "ot e(ectua e3"eri%ente Gla
receH -e 9n81are a -i(eritelor "roce-uri (1r1 riscul 8ieii "acientului#
Jocurile -istracti8e i (il%ele -e ani%aie sunt unele -in cele %ai
cunoscute a"licaii -e realitate 8irtual1#
Fn a"licaiile -e realitate 8irtual1 "ot (i 9n&lobate un nu%1r -i(erit -e
co%"onente care asi&ur1 un anu%it &ra- -e i%ersiune, a-ic1 -e sen6aie a "re6enei
"artici"antului 9n %e-iul 8irtual: siste% -e 8i6uali6are, siste% -e sunet, siste% -e
ur%1rire a "o6iiei ca"ului i a %;inii, siste% &enerare a sen6aiei tactile i a (orei -e
reacie# Fn -i(erite a"licaii -e realitate 8irtual1, unele -intre aceste siste%e, cu
e3ce"ia siste%ului -e 8i6uali6are, "ot s1 li"seasc1#
)iste%ul -e 8i6uali6are este co%"onenta cea %ai i%"ortant1 a a"licaiilor -e
realitate 8irtual1 i e3ist1 unele cate&orii -e a"licaii -e realitate 8irtual1 Ca"licaii -e
realitate 8irtual1 -es@to"E -e68oltate nu%ai "e ba6a &ener1rii i%a&inii %e-iului
8irtual# Fn a"licaiile -e realitate 8irtual1 -es@to", i%a&inea 8i6ual1 a %e-iului 8irtual
tri-i%ensional este a(iat1 "e %onitorul unui calculator C9n &eneral PCE# Partici"antul
intercionea61 cu %e-iul 8irtual "rin -is"o6iti8e -e intrare stan-ar- Ctastatur1, %ouse,
BoAstic@E# 4ceste siste%e "er%it obser8area %e-iului 8irtual "rintr=o G(ereastr1H
Cecranul %onitoruluiE i -e aceea se %ai nu%esc siste%e KoK CWindow on the
WorldE# )unt cele %ai si%"le i %ai ie(tine siste%e -e realitate 8irtual1, -ar este -e
ate"tat ca ast(el -e siste%e s1 cunoasc1 9n 8iitor -e68olt1ri s"ectaculoase, -atorit1
a"ariiei unui %are nu%1r -e acceleratoare &ra(ice care "er%it re-area 9n ti%" real a
unor i%a&ini realiste#
Crearea unui %e-iu 8irtual, 9n care se "ot e(ectua -i(erite e3"eri%ente, este un
"roces care necesit1 -ou1 co%"onente i%"ortante, i anu%e crearea %o-elului scenei
8irtuale i 8i6uali6area scenei 8irtuale# Crearea %o-elului scenei 8irtuale C%ai "e
scurt, crearea scenei 8irtualeE este un "roces o((=line i, -e cele %ai %ulte ori, -e
-urat1 consi-erabil1, "rin care se creea61 colecia -e %o-ele ale obiectelor
tri-i%ensionale care constitue cea %ai a-ec8at1 re"re6entare a %e-iului 8irtual#
:i6uali6area scenelor 8irtuale este un "roces on=line, care se -es(1oar1 9n
ti%" real, cu "artici"area uneia sau %ai %ultor "ersoane, 9n care scena 8irtual1 este
e3"lorat1 9n %o- interacti8, i, 9n (iecare %o%ent, i%a&inea scenei re-at1 "e -is"laA
-e"in-e -e con-iiile -e e3"lorare C"o6iie -e obser8are, aciuni interacti8e, etcE#
/.1Si.&eme grafice
+ a"licaie &ra(ic1, in-i(erent -e -o%eniul c1reia 9i este -estinat1, se -e68olt1
9ntr=un siste% care "re6int1 anu%ite (acilit1i &ra(ice, siste% nu%it la %o-ul &eneral
siste% &ra(ic#
?n siste% &ra(ic este un calculator care -is"une -e co%"onente 2ar-Lare i
so(tLare "entru crearea sau "relucrarea i%a&inilor# Co%"onenta 2ar-Lare cea %ai
i%"ortant1 a unui siste% &ra(ic este a-a"torul Csau acceleratorulE &ra(ic, "rin
inter%e-iul c1ruia este co%an-at un -is"o6iti8 -e a(iare C-is"laAE color# >a aceasta se
%ai a-au&1 -i(erite -is"o6iti8e -e intrare Ctastatur1, %ouse, BoAstic@, trac@ball,
inter(ee s"eciali6ateE care asi&ur1 interaciunea utili6atorului cu "ro&ra%ul -e
a"licaie#
Fn "ro&ra%area a"licaiilor &ra(ice inter8in %ai %ulte co%"onente so(tLare,
care asi&ur1 crearea i%a&inilor "e -is"laA CFi&# 1#1E#
Pro&ra%ul -e a"licaie &ra(ic1 se -e68olt1 "e ba6a unor siste%e -e -e68oltare
-e a"licaii Ctool@it=uriE sau -irect, "rin utili6area unor biblioteci &ra(ice care asi&ur1
inter(aa cu ec2i"a%entul 2ar-Lare "rin inter%e-iul -ri8erelor siste%ului -e o"erare#
)iste%ele -e -e68oltare sunt -e cele %ai %ulte ori orientate c1tre a"licaie i "re81-
un set -e (uncii -e ni8el 9nalt care "er%it crearea unui anu%it ti" -e a"licaie# De
e3e%"lu, e3ist1 tool@it=uri "entru &enerarea obiectelor i a scenelor 8irtuale C!-
)tu-io, 4utoca-, 4C!-, )ense5, Desi&ner Kor@benc2, etcE, tool@it=uri "entru re-area
i%a&inii scenelor 8irtuale CPer(or%er, broLser Cos%o PlaAer, etcE#
Bibliotecile &ra(ice sunt "ac2ete -e (uncii care asi&ur1 inter(aa "ro&ra%ului
-e a"licaie Ccreat -irect sau "rin inter%e-iul unui tool@it care a"elea61 (unciile
biblioteciiE cu ec2i"a%entele 2ar-Lare ale siste%ului &ra(ic#
Bibliotecile &ra(ice re"re6int1 ni8elul -e "ro&ra%are 9n care se 9ncearc1
intro-ucerea "ortabilit1ii "ro&ra%elor &ra(ice, "rin asi&urarea unei inter(ee
Ec2i"a%ent
2ar-Lare
)iste% -e o"erare Biblioteci &ra(ice
)iste% -e -e68oltare -e a"licaii Ctool@itE
Pro&ra%ul -e a"licaie
?tili6ator
Fig. /./ Co%"onentele necesare "entru crearea a"licaiilor &ra(ice#
in-e"en-ente -e ec2i"a%entele 2ar-Lare care s1 res"ecte anu%ite con8enii -e
re"re6entare a entit1ilor &ra(ice -escrise 9n stan-ar-e#
Pri%ul stan-ar- &ra(ic a (ost stan-ar-ul ,M) CGraphical Kernel SstemE
elaborat -e I)+ 9n 195/, care coninea un set -e (uncii &ra(ice 2D in-e"en-ente -e
ec2i"a%ent# 4cest stan-ar- a (ost e3tins 9n anul 1955 la ,M) !D, care conine (uncii
!D in-e"en-ente -e ec2i"a%ent#
?n alt stan-ar-, PHI,) C!rogrammer"s #ierarchical Graphical SstemE este
un stan-ar- !D care "er%ite 9n "lus or&ani6area ierar2ic1 a %o-elelor obiectelor i a
scenelor 8irtuale#
Bibliotecile &ra(ice cele %ai &enerale sunt bibliotecile &ra(ice care
i%"le%entea61 un anu%it stan-ar- 9n -e(inirea (unciilor -e acces la ec2i"a%entele
2ar-Lare# Cele %ai cunoscute biblioteci &ra(ice sunt +"en,>, DirectN, Ouic@DraL,
care sunt i%"le%entate 9n nu%eroase siste%e &ra(ice#
Fn %o%entul -e (a1, situaia cea %ai obinuit1 9n crearea a"licaiilor &ra(ice
este aceea 9n care se "oate (olosi un calculator care -is"une -e (acilit1i &ra(ice
Ca-a"toare, acceleratoare, -ri8ere, biblioteciE care "er%it "ro&ra%area la ni8el 9nalt, -e
cele %ai %ulte ori co%"let in-e"en-ent1 -e -is"o6iti8ele 2ar-Lare# Biblioteci &ra(ice
cu% sunt +"en,> sau DirectN asi&ur1 accesul la (uncii &ra(ice a-a"tate i o"ti%i6ate
"entru -is"o6iti8ele &ra(ice -is"onibile ale siste%ului# De aceea, 9n lucrare s=a acor-at
o %ai %ic1 9ntin-ere -escrierii unor (uncii e3istente 9n biblioteci C-e e3e%"lu
(unciile -e &enerare a se&%entelor -e linie -rea"t1, a cercurilor, etc#E i accentul s=a
9n-re"tat c1tre "re6entarea %eto-elor -e ba61 -e &enerare a i%a&inilor i a %o-ului 9n
care acestea se "ot a"lica (olosin- li%baBe i biblioteci &ra(ice -e ni8el 9nalt#
Pro&ra%ele &ra(ice "ro"use 9n aceast1 carte se "re6int1 sub (or%a -e co- C,
CPP i, uneori, "seu-oco- ase%1n1tor li%baBului C# Biblioteca &ra(ic1 +"en,> este
(olosit1 intens, -atorit1 "ortabilit1ii i -is"onibilit1ii acesteia 9n a"roa"e toate
calculatoarele, -e la calculatoare PC ";n1 la staii &ra(ice "uternice, sub un nu%1r
%are -e siste%e -e o"erare i a"elabil1 -in nu%eroase siste%e -e -e68oltare Ctool@itE#
)co"ul "re6entei lucr1ri este acela -e a -a o -escriere uni(icat1 a "rinci"alelor
%eto-e -e &enerare a i%a&inilor tri-i%ensionale 9%"reun1 cu as"ecte -e i%"le%entare
care s1 (acilite6e sarcina "ro&ra%atorului -e a abor-a acest -o%eniu -e a"licaii
-i8ersi(icat i 9n "er%anent1 cretere# Fn acest sens, a"roa"e toate i%a&inile ilustrati8e
ale -i(eritelor te2nici au (ost "ro-use -e autor "rin "ro&ra%e &ra(ice -escrise 9n te3t#
/.3Si.&eme (e referi$- &ri(ime$.io$ale
Pentru crearea a"licaiilor &ra(ice este necesar ca obiectele s1 (ie "o6iionate
9ntr=un siste% -e re(erin1 tri-i%ensional# E3ist1 %ai %ulte "osibilit1i -e a s"eci(ica
"o6iia unei %uli%i -e "uncte C8;r(uriE "rin care este re"re6entat un obiect 9n s"aiul
tri-i%ensional: coor-onate cilin-rice, coor-onate s(erice, coor-onate Carte6iene#
Dintre aceste siste%e -e re(erin1, cel %ai utili6at 9n a"licaiile &ra(ice este siste%ul -e
coor-onate Carte6ian#
)iste%ul -e coor-onate Carte6ian 9n care sunt -e(inite toate obiectele scenei
8irtuale se nu%ete siste% -e re(erin1 uni8ersal Cworld coordinate sstem= KC)E#
?n siste% -e coor-onate Carte6ian se -e(inete "rin ori&inea + i trei a3e
"er"en-iculare, +3, +A i +6, orientate -u"1 re&ula %;inii -re"te sau -u"1 re&ula
%;inii st;n&i# Di(erena -intre cele -ou1 siste%e se "oate ur%1ri 9n Fi&# 1#2# Fntr=un
siste% orientat -u"1 re&ula %;inii -re"te, -ac1 se rotete %;na -rea"t1 9n Burul a3ei 6
-e la a3a 3 "o6iti81 s"re a3a A "o6iti81, orientarea -e&etului %are este 9n -irecia 6
"o6iti8# Fntr=un siste% orientat -u"1 re&ula %;inii st;n&i, rotirea -e la a3a 3 "o6iti81
s"re a3a A "o6iti81, cu orientarea -e&etului %are 9n -irecia 6 "o6iti8 se obine
(olosin- %;na st;n&1# +rientarea -u"1 re&ula %;inii -re"te a siste%elor -e coor-onate
cores"un-e con8eniei %ate%atice stan-ar-#
Di(erite siste%e -e &ra(ic1 tri-i%ensional1 sau -e realitate 8irtual1 (olosesc
con8enii -i(erite "entru -e(inirea siste%elor -e re(erin1, ceea ce con-uce la con(u6ii,
-ac1 nu se "reci6ea61 con8enia (olosit1# Fn acest te3t, "entru siste%ul -e re(erin1
uni8ersal se (olosete con8enia -e siste% -e coor-onate -re"t# Fn &ra(ica
tri-i%ensional1 se %ai (olosesc i alte siste%e -e re(erin1, care "er%it -escrierea
o"eraiilor -e trans(or%1ri &eo%etrice i care 8or (i "reci6ate "e "arcursul lucr1rii#
?n "unct P 9n s"aiul tri-i%ensional se re"re6int1 9n siste%ul -e re(erin1
Carte6ian "rintr=un tri"et -e 8alori scalare, 3, A, 6, care re"re6int1 co%"onentele
8ectorului -e "o6iie OP "e cele trei a3e -e coor-onate# Dac1 se note61 cu i, :, ;
8ersorii C8ectorii unitateE ai celor trei a3e -e coor-onate 3, A, 6, atunci 8ectorul -e
"o6iie al "unctului P este OP Q 3i P A: P 6;# Fn notaia %atriceal1, un "unct 9n s"aiul
tri-i%ensional se "oate re"re6enta "rintr=o %atrice linie sau "rintr=o %atrice coloan1:
[ ] 6 A 3 P sau
1
1
1
]
1

6
A
3
P
4%bele con8enii sunt (olosite 9n e&al1 %1sur1 9n siste%ele &ra(ice, ceea ce,
-in nou, "oate "ro8oca -i(erite con(u6ii, -ac1 nu se "reci6ea61 con8enia (olosit1#
Con8enia -e re"re6entare sub (or%1 -e %atrice linie a unui "unct, (olosit1 9n unele
lucr1ri RKatt9/S, R0ol-9.S, are a8antaBul c1 e3"ri%1 o"eraiile -e concatenare a
%atricelor 9ntr=un %o- natural, -e la st;n&a la -rea"ta# Con8enia -e re"re6entare
%ate%atic1, stan-ar-ul &ra(ic PHI,), biblioteca &ra(ic1 +"en,>, ca i unele -in
lucr1rile -e re(erin1 9n -o%eniu RFoleA9S (olosesc notaia -e %atrice coloan1 "entru
un "unct 9n s"aiul tri-i%ensional, care este a-o"tat1 i 9n lucrarea "re6ent1#
A
3
6
+
3
6
A
+
Fig./.1 CaE )iste% -e coor-onate orientat -u"1 re&ula %;inii -re"te i
CbE -u"1 re&ula %;inii st;n&i#
CaE
CbE
2
Modelarea oiectelor
0o-ul cel %ai con8enabil -e %o-elare a scenelor 8irtuale este acela 9n care
(iecare obiect este %o-elat 9ntr=un siste% -e coor-onate "ro"riu, nu%it siste% -e
re(erin1 %o-el Csau siste% -e re(erin1 localE, 9n care "unctele C8;r(urileE obiectului
sunt "reci6ate relati8 la un anu%it "unct -e re(erin1 local# De (a"t, 9n %o-elarea
ierar2ic1, un obiect co%"le3 "oate a8ea un nu%1r oarecare -e siste%e -e re(erin1
locale, c;te unul "entru (iecare "arte co%"onent1 a sa# Instanierea unui obiect 9n
scena 8irtual1 9nsea%n1 a%"lasarea acestuia 9n siste%ul -e re(erin1 uni8ersal "rintr=o
succesiune -e scal1ri, rotaii i translaii, care trans(or%1 obiectul -in siste%ul -e
re(erin1 local 9n siste%ul -e re(erin1 uni8ersal# 4ceast1 succesiune -e trans(or%1ri
este cunoscut1 sub nu%ele -e trans(or%are -e %o-elare#
Pro"riet1ile obiectelor tri-i%ensionale care se %o-elea61 9n a"licaiile &ra(ice
se "ot 9%"1ri 9n -ou1 cate&orii: forma i atri$ute de aspect# In(or%aia -e (or%1 a
unui obiect este -i(erit1 -e celelalte atribute ale obiectului, -eoarece (or%a este aceea
care -eter%in1 %o-ul 9n care obiectul a"are 9n re-area &ra(ic1 i toate celelalte
atribute se corelea61 cu (or%a obiectului C-e e3e%"lu, culoarea se s"eci(ic1 "entru
(iecare ele%ent -e su"ra(a1 a obiectuluiE#
Din "unct -e 8e-ere al (or%ei, obiectele tri-i%ensionale re"re6entate 9n
&ra(ica "e calculator "ot (i obiecte solide sau obiecte deforma$ile# ?n soli- este un
obiect tri-i%ensional a c1rui (or%1 i -i%ensiuni nu se %o-i(ic1 9n (uncie -e ti%" sau
-e "o6iia 9n scen1 C"ro"rietatea -e (or%1 8olu%etric1 in8ariant1E# 0aBoritatea
a"licaiilor -e realitate 8irtual1 se ba6ea61 "e scene co%"use -in soli-e, -ar e3ist1 i
a"licaii 9n care obiectele re"re6entate 9i %o-i(ic1 (or%a i -i%ensiunile 9ntr=un %o-
"re-e(init sau ca ur%are a unor aciuni interacti8e C-e e3e%"lu, 9n si%ul1ri ale
inter8eniilor c2irur&icaleE# C2iar i re"re6entarea unor ast(el -e obiecte Cobiecte
-e(or%abileE se ba6ea61 "e un %o-el al unui soli-, care se %o-i(ic1 9n cursul
e3"eri%entului -e realitate 8irtual1# Fn lucrarea -e (a1 se 8or "re6enta %o-ele ale
soli-elor, care stau la ba6a "relucr1rilor -in &ra(ic1 i realitate 8irtual1#
0o-elarea soli-elor este o te2nic1 -e "roiectare, 8i6uali6are i anali61 a
%o-ului 9n care obiectele reale se re"re6int1 9n calculator# Fn or-inea i%"ortanei i a
(rec8enei -e utili6are, %eto-ele -e %o-elare i re"re6entare a obiectelor sunt
ur%1toarele:
1# %odelarea poligonal# Fn acest1 (or%1 -e re"re6entare, obiectele sunt
a"ro3i%ate "rintr=o reea -e (ee care sunt "oli&oane "lanare#
2# %odelarea prin petice parametrice $icu$ice C$icu$ic parametric patchesE#
+biectele sunt a"ro3i%ate "rin reele se ele%ente s"aiale nu%ite "etice
C"atc2esE# 4cestea sunt re"re6entate "rin "olinoa%e cu -ou1 8ariabile
"ara%etrice, 9n %o- obinuit cubice#
!# %odelarea prin com$inarea o$iectelor CConstructive Solide Geometr &
CSGE# +biectele sunt re"re6entate "rin colecii -e obiecte ele%entare, cu%
sunt cilin-ri, s(ere, "olie-re#
'# %odelarea prin tehnica divi'rii spa(iale# +biectele sunt 9ncor"orate 9n
s"aiu, "rin atribuirea (iec1rui ele%ent s"aial a unei etic2ete 9n (uncie -e
obiectul care ocu"1 ele%entul res"ecti8#
4ceste %eto-e -e %o-elare i re"re6entare a soli-elor se "ot &ru"a 9n
re"re6ent1ri "rin su"ra(aa -e (rontier1 C"ri%ele -ou1 %eto-eE i re"re6ent1ri "rin
8olu% Culti%ele -ou1 %eto-eE#
1./2o(elarea poligo$al- a o3iec&elor
0o-elarea "oli&onal1, 9n care un obiect const1 -intr=o reea -e "oli&oane
"lanare care a"ro3i%ea61 su"ra(aa -e (rontier1 C$oundar representation ) *&repE,
este (or%a Gclasic1H (olosit1 9n &ra(ica "e calculator# 0oti8ele utili61rii e3tinse a
acestei (or%e -e re"re6entare sunt uurina -e %o-elare i "osibilitatea -e re-are
ra"i-1 a i%a&inii obiectelor# Pentru obiectele re"re6entate "oli&onal s=au -e68oltat
al&orit%i -e re-are e(icieni, care asi&ur1 calculul u%bririi, eli%inarea su"ra(eelor
ascunse, te3turare, antialiasin&, (rec8ent i%"le%entai 2ar-Lare 9n siste%ele &ra(ice#
Fn re"re6entarea "oli&onal1, un obiect tri-i%ensional este co%"us -intr=o
colecie -e (ee, (iecare (a1 (iin- o su"ra(a1 "lan1 re"re6entat1 "rintr=un "oli&on#
2.1.1Reprezentarea poligoanelor
?n "oli&on este o re&iune -in "lan %1r&init1 -e o colecie (init1 -e se&%ente
-e -rea"t1 care (or%ea61 un circuit 9nc2is si%"lu#
Fie n "uncte 9n "lan, notate v
0
, v
1
, T,v
n1
i n se&%ente -e -rea"t1
e
0
= v
0
v
1
, e
1
= v
1
v
2
, T# e
n1
= v
n1
v
0
, care conectea61 "erec2i -e "uncte
succesi8e 9n or-ine ciclic1, -eci inclusi8 cone3iunea 9ntre ulti%ul "unct i "ri%ul
"unct -in list1# 4ceste se&%ente %1r&inesc un "oli&on -ac1 i nu%ai -ac1:
CaE Intersecia (iec1rei "erec2i -e se&%ente a-iacente 9n or-inea ciclic1 este
un sin&ur "unct, coninut -e a%bele se&e%ente: e
i
e
i+1
= v
i+1
, "entru
oricare i = 0,T,n1#
CbE )e&%ente nea-iacente nu se intersectea61: e
i
e
j
= , "entru orice
j i+1#
)e&%entele care %1r&inesc un "oli&on Clinia "oli&onal1E (or%ea61 un circuit
9nc2is CcicluE -eoarece se&%entele sunt conectate ca"1t la ca"1t i ulti%ul se&%ent
conectea61 ulti%ul "unct cu "ri%ul "unct$ ciclul este si%"lu -eoarece se&%entele
nea-iacente nu se intersectea61#
Punctele v
i
se nu%esc 8;r(urile "oli&onului CverticesE$ se&%entele e
i
se
nu%esc %uc2ii Csau laturiE ale "oli&onului# De re%arcat c1 un "oli&on conine n
8;r(uri i n %uc2ii i c1 %uc2iile sunt orientate, ast(el 9nc;t (or%ea61 un ciclu Ccircuit
9nc2isE# + ast(el -e orientare a se&%entelor se nu%ete orientare consistent1# Fn
&eneral, se (olosete or-inea -e "arcur&ere 9n sensul in8ers acelor -e ceasornic: -ac1
se "arcur& %uc2iile 9n sensul lor -e -e(iniie, interiorul "oli&onului este 816ut
9ntot-eauna 9n "artea st;n&1 CFi&# 2#1E#
+ teore%1 i%"ortant1 9n "relucrarea "oli&oanelor este teore%a lui +ordan,
care s"une c1 orice curb1 "lan1 9nc2is1 si%"l1 9%"arte "lanul 9n -ou1 "1ri: o "arte
interioar1 curbei, care este o re&iune li%itat1, i o "arte e3terioar1 curbei, care este o
re&iune neli%itat1# Dei "are si%"l1 -in "unct -e 8e-ere intuiti8, -e%onstraia
teore%ei lui Jor-an este -estul -e -i(icil1 i "oate (i &1sit1 9n re(erinele biblio&ra(ice
RRour9!S#
4ceast1 teore%1 Busti(ic1 -e(iniia care se %ai (olosete "entru "oli&oane, i
anu%e: "oli&onul este o re&iune li%itat1 -in "lan, %1r&init1 -e o colecie -e se&%ente
orientate consistent# Prin aceast1 -e(iniie se consi-er1 "oli&onul ca o re&iune 9nc2is1
-in "lan# ?neori, "oli&onul este consi-erat ca (iin- (or%at nu%ai -in conturul s1u,
-eci nu%ai -e se&%entele -e -rea"t1 care %1r&inesc re&iunea, i nu -e re&iunea 9ns1i#
Fn continuare, se (olosete notaia P "entru a -ese%na conturul "oli&onului P Clinia
"oli&onal1 9nc2is1 care %1r&inete "oli&onulE#
*ria$g)lari5area poligoa$elor. + alt1 "ro"rietate i%"ortant1 a "oli&oanelor
(olosit1 9n &ra(ic1 este "ro"rietatea -e trian&ulari6are# )e -e%onstrea61 c1 orice
"oli&on "oate (i 9%"1rit 9n triun&2iuri "rin a-1u&area a 6ero sau %ai %ulte -ia&onale#
Pro"rietatea -e trian&ulari6are se ba6ea61 "e noiunile -e 8i6ibilitate i -ia&onal1 9n
"oli&oane#
Fig. 1./ )e&%entele liniei "oli&onale sunt orientate i nu se autointerectea61#
8
/
8
'
8
!
8
2
8

?n "unct x -in interiorul unui "oli&on "oate 8e-ea un alt "unct y, -ac1 i
nu%ai -ac1 se&%entul xy nu este 9n nici un "unct al s1u e3terior "oli&onului, a-ic1
xy P# 4cest lucru 9nse%n1 c1 linia care unete -ou1 "uncte x i y, 8i6ibile unul
altuia, "oate atin&e un 8;r( al "oli&onului# :i6ibilitatea 9ntre -ou1 "uncte x i y este
co%"let1 Cclearl visi$leE, -ac1 linia care unete cele -ou1 "uncte nu atin&e (rontiera
"oli&onal1 CFi&# 2#2E#
+ -ia&onal1 a unui "oli&on este un se&%ent -e -rea"t1 9ntre -ou1 8;r(uri a i
b, co%"let 8i6ibile unul altuia# 4cest lucru 9nsea%n1 c1 intersecia -intre se&%entul
9nc2is ab i P este %uli%ea {a,b}, a-ic1 se&%entul ab nu atin&e linia "oli&onal1
P 9n alte "uncte -ec;t 8;r(urile a i b, -e 9nce"ut i -e s(;rit ale se&%entului#
Con-iiile ca se&%entul ab care unete 8;r(urile a i b ale unui "oli&on s1 (ie o
-ia&onal1 9n acel "oli&on sunt -eci: ab P i ab P ={a, b}# +rice
-ia&onal1 9%"arte un "oli&on 9n -ou1 "oli&oane %ai %ici CFi&# 2#2E#
Dou1 -ia&onale ale unui "oli&on sunt ne9ncruciate CnoncrossingE -ac1
intersecia lor este o sub%uli%e a ca"etelor lor C"unctele -e 9nce"ut i -e s(;rit ale
se&%entelorE#
Dac1 se a-au&1 at;tea -ia&onale ne9ncruciate c;te sunt "osibile 9ntr=un
"oli&on, atunci "oli&onul este 9%"1rit 9n triun&2iuri# + ast(el -e "artiionare a unui
"oli&on 9n triun&2iuri se nu%ete triangulari'area "oli&onului# Dia&onalele se "ot
a-1u&a 9n orice or-ine, at;ta ti%" c;t sunt ne9ncruciate# De%onstraia teore%ei
con(or% c1reia orice "oli&on a-%ite o trian&ulari6are, se ba6ea61 "e teore%a lui
0eister, -e%onstrat1 9n RRour9!S, care stabilete c1 orice "oli&on cu n 4 8;r(uri
a-%ite cel "uin o -ia&onal1#
Teore%a trian&ulari61rii se ba6ea61 i "e le%a nu%1rului -e -ia&onale: +rice
trian&ulari6are a unui "oli&on P cu n 8;r(uri utili6ea61 n 3 -ia&onale i const1 -in
n 2 triun&2iuri# 4ceste teore%e se -e%onstrea61 "rin in-ucie# Fn Fi&# 2#! este
"re6entat1 trian&ulari6area unui "oli&on con8e3 cu o"t laturi$ se inserea61 5 D ! Q /
-ia&onale ne9ncruciate i re6ult1 5 D 2 Q . triun&2iuri#
Teore%a trian&ulari61rii, care asi&ur1 c1 orice "oli&on "oate (i -i8i6at 9n
triun&2iuri, re"re6int1 su"ortul celei %ai e(iciente %eto-e -e &enerare a i%a&inii
Cre-areaE obiectelor tri-i%ensionale: obiectele se re"re6int1 "rin (ee "oli&onale,
3
A
(
b
a
-
c
e
Fig. 1.1 :i6ibilitate i -ia&onale 9n "oli&oane#
Punctele x i y sunt 8i6ibile unul altuia#
Punctele c i d sunt in8i6ibile unul altuia -eoarece ef P#
Punctele a i b sunt co%"let 8i6ibile unul altuia, -eci ab este -ia&onal1 9n P#
(iecare "oli&on se -esco%"une 9n triun&2iuri i triun&2iurile sunt &enerate "rin
al&orit%i i%"le%entai 2ar-Lare#
Din "unct -e 8e-ere al re"re6ent1rii 9n "ro&ra% a "oli&oanelor, cea %ai
co%"act1 (or%1 este re"re6entarea "rintr=o list1 liniar1 -e 8;r(uri, (iecare 8;r( (iin-
s"eci(icat "rintr=o structur1 Csau clas1, 9n "ro&ra%area orientat1 "e obiecteE care
%e%orea61 Ccel "uinE coor-onatele 8;r(ului# 4lte -ate re(eritoare la 8;r(urile
"oli&oanelor necesare 9n %o-elarea i re-area obiectelor Cnor%al1, culoare,
coor-onate -e te3turare, etc#E 8or (i -escrise 9n seciunile care ur%ea61#
Este "osibil1 re"re6entarea unui "oli&on i "rin lista se&%entelor sale, -ar
acest1 re"re6entare necesit1 un 8olu% %ai %are -e -ate i este (olosit1 9n
i%"le%entarea anu%itor al&orit%i -e "relucrare a "oli&oanelor Creuniune, -i8i6are,
etc#E i %ai "uin 9n re"re6entarea %o-elului unui obiect# >ista liniar1 -e 8;r(uri "oate
(i i%"le%entat1 ca 8ector sau ca list1 si%"lu sau -ublu 9nl1nuit1#
2.1.2Reprezentarea poliedrelor
Fn %o-elarea i re"re6entarea "rin su"ra(aa -e (rontier1, obiectele sunt
a"ro3i%ate "rin "olie-re i %o-elul lor este re"re6entat "rin su"ra(aa "olie-rului,
co%"us1 -intr=o colecie -e "oli&oane#
?n "olie-ru re"re6int1 &enerali6area 9n s"aiul tri-i%ensional a unui "oli&on
-in "lanul bi-i%ensional: "olie-rul este o re&iune (init1 a s"aiului a c1rui su"ra(a1 -e
(rontier1 este co%"us1 -intr=un nu%1r (init -e (ee "oli&onale "lane# )u"ra(aa -e
(rontier1 a unui "olie-ru conine trei ti"uri -e ele%ente &eo%etrice: 8;r(urile
C"uncteleE care sunt 6ero=-i%ensionale, %uc2iile Cse&%enteleE, care sunt
uni-i%ensionale i (eele C"oli&oaneE care sunt bi-i%ensionale CFi&# 2#'E#
)u"ra(aa -e (rontier1 a unui "olie-ru este o colecie (init1 -e (ee "oli&onale
care se intersectea61 corect# Intersecia corect1 a (eelor 9nsea%n1 c1 "entru (iecare
"erec2e -e (ee ale obiectului, (eele sunt -isBuncte, au 9n co%un un sin&ur 8;r(, sau au
9n co%un -ou1 8;r(uri i %uc2ia care le unete#
/
'
!
2
1

7
.
Fig. 1.3 Trian&ulari6area unui "oli&on con8e3#
Fee
"oli&onale
0uc2ii
:;r(uri
Fig. 1. Re"re6entarea "rin su"ra(aa -e (rontier1 a unui "olie-ru#
Din "unct -e 8e-ere %ate%atic, nu este i%e-iat e8i-ent c1 un soli- "oate (i
re"re6entat uni8oc "rin su"ra(aa care 9l %1r&inete# De aceea, este necesar s1 (ie
stabilite con-iiile 9n care aceast1 re"re6entare este "er%is1# 4ceste con-iii, nu%ite
con-iii -e construc(ie corect, se -e(inesc "entru su"ra(ee -e (rontier1
trian&ulari6ate# Trian&ulari6area unei su"ra(ee "olie-rale se obine "rin
trian&ulari6area (iec1rei (ee "oli&onale, ast(el 9nc;t su"ra(aa re6ultat1 const1 -in
8;r(uri care sunt 9nconBurate -e triun&2iuri, (iecare "erec2e -e triun&2iuri (iin-
a-iacente -e=a lun&ul unei %uc2ii# >aturile triun&2iurilor a-iacente unui 8;r( (or%ea61
un circuit -e se&%ente, nu%it lin@=ul 8;r(ului CFi&# 2#/E#
+ su"ra(a1 -e (rontier1 construit1 corect 9n-e"linete ur%1toarele con-iii:
>in@ul (iec1rui 8;r( al su"ra(eei trian&ulari6ate este co%"let, a-ic1
(or%ea61 un circuit 9nc2is, nu nea"1rat "lanar#
Triun&2iurile su"ra(eei trian&ulari6ate sunt orientate consistent#
Fnc2i-erea lin@=ului (iec1rui 8;r( asi&ur1 "ro"riet1ile su"ra(aei -e a (i
,nchis i conectat. Pro"rietate -e 9nc2i-ere 9nsea%n1 c1 su"ra(aa nu are un s(;rit#
Pro"rietatea -e conecti8itate 9nsea%n1 c1 e3ist1 cel "uin o cale -e la un triun&2i la
altul a"arin;n- aceleiai su"ra(ee -e (rontier1, care "oate (i "arcurs1 "rin tra8ersarea
%uc2iilor a-iacente# Dac1 o su"ra(a1 nu este 9nc2is1 sau nu este conectat1, "rin
trian&ulari6area su"ra(eei nu se obin lin@=uri 9nc2ise#
Pro"rietate -e construcie corect1 a su"ra(eei -e (rontier1 a unui soli- se
"oate 8eri(ica (olosin- con-iia -e orientare consistent a su"ra(eei, (or%ulat1 -e
le&ea lui 0oebius: + su"ra(a1 9nc2is1 este orientat1 consistent -ac1 la tra8ersarea
triun&2iurilor sale Cre6ultate -intr=o trian&ulari6are arbitrar1E, 9ntr=o -irecie unic1 C-e
e3e%"lu, 9n -irecia in8ers1 acelor -e ceasornicE, (iecare %uc2ie este tra8ersat1 -e
-ou1 ori, 9n -irecii o"use CFi&# 2#.E#
,enerali6area 9n s"aiul tri-i%ensional a teore%ei lui Jor-an s"une c1 orice
su"ra(a1 -e (rontier1 9nc2is1, consistent orientat1, 9%"arte s"aiul 9n -ou1 "1ri: o
Fig. 1.! Trian&ulari6area su"ra(eei -e (rontier1#
>in@=ul unui 8;r( al su"ra(eei#
>in@
"arte interioar1 su"ra(eei, care este o re&iune li%itat1, i o "arte e3terioar1 su"ra(eei,
care este o re&iune neli%itat1#
Din "unct -e 8e-ere &eo%etric, orientarea consistent1 se 8eri(ic1 "rin -irecia
nor%alelor la (eele obiectului: -ac1 nor%alele (eelor sunt 9n-re"tate c1tre aceeai
re&iune a s"aiului C(ie toate 9n-re"tate s"re interior, (ie toate 9n-re"tate s"re e3teriorE,
atunci su"ra(aa are o orientare consistent1# 4cest %o- -e 8eri(icare se re(er1 la
obiectele tri-i%ensionale (1r1 ca8it1i, -ar se "oate e3tin-e cu uurin1 i la obiecte
care "re6int1 ca8it1i#
Teoretic, orientarea consistent1 se 8eri(ic1 "entru (eele trian&ulari6ate ale
su"ra(eei -e (rontier1, -ar, "rin e3tin-ere, se "oate 8eri(ica orientarea consistent1
(olosin- nor%alele la (eele "oli&onale, -eoarece toate triun&2iurile obinute "rin
trian&ulari6area unui "oli&on care re"re6int1 o (a1 a unui obiect au aceeai orientare
CFi&# 2#7E#
+rientarea consistent1 a (eelor "oli&onale ale obiectelor este o con-iie -e
8eri(icare a construciei corecte a su"ra(eei -e (rontier1 i, 9n acelai ti%", este
(olosit1 9n o"eraiile -e eli%inare a su"ra(eelor ascunse 9n cursul re-1rii obiectelor
tri-i%ensionale# De aceea, nor%alele la (eele "oli&onale se %e%orea61 9n %o-elul
obiectelor, 9%"reun1 cu coor-onatele 8;r(urilor#
2.1.3Implementarea modelului poligonal
Fig. 1.7 >e&ea lui 0obius 8eri(ic1 orientarea consistent1 a unei su"ra(ee trian&ulari6ate#
Fig. 1.7 +rientarea consistent1 a (eelor obiectului#
Re"re6entarea "rin reea -e "oli&oane a obiectelor se i%"le%entea61 "rintr=o
list1 -e "oli&oane, care "oate (i un 8ector sau o list1 9nl1nuit1# 4st(el, 9ntrea&a
in(or%aie re(eritoare la (or%a unui obiect este co%"us1 -in liste -e coor-onate ale
8;r(urilor, la care se %ai a-au&1 i alte in(or%aii &eo%etrice necesare 9n re-are C-e
e3e%"lu, nor%alele la su"ra(eeE#
F1r1 s1 se insiste acu% asu"ra e(icienei sau ele&anei i%"le%ent1rii Cse 8a
re8eni ulteriorE, se "oate consi-era c1 (or%a unui obiect %o-elat "rin reea -e
"oli&oane "oate (i re"re6entat1 ca un 8ector -e (ee, (iecare (a1 (iin- un 8ector -e
8;r(uri, (iecare 8;r( (iin- un 8ector -e trei coor-onate 9n 8ir&ul1 (lotant1# De e3e%"lu,
un cub "oate (i re"re6entat ast(el:
-ouble CubeFacesR.SR'SR!S Q U
UU=1,=1,=1V, WW (ata
U 1,=1,=1V,
U 1,=1, 1V,
U=1,=1, 1VV,
UU=1, 1, 1V, WW (ata 1
U 1, 1, 1V,
U 1, 1,=1V,
U=1, 1,=1VV,
UU=1,=1, 1V, WW (ata 2
U 1,=1, 1V,
U 1, 1, 1V,
U=1, 1, 1VV,
UU 1,=1,=1V, WW (ata !
U=1,=1,=1V,
U=1, 1,=1V,
U 1, 1,=1VV,
UU 1,=1, 1V, WW (ata '
U 1,=1,=1V,
U 1, 1,=1V,
U 1, 1, 1VV,
UU=1,=1, 1V, WW (ata /
U=1, 1, 1V,
U=1, 1,=1V,
U=1,=1,=1VV
V$
+ ast(el -e i%"le%entare este 9ns1 ine(icient1 -eoarece (iecare 8;r( este
"relucrat -e trei ori, "entru (iecare (a1 a-iacent1 acestuia# + i%"le%entare %ult %ai
e(icient1 a %o-elului "oli&onal -e(inete un 8ector cu toate 8;r(urile unui obiect, iar
(iecare (a1 se -e(inete "rintr=un 8ector -e in-eci 9n 8ectorul -e 8;r(uri# De e3e%"lu,
%o-elul unui cub (olosin- in-eci "entru -e(inirea (eelor arat1 ast(el:
-ouble CubeCoor-sR5SR!SQU
U=1,=1, 1V,
U 1,=1, 1V,
U 1,=1,=1V,
U=1,=1,=1V,
U=1, 1, 1V,
U 1, 1, 1V,
U 1, 1,=1V,
U=1, 1,=1V
V$
int CubeIn-e3FaceR.SR'SQU
U!, 2, 1, V,
U', /, ., 7V,
U, 1, /, 'V,
U2, !, 7, .V,
U1, 2, ., /V,
U, ', 7, !V
V$
4t;t 9n cursul %o-el1rii, c;t i 9n cursul re-1rii i%a&inii, %o-elul obiectelor se
re"re6int1 %ai co%"le3, conin;n- i alte in(or%aii &eo%etrice i atribute -e as"ect#
4st(el, culoarea C%ai &eneral s"us, %aterialulE este o in(or%aie care se asi&nea61
(iec1rei (ee sau (iec1rui 8;r( al obiectului# Fn &eneral, %o-elul "oli&onal cu
re"re6entarea "rin in-eci a (eelor "oli&onale este i%"le%entat orientat "e obiecte,
(olosin- %ai %ulte clase C-e ba61 i -eri8ateE care "er%it 9nca"sularea tuturor
in(or%aiilor necesare "entru re-area obiectelor#
+ reea -e "oli&oane "oate s1 re"re6inte (ie su"ra(aa -e (rontier1 a unui soli-,
(ie o su"ra(a1 -esc2is1, necesar1 9n anu%ite situaii -e %o-elare, cu% este su"ra(aa
terenului si%ulat 9ntr=o scen1 8irtual1# Deoarece se %o-elea61 o 6on1 &eo&ra(ic1
li%itat1 i nu se e3"lorea61 scena ast(el ca s1 (ie 816ut1 %ar&inea G"1%;ntuluiH, se
"oate (olosi o su"ra(a1 "oli&onal1 -esc2is1 "entru re"re6entarea terenului#
Re"re6entarea obinuit1 9n &ra(ica -in scenele 8irtuale este aceea 9n care
(iecare "oli&on este re"re6entat ca o su"ra(a1 C"oli&oane G"lineHE, -ar 9n "roiect1rile
&ra(ice C9n %ecanic1, construcii, etcE se (olosete i re"re6entarea "rin contur a
"oli&oanelor, nu%it1 re"re6entare Gca-ru -e s;r%1H CwireframeE CFi&# 2#5E#
Preci6ia -e re"re6entare a %o-elului, a-ic1 -i(erena -intre su"ra(aa
obiectului i (eele "oli&onale "rin care este a"ro3i%at, este un "ara%etru i%"ortant -e
%o-elare# Fn &eneral, cu c;t nu%1rul -e "oli&oane "rin care se a"ro3i%ea61 su"ra(aa
obiectului este %ai %are, cu at;t "reci6ia -e re"re6entare este %ai bun1# )e obser81
-i(erena -intre i%a&inea unui obiect CtorE re"re6entat "rin .' -e "oli&oane 9n Fi&#
2#5CaE i "rin 125 -e "oli&oane 9n Fi&# 2#5 CbE#
Folosirea unui nu%1r %are -e "oli&oane "entru re"re6entarea obiectelor
con-uce la un 8olu% i%ens -e -ate 9n %o-elarea scenelor 8irtuale, care i%"lic1
cerine cores"un61toare -e %e%orare i -e ca"acitate -e calcul# +ric;t -e %ult ar
crete ca"acitatea -e "relucrare 9n siste%ele &ra(ice, "rin (olosirea "aralelis%ului i
CaE CbE
Fig. 1.6 Re"re6entarea G"lin1H CfilledE i Gca-ru -e s;r%1H CwireframeE
a obiectelor#
"rin i%"le%entarea 2ar-Lare a al&orit%ilor -e "relucrare, "er(or%ane -e &enerare
interacti81 9n ti%" real a i%a&inilor se "ot obine nu%ai -ac1 obiectele scenei se
%o-elea61 9n %o- cores"un61tor# 0eto-ele -e a"ro3i%are e(icient1 a %o-elelor sunt
cunoscute sub nu%ele -e simplificarea Csau rafinareaE datelor#
Te2nica -e si%"li(icare -irect1, "rin re-ucerea uni(or%1 a nu%1rului -e
"oli&oane -e re"re6entare a obiectului este inacce"tbil1, -eoarece nu se "oate controla
"reci6ia -e re"re6entare# Pentru "1strarea unei "reci6ii -e re"re6entare constant1, se
(olosete %o-elarea a-a"ti81, 9n care -i%ensiunea (eelor "oli&onale 8aria61 9n (uncie
-e curbura su"ra(eei$ 9n "1rile cu curbur1 "ronunat1 sunt intro-use %ai %ulte
"oli&oane "e unitatea -e su"ra(a1#
+ alt1 %eto-1 se si%"li(icare a -atelor este %o-elarea cu ni8ele -e -etaliu
%ulti"le a obiectelor Clevels of detail= >+DE# Fiecare %o-el al unui obiect este co%"us
-intr=o succesiune -e re"re6ent1ri, (iecare cu o "reci6ie -i(erit1# Fn cursul &ener1rii
i%&inilor, se selectea61 ni8elul -e -etaliu cores"un61tor, 9n (uncie -e "o6iia
obiectului (a1 -e "unctul -e obser8are# Cu c;t obiectul este %ai -e"1rtat, se selectea61
o re"re6entare cu o "reci6ie %ai sc16ut1 a obiectului# 4cest1 %eto-1 este "osibil1
-atorit1 (olosirii "roieciei "ers"ecti81 9n &enerarea i%a&inilor i 8a (i 9neleas1 %ai
uor -u"1 "arcur&erea seciunii ur%1toare "ri8in- trans(or%1rilor &eo%etrice#
0o-elul "oli&onal al unui obiect se "oate &enera "rin %ai %ulte %eto-e, 9n
(uncie -e ti"ul obiectului i -e a"licaia &ra(ic1 9n care este (olosit %o-elul res"ecti8#
)e "oate (olosi una -in ur%1toarele %eto-e -e %o-elare "oli&onal1:
,enerarea %o-elului -in -escrierea %ate%atic1 a obiectului#
,enerarea %o-elului obiectului "rin baleiere s"aial1#
,enerarea %o-elului "ornin- -e la o %uli%e -e "uncte care a"arin
su"ra(eei -e (rontier1 a obiectului#
2.1.Generarea modelului din de!"rierea
matemati"#
)e "oate &enera reeaua -e "oli&oane -e a"ro3i%are a obiectelor care au o
-escriere %ate%atic1 cunoscut1# De e3e%"lu, ecuaiile -e -e(iniie a unor su"ra(ee
Xua-rice:
Eli"soi-:
1 c 6 b A a 3
2 2 2 2 2 2
+ + C2#1E
un-e a, b c sunt se%ia3ele eli"selor#
Hi"erboloi-:
1 c 6 b A a 3
si 1 c 6 b A a 3
2 2 2 2 2 2
2 2 2 2 2 2
+ +
+
C2#2E
Paraboloi- eli"tic:
6 b A a 3
2 2 2 2
+ C2#!E
)ur"ra(aa se intersectea61 %ai 9nt;i cu un nu%1r n -e "lane "er"en-iculare
"e a3a +6, -e ecuaii z = n z , "entru n = k, k+1, -1, 0, 1 , 2 ,Tk
1, k# )e obin n eli"se C"araleleE i "e (iecare eli"s1 se eantionea61 m "uncte
ec2i-istante C"e %eri-ianeE, obin;n-u=se (n 1) x m "oli&oane care a"ro3i%ea61
su"ra(aa -e (rontier1 a obiectului res"ecti8#
4ceste su"ra(ee se "ot obine i "rin rotaia unei curbe 9n Burul unei a3e -e
coor-onate# De e3e%"lu, su"ra(aa eli"soi-ului se obine "rin rotaia 9n Burul a3ei 6 a
eli"sei:
1 c 6 b A a 3
2 2 2 2 2 2
+ + C2#'E
Q A
#
Prin rotaia unei curbe 9n Burul unei a3e se "ot obine obiecte tri-i%ensionale
%ai 8ariate, 9n (uncie -e (or%a curbei care se rotete# De e3e%"lu, un tor se obine
"rin rotaia unui cerc 9n Burul unei a3e "aralele cu "lanul cercului# )u"ra(eele ast(el
obinute se nu%esc su"ra(ee -e rotaie#
2.1.$Generarea modelului prin %aleiere !pa&ial#
)e "ot &enera obiecte tri-i%ensionale "rin -e"lasarea CsweepingE unei
su"ra(ee &eneratoare -e=a lun&ul unei curbe oarecare# Dac1 se 8aria61 (or%a i
orientarea su"ra(eei &eneratoare 9n cursul -e"las1rii, se "ot obine obiecte 8ariate, 9n
(uncie -e (or%a curbei i -e orientarea, (or%a i 8ariaia (or%ei su"ra(eei
&eneratoare# Prin aceast1 %eto-1 se "ot obine at;t (or%ele re&ulate -escrise %ai sus
Celi"soi-, 2i"erboloi-, "araboloi- eli"tic, torE c;t i alte obiecte nu%ite soli-e -uctibile
sau e3tru-ate Cducted solidsE sau cilin-ri &enerali6ai Cgenerali'ed clindersE
CFi&# 2#9E#
Pentru -e(inirea -e"las1rii unei su"ra(ee -e=a lun&ul unei curbe, este necesar
s1 se -e(ineasc1 inter8alul al curbei "e care are loc -e"lasarea i %o-ul 9n care se
-i8i-e inter8alul "arcurs# F%"1rirea inter8alului 9n -istane e&ale nu -1 re6ultate bune,
-eoarece "unctele obinute nu 8or (i e&al -istribuite "e su"ra(aa obiectului# De aceea
Fig. 1.9 +biect "oli&onal %o-elat "rin -e"lasarea unui cerc -e -ia%etru 8ariabil
-e=a lun&ul unei linii -re"te#
este necesar1 -i8i6area inter8alului 9n (uncie -e curbura curbei# Dac1 curbura este
"ronunat1, se ale& sub-i8i6iuni %ai %ici ale inter8alului, iar "entru curburi %ai
re-use se ale& sub-i8i6iuni %ai %ari ale inter8alului#
2.1.'Generarea modelului pornind de la o mul&ime
de pun"te "are apar&in !upra(e&ei
de (rontier# a o%ie"tului
+ %eto-1 %ai &eneral1 -e %o-elare a obiectelor tri-i%ensionale se ba6ea61
"e cunoaterea unei %uli%i -e "uncte -istribuite uni(or% sau neuni(or% "e su"ra(aa
obiectului# 4ceast1 %eto-1 i%"lic1 %ai 9nt;i obinerea coleciei -e "uncte, i a"oi
construirea reelei -e "oli&oane care s1 a"ro3i%e6e obiectul cu "reci6ia -orit1# Dac1
%eto-ele "re6entate %ai 9nainte "ot (i utili6ate "entru o cate&orie restr;ns1 -e obiecte,
9n sc2i%b, %eto-a &ener1rii %o-elului "ornin- -e la o %uli%e -e "uncte ale
su"ra(eei acestuia "oate (i a"licat1 "entru cele %ai 8ariate obiecte: cl1-iri, 8e2icule,
"lante, ani%ale, ele%ente anato%ice, teren, etc#
0uli%ea -e "uncte -e "e su"ra(aa obiectului se -eter%in1 -i(erit, 9n (uncie
-e %o-ul 9n care este cunoscut sau re"re6entat obiectul real:
Pentru obiectele care se "roiectea61 9ntr=un siste% -e "roiectare ba6at "e
calculator D C4D CComputer Aided DesignE, in(or%aiile -e (or%1
necesare 9n &enerearea %o-elului se "ot obine -in re"re6entarea
"roiectului# De e3e%"lu, cl1-iri, obiecte %ecanice, 8e2icule, "ot (i
"roiectate 9n 4utoCa- i coor-onatele 8;r(urilor su"ra(eelor sunt (olosite
"entru re"re6entarea "rin reea "oli&onal1 a obiectului#
Pentru obiectele real e3istente, sau %ac2ete ale acestora, se "oate (olosi
un scanner !D cu laser# +biectul real Csau %ac2eta acestuiaE este "lasat "e
o %as1 rotati81 9n -irecia -e e%isie a unei ra6e laser# >a (iecare rotaie
co%"let1 a %esei se obine o colecie -e "uncte "e un contur al obiectului,
"rin %1surarea -istanei la su"ra(aa obiectului# Du"1 (iecare rotaie, se
-e"lasea61 %asa 9n sus sau 9n Bos, ast(el c1 se obine o colecie -e
contururi ale obiectului# Toate aceste "uncte -e "e su"ra(aa obiectului
sunt a"oi (olosite "entru crearea %o-elului "oli&onal#
Pentru %o-elarea terenului se (olosesc 21ri -i&itale care (urni6ea61
altitu-inile terenului 9ntr=o &ril1 uni(or%1 -e "uncte, sau contururi -e
ni8el, care unesc "uncte cu altitu-ine constant1#
Fiin- cunoscut1 o %uli%e -e "uncte : care caracteri6ea61 un obiect
tri-i%ensional, 8olu%ul R
!
aco"erit -e aceste "uncte se nu%ete -o%eniul
%uli%ii :# este un "olie-ru, con8e3 sau necon8e3, iar "unctele %uli%ii : "ot (i
-is"use re&ulat sau nere&ulat 9n -o%eniul # Ca6ul cel %ai (rec8ent 9nt;lnit 9n
%o-elare este acela 9n care "unctele %uli%ii : sunt -istribuite nere&ulat 9n s"aiu i
a"ro3i%area obiectului se reali6ea61 "rintr=o reea tri-i%ensional1 -e "oli&oane ,
care a"ro3i%ea61 linear "e "oriuni obiectul -at# Reeaua trebuie s1 (ie construit1
"ornin- -e la %uli%ea : -e "uncte 9n s"aiu i -e la cerinele -e "reci6ie -e
a"ro3i%are a obiectului#
Construirea %o-elului "oli&onal al unui obiect cunoscut "rintr=o %uli%e -e
"uncte -e "e su"ra(aa sa se "oate reali6a "rin %ai %ulte %eto-e, -intre care cele %ai
(olosite sunt trian&ulari6area CtriangulationE i trans(or%ata Ka8elet#
2.1.)Redarea imaginii o%ie"telor poligonale
4a cu% s=a %ai a%intit, %o-elarea "oli&onal1 este cea %ai (olosit1 (or%1 -e
%o-elare a obiectelor 9n &ra(ica "e calculator, -atorit1 si%"lit1ii re"re6ent1rii
%o-elului "oli&onal i a (a"tului c1, 9n %o%entul -e (a1, %aBoritatea acceleratoarelor
-in siste%ele &ra(ice conin "ro&ra%e i%"le%entate 2ar-Lare -e re-are e(icient1 a
"oli&oanelor# 4l&orit%ii -e re-are i%"le%entai 9n acceleratoarele &ra(ice tratea61
se"arat (iecare "oli&on C"ri%iti81 &eo%etric1E re"re6entat "rin coor-onatele 8;r(urilor
sale, ceea ce (ace ca "rocesul -e re-are a i%a&inii s1 (ie (oarte si%"lu# Re-area
i%a&inilor scenelor 8irtuale co%"use -in obiecte a c1ror re"re6entare 9nsu%ea61 %ii
-e "oli&oane nu este ce8a neobinuit#
Re-area obiectelor "oli&onale este i%"le%entat1 "rintr=o succesiune -e
o"eraii -e trans(or%1ri &ra(ice asu"ra obiectelor, nu%it1 pipeline grafic# 4ceast1
succesiune, care 8a (i -escris1 "e lar& 9n seciunea ur%1toare, const1 -in trans(or%1ri
&eo%etrice a"licate 8;r(urilor obiectelor, "rin care se trans(or%1 (iecare (a1 a
obiectului -in siste%ul -e re(erin1 -e %o-elare 9ntr=un siste% -e re(erin1 -e a(iare,
ur%at1 -e trans(or%area -e re-are, "rin care se obine culoare "i3elilor care se
a(iea61 "e -is"laA# Fn Fi&# 2#1 este re-at1 i%a&inea a8ionului F=1. %o-elat "rin
2!.. (ee "oli&onale i re-at "rin "relucrarea (iec1rei (ee, 9n %o-ul cu (ee G"lineH i
u%brire i 9n %o-ul Lire(ra%e#
Fig. 1./" Re-area obiectelor %o-elate "rin reea -e (ee "oli&onale#
Pentru toate celelalte %o-ele -e re"re6entare a obiectelor Cre"re6entarea "rin
reele -e "etice, "rin co%"unerea obiectelor sau "rin sub-i8i6area s"aial1E, "e l;n&1
re-area -irect1 a %o-elului res"ecti8, e3ist1 i "osibilitatea -e re-are "rin -e-ucerea
%ai 9nt;i a re"re6ent1rii "oli&onale cores"un61toare, ur%at1 -e (olosirea al&orit%ilor
-e re-are "oli&onal1#
1.12o(elarea o3iec&elor pri$ reele (e pe&ice
?n "etic CpatchE este o su"ra(a1 curb1 -e(init1 "ara%etric 9n s"aiul
tri-i%ensional# Prin re"re6entarea "ara%etric1, "unctele -e "e su"ra(a1 se "ot calcula
sec8enial, "entru -i(erite 8alori ale "ara%etrilor, %ult %ai si%"lu -ec;t "rin
re6ol8area siste%ului -e ecuaii care -escriu i%"licit su"ra(aa# Re"re6entarea
"ara%etric1 a curbelor i a su"ra(eelor este (olosit1 9n "roiectarea i 9n %o-elarea
obiectelor "entru obinerea unei "reci6ii %ai ri-icate -e a"ro3i%are#
?n se&%ent -e curb1 9n s"aiul tri-i%ensional "oate (i -e(init "rintr=un siste%
-e ecuaii 9n (uncie -e un "ara%etru:
6 6
2
6
!
6
A A
2
A
!
A
3 3
2
3
!
3
- P u c P u b P u a Q E u C 6
- P u c P u b P u a Q E u C A
- P u c P u b P u a Q E u C 3
C2#/E
4ceasta este o curb1 cubic1, -e(init1 ca (or%1 i %1ri%e -e cei 12 coe(icieni,
nu%ii coe(icieni al&ebrici ai curbei# Fn notaie 8ectorial1 se "oate scrie (or%a
"ara%etric1 a unei curbe cubice:
, C B A < P u P u P u Q E u C
2 !
C2#.E
un-e 8ectorul < are co%"onentele C3, A, 6E, iar 8ectorii A, B, C, , au co%"onentele
Ca
3
, a
A
, a
6
E, Cb
3
, b
A
, b
6
E, Cc
3
, c
A
, c
6
E, C-
3
, -
A
, -
6
E, res"ecti8, iar u este cu"rins 9n inter8alul
9nc2is R,1S#
Fn a"licaiile &ra(ice se utili6ea61 9n %o- (rec8ent curbele cubice, -eoarece ele
asi&ur1 su(icient1 (le3ibilitate 9n -e(inirea curbelor i "ot (i "relucrate e(icient#
Polinoa%e -e &ra- %ai %are "ot -escrie curbe %ai co%"le3e, -ar necesit1 un nu%1r
%ai %are -e coe(icieni i sunt %ai -i(icil -e "relucrat e(icient 9n re"re6ent1rile
&ra(ice# >a %o-ul &eneral, o curb1 "ara%etric1 cubic1 se "oate -e(ini "rin ecuaiile:
E u C E u C
i
!
i
i
B P <

C2#7E
un-e < este 8ectorul -e co%"onente C3, A, 6E, P
i
sunt "unctele -e control ale curbei,
(iecare 8ector P
i
a8;n- co%"onentele C3
i
, A
i
, 6
i
E, iar B
i
sunt (unciile -e ba61 Csau -e
a%estec D $lending functionsE ale re"re6ent1rii "ara%etrice#
Di(erite (uncii -e ba61 au "ro"riet1i -i(erite 9n -eter%inarea (or%ei curbei
"ara%etrice: ele "ot inter"ola sau a"ro3i%a o curb1 -at1, "ot asi&ura anu%ite con-iii
-e continuitate a %ai %ultor se&%ente -e curb1#
)"eci(icarea unui se&%ent -e curb1 Csau a unui "etic -e su"ra(a1 curb1E "rintr=un
set -e "uncte -e control este o %eto-1 -e ba61 9n "roiectarea &ra(ic1 interacti81:
"roiectantul -e(inete "unctele -e control$ curba este &enerat1 i 8i6uali6at1 interacti8$
-ac1 (or%a curbei nu este %ulu%itoare, "roiectantul %o-i(ic1 unul sau %ai %ulte
"uncte -e control, ";n1 obine re6ultatul -orit#
Cele %ai utili6ate ti"uri -e curbe i su"ra(ee "ara%etrice 9n "roiectarea &ra(ic1
sunt curbele Ci su"ra(eeleE B6ier i B=s"line# Fn bibliotecile &ra(ice e3ist1 (uncii -e
&enerare a curbelor i su"ra(eelor "ara%etrice#
1.32o(elarea pri$ comp)$erea o3iec&elor
0o-elarea "rin co%"unerea obiectelor CConstructive Solid Geometr D C),E
se (olosete atunci c;n- un obiect "oate (i obinut "rin co%binarea %ai %ultor obiecte
ele%entare, nu%ite "ri%iti8e &eo%etrice#
Pri%iti8ele &eo%etrice utili6ate sunt s(ere, conuri, cilin-ri sau "araleli"i"e-e
-re"tun&2ice i sunt co%binate (olosin- o"eratori booleni i trans(or%1ri liniare# ?n
obiect co%"le3 este re"re6entat "rintr=un arbore, ale c1rui (run6e sunt "ri%iti8ele
&eo%etrice iar no-urile %e%orea61 o"eratori booleeni sau trans(or%1ri liniare#
Fn Fi&# 2#11 este "re6entat1 o"eraia -e reuniune a -ou1 obiecte ele%entare#
4lte o"eraiile "osibile care se "ot e(ectua asu"ra "ri%iti8elor &eo%etrice sunt
sc1-erea i intersecia#
Fi&# 2#12 arat1 re"re6entarea C), a unui obiect "rin co%binarea a trei obiecte
ele%entare: -ou1 "aralelil"i"e-e -re"tun&2ice i un cilin-ru# 4rborele -e re"re6entare
are ca (run6e "ri%iti8ele &eo%etrice, iar celelate no-uri conin o"eratorii booleni#
Paraleli"i"e-ele sunt co%binate (olosin- o"eraia -e reunuine, iar o &aur1 este
"racticat1 9ntr=unul -in "araleli"i"e-e "rin sc1-erea unui cilin-ru -in ansa%blul celor
-ou1 "araleli"i"e-e#
Fig. 1.// +"eraia -e reuniune a -ou1 "ri%iti8e &eo%etrice#
P
Q
)ca-ere
Cilin-ru
Bloc1
Reuniune
Bloc 2
Fig. 1./1 4rborele -e construire a unui obiect -in trei "ri%iti8e &eo%etrice#
Deoarece arborele -e re"re6entare %e%orea61 at;t o"eraiile boolene c;t i
(or%a "ri%iti8elor &eo%etrice, o"eraiile -e %o-i(icare ale obiectului co%"us sunt
relati8 si%"le# De e3e%"lu, o &aur1 9ntr=un obiect se %o-i(ic1 "rin %o-i(icarea
"o6iiei sau a -i%ensiunii "ri%iti8ei &eo%etrice (olosite 9n o"eraia -e sc1-ere# +
ast(el -e %o-i(icare este %ult %ai -i(icil1 9n re"re6entarea "rin su"ra(aa -e (rontier1 a
%o-elelor#
#e(area imagi$ii o3iec&elor CS8 se "oate (ace "rin %ai %ulte %eto-e:
Re-area -irect1 a obiectului 9n a"licaiile -e ra&tracing#
Con8ersia la re"re6entarea "rin su"ra(aa -e (rontier1 CB=re"E "ornin- -e
la %o-elul C), i a"licarea "roce-urilor stan-ar- -e re-are a
"oli&oanelor#
Con8ersia la re"re6entarea "rin sub-i8i6area s"aiului C9n ele%ente nu%ite
8o3eliE i re-area 8olu%ului cores"un61tor
Te2nica raA=tracin& &enerea61 i%a&inea obiectelor "rin intersecia acestora cu
ra6e -e "roiecie i "er%ite obinerea unor e(ecte -eosebit -e realiste 9n %o-elarea
re(le3iei, trans"arenei i a u%brelor#
?n -e6a8antaB i%"ortant al %o-el1rii C), este cela c1 nu orice (el -e obiect
"oate (i obinut "rin co%binarea unor "ri%iti8e &eo%etrice si%"le# De e3e%"lu,
%o-elul unei statui C(olosit 9n crearea %u6eelor 8irtualeE sau %o-elul unui or&an
anato%ic C(olosit 9n si%ul1rile -e inter8enii c2irur&icaleE nu "ot (i obinute "rin
co%binarea unor "ri%iti8e &eo%etrice si%"le#
1.2o(elarea pri$ (i4i5area .paial-
Fn te2nica -e -i8i6are s"aial1, se atribuie (iec1rei sub-i8i6iuni a s"aiului
tri-i%ensional c;te o etic2et1 9n (uncie -e obiectul care ocu"1 acea sub-i8i6iune#
Fn acest1 te2nic1 se consi-er1 s"aiul tri-i%ensional co%"us -intr=un nu%1r
-e % 3 n 3 @ 8olu%e ele%entare Cnu%ite vo-eliE, i "entru (iecare 8o3el se %e%orea61
etic2eta Cun nu%1r -e i-enti(icareE obiectului care ocu"1 acel ele%ent# Re"re6entarea
"rin sub-i8i6iunea s"aiului este util1 9n -i(erite a"licaii &ra(ice, cu% sunt i%a&istica
%e-ical1 sau a"licaiile -e ra tracing#
I%"le%entarea -irect1, "rin atribuirea unei etic2ete (iec1rui ele%ent -e 8olu%
al s"aiului, i%"lic1 o %are re-un-an1 a -atelor: toi 8o3elii interiori unui obiect
conin acceai in(or%aie, etic2eta obiectului# 4cest lucru con-uce la o cantitatate -e
in(or%aie (oarte %are necesar1 "entru re"re6entarea unui s"aiu -e obiecte i este, 9n
&eneral, inacce"tabil1#
Pentru re-ucerea re-un-anei -e re"re6entare se (olosete o te2nic1 -e
re"re6entare a ocu"1rii s"aiale "rintr=un arbore nu%it arbore octal CoctreeE# 4rborele
octal este o structur1 ierar2ic1 care s"eci(ic1 ocu"area unei re&iuni cubice -in s"aiul
tri-i%ensional# I-eea -e re"re6entare a ocu"1rii s"aiale "oate (i e3e%"li(icat1 %ai
uor 9ntr=un s"aiu bi-i%ensional "rin inter%e-iul unui arbore cuaternar C.uadtreeE# Fn
Fi&# 2#1!CaE este "re6entat1 ocu"area unei re&iuni bi-i%ensionale -e trei obiecte, iar 9n
Fi&# 2#1' este re"re6entat arborele -e ocu"are a re&iunii#
4rborele se creea61 "ornin- cu o re&iune "1trat1 9n "lan, re"re6ent;n- 9ntre&a
6on1 care se %o-elea61 i care este re"re6entat1 "rin no-ul r1-1cin1 al arborelui
cuaternar# Fn ca6ul s"aiului tri-i%ensional, acest1 re&iune este un cub# Fiecare
re&iune, 9nce";n- cu re&iunea iniial1, se sub-i8i-e 9n "atru subre&iuni, re"re6entate
ca "atru no-uri (ii 9n arbore# Fn Fi&# 2#1!CbE se arat1 or-inea -e nu%erotare a no-urilor
(ii obinui "rin -i8i6area unei subre&iuni#
e
e
e t e t t e t e e t e t
e
e e
e
e e e c e e c c e c e e c c e e
e
e
e
e - e - e - e -
-
- e
-
e
Etic2ete:
t: triun&2i
-: -re"tun&2i
c: cerc
e: s"aiu 8i-
Ce%"tAE
Fig. 1./3 CaE +cu"area unei re&iuni "lane#
CbE +r-inea -e nu%erotare a no-urilor (ii#
! '
2 1
1
' ! 2
CaE
CbE

Fn s"aiul tri-i%ensional o re&iune este -i8i6at1 9n o"t subre&iuni, re"re6entate
"rin o"t no-uri (ii$ -e aici "ro8ine i nu%ele octree acestui %o- -e re"re6entare#
)ubre&iunile sunt -i8i6ate recursi8 ";n1 se 9nt;lnete una -in ur%1toarele
situaii:
)ubre&iunea este ocu"at1 9n 9ntre&i%e -e un sin&ur obiect sau nu este
ocu"at1 -e nici un obiect# ?nei ast(el -e re&iuni i se atribuie etic2eta cu
nu%ele obiectului res"ecti8, sau etic2eta -e s"aiu 8i- CeE#
)ubre&iunea are -i%ensiunea %ini%1 a-%isibil1 9n re"re6entarea
res"ecti81 Cun "i3elE# Fn acest ca6, subre&iunea "ri%ete etic2eta
obiectului Csau a s"aiului 8i-E care ocu"1 cea %ai %are "arte -in
subre&iunea res"ecti81#
Fn arborele -e re"re6entare a ocu"1rii s"aiului tri-i%ensional, -i%ensiunea
%ini%1 ";n1 la care se -i8i6ea61 subre&iunile este -i%ensiunea unui 8o3el# Fn
arborele -e re"re6entare sunt -ou1 ti"uri -e no-uri (run61: no-uri care au o etic2et1 a
unui obiect sau no-uri care au etic2eta s"aiului 8i-# Co%"actarea 8olu%ului -e -ate
9n aceast1 re"re6entare (a1 -e re"re6entarea "rin etic2etarea (iec1rui ele%ent C"i3el
sau 8o3elE, "ro8ine -in (a"tul c1 se "oate ca o 9ntrea&1 subre&iune C%ai %are -ec;t un
8o3elE "ri%ete o sin&ur1 etic2et1, -ac1 este nu este ocu"at1 -eloc sau este ocu"at1 -e
un sin&ur obiect# Fn Fi& 2#1! CaE, re&iunea 1 -in "ri%a sub-i8i6une nu %ai este
sub-i8i6at1 %ai -e"arte -eoarece este 9n 9ntre&i%e 8i-1 i "ri%ete etic2eta CeE#
+ 8ariant1 -e re"re6entare a ocu"1rii s"aiale "rin arbori octali (olosete ca
ele%ent s"aial un tetrae-ru re&ulat, care este sub-i8i6at 9n o"t tetrae-re, ";n1 la
re6oluia -orit1 sau ";n1 c;n- este ocu"at -e un sin&ur obiect -in s"aiu# 48antaBul
(olosirii arborilor octali ba6ai "e tetrae-re este c1 se "oate obine -irect o re"re6entare
ec2i8alent1 a su"ra(eei trian&ulari6ate -e a"ro3i%are a obiectului#
#e(area imagi$ii o3iec&elor mo(ela&e pri$ (i4i5are .paial- se (ace (ie "rin
con8ersie 9n re"re6entarea "rin su"ra(aa -e (rontier1, (ie -irect, "rin redare
volumetric, a-ic1 re-area tuturor ele%entelor -e 8olu% C8o3eliE#
Fig. 1./ 4rborele -e re"re6entare a ocu"1rii s"aiale#
!
Transfor"ri geo"etrice
Fn "rocesul -e re-are a obiectelor tri-i%ensionale se -e(inesc %ai %ulte
siste%e -e re(erin1, care "er%it -escrierea o"eraiilor -e trans(or%1ri succesi8e ale
obiectelor, "ornin- -e la %o-elul acestora, ";n1 la i%a&inea bi-i%ensional1 "e
su"ortul -e re"re6entare#
4ceste siste%e -e re(erin1 8or (i "reci6ate "e "arcursul e3"unerii$ ceea ce
interesea61 9n acest %o%ent este (a"tul c1 9n 8i6uali6area scenelor 8irtuale sunt
necesare Ci (olositeE %ai %ulte siste%e -e re(erin1 9n care sunt re"re6entate obiectele#
0o-i(icarea unui obiect 9ntr=un siste% -e re(erin1 -at, sau trecerea -e la un siste% -e
re(erin1 la altul se reali6ea61 "rin -i(erite trans(or%1ri &ra(ice# Dintre trans(or%1rile
&ra(ice (olosite, unele %o-i(ic1 (or%a i "o6iia obiectelor 9n s"aiu, (iin- nu%ite
trans(or%1ri &eo%etrice, altele sunt trans(or%1ri -e con8ersie 9ntre -i(erite %o-alit1i
-e re"re6entare a obiectelor Ctrans(or%area -e rastruE#
*ra$.form-ri geome&rice 0$ .pai)
+biectele scenei 8irtuale "ot (i %o-i(icate sau %ane8rate 9n s"aiul
tri-i%ensional, (olosin- -i(erite trans(or%1ri &eo%etrice# Dintre acestea, cele %ai
i%"ortante sunt translaia, care %o-i(ic1 locali6area obiectului, rotaia, care %o-i(ic1
orientarea, i scalarea, care %o-i(ic1 -i%ensiunea obiectului# 4ceste trans(or%1ri sunt
-enu%ite trans(or%1ri &eo%etrice "ri%iti8e#
3.1.1*ran!(orm#ri geometri"e primiti+e
*ra$.laia este trans(or%area "rin care toate "unctele se -e"lasea61 9n aceeai
-irecie i cu aceeai -istan1 9ntre "unct i trans(or%atul s1u# Translaia se "oate
-escrie "rintr=un 8ector -e translaie *, a8;n- co%"onentele z y x
! ! ! , ,
"e cele trei
a3e -e coor-onate$ un "unct
E , , C P z y x
se trans(or%1 9n "unctul
E Y , Y , Y C PY z y x
ast(el:
6
A
3
t 6 Y 6
t A Y A
t 3 Y 3
+
+
+
Fn notaie %atriceal1, trans(or%area "rin translaie cu 8ectorul -e translaie *,
a8;n- co%"onentele z y x
! ! ! , ,
"e cele trei a3e -e coor-onate a unui "unct
E , , C P z y x

9n "unctul
E Y , Y , Y C PY z y x
se e3"ri%1 "rintr=o 9nsu%are -e %atrice:
* = P > P? , un-e
1
1
1
]
1

6
A
3
t
t
t
*
$ -eci:
#
t
t
t
6
A
3
Y 6
Y A
Y 3
6
A
3
1
1
1
]
1

+
1
1
1
]
1

1
1
1
]
1


Scalarea %o-i(ic1 coor-onatele tuturor "unctelor unui obiect (olosin- (actorii
-e scal1 s
3
, s
A
, res"ecti8 s
6
"e cele trei a3e -e coor-onate# Fn aceast1 trans(or%are -e
scalare, nu%it1 scalare (a1 -e ori&ine, un "unct
E 6 , A , 3 C P
se trans(or%1 9n "unctul
E Y 6 , Y A , Y 3 C PY
, un-e:
6
A
3
s 6 Y 6
s A Y A
s 3 Y 3



Pentru scrierea sub (or%1 %atriceal1 a acestor relaii -e trans(or%are, se
-e(inete %atricea -e scalare S -e -i%ensiune !3! ast(el:
1
1
1
]
1

6
A
3
s
s
s
S
Re6ult1 relaia -e trans(or%are -e scalare 9n notaie %atriceal1:
, P S P?
a-ic1
1
1
1
]
1

1
1
1
]
1

1
1
1
]
1

6
A
3
s
s
s
Y 6
Y A
Y 3
6
A
3
#o&aia cu un un&2i 9n ra"ort cu o a31 D este o trans(or%are "rin care orice
"unct P care nu este situat "e -rea"ta - se trans(or%1 9ntr=un "unct PZ ast(el 9nc;t P i
PZ sunt situate 9ntr=un "lan "er"en-icular "e -rea"ta D, un&2iul PIPZeste e&al cu ,
iar %o-ulele [IP[ i [IPZ[ sunt e&ale C"unctul I este intersecia -intre -rea"ta D i "lanul
E# Prin aceast1 trans(or%are toate "unctele -re"tei - sunt (i3e i nu%ai ele sunt
"uncte in8ariante ale trans(or%1rii# Trans(or%area -e rotaie 9n ra"ort cu o a31
oarecare se -esco%"une o 9ntr=o succesiune -e %a3i%u% trei trans(or%1ri -e rotaie
9n ra"ort cu a3ele -e coor-onate ale siste%ului -e re(erin1#
Rotaia 9n ra"ort cu a3a 6 cu un un&2i trans(or%1 un "unct
E 6 , A , 3 C P
9n
"unctul
E Y 6 , Y A , Y 3 C PY
, a%bele a(late 9n "lanul "eroen-icular "e a3a 6# Pentru
-e-ucerea relaiilor -e trans(or%are se e3"ri%1 coor-onatele "unctelor P i PZ 9n acest
"lan 9n coor-onate "olare CFi&# !#1E#

u sin A
u cos 3




E u sinC Y A
E u cosC Y 3
+
+
)e -e68olt1 cosinusul i sinusul su%ei -e un&2iuri i se obin relaiile:
+ +

cos A sin 3 E u cos sin cos u Csin Y A
sin A cos 3 E sin u sin cos u Ccos Y 3
4ceast1 trans(or%are se "oate scrie sub (or%1 %atriceal1 -ac1 se -e(inete
%atricea -e rotaie #
@
CE -e -i%ensiune !3! ast(el:
1
1
1
]
1




1
cos sin
sin cos
E C
@
#
Re6ult1 relaiile -e trans(or%are -e rotaie a unui "unct 9n ra"ort cu a3a 6 cu
un un&2i scrise sub (or%1 %atriceal1:
P # P
@
?
Q ,
1
1
1
]
1

1
1
1
]
1

1
1
1
]
1

6
A
3
1
cos sin
sin cos
Y 6
Y A
Y 3
Pentru rotaiile ele%entare ale unui "unct 9n ra"ort cu a3ele 3 i A ale
siste%ului -e re(erin1 se ur%1rete un raiona%ent ase%1n1tor i se -e-uc relaiile -e
trans(or%are cores"un61toare#
Rotaiile 9n ra"ort cu a3ele -e coor-onate ale siste%ului -e re(erin1 sunt
-enu%ite tan&aB C"itc2E, &iraie CAaL, 2ea-in&E i, res"ecti8 ruliu CrollE# 4ceast1
asi&nare -e"in-e -e con8eniile -e -e(inire a siste%ului -e re(erin1 uni8ersal# Pentru
Fig. 3./ Trans(or%area -e rotaie 9n ra"ort cu a3a 6#
PZ
P
u
P

PZ
I

A
3
+
6
con8enia -e(init1 %ai sus, tan&aBul este o rotaie 9n ra"ort cu a3a 3, &iraia este o
rotaie 9n ra"ort cu a3a A, iar ruliul este o rotaie 9n ra"ort cu a3a 6 CFi&# !#2E#
4ceste -enu%iri au ori&inea 9n %o-ul 9n care sunt -e(inite %ic1rile unui
a8ion "o6iionat 9n s"aiu cu a3a lon&itu-inal1 orientat1 c1tre 6 "o6iti8: tan&aBul este
rotaia 9ntr=un "lan 8ertical, care 9nclin1 botul a8ionului$ &iraia este o %icare 9ntr=un
"lan ori6ontal, care sc2i%b1 -irecia a3ei a8ionului, iar ruliul este rotaia 9ntr=un "lan
8ertical, care 9nclin1 ari"ile a8ionului#
)e%nul rotaiilor 9n ra"ort cu a3ele -e coor-onate se ale&e, "rin con8enie,
-u"1 re&ula %;inii -re"te sau -u"1 re&ula %;inii st;n&i# Dac1 se cu"rin-e a3a
cores"un61toare cu "atru -e&ete ale %;inii C-re"te, res"ecti8, st;n&iE ast(el ca -e&etul
%are s1 (ie 9n-re"tat 9n sensul "o6iti8 al a3ei, -irecia celor "atru -e&ete in-ic1 sensul
"o6iti8 al rotaiei# Fn aceast1 lucrare se a-o"t1 re&ula %;inii -re"te "entru sensul -e
rotae 9n ra"ort cu a3ele -e coor-onate CFi&# !#2E#
)=au obinut relaiile "entru trans(or%1rile s"aiale ele%entare C"ri%iti8eE,
translaia, scalarea (a1 -e ori&inea siste%ului -e coor-onate i rotaia 9n ra"ort cu
a3ele siste%ului -e coor-onate# Tratarea 9ntr=un %o- unitar a acestor trans(or%1ri se
"oate (ace "rin creterea -i%ensionalit1ii siste%ului -e coor-onate Carte6ian,
-e(inin-u=se un siste% -e coor-oonate cu ' -i%ensinui, nu%it siste% -e coor-onate
o%o&ene#
3.1.2,i!temul de "oordonate omogene
)e obser81 c1 trans(or%1rile -e scalare i -e rotaie se re"re6int1 "rin 9n%uliri
-e %atrice, iar translaia se re"re6int1 "rin 9nsu%are -e %atrice# Re"re6entarea unitar1
i co%binarea trans(or%1rilor &eo%etrice s"aiale se "oate (ace 9ntr=un siste% -e
coor-onate cu "atru -i%ensiuni, nu%it siste% -e coor-onate o%o&ene# Fn siste%ul -e
coor-onate o%o&ene, un "unct
E 6 , A , 3 C P
se re"re6int1 ca
E L , < , \ , N C P
"entru orice
(actor -e scar1 L #
Fn &eneral, un "unct
E 6 , A , 3 C P
9n siste%ul -e coor-onate Carte6ian se
trans(or%1 9n siste%ul -e coor-onate o%o&ene "rin ale&erea 1 = w , -eci are
coor-onatele o%o&ene
E 1 , 6 , A , 3 C P
# Pentru trans(or%area in8ers1, se calculea61
coor-onatele carte6iene ale unui "unct
E L , < , \ , N C P
re"re6entat 9n siste%ul -e
coor-onate o%e&ene "rintr=o 9%"1rire cu (actorul -e scar1 L ast(el:
3
6
A
,iraie
Tan&aB
Ruliu
Fig. 3.1 Rotaiile 9n ra"ort cu a3ele siste%ului -e re(erin1#
L W < 6
L W \ A
L W N 3

C!#1E
Fn coor-onate o%o&ene, -ou1 "uncte E L , < , \ , N C P
1 1 1 1 1
i
E L , \ , \ , N C P
2 2 2 2 2
sunt e&ale -ac1 :
2 2 1 1 2 2 1 1 2 2 1 1
L W < L W < si L W \ L W \ , L W N L W N
Fn siste%ul -e coor-onate o%o&ene, toate %atricele -e trans(or%1ri sunt -e
-i%ensiune '3' i toate o"eraiile -e trans(or%1ri &eo%etrice se "ot e3"ri%a "rin
"ro-use -e %atrice#
2a&ricea (e &ra$.laie 9n coor-onate o%o&ene se -e(inete ast(el:
1
1
1
1
]
1

1
t 1
t 1
t 1
E t , t , t C
6
A
3
6 A 3
*
C!#2E
Trans(or%area -e translaie a unui "unct
E L , < , \ , N C P
re"re6entat 9n
coor-onate o%o&ene, 9n "unctul
E Y L , Y < , Y \ , Y N C PY
se e3"ri%1 ca un "ro-us -e
%atrice:
P * P?
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

L
<
\
N
1
t 1
t 1
t 1
Y L
Y <
Y \
Y N
6
A
3
, re6ult1:

'

+
+
+
L Y L
Lt < Y <
Lt \ Y \
Lt N Y N
6
A
3
C!#!E
Teoretic, "entru a se obine coor-onatele carte6ine ale "unctului trans(or%at
PZ, trebuie s1 se e3ecute o"eraia -e 9%"1rire cu (actorul -e scar1 LZ "entru (iecare
coor-onat1:
Y L W Y < Y 6
Y L W Y \ Y A
Y L W Y N Y 3

Dar, -ac1 se ale&e L Q1, re6ult1 LZQ1 i 9%"1rirea nu %ai este necesar1# Fn
&eneral, trans(or%1rile &eo%etrice "ri%iti8e conser81 8aloarea (actorului -e scar1 i,
-ac1 se ale&e L Q1, 9%"1rirea cu LZ Cnu%it1 9%"1rirea o%o&en1E nu este necesar1 #
2a&ricea (e .calare (a1 -e ori&ine re"re6entat1 9n siste%ul -e coor-onate
o%o&ene are e3"resia:
1
1
1
1
]
1

1
s
s
s
E s , s , s C
6
A
3
6 A 3
S
C!#'E
Trans(or%area -e scalare a unui "unct re"re6entat 9n coor-onate o%o&ene
E L , < , \ , N C P
, 9n "unctul
E Y L , Y < , Y \ , Y N C PY
este -at1 -e relaiile:
SP P?

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

L
<
\
N
1
s
s
s
Y L
Y <
Y \
Y N
6
A
3
, re6ult1:

'

L Y L
< s Y <
\ s Y \
N s Y N
6
A
3
C!#/E
Dac1 (actorii -e scalare sunt e&ali C 6 A 3
s s s
E, scalarea se nu%ete
uni(or%1, i "1stre61 (or%a obiectului# Dac1 (actorii -e scalare -i(er1, obiectul este
-e(or%at, iar scalarea se nu%ete neuni(or%1#
*ra$.form-rile (e ro&aie 9n ra"ort cu a3ele siste%ului -e re(erin1
e3"ri%ate 9n coor-onate o%o&ene sunt ur%1toarele:
Rotaia 9n ra"ort cu a3a 3 Ctan&aBE cu un un&2i :
1
1
1
1
]
1




1
cos sin
sin cos
1
E C
A
#
C!#.E
Fn aceast1 trans(or%are, a3a 3 r1%;ne ne%o-i(icat1, iar toate celelalte "uncte
-in s"aiu se trans(or%1 "rin 9n%ulire ca %atricea #
A
CE:
P # P?
A

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

L
<
\
N
1
cos sin
sin cos
1
Y L
Y <
Y \
Y N
, re6ult1

'

L Y L
cos < sin \ Y <
sin < cos \ Y \
N Y N
C!#7E
Rotaia 9n ra"ort cu a3a A C&iraieE cu un un&2i :
1
1
1
1
]
1




1
cos sin
1
sin cos
E C
B
#
C!#5E
Fn aceast1 trans(or%are, a3a A r1%;ne ne%o-i(icat1, iar toate celelalte "uncte
-in s"aiu se trans(or%1 "rin 9n%ulire ca %atricea #
B
CE:
P # P?
B

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

L
<
\
N
1
cos sin
1
sin cos
Y L
Y <
Y \
Y N
, re6ult1:

'

+
L Y L
cos < sin N Y <
\ Y \
sin < cos N Y N
C!#9E
Rotaia 9n ra"ort cu a3a 6 CruliuE, cu un un&2i :
1
1
1
1
]
1




1
1
cos sin
sin cos
E C
@
#
C!#1E
Fn aceast1 trans(or%are, a3a 6 r1%;ne ne%o-i(icat1, iar toate celelalte "uncte
-in s"aiu se trans(or%1 "rin 9n%ulire ca %atricea #
@
CE:
P # P?
@

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

"
#
$
%
1 0 0 0
0 1 0 0
0 0
0 0
"
#
$
%
cos sin
sin cos
Y
Y
Y
Y
, re6ult1:

'

+

L Y L
< Y <
cos \ sin N Y \
sin \ = cos N Y N
C!#11E
Toate %atricele -e trans(or%are -e rotaie sunt %atrice orto&onale i
ortonor%ate# Trans(or%1rile &eo%etrice ele%entare sunt trans(or%1ri liniare, "rin care
liniile -re"te i su"ra(eele "lane sunt trans(or%ate 9n linii -rea"te, res"ecti8 su"ra(ee
"lane# Din aceast1 cau61, "entru trans(or%area unui obiect tri-i%ensional, este
su(icient s1 se trans(or%e toate 8;r(urile acestuia i s1 se "1stre6e relaiile to"olo&ice
9ntre 8;r(urile trans(or%ate, aceleai cu cele 9ntre 8;r(urile iniiale#
Trans(or%1rile %ai co%"le3e ale obiectelor 9n s"aiu se "ot -e(ini "rin
co%"unerea %ai %ultor trans(or%1ri "ri%iti8e#
3.1.3Compunerea tran!(orm#rilor geometri"e
Co%"unerea %ai %ultor tran(or%1ri ele%entare "entru obinerea unei
trans(or%1ri co%"le3e se obine "rin e3ecutarea succesi81 a "ro-usului (iec1riei
%atrice -e trans(or%are cu %atricea -e re"re6entare a "unctului iniial sau re6ultat
-intr=o trans(or%are "rece-ent1# De e3e%"lu, 9n Fi&# !#! este "re6entat1 o
trans(or%are co%"us1 a unui obiect#
+biectul iniial este un cub cu latura -e -ou1 unit1i, a%"lasat cu centrul s1u
9n centrul siste%ului -e re(erin1 i laturile orientate 9n -ireciile a3elor -e coor-onate#
Du"1 o scalare cu (actorii -e scar1 2, 2, 2, o rotaie cu un un&2i -e ! &ra-e 9n ra"ort
cu a3a 6 i o translaie cu un 8ector -e translaie cu co%"onente 5,,, se obine un
nou obiect cub, -e(init 9n acelai siste% -e re(erin1, -ar cu alte -i%ensiuni i
locali6are# Re"re6entarea -in Fi&# !#! conine i o trans(or%are -e "roiecie
"ers"ecti81, "entru "erce"ia a-;nci%ii Ca -istanei (a1 -e obser8ator a obiectelorE,
care 8a (i e3"licat1 ulterior# ?na -in (eele cubului Ccea %ai a"ro"iat1 -e obser8atorE
este -esenat1 ca su"ra(a1 -e culoare &ri$ celelalte (ee ale cubului sunt re"re6entate
nu%ai "rin %uc2iile lor Cre"re6entare nu%it1 Gca-ru -e s;r%1H, wireframeE#
Trans(or%area e(ectuat1 asu"ra cubului -in (i&ura -e %ai sus se obine "rin
a"licarea succesi81 a trei trans(or%1ri &eo%etrice ele%entare Cscalare, rotaie i
translaieE asu"ra (iec1rui "unct C8;r(E al cubului# Pentru un 8;r( al cubului, re"re6entat
"rin %atricea coloan1 P, succesiunea -e trans(or%1ri este:
)calarea: P S P
/

Rotaia 9n ra"ort cu a3a 6: P
1
> #
@
P
/
Q #
@
CS PE
Translaia:
1
P * P? Q *C#
@
CS PEE Q C*#
@
SC P
Fig. 3.3 Trans(or%are co%"us1 a unui obiect:
scalare, rotaie (a1 -e a3a 6, translaie#
PZ
P
Nu este necesar s1 (ie e3ecutate "e r;n- o"eraiile -e 9n%ulire cu %atricele -e
trans(or%are S, #
@
, i *, ci se "oate calcula o %atrice co%"us1 a trans(or%1rii 2,
care se a"lic1 a"oi (iec1rui "unct P al obiectului:
P 2 P S # * P?
@
, un-e S # * > 2
@
+ trans(or%are co%"us1 se "oate -eci -e(ini "rintr=o %atrice -e trans(or%are
2 care este un "ro-us Cco%"unereE -e %atrice -e trans(or%1ri &eo%etrice ele%entare#
Fn e3e%"lul -at, se calculea61 %atricea -e trans(or%are 2 ast(el:
1
1
1
1
]
1

1
1
1
1
]
1


1
1
1
1
]
1


1 0 0 0
0 2 0 0
0 0 2 0
0 0 0 2
1 0 0 0
0 1 0 0
0 0 866 . 0 5 . 0
0 0 5 . 0 866 . 0
1 0 0 0
0 1 0 0
0 0 1 0
8 0 0 1
, R * M
z
1
1
1
1
]
1

1
2
7!2 , 1 1
5 1 = 7!2 # 1
2
?nul -in 8;r(urile cubului, 8;r(ul PC1,1,1,1E se trans(or%1 9n PZC5#7!2,
!#7!2,1,1 E:
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1



1
2
7!2 # !
7!2 # 5
1
1
1
1
1
2
7!2 # 1 1
5 1 7!2 # 1
P 2 P?
+r-inea -e co%"unere a %atricelor -e trans(or%are este -e(initorie "entru
re6ultatul trans(or%1rii, -at (iin- c1 "ro-usul %atricelor nu este co%utati8#
)e "oate 8eri(ica "e e3e%"lul -at, "rin in8ersarea or-inii trans(or%1rii -e
rotaie cu translaia CFi&# !#'E#
Fig. 3. Trans(or%are co%"us1 a unui obiect:
scalare, translaie, rotaie (a1 -e a3a 6#
PZZ
P
)e obine o %atrice -e trans(or%are 2DD-i(erit1 -e 2 i "unctul trans(or%at
cores"un61tor PZZ, -i(erit -e PZ:
1
1
1
1
]
1



1
2
!! # ' 7!2 # 1 1
925 # . 1 7!2 # 1
S * # ? 2?
5
,
1
1
1
1
]
1


1
2
06 . 7
560 . 7
P - M- - P-
Con8enia -e re"re6entare a "unctelor 9n s"aiu "rin %atrice coloan1 i%"une
or-inea -e 9n%ulire nu%it1 "ost%ulti"licare Csau %ulti"licare la -rea"taE a %atricelor
-e trans(or%are: se 9n%ulete %atricea -e trans(or%are curent1 cu %atricea
trans(or%1rii ur%1toare# Con8enia -e ter%inolo&ie C"ost%ulti"licare sau %ulti"licare
la -rea"taE se%ni(ic1 (a"tul c1 o nou1 trans(or%are se concatenea61 ca (actor -rea"ta
al "ro-usului -e %atrice# Este i%"ortant -e reinut (a"tul c1 or-inea -e a"licare a
trans(or%1rilor este -e la -rea"ta la st;n&a -in succesiunea -e %atrice ale unei
co%"uneri# 0ai "recis, -ac1 un "unct se trans(or%1 "rin a"licarea succesi81 a
trans(or%1rilor -e(inite "rin %atricele 2
/
, 2
1
,E., 2
$
, %atricea co%"us1 -e
trans(or%are este:
/ 1 $
2 2 2 2 C!#12E
)e "oate 8eri(ica c1, -ac1 se a-o"t1 con8enia -e re"re6entare a unui "unct 9n
s"aiul tri-i%ensional "rintr=o %atrice linie, atunci trans(or%area unui "unct se obine
"rin 9n%ulirea 8ectorului -e "o6iie al "unctului cu %atricea -e trans(or%are
C"re%ulti"licare sau %ulti"licare la st;n&aE# Fn aceast1 situaie, or-inea 9n care se
a"lic1 %atricele co%"unente ale unei trans(or%1ri co%"use este -e la st;n&a la
-rea"ta:
$ 1 /
S S S S PS P? un-e , C!#1!E
Punctul P este trans(or%at 9n or-inea S
/
, S
1
,E.S
$
# 4cesta este un %o- %ai
natural -e a ur%1ri sec8enele -e trans(or%1ri &eo%etrice i -e aceea, 9n unele lucr1ri
este a-o"tat1 aceast1 con8enie# Nu e3ist1 alte -i(erene 9ntre cele -ou1 con8enii Cnici
-e si%"li(icare a calculelor, nici -e e(icien1E#
)e "oate -e%onstra cu uurin1 c1 orice %atrice -e trans(or%are ele%entar1 9n
con8enia -e re"re6entare "rin %atrice linie a unui "unct 9n s"aiul tri-i%ensional este
trans"usa %atricei cores"un61toare -e trans(or%are -e(init1 9n con8enia -e
re"re6entare "rin %atrice coloan1 a "unctului# De e3e%"lu, translaia unui "unct
PC3,6,AE cu 8alorile t
3
, t
A
, t
6
se e3"ri%1 ast(el:
[ ] [ ]
1
1
1
1
1
]
1

1 t t t
0 1 0 0
0 0 1 0
0 0 0 1
w Z Y X ' w ' Z ' Y ' X
z y x
Fn aceast1 lucrare se (olosete con8enia -e re"re6entare "rin %atrice coloan1
a "unctelor -in s"aiu, -at (iin- c1 aceasta este con8enia -in biblioteca &ra(ic1
+"en,>, care este (olosit1 "entru e3e%"li(icarea o"eraiilor &ra(ice "re6entate#
?n alt e3e%"lu -e trans(or%are co%"us1 este trans(or%area -e rotaie
co%"let1 s"eci(icat1 "rin trei rotaii (a1 -e a3ele siste%ului -e coor-onate# Cea %ai
obinuit1 con8enie "entru or-inea -e s"eci(icare a rotaiilor este: ruliu cu un&2iul
C-u"1 a3a 6E, tan&aB cu un&2iul C-u"1 a3a 3E i &iraie cu un&2iul C(a1 -e a3a AE# Fn
aceast1 situaie %atricea -e rotaie total1 # are e3"resia:
1
1
1
1
]
1


1 0 0 0
0 r r r
0 r r r
0 r r r
) ( ) ( ) (
33 32 31
23 22 21
13 12 11
. / 0
R R R 1 R
C!#1'E
0atricea # re6ultat1 "rin co%"unerea C9n%ulireaE %ai %ultor %atrice -e
rotaie este -e ase%enea orto&onal1 i ortonor%at1#
+ trans(or%are co%"le31 a unui obiect "rin co%binarea %ai %ultor
trans(or%1ri ele%entare Cscal1ri, rotaii, translaiiE se "oate e3"ri%a "rintr=o %atrice -e
trans(or%are 2 care are (or%a &eneral1:
1
1
1
1
]
1

1
t Y r Y r Y r
t Y r Y r Y r
t Y r Y r Y r
6 !! !2 !1
A 2! 22 21
3 1! 12 11
2
C!#1/E
)ub%atricea st;n&a=sus #D -e -i%ensiune !3! e3"ri%1 trans(or%area -e
rotaie i scalare total1, iar sub%atricea coloan1 -rea"ta * e3"ri%1 trans(or%area -e
translaie total1# 0atricea #D este o %atrice orto&onal1, -ar "oate s1 nu (ie i
ortonor%at1#
Dou1 "ro"riet1i i%"ortante ale trans(or%1rilor &eo%etrice co%"use trebuie s1
(ie re%arcate i reinute#
Pri%a "ro"rietate este c1 o trans(or%are &eo%etric1 co%"us1 re"re6entat1
"rintr=o %atrice -e (or%a !#1/ conser81 8aloarea coor-onatei L a unui "unct Cacest
lucru este e8i-entE# 4ceast1 "ro"rietate este (olosit1 9n i%"le%entarea o"eraiilor
&ra(ice, "rin a%;narea 9%"1ririi o%o&ene Ccu LE -u"1 ce s=au selectat nu%ai
obiectele 8i6ibile C-u"1 o"eraia -e -ecu"areE#
4 -oua "ro"rietate este "ro"rietatea -e liniaritate a trans(or%1rilor &eo%etrice
co%"use, "rin care liniile -re"te i su"ra(eele "lane sunt trans(or%ate 9n linii -rea"te,
res"ecti8 su"ra(ee "lane# De aceea, la (el ca i 9n ca6ul trans(or%1rilor &eo%etrice
ele%entare, "entru trans(or%area unui obiect tri-i%ensional, este su(icient s1 se
trans(or%e toate 8;r(urile acestuia i s1 se "1stre6e relaiile to"olo&ice 9ntre 8;r(urile
trans(or%ate#
3.1.*ran!(orm#ri in+er!e
Fiin- -at1 o trans(or%are a unui "unct P 9ntr=un "unct PZ -e(init1 "rintr=o
%atrice -e trans(or%are 2, trans(or%area in8ers1, -e la "unctul PZ la "unctul P se
obine "rin 9n%ulirea cu %atricea in8ers1, 2
-/
:
1
1
1
1
]
1

1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
I I, 22
/
, C!#1.E
un-e I este %atricea i-entitate#
Dat (iin- c1, 9n &eneral, %atricea -e trans(or%are 2 se obine "rintr=un "ro-us
-e %atrice -e trans(or%1ri ele%entare, %atricea in8ers1 2
F/
se calculea61 "rin
"ro-usul 9n or-ine in8ers1 a in8erselor %atricelor ele%entare co%"onente:
I 2 2 2 2 2 2 > 22
2 2 2 > 2
2 2 2 > 2
/
$
/
1
/
/ / 1 $
/
/ -
$
/ -
1
/ -
/
/ -
/ 1 $

= = =

C!#17E
Relaia !#17 se -e%onstrea61 i%e-iat, "rin &ru"area (actorilor 9nce"9n- cu
I 2 2
-/
/ /
Q #
Toate %atricele -e trans(or%1ri ele%entare sunt %atrice in8ersabile i au
ur%1toarele e3"resii:
1
1
1
1
]
1

1
t 1
t 1
t 1
E t , t , t C ES t , t , t C R
6
A
3
6 A 3
1
6 A 3
* *
C!#15E
1
1
1
1
]
1

1
s W 1
s W 1
s W 1
E s W 1 , s W 1 , s W 1 C ES s , s , s C R
6
A
3
6 A 3
1
6 A 3
S S
C!#19E
1
1
1
1
]
1





1
cos sin
sin cos
1
E C ES C R
1
9 9
# #
C!#2E
1
1
1
1
]
1





1
cos sin
1
sin cos
E C ES C R
1
G G
# #
C!#21E
1
1
1
1
]
1





1
1
cos sin
sin cos
E C ES C R
1
6 5
# #
C!#22E
E C E C E C ES C E C E C R
1 1


G 9 5 5 9 G
# # # # # # > # C!#2!E
Datorit1 (a"tului c1 %atricea -e rotaie este orto&onal1 i ortonor%at1, in8ersa
unei %atrice -e rotaieeste e&al1 cu trans"usa acesteia#
3.1.$*ran!(ormarea !i!temelor de re(erin&#
Inter"retarea relaiilor -e trans(or%1ri &eo%etrice "re6entate ";n1 acu% a (ost
aceea -e %ane8rare i %o-i(icare a obiectelor 9ntr=un siste% -e re(erin1 -at: obiectele
sunt re"re6entate 9ntr=un anu%it siste% -e re(erin1 "rin coor-onatele unei %uli%i -e
"uncte ale acestora C8;r(uriE i ele "ot (i -e"lasate, reorientate sau re-i%ensionate "rin
a"licarea trans(or%1rilor &eo%etrice cores"un61toare#
+ alt1 inter"retare care se "oate -a o"eraiilor -e trans(or%1ri &eo%etrice este
aceea -e sc2i%bare a siste%ului -e re(erin1#
)e consi-er1 siste%ul -e re(erin1 +3A6 i un nou siste% -e re(erin1 +Z3ZAZ6Z,
a c1rui ori&ine +Z este -eter%inat1 9n siste%ul +3A6 "rin coor-onatele 3

,A

,6

ale
centrului +Z# )iste%ul -e re(erin1 +3A6 este -e(init -e 8ersorii C8ectori unitateE i, :, ;,
iar siste%ul -e re(erin1 +Z3ZAZ6Z -e 8ersorii iD, :D, ;D#
43a +Z3Z are cosinuii -irectori c
11
, c
12
, c
1!
(a1 -e siste%ul -e re(erin1 +3A6$
a3a +ZAZ are cosinuii -irectori c
21
, c
22
, c
2!
(a1 -e siste%ul -e re(erin1 +3A6$ a3a +Z6Z
are cosinuii -irectori c
!1
, c
!2
, c
!!
(a1 -e siste%ul -e re(erin1 +3A6#
0atricea -e trans(or%are care -escrie "o6iionarea siste%ului +Z3ZAZ6Z relati8
la siste%ul -e re(erin1 +3A6 este:
1
1
1
1
]
1

1 0 0 0
z c c c
y c r c
x c c c
0 33 23 13
0 32 22 12
0 31 21 11
M
C!#2'E
Fie un "unct P -e(init "rin coor-onatele sale 3,A,6 9n siste%ul -e re(erin1
+3A6# )e -e%onstre61 RDra&/7S, R)ab51S, c1 9n siste%ul -e re(erin1 +Z3ZAZ6Z acest
"unct Cnotat PZE are coor-onatele 3Z,AZ,6Z, care se obin 9n%ulirea %atricei
-/
2 Ccare
este in8ersa %atricei 2 care -e(inete "o6iionarea siste%ului +Z3ZAZ6Z 9n siste%ul
+3A6E cu %atricea P -e re"re6entare a "unctului P 9n siste%ul -e coor-onate iniial:
P 2 > P?
-/
C!#2/E
Trans(or%area in8ers1, a unui "unct PZC3Z,AZ,6ZE -in siste%ul -e re(erin1
+Z3ZAZ6Z 9n "unctul PC3,A,6E 9n siste%ul -e re(erin1 +3A6 se obine "rin 9n%ulire cu
%atricea -e trans(or%are 2:
2P? > P C!#2.E
)e "oate ur%1ri cu %ai %ult1 uurin1 aceast1 %o-alitate -e trans(or%are 9ntr=
un ca6 si%"lu# )e consi-er1 un siste% -e re(erin1 +3A6 i un alt siste% -e re(erin1
+Z3ZAZ6Z care are ori&inea +ZC3

,A

,6

E i aceeai orientare a a3elor -e coor-onate ca i


siste%ul +3A6#
Po6iionarea siste%ului -e re(erin1 +Z3ZAZ6Z relati8 la siste%ul +3A6 este
-e(init1 -e %atricea -e trans(or%are 2$ "o6iionarea siste%ului -e re(erin1 +3A6
relati8 la siste%ul +Z3ZAZ6Z este -e(init1 -e %atricea -e trans(or%are in8ers1
-/
2 :
1
1
1
1
]
1

1 0 0 0
z 1 0 0
y 0 1 0
x 0 0 1
0
0
0
M
,
1
1
1
1
]
1

1 0 0 0
z 1 0 0
y 0 1 0
x 0 0 1
0
0
0
21
M
)ub%atricea -e rotaie co%"onent1 a %atricei 2 este %atricea unitate, -at
(iin- c1 siste%ul -e re(erin1 +Z3ZAZ6Z are a3ele cu aceeai orientare ca i siste%ul -e
re(erin1# Fntr=a-e81r, cosinuii -irectori ai a3elor +Z3Z,+ZAZ,+Z6Z (a1 -e a3ele
siste%ului -e re(erin1 +3A6 sunt C1,,E, C,1,E, C,,1E i %atricea -e rotaie este
%atricea unitate#
?n "unct oarecare PC3,A,6E 9n siste%ul -e re(erin1 +3A6, se trans(or%1 9n
"unctul PZC3Z,AZ,6ZE 9n siste%ul -e re(erin1 +Z3ZAZ6Z "rintr=o translaie cu D3

,DA

,D6

,
-eci :
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1


1
z
y
x
1 0 0 0
z 1 0 0
y 0 1 0
x 0 0 1
1
' z
' y
' x
;
0
0
0
P M P-
1
Particulari6area "entru +ZC',2,E i PC.,!,E este re"re6entat1 9n Fi&# !#/#
Punctul PZC2,1,E este trans(or%atul "unctului P 9n siste%ul -e re(erin1 +Y3YAY6Y#
3
A
6
+
3Y
AY
6Y
+Y
PC.,!,E
PYC2,1,E
Fn conclu6ie, a"licarea unei trans(or%1ri -e(init1 "rintr=o %atrice 2, asu"ra
unei %uli%i -e "uncte -e(inite 9ntr=un siste% -e re(erin1 +3A6, "oate (i inter"retat1
9n %ai %ulte %o-uri:
CaE Fiecare "unct este %o-i(icat i ca"1t1 o nou1 "o6iionare 9n siste%ul -e
re(erin1 +3A6, con(or% cu %atricea -e trans(or%are 2#
CbE Fiecare "unct este trans(or%at -in siste%ul -e re(erin1 iniial +3A6 9ntr=
un nou siste% -e re(erin1, +Z3ZAZ6Z, a c1rui "o6iie i orientare relati8 la
siste%ul -e re(erin1 +3A6 este -escris1 -e %atricea 2
-/
#
CcE Fiecare "unct este trans(or%at -in siste%ul -e re(erin1 iniial +3A6 9ntr=
un nou siste% -e re(erin1, +Z3ZAZ6Z# Po6iia i orientarea siste%ului +3A6
relati8 la siste%ul -e re(erin1 +Z3ZAZ6Z este -escris1 -e %atricea 2#
*i 9nc1 o "reci6are: un siste% -e re(erin1 nu este G%ateriali6atH 9n nici un (el
9ntr=un siste% &ra(ic C9n so(tLare sau 2ar-LareE, ci este o con8enie cunoscut1 -e
"ro&ra%ator sau utili6ator# Trecerea -e la un siste% -e re(erin1 la altul se e(ectuea61
"rin trans(or%1ri a"licate "unctelor CobiectelorE: %o-i(icarea coor-onatelor acestora le
trans(er1 -intr=un siste% -e re(erin1 9n altul# Fn acest sens, orice trans(or%are
&eo%etric1 "oate (i consi-erat1 ca o sc2i%bare a siste%ului -e re(erin1# Dar, -u"1
cu% se 8a obser8a 9n continuare, trans(or%1rile &eo%etrice sunt uneori consi-erate ca
%o-i(ic1ri ale obiectelor, iar 9n alte situaii, ca sc2i%bare a siste%ului -e re(erin1#
Este nor%al ca un 9nce"1tor 9n "ractica "ro&ra%1rii siste%elor &ra(ice s1 "un1 o
Busti(icat1 9ntrebare: cu% se "oate ti care este inter"retarea corect1 a unei
trans(or%1ri] R1s"unsul este c1 a%bele inter"ret1ri sunt corecte, -ar se ale&e aceea
care "er%ite ur%1rirea cea %ai -irect1 a unui raiona%ent "entru calculul unor
trans(or%1ri co%"le3e# Nu e3ist1 GreeteH unice i si&ure care s1 "oat1 (i a"licate (1r1
&reeal1 9n orice situaie, -eci e3"eriena -e "roiectare 9i s"une 9ntot-eauna cu8;ntul#
Fn -e68oltarea siste%elor -e 8i6uali6are se (olosesc, totui, c;te8a siste%e -e
re(erin1 bine -e(inite, care "er%it s"eci(icarea cea %ai si%"l1 i e(icient1 a o"eraiilor
-e re-are a obiectelor CscenelorE# ?nul -intre acestea, siste%ul -e re(erin1 uni8ersal, a
(ost -eBa intro-us# 4lte siste%e -e re(erin1 (olosite 9n &ra(ica tri-i%ensional1 8or (i
-e(inite "e "arcursul lucr1rii#
)iste%ele -e re(erin1 inter%e-iare, care a"ar 9n -escrierea unor trans(or%1ri
co%"le3e, sunt inter"ret1ri ale o"eraiilor -e trans(or%1ri &eo%etrice care "er%it
ur%1rirea unui raiona%ent -e calcul# E3e%"lul ur%1tor e8i-enia61 acest as"ect#
E9empl)l 3.1
)e consi-er1 siste%ul -e coor-onate +3A6 i o %atrice -e trans(or%are #
A
C
W2E care reali6ea61 o rotaie cu un&2iul W2 9n ra"ort cu a3a 3:
Fig.3.! Trans(or%area siste%elor -e re(erin1#
1
1
1
1
]
1


1
1
1
1
E 2 W C
A
#
4ceast1 trans(or%are "oate (i inter"retat1 ca o trans(or%are "rin rotaie cu 9
9n ra"ort cu a3a 3 a (iec1rui "unct PC3,A,6E, 9n "unctul trans(or%at PZC3Z,AZ,6ZE# Fn
Fi&#!#. CaE este consi-erat "unctul PC,1,1E, care se trans(or%1 9n "unctul PZC,=1,1E#
Fn Fi&# !#.CbE este re"re6entat1 trans(or%area ec2i8alent1 a siste%ului -e
coor-onate +3A6 9n siste%ul -e coor-onate +Z3ZAZ6Z (olosin- %atricea -e
trans(or%are in8ers1 cores"un61toare, #
A
C=W2E: a3a A se trans(or%1 9n a3a 6Z, iar a3a
6 se trans(or%1 9n a3a DAZ# Punctul P, -e coor-onate ,1,1 9n siste%ul +3A6, se
trans(or%1 9n "unctul PZ -e coor-onate ,=1,1 9n siste%ul +Z3ZAZ6Z#
)e "ot 8eri(ica uor rotaiile cu un un&2i -e W2 9n ra"ort cu celelalte a3e -e
coor-onate# Rotaia cu W2 (a1 -e a3a A trans(or%1 siste%ul -e coor-onate 9ntr=un
siste% 9n care a3a 6 se sc2i%b1 9n a3a 3, iar a3a 3 se sc2i%b1 9n a3a D6# Rotaia cu W2
(a1 -e a3a 6 trans(or%1 siste%ul -e coor-onate 9ntr=un siste% 9n care a3a 3 se
sc2i%b1 9n a3a A, iar a3a A se trans(or%1 9n a3a D3#
Pentru -e-ucerea %atricelor unor trans(or%1ri co%"le3e se "roce-ea61 "rin
re-ucerea acestora la ca6uri %ai si%"le, "entru care se cunosc e3"resiile -e calcul,
(olosin- trans(or%1ri "ri%iti8e succesi8e# Iniial se a"lic1 o trans(or%are aBut1toare
"entru a-ucerea obiectelor 9ntr=o "o6iie sau siste% -e re(erin1 a-ec8at, se e3ecut1
trans(or%area -orit1, -u"1 care se re8ine la "o6iia sau siste%ul -e re(erin1 iniial "rin
trans(or%area in8ers1 celei a"licate iniial#
C;te8a e3e%"le "re6entate 9n continuare 8or "reci6a acest %o- -e reali6are a
trans(or%1rilor &eo%etrice co%"use#
Fig. 3.7 Rotaie cu W2 9n ra"ort cu a3a 3#
CaE Rotaia "unctelor cu W2# CbE Rotaia siste%ului -e coor-onate cu =W2#
A
3
+
6
PC,1,1E
3Z +Z
AZ
PZC,=1,1E
6Z
CbE
3
+
6
A
CaE
PC,1,1E
PZC,=1,1E
3.1.$.1 Rota&ia (a&# de o a3# paralel# "u una din a3ele
!i!temului de re(erin&#
?n e3e%"lu ilustrati8 -e co%"unere a trans(or%1rilor &eo%etrice este
calculul rotaiei 9n ra"ort cu o a31 "aralel1 cu una -in a3ele siste%ului -e re(erin1#
)e consi-er1 o -rea"t1 d "aralel1 cu a3a 6 a siste%ului, care intersectea61
"lanul +3A 9n "unctul ICt
3
,t
A
,E# Trans(or%area -e rotaie a obiectelor (a1 -e aceast1
a31 nu "oate (i reali6at1 (olosin- %atricea -e-us1 9n "ara&ra(ul "rece-ent Crelaia
!#1E, care "resu"une rotaia (a1 -e o a31 a siste%ului -e coor-onate#
De aceea, se a"lic1 %ai 9nt;i tuturor "unctelor o trans(or%are aBut1toare,
translaia cu *CD t
3
,D t
A
,E#4cest1 trans(or%are "oate (i intre"retat1 9n -ou1 %o-uri: ca
o sc2i%bare a siste%ului -e re(erin1 +3A6 9n siste%ul +Z3ZAZ6Z , 9n care "unctul I este
trans(or%at 9n "unctul IZC,,E, sau ca o %o-i(icare a "o6iiei tuturor "unctelor -in
s"aiu, "rin care "unctul I este a-us 9n ori&inea siste%ului -e re(erin1 +3A6#
Dac1 se consi-er1 "ri%a inter"retare, o"eraiile se continu1 9n noul siste% -e
re(erin1 +Z3ZAZ6Z, 9n care -rea"ta d se su"ra"une "este a3a 6Z, -eci se "oate obine
rotaia -orit1 cu un un&2i (olosin- %atricea -e rotaie !#1# Du"1 aceasta, se re8ine
la siste%ul -e re(erin1 iniial +3A6, "rintr=o trans(or%are in8ers1, *Ct
3
, t
A
, E#
Re6ult1 %atricea co%"us1 -e rotaie cu un&2iul (a1 -e o -rea"t1 "aralel1 cu
a3a 6 care interectea61 "lanul +3A 9n "unctul ICt
3
, t
A
,E:
E , t , t C E C E , t , t C
A 3 A 3
* # * #
@ (
1
1
1
1
]
1

1
1
1
1
]
1



1
1
1
1
]
1

1
1
t 1
t 1
1
1
cos sin
sin cos
1
1
t 1
t 1
A
3
A
3
(
#
1
1
1
1
]
1

1
1
sin t E cos 1 C t cos sin
sin t E cos 1 C t sin cos
3 A
A 3
(
#
C!#27E
4cest "roces este -escris 9n Fi&# !#7 CaE "entru un un&2i -e ! &ra-e, cu
re"re6entarea unei "roiecii 9n "lanul +3A#
CaE
3
A
+
t
3
t
A
I
A
+
I
+Z
3
AZ
3Z
3
A
+
+Z
AZ
3Z
A
+
I
3
E , , C 0 ! !
y x
* E C
5
# E , , C 0 ! !
y x
*
Fn Fi&# !#7 CbE se "re6int1 aceleai trans(or%1ri succesi8e necesare "entru
reali6area rotaiei 9n ra"ort cu o -rea"t1 "aralel1 cu a3a 6 a siste%ului, consi-er;n- c1
trans(or%area iniial1 *C=t
3
,=t
A
,E trans(or%1 toate "unctele -in siste%ul -e re(erin1
+3A6, ast(el 9nc;t "unctul I se su"ra"une "este ori&inea +# )e re%arc1 (a"tul c1, 9n
aceast1 situaie, este -oar o -i(eren1 -e inter"retare, o"eraiile i re6ultatul acestora
(iin- i-entic#
3.1.$.2 ,"alarea (a&# de un pun"t oare"are 4n !pa&iu
0atricea -e scalare -in relaia !#' e(ectuea61 scalarea (a1 -e ori&inea
siste%ului -e coor-onate, "rin care co%"onentele 3, A, 6 ale 8ectorului -e "o6iie +P
al "unctului P sunt %ulti"licate (iecare cu (actorul -e scalare cores"un61tor# )e "oate
-e(ini o scalare (a1 -e un "unct (i3 E 6 , A , 3 C F
( ( (
-in s"aiu, "rin care co%"onentele
8ectorului FP sunt %ulti"licate cu (actorii -e scalare cores"un61tori#
0atricea -e scalare (a1 -e un "unct oarecare se "oate -e-uce "rintr=o %eto-1
ase%1n1toare celei "re6entate anterior, "rin co%"unerea a trei trans(or%1ri ele%entare
-eBa -e(inite#
1# )e e3ecut1 o translaie cu E 6 , A , 3 C
( ( (
* , "rin care "unctul (i3 F se
su"ra"une "este ori&inea siste%ului -e coor-onate#
2# )e a"lic1 o trans(or%are -e scalare cu %atricea
E s , s , s C
6 A 3
S
#
!# )e e(ectuea61 o translaie in8ers1 celei a"licate la "unctul 1, -eci cu
%atricea E 6 , A , 3 C
( ( (
* #
Re6ult1 %atricea -e scalare cu (actorii -e scar1 6 A 3
s , s , s
(a1 -e un "unct (i3
-in s"aiu E 6 , A , 3 C F
( ( (
:
3
A
+
t
3
t
A
I
A
+
I
3 3
A
I
+
A
+
I
3
E , , C 0 ! !
y x
*
E C
@
#
E , , C 0 ! !
y x
*
CbE
Fig. 3.7 Rotaia (a1 -e o -rea"t1 "aralel1 ca a3a 6 a siste%ului -e re(erin1: CaE
consi-er;n- trans(or%area siste%elor -e re(erin1$
CbE consi-er;n- trans(or%area "unctelor#
E 6 , A , 3 C E s , s , s C E 6 , A , 3 C
( ( ( 6 A 3 ( ( (
* S * S
F
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1
6 1
A 1
3 1
1
s
s
s
1
6 1
A 1
3 1
(
(
(
6
A
3
(
(
(
F
S
1
1
1
1
]
1

1
E s 1 C 6 s
E s 1 C A s
E s 1 C 3 s
6 ( 6
A ( A
3 ( 3
F
S
C!#25E
3.1.$.3 Rota&ia (a&# de o dreapt# oare"are 4n !pa&iu
?r%1rin- un raiona%ent ase%1n1tor cu cele anterioare, se "oate -e-uce
%atricea -e rotaie cu un un&2i (at1 -e o -rea"t1 oarecare D -in s"aiu, -at1 "rintr=un
"unct D

C3

,A

,6

E i 8ectorul unitate C8ersorulE (, a8;n- cosinuii -irectori -


3
,-
A
,-
6
C
; : i (
6 A 3
- P - P - Q
E# Paii -e trans(or%are sunt ur%1torii:
1# Translaia cu %atricea *C=3

,=A

,=6

E, "rin care "unctul D

aBun&e 9n
ori&inea siste%ului -e re(erin1#
2# 4linierea -re"tei D cu una -in a3ele siste%ului -e re(erin1, -e e3e%"lu,
a3a 6 # 4linierea cu una -in a3ele -e coor-onate ale siste%ului se
e(ectuea61 "rin -ou1 rotaii 9n ra"ort cu celelalte -ou1 a3e#
0ai 9nt;i se e(ectuea61 o rotae 9n ra"ort cu a3a 3, cu un un&2i , ast(el ca -rea"ta
D s1 aBun&1 9n "lanul +36# Pentru calculul un&2iului se consi-er1 notaiile -in Fi&#
!#5 CbE#
+0 este 8ersorul -re"tei D -u"1 translaia e(ectuat1 9n "asul "rece-ent# 0
3
, 0
A
,
0
6
sunt interseciile "lanelor "aralele cu "lanele siste%ului -e coor-onate care trec
"rin "unctul 0, cu a3ele cores"un61toare C0
3
este intersecia "lanului "aralel cu
"lanul +A6 care trece "rin 0, cu a3a 3, etc#E# 0
3A
, 0
A6
, 0
63
sunt "roieciile "unctului
0 "e "lanele +
3A
, +
A6
i, res"ecti8, +
63
# )e "ot scrie ur%1toarele relaii:
6 6 A A 3 3
- Q +0 $ - Q +0 $ - Q +0
2
6
2
A A6 3
- P - Q - Q 00
2
6
2
A A A6 A
2
6
2
A 6 A6 6
- P - - Q - W - Q sin $ - P - - Q - W - Q cos C!#29E
Rotaia 9n ra"ort cu a3a 3 se e(ectuea61 9n "lanul 00
3A
0
63
# Punctul 0, rotit cu
un&2iul 9n "lanul 00
3A
0
63
, se trans(or%1 9n "unctul 0Z a(lat 9n "lanul +
63
, "e
-rea"ta 0
3
0
63
"aralel1 cu a3a +6, ast(el c1 00
3
Q 0Z0
3
Q -
A6
#
4 -oua eta"1 "entru alinierea 8ersorului +0 al -re"tei D cu a3a 6 este o
rotaie cu un&2iul , e(ectuat1 9n "lanul +63, 9n ra"ort cu a3a A# Pentru calculul
un&2iului se ur%1resc notaiile -in Fi&# !#5 CcE# Fn triun&2iul -re"tun&2ic +0Z0
3
Cun&2iul -re"t 9n 0
3
E +0
3
Q -
3
, +0ZQ 1, 0
3
0ZQ -
A6
# Re6ult1 un&2iul +0Z0
3
Cnotat
un&2iul E:
3
2
6
2
A A6
- Q sin $ - P - Q - Q cos C!#!E

Rotaia -re"tei +0Z 9n "lanul +63 (a1 -e a3a +A trans(or%1 "unctul 0Z 9n
"unctul 0ZZ "e a3a +6 "rintr=o rotaie cu un&2iul -e 8aloare 9n sens in8ers sensului
"o6iti8 -e rotaie -u"1 a3a A Ca se re8e-ea Fi&# !#!E 4ceast1 trans(or%are -e aliniere a
-re"tei D cu a3a 6 se e3"ri%1 %atriceal ast(el:
E C E C
A B @
# # A
!# Fn acest "as se e3ecut1 rotaia -orit1, cu un&2iul 9n ra"ort cu -rea"ta D,
care este aliniat1 cu a3a 6 a siste%ului, -eci se "oate scrie:
1
1
1
1
]
1




1
1
cos sin
sin cos 1
E C
@
#
'# Fn "asul al "atrulea se e3ecut1 trans(or%area in8ers1 celei -e la "asul 2,
-eci cu o %atrice E C E C

B A
/
@
# # A #
/# Fn ulti%ul "as se e3ecut1 trans(or%area -e translaie in8ers1, cu %atricea
E 6 , A , 3 C

* #
Re6ult1 %atricea co%"us1 -e rotaie (a1 -e -rea"ta D cu un&2iul :
E 6 , A , 3 C E C E C E C E C E C E 6 , A , 3 C

* # # # # # * #
A B @ B A ,
C!#!1E
:alorile un&2iurilor i re6ult1 -in cosinuii -irectori ai a3ei -e rotaie D i
au 8alorile -ate -e relaiile !#29 i !#!#
Fig. 3.6 4linierea -re"tei D cu a3a 6#
A
3
+
6
0
A
3
6
0
-
A
-
6
0
3A
0
63
0
A6
0
6
0
3
0
A
-
A6
0Z
+
A
3
6
0
-
3
0
3A
0
3
-
A6
0Z
+
-
A6
=
0ZZ
CaE
CcE
CbE

0
6
0
A6
0
A
0
63
3.1.$. *ran!(ormarea de modelare
+ scen1 8irtual1 este co%"us1 -intr=un nu%1r oarecare -e obiecte
tri-i%ensionale a%"lasate 9n -i(erite "o6iii 9n scen1# Te2nica -e %o-elare a scenelor
-e -i%ensiuni %ari Cca nu%1r -e obiecte sau ca 8olu% ocu"at -e scen1E se ba6ea61 "e
a%"lasarea %o-elelor obiectelor tri-i%ensionale 9n siste%ul -e re(erin1 uni8ersal al
scenei 8irtuale#
Fiecare obiect este %o-elat 9ntr=un siste% -e re(erin1 local, "rin ale&erea
celei %ai con8enabile ori&ini i orient1ri a a3elor -e coor-onate ale acestuia# De
e3e%"lu, un cub se %o-elea61 cel %ai con8enabil 9ntr=un siste% -e re(erin1 ales cu
centrul 9n centrul cubului i cu a3ele orientate "aralel cu laturile cubului# Dac1 se
"resu"une c1 latura cubului este e&al1 cu 2 unit1i, atunci coor-onatele 8;r(urilor
cubului sunt C=1,=1,=1E, C1,=1,=1E, C1,1,=1E, C=1,1,=1E, C=1,=1,1E, C1,=1,1E, C 1,1,1E, C=1,1,1E#
0o-elul unui obiect, -e(init 9n siste%ul -e re(erin1 local, "oate (i instaniat
Cintro-usE 9n scena 8irtual1 "rintr=o trans(or%are nu%it1 trans(or%are -e %o-elare
Csau trans(or%are -e instaniereE# 0ai %ult, re"re6entarea ierar2ic1 a scenelor 8irtuale
"rin &ra(uri aciclice -irecionate, "er%ite instanierea -e un nu%1r oarecare -e ori a
(iec1rui %o-el, (olosin- %atrice -e trans(or%are cores"un61toare# 4cesta este %o-ul
cel %ai (rec8ent -e %o-elare a scenelor 8irtuale, care are su"ort 9n (or%atele i
li%baBele -e -escriere a scenelor 8irtuale, cu% este li%baBul :R0>#
Fn %o-elarea ierar2ic1 a scenelor 8irtuale, o"eraia -e ba61 este trans(or%area
-e %o-elare, "rin care toate "unctele unui obiect C%o-el tri-i%ensionalE sunt
trans(or%ate -in siste%ul -e re(erin1 local 9ntr=un alt siste% -e re(erin1, care "oate (i
siste%ul -e re(erin1 uni8ersal sau un alt siste% inter%e-iar# Pentru 9nce"ut se
consi-er1 cea %ai si%"l1 trans(or%are -e %o-elare, -intr=un siste% -e re(erin1 local
9n siste%ul -e re(erin1 uni8ersal#
Fn %o- obinuit, "ri%a trans(or%are care se a"lic1 %o-elului este
trans(or%area -e scalare cu o %atrice -e scalare SCs
3
,s
A
,s
6
E, e3ecutat1 9n siste%ul -e
re(erin1 local C(a1 -e ori&inea acestuiaE, "rin care obiectul este a-us la -i%ensiunile
-orite ale instanei res"ecti8e#
Po6iia unei instane a obiectului 9n scen1 se -e(inete "rintr=o %atrice -e
trans(or%are care conine sub%atricea -e rotaie #, care -e(inete orientarea
siste%ului -e re(erin1 local +Z3ZAZ6Z (a1 -e siste%ul -e re(erin1 uni8ersal +3A6 Cal
scenei 8irtualeE i sub%atricea -e translaie *, care -e(inete "o6iia ori&inii
+ZC3

,A

,6

E a siste%ului -e re(erin1 local 9n siste%ul uni8ersal# )ub%atricea -e rotaie


# "oate (i s"eci(icat1 (ie "rin cosinuii -irectori Cc
11
, c
12
, c
1!
E, Cc
21
, c
22
, c
2!
E, Cc
!1
, c
!2
, c
!!
E
ai a3elor siste%ului local (a1 -e siste%ul -e re(erin1 uni8ersal, (ie "rintr=o succesiune
-e rotaii (a1 -e a3ele -e coor-onate ale siste%ului -e re(erin1 local:
1
1
1
1
]
1

1 0 0 0
0 c c c
0 c r c
0 c c c
33 23 13
32 22 12
31 21 11
R
sau E C E C E C
@ A B
# # # > #
Re6ult1 %atricea -e trans(or%are -e %o-elare CinstaniereE:
E s s , s C E 6 , A , 3 C
6 , A 3
S # * 2
I

C!#!2E
?n "unct P al obiectului 9n siste%ul -e re(erin1 %o-el este trans(or%at 9n
"unctul P
I
9n siste%ul -e re(erin1 uni8ersal "rin instanierea:
P 2 P
I I
Q
C!#!!E
E3e%"lul ur%1tor ilustrea61 crearea unei scene 8irtuale si%"le "rin
trans(or%1ri -e instaniere#
E9empl)l 3.3
)e consi-er1 un cub ca latura -e -i%ensiune 2, %o-elat 9ntr=un siste% -e
re(erin1 local ales cu centrul 9n centrul cubului i cu a3ele orientate "aralel cu laturile
cubului i se construiete o scen1 8irtual1 C9n siste%ul -e re(erin1 uni8ersalE 9n care se
instania61 "atru obiecte "ornin- -e la %o-elul cub#
Pri%a instaniere este c2iar cubul -in siste%ul -e re(erin1 %o-el, -eci
siste%ul -e re(erin1 %o-el are acelai centru i aceeai orientare a a3elor ca i
siste%ul -e re(erin1 uni8ersal$ -eci C
1
C,,E#
4 -oua instaniere este un cub cu latura -e ' unit1i, cu orientarea siste%ului
-e re(erin1 local cu a3ele -e coor-onate "aralele cu a3ele siste%ului -e re(erin1 al
scenei, a%"lasat cu centrul 9n "unctul C
2
C,=5,E#
4 treia instaniere este un "araleli"i"e- -re"tun&2ic, cu laturile -e -i%ensiuni
',2,', a%"lasat cu centrul 9n "o6iia C
!
C5,,E# )iste%ul -e re(erin1 local are a3a 6Z
"aralel1 cu a3a 6 a siste%ului uni8ersal, iar a3ele 3Z i AZ sunt rotite cu un un&2i -e W'
(a1 -e a3a 3 i, res"ecti8, A a siste%ului uni8ersal#
4 "atra instaniere este un "araleli"i"e- -re"tun&2ic, cu laturile -e -i%ensiuni
',2,', a%"lasat cu centrul 9n "o6iia C
'
C=5,,E# )iste%ul -e re(erin1 local are a3a 6Z
"aralel1 cu a3a 6 a siste%ului uni8ersal, iar a3ele 3Z i AZ sunt rotite cu un un&2i -e
=W' (a1 -e a3a 3 i, res"ecti8, A a siste%ului uni8ersal#
Pentru crearea scenei se calculea61 "e r;n- cele trei %atrice -e instaniere#
0atricea -e instaniere 2
/
este c2iar %atricea i-entitate: 2
/
> I#
Pentru calculul %atricei -e instaniere 2
1
, se -e-uc 9n %o- (oarte si%"lu
%atricele S
1
>SC2,2,2E, #
1
>I, i *
1
Q*C,=5,E, -eci: E 2 , 2 , 2 C E , 5 , C S * 2
1
#
Pentru calculul %atricei -e instaniere 2
3
, se "oate scrie S
3
QSC2,1,2E,
#
3
Q#
@
CW'E, *
3
>*C5,,E, -eci: E 2 , 1 , 2 C E ' W C E , , 5 C S # * 2
@ 3
#
Pe%tru calculul %atricei -e instaniere 2

, se "oate scrie: S

QSC2,1,2E,
#

Q#
@
C=W'E, *

>*C=5,,E, E 2 , 1 , 2 C E ' W = C E , , 5 = C S # * 2
@
#
)cena 8irtual1 8irtual1 re6ultat1 este re-at1 9n Fi&# !#9# 43ele -e coor-onate
re"re6entate 9n i%a&ine sunt a3ele siste%ului -e re(erin1 uni8ersal# Fn centrul
siste%ului -e re(erin1 uni8ersal este re"re6entat "ri%ul cub, cu aceleai -i%ensiuni ca
cele ale %o-elului# Cubul -in "artea -e Bos a i%a&inii se obine "rin trans(or%area -e
instaniere P
1
> 2
1
P$ "araleli"i"e-ul -in -rea"ta se obine "rin trans(or%area -e
instaniere P
3
> 2
3
P$ "araleli"i"e-ul -in st;n&a se obine "rin trans(or%area -e
instaniere P

> 2

P#
Re"re6entarea -e %ai Bos conine i o trans(or%are -e "roiecie "ers"ecti81,
"entru "erce"ia a-;nci%ii care 8a (i e3"licat1 ulterior# ?na -in (eele cubului Ccea %ai
a"ro"iat1 -e obser8atorE este -esenat1 ca su"ra(a1 -e o culoare &ri$ celelalte (ee ale
cubului sunt re"re6entate nu%ai "rin %uc2iile lor Cre"re6entare nu%it1 Gca-ru -e
s;r%1H, wireframeE
3.1.'Alte tran!(orm#ri geometri"e 4n !pa&iu
Printre alte trans(or%1ri 9n s"aiul tri-i%ensional care se "ot a"lica obiectelor,
cele %ai i%"ortante sunt trans(or%area -e si%etrie i trans(or%area -e (or(ecare#
*ra$.formarea (e .ime&rie# + trans(or%are -e si%etrie Co&lin-ireE a unui
"unct P (a1 -e un "lan calculea61 un "unct PZ a(lat "e o -rea"t1 "er"en-icular1 "e
"lanul , la o -istan1 e&al1 cu -istana lui P (a1 -e "lanul -at# Pentru ca6ul "articular
9n care "lanul -e si%etrie este unul -in "lanele siste%ului -e coor-onate, si%etricul
unui "unct este "unctul care are coor-onatele "e cele -ou1 a3e ale "lanului e&ale i
coor-onata "e cealalt1 a31 a siste%ului -e coor-onate cu 8aloare ne&at1#
)e "ot -e-uce si%"lu %atricele -e trans(or%are -e si%etrie relati8e la "lanele
siste%ului -e re(erin1:
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
,
1
1
1
1
,
1
1
1
1
@A B@ AB
S S S
C!#!'E
Trans(or%area -e si%etrie (a1 -e un "lan oarecare se "oate calcula (olosin- o
sec8en1 -e trans(or%1ri ele%entare CE!#2E#
Fig. 3.9 )cen1 8irtual1 re6ultat1 "rin instanierea %ai %ultor obiecte#
Dac1 se consi-er1 trans(or%area -e si%etrie ca o trans(or%are a"licat1 unui
siste% -e coor-onate -at, siste%ul -e coor-onate re6ultat are con8enia -e orientare a
a3elor in8ers1 (a1 -e con8enia iniial1# De e3e%"lu, siste%ul -re"t +3A6 se
trans(or%1 "rin si%etria S
9G
9ntr=un siste% -e coor-onate orientat -u"1 re&ula %;inii
st;n&i CFi&# !#1E#
*ra$.formarea (e forfecare CshearE este o trans(or%are care %o-i(ic1 (or%a
i -i%ensiunea obiectului trans(or%at# Trans(or%1rile -e (or(ecare cele %ai si%"le
sunt cele -e(inite (a1 a3ele siste%ului -e coor-onate#
For(ecarea -u"1 a3a 3 a siste%ului -e coor-onate %o-i(ic1 un "unct PC3,A,6E
9n "unctul PZC3Z,AZ,6ZE, ast(el c1:
6 Y 6 $ A Y A $ b6 aA 3 Y 3 + +
Fn (or%a %atriceal1 9n coor-onate o%o&ene, (or(ecarea -u"1 a3a 3 se scrie ast(el:
A
F P P? , un-e
1
1
1
1
]
1

1
1
1
b a 1
E b , a C
A
F
C!#!/E
Fn %o- si%ilar se -e(inesc %atricele -e (or(ecare "e a3ele A i 6:
1
1
1
1
]
1

1
1
- 1 c
1
E - , c C
B
F
,
1
1
1
1
]
1

1
1 ( e
1
1
E ( , e C
@
F

C!#!.E
Trans(or%area -e (or(ecare este (olosit1 9n -e(inirea siste%elor -e "roiecie#
A
3
+
6
AZ
3Z
+Z
6Z
S
AB
Fig. 3./" Trans(or%area -e si%etrie SAB trans(or%1 siste%ul -e coor-onate -re"t +3A6
9n siste%ul -e coor-onate st;n& +Z3ZAZ6Z#
3.1*ra$.form-ri geome&rice 0$ pla$
?neori sunt necesare trans(or%1ri &eo%etrice 9n "lanul bi-i%ensional# E3"ri%area
%atriceal1 unitar1 a transa(or%1rilor &eo%etrice 9n "lan se "oate (ace 9ntr=un siste% -e
coor-onate o%o&ene -e(init 9n %o- ase%1n1tor siste%ului -e coor-onate o%o&ene 9n
s"aiu: unui "unct PC3,AE 9n "lan 9i cores"un-e un "unct PCN,\,LE, cu relaiile 9ntre
coor-onate:
L W \ A $ L W N 3
, un-e (actorul -e scar1 L este -i(erit -e 6ero#
Trans(or%1rile &eo%etrice 9n "lanul bi-i%ensional "ot (i -e(inite "rin %atrice -e
trans(or%are -e -i%ensiune !3!# Pentru trans(or%1rile &eo%etrice "ri%iti8e 9n "lan,
%atricele -e trans(or%are se -e-uc si%"lu, ca o "articulari6are a trans(or%1rilor
&eo%etrice s"aiale# 4cestea au ur%1toarele e3"resii:
Translaia cu 8alorile t
3
i t
A
:
1
1
1
]
1


1
t 1
t 1
E t , t C un-e , E t , t C
A
3
A 3 A 3
* P * P?
C!#!7E
)calarea (a1 -e ori&ine, cu (actorii -e scar1 s
3
, s
A
:
1
1
1
]
1


1
s
s
E s , s C un-e , E s , s C
A
3
A 3 A 3
S P S P?
C!#!5E
Rotaia (a1 -e ori&ine cu un un&2i :
1
1
1
]
1




1
cos sin
sin ^ cos
E C un-e , E C # P # P?
C!#!9E
Trans(or%1ri co%"le3e 9n "lan se "ot -e(ini, la (el ca i 9n s"aiu, "rin co%"unerea
C"ro-usE -e %atrice -e trans(or%1ri "ri%iti8e# Toate trans(or%1rile 9ntre siste%e -e
re(erin1 9n "lan "ot (i consi-erate ca6uri "articulare ale trans(or%1rilor
cores"un61toare 9n s"aiu#
#
$iste"e de %i&uali&are
?n siste% -e 8i6uali6are este -e(init "rintr=o colecie -e siste%e -e re(erin1,
con8enii -e re"re6entare i relaii C%atricealeE -e trans(or%are care "er%it e3ecutarea
unei succesiuni -e trans(or%1ri care au ca e(ect "unerea 9n cores"on-en1 C%a""in&E a
"unctelor -in siste%ul -e re(erin1 -e %o-elare Cmodelling coordinate spaceE cu
"uncte ale su"ra(eei -e 8i6uali6are Cview surfaceE#
Fntr=un siste% -e 8i6uali6are, &enerarea i%a&inii scenei 8irtuale este un "roces
co%"le3 care "oate (i "arcurs "rin re"re6ent1ri 9n %ai %ulte siste%e -e re(erin1,
(iecare siste% -e re(erin1 (acilit;n- s"eci(icarea i e3ecutarea anu%itor o"eraii CFi&#
'#1E# Fn %ulte lucr1ri, &enerarea i%a&inii -e %ai este -enu%it1 i 8i6uali6area sau
re-area scenelor Cviewing, renderingE# Pe "arcursul lucr1rii 8or (i utili6ai toi aceti
ter%eni#

Trans(or%are
-e %o-elare
Trans(or%are
-e obser8are
Trans(or%are
-e nor%ali6are
Trans(or%are
9n ecran !D
Fig. ./ )uccesiunea o"eraiilor -e 8i6uali6are#
Trans(or%are
-e rastru
,efi$ire
o3iec&e
)iste%
-e re(erin1
local
,efi$ire
.i.&em (e
referi$-
(e o3.er4are
)iste%
-e re(erin1
uni8ersal
,efi$ire
proiecie
%i 4ol)m (e
4i5)ali5are
)iste%
-e re(erin1
-e obser8are
,ec)pare
Hmp-rire
c) I
Calc)l
proiecie
)iste%
-e re(erin1
nor%ali6at
)iste%
-e re(erin1
ecran !D
Afi%are
imagi$e
)iste%
-e re(erin1
i%a&ine
+biectele tri-i%ensionale co%"onente ale scenei sunt %o-elate i re"re6entate
9n siste%e -e re(erin1 locale Csau -e %o-elareE, care au ori&inea i orientarea alese cel
%ai con8enabil "entru re"re6entarea obiectelor res"ecti8e#
Pentru construirea scenei, obiectele s"eci(icate 9n siste%ul -e re(erin1 -e
%o-elare sunt instaniate "rin a"licarea unei succesiuni -e trans(or%1ri &eo%etrice,
care constitue trans(or%area -e %o-elare C-escris1 9n "ara&ra(ul !#1#/#'E# Prin
trans(or%area -e %o-elare se obine -escrierea obiectelor 9ntr=un siste% -e re(erin1
unic al scenei 8irtuale, nu%it siste%ul -e re(erin1 uni8ersal# Fn siste%ul -e re(erin1
uni8ersal %ai sunt -e(inite i alte ele%ente necesare re-1rii realiste a scenelor, cu%
sunt sursele -e lu%in1 sau traiectoriile -e %o-i(icare a "o6iiei obiectelor %obile 9n
scen1#
Fn sistemul de referin( universal se -e(inete un siste% -e re(erin1 -e
obser8are Cview referenceE, care s"eci(ic1 "unctul i -irecia -in care este "ri8it1
Cobser8at1E scena# Este e8i-ent c1, "entru aceeai scen1, i%a&inea care se re-1 "e
-is"laA -e"in-e -e "unctul i -irecia -in care este obser8at1 scena, -eci -e (elul 9n
care este -e(init siste%ul -e re(erin1 -e obser8are Ccare %ai este -enu%it i siste% -e
re(erin1 oc2i= ee coordinate spaceE# Trans(or%area obiectelor -in siste%ul -e
re(erin1 uni8ersal 9n siste%ul -e re(erin1 -e obser8are este nu%it1 trans(or%are -e
obser8are Csau -e 8i6uali6are D view transform$ s=a e8itat, 9ns1, aceast1 tra-ucere,
-atorit1 su"rautili61rii ter%enului -e 8i6uali6areE#
Fn sistemul de referin( de o$servare se "oate (ace o analo&ie si%"l1 cu %o-ul
9n care este "ri8it1 o scen1 real1 "rin oc2iul u%an sau "rintr=un a"arat (oto&ra(ic
Cca%er1E# Po6iia i orientarea siste%ului -e re(erin1 -e obser8are cores"un- "o6iiei
i orient1rii oc2iului sau a ca%erei 9ntr=o scen1 real1# Dintr=un "unct -e obser8are -at,
nu%ai o "arte a scenei "oate (i 816ut1, restul a(l;n-u=se 9n s"atele sau 9n "1rile
laterale ale -ireciei -e obser8are# Partea 8i6ibil1 -in scen1 Creal1 sau 8irtual1E este
-e(init1 ca 8olu% -e 8i6uali6are Cviewing volumeE, care, 9n &eneral, este o "ira%i-1
Csau un trunc2i -e "ira%i-1E cu centrul 9n "unctul -e obser8are i cu -irecia -at1 -e
-irecia -e obser8are# Fn re-area scenelor, -esc2i-erea un&2iular1 a "ira%i-ei -e
8i6uali6are -e(inete c;%"ul -e 8i6uali6are Cfield of viewE, care este o caracteristic1
i%"ortant1 a siste%elor &ra(ice#
Dei e3ist1 i unele -is"o6iti8e -e a(iare tri-i%ensional1, %aBoritatea siste%elor
&ra(ice a(iea61 i%a&inile "e o su"ra(a1 "lan1 a unui -is"o6iti8 -e a(iare C-is"laAE#
De aceea, 9n succesiunea o"eraiilor -e 8i6uali6are a obiectelor sau a scenelor
tri-i%ensionale, este necesar1 intro-ucerea unei "roiecii, care con8ertete s"aiul
tri-i%ensional 9ntr=o re"re6entare bi-i%ensional1# Fn &eneral, "roieciile trans(or%1
s"aiul R
n
9n s"aiul R
%
, un-e % _ n#
0o-ul 9n care se reali6ea61 "roiecia obiectelor tri-i%ensionale se -e(inete 9n
siste%ul -e re(erin1 -e obser8are "rin %ai %uli "ara%etri, -intre care cei %ai
i%"ortani sunt: ti"ul "roieciei i "lanul -e 8i6uali6are Cview planeE# Intersecia -intre
"lanul -e 8i6uali6are i "ira%i-a -e 8i6uali6are -e(inete o re&iune "lan1 nu%it1
(ereastr1 -e 8i6uali6are Cview plane windowE 9n care sunt re"re6entate toate i%a&inile
bi-i%ensionale ale obiectelor Csau "1rilor -e obiecteE 8i6ibile -in scen1#
Fn &ra(ica tri-i%ensional1 e3ist1 %ai %ulte "osibilit1i -e -e(inire a siste%elor
-e 8i6uali6are, -e la -e(iniri si%"le, utile 9n %ici "ro&ra%e &ra(ice, ";n1 la -e(iniri
co%"lete, care "er%it crearea si%ultan1 a %ai %ultor i%a&ini ale scenei, 9n (erestre -e
8i6uali6are -i(erite# Fn %aBoritatea acestor siste%e -e 8i6uali6are, -in %oti8e -e
e(icien1 i "reci6ie a calculelor Ccare sunt e3"licate %ai BosE, trans(or%area -e
"roiecie se e3ecut1 9n -ou1 eta"e: "ri%a eta"1 este o trans(or%are -e nor%ali6are,
care este o sc2i%bare a siste%ului -e re(erin1 -e la siste%ul -e re(erin1 -e obser8are
la siste%ul -e re(erin1 nor%ali6at# :olu%ul -e 8i6uali6are -e(init 9n siste%ul -e
re(erin1 -e obser8are este trans(or%at 9n siste%ul -e re(erin1 nor%ali6at 9ntr=un
8olu% canonic C9n &eneral, un "araleli"i"e- -re"tun&2icE#
/n sistemul de referin( normali'at Cnormali'ed coordinatesE se e3ecut1
-ecu"area obiectelor CclippingE, ast(el 9nc;t obiectele sau "1rile -in obiecte care se
a(l1 9n a(ara 8olu%ului -e 8i6uali6are C8olu%ul canonicE sunt eli%inate Ci&norate
"entru o"eraiile ur%1toare -e re-are, nu terse -in scen1E#
?r%1toarea trans(or%are &eo%etric1 este trans(or%area -in siste%ul
nor%ali6at 9n siste%ul -e re(erin1 ecran tri-i%ensional Cthree&dimensional sceenE,
"rin care (ereastra -e(init1 9n "lanul -e 8i6uali6are este trans(or%at1 9ntr=o re&iune
cores"un61toare 6onei -e a(iare "e -is"laA, nu%it1 "oart1 CviewportE, iar coor-onata 6
se "1strea61 ne%o-i(icat1# Fn siste%ul -e re(erin1 ecran !D se calculea61
coor-onatele tri-i%ensionale ale "unctelor -in coor-onatele o%o&ene "rin 9%"1rirea
cu L, -u"1 care se e3ecut1 trans(or%area -e rastru Crasteri'ationE# Trans(or%area -e
rastru calculea61 %uli%ea "i3elilor care a"arin unui se&%ent sau "oli&on -at "rin
coor-onatele 8;r(urilor# Prin aceast1 trans(or%are Ccare se %ai nu%ete i con8ersie -e
baleiere D scan conversionE s"aiul bi-i%ensional continuu al "orii -e a(iare este
con8ertit 9n s"aiul bi-i%ensional -iscret al i%a&inii# Fn &eneral, conco%itent cu
trans(or%area -e rastru sunt e3ecutate i alte o"eraii: eli%inarea su"ra(eelor ascunse
Chidden surface removalE, u%brirea CshadingE, te3turarea Cte-turingE#
4ceasta este succesiunea cea %ai &eneral1 a o"eraiilor -e 8i6uali6are a
scenelor, care este -escris1 i utili6at1 9n %o%entul -e (a1 9n &ra(ic1 i realitatea
8irtual1# Trebuie 9ns1 re%arcat (a"tul c1 e8oluia te2nolo&ic1, -eosebit -e
s"ectaculoas1 9n acest -o%eniu, a %o-i(icat, uneori substanial, %o-ul -e abor-are a
&ener1rii i%a&inii obiectelor tri-i%ensionale# De e3e%"lu, "osibilitatea -e
i%"le%entare e(icient1 Cuneori c2iar 9n 2ar-LareE a o"eraiei -e co%"arare a
a-;nci%ii "unctelor a i%"us utili6area al&orit%ului cunoscut sub nu%ele -e al&orit%
<=bu((er i a con-us la i&norarea co%"let1 a altor al&orit%i -e eli%inare a su"ra(eelor
ascunse, care 9n siste%ele %ai 8ec2i a8eau o %are i%"ortan1 i i%"licaie asu"ra
9ntre&ii succesiuni -e o"eraii &ra(ice# )e "ot -a nu%eroase e3e%"le -e %o-ul 9n care
sc2i%b1rile te2nolo&ice au in(luienat abor-area &ra(icii tri-i%ensionale, i, "robabil,
ast(el -e in(luiene 8or continua s1 a"ar1 i 9n 8iitor# De aceea, lucrarea 9i "ro"une s1
"re6inte as"ectele eseniale ale &ra(icii utili6ate 9n realitate 8irtual1, %ai "uin
in(luienate -e conte3tul te2nolo&ic -e %o%ent#
*ra$.formarea (e o3.er4are
Trans(or%area -e obser8are este analo&1 cu "o6iionarea unei ca%ere
(oto&ra(ice sau -e 9nre&istrare, "rin care se obser81 o anu%it1 6on1 -in scena 8irtual1#
Fn siste%ul -e re(erin1 uni8ersal sunt re"re6entate toate obiectele C%o-eleleE scenei
8irtuale, iar 9n (iecare ca-ru al i%a&inii CframeE, este &enerat1 i%a&inea acelor obiecte
-in scen1 care sunt 8i6ibile -in "unctul -e obser8are curent Cview pointE#
Trans(or%area -e obser8are este, aa-ar, o sc2i%bare a siste%ului -e
coor-onate -e la siste%ul -e re(erin1 uni8ersal la siste%ul -e re(erin1 -e obser8are
Cview coordinateE# Fn %aBoritatea a"licaiilor -e realitate 8irtual1 Csi%ulatoare, a"licaii
9n ar2itectur1, etcE scena 8irtual1 re"re6entat1 9n siste%ul -e re(erin1 uni8ersal este
%eninut1 9ntr=o "o6iie constant1 Ccel %ult e3ist;n- anu%ite obiecte %obile 9n scen1E,
iar obser8atorul este cel care 9i %o-i(ic1 "o6iia i orientarea, i 9n (uncie -e acestea
se re-1 i%a&inea cores"un61toare "e ecran# Direcia -e obser8are a scenei este, 9n
%aBoritatea siste%elor -e 8i6uali6are, -irecia a3ei 6 a siste%ului -e re(erin1 -e
obser8are#
>ocali6area i orientarea siste%ului -e re(erin1 -e obser8are +
:
3
:
A
:
6
:
9n
ra"ort cu siste%ul -e re(erin1 uni8ersal +3A6 "oate (i -escris1 "rintr=o %atrice -e
trans(or%are 2

-e (or%a &eneral1:
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1


1 0 0 0
z c c c
y c c c
x c c c
1 0 0 0
0 c c c
0 c c c
0 c c c
1 0 0 0
z 1 0 0
y 0 1 0
x 0 0 1
V 33 23 13
V 32 22 12
V 31 21 11
33 23 13
32 22 12
31 21 11
V
V
v
5 5
R * M
C'#1E
0atricea co%"onent1 *
J
este %atricea -e translaie a siste%ului -e re(erin1 -e
obser8are 9n ra"ort cu siste%ul -e re(erin1 uni8ersal:
: : :
6 , A , 3 sunt coor-onatele
"unctului -e obser8are +
:
9n siste%ul +36A# 0atricea -e rotaie #
J
re"re6int1
orientarea siste%ului -e re(erin1 -e obser8are (a1 -e siste%ul -e re(erin1 uni8ersal:
coe(icienii c
11
, c
12
, c
1!
sunt cosinuii -irectori ai a3ei +
:
3
:
(a1 -e a3ele +3, +A,
res"ecti8 +6$ coe(icienii c
21
, c
22
, c
2!
sunt cosinuii -irectori ai a3ei +
:
A
:
(a1 -e a3ele
+3, +A, res"ecti8 +6$ coe(icienii c
!1
, c
!2
, c
!!
sunt cosinuii -irectori ai a3ei +
:
6
:
(a1
-e a3ele +3, +A, res"ecti8 +6#
Fiin- -at1 %atricea -e "o6iionare i orientare a siste%ului -e re(erin1 obser8ator
relati8 la siste%ul -e re(erin1 uni8ersal 2, un "unct oarecare PC3,6,AE -in siste%ul
+3A6 se trans(or%1 9n "unctul P
:
C3
:
,A
:
,6
:
E 9n siste%ul -e re(erin1 obser8ator "rin
9n%ulire cu %atricea in8ers1, -eci:
P M P * R P M P
5
1
5
1
5
1
5


C'#2E
un-e %atricea -e trans(or%are -e obser8are 2
J
este in8ersa %atricii -e locali6are a
siste%ului -e re(erin1 -e obser8are relati8 la siste%ul -e re(erin1 uni8ersal:
1
5

M M #
0atricea -e rotaie %ai "oate (i "reci6at1 i "rintr=o succesiune -e rotaii 9n ra"ort
cu a3ele siste%ului -e re(erin1 uni8ersal# Cea %ai obinuit1 con8enie "entru or-inea
-e s"eci(icare a rotaiilor este: ruliu cu un&2iul C-u"1 a3a 6E, tan&aB cu un&2iul
C-u"1 a3a 3E i &iraie cu un&2iul C(a1 -e a3a AE# Fn aceast1 situaie:
E C E C E C
@ A B J
# # # #
i re6ult1:
P * # # # P * # P
B A @
/
J
-/
J J
E 6 , A , 3 C E C E C E C
8 8 :


C'#!E
Fn aceste relaii -e trans(or%are -e obser8are s=a "resu"us c1 siste%ul -e re(erin1
-e obser8are este tot un siste% -re"t, la (el ca i siste%ul -e re(erin1 uni8ersal# E3ist1
9ns1 i siste%e -e 8i6uali6are 9n care se -e(inete siste%ul -e re(erin1 -e obser8are ca
un siste% orientat -u"1 re&ula %;inii st;n&i# Pentru sc2i%barea siste%ului -e re(erin1
-e obser8are -re"t 9n siste% -e re(erin1 st;n&, se a-au&1 o trans(or%are -e o&lin-ire
Csi%etrieE, -e e3e%"lu cu %atricea S
AB
, iar %atricea -e trans(or%are -e obser8are
-e8ine 2D
J
, un-e:
J AB J
2 S > 2?
Dat (iin- c1 nu e3ist1 o "re-ilecie cert1 "entru una -in aceste con8enii "osibile
Csiste% -e re(erin1 -e obser8are -re"t sau st;n&E, este necesar s1 (ie "reci6at1 -e
(iecare -at1 con8enia (olosit1, ceea ce se 8a (ace i "e "arcursul acestei lucr1ri#
Fn -e-ucerea relaiilor '#2 i '#! s=a "resu"us c1 este cunoscut1 %atricea 2 -e
locali6are a siste%ului -e re(erin1 -e obser8are (a1 -e siste%ul -e re(erin1 uni8ersal
i atunci %atricea -e trans(or%are -e obser8are 2
J
se calculea61 ca %atrice in8ers1 a
acesteia# E3ist1 situaii 9n care %atricea 2 nu este cunoscut1 i atunci %atricea -e
trans(or%are -e obser8are 2
J
Csau 2D
J
E trebuie s1 (ie calculat1 "rin -i(erite
trans(or%1ri &eo%etrice i raiona%ente# Fn e3e%"lul ur%1tor se ur%1rete un
raiona%ent -e calcul al trans(or%1rii -e obser8are, "entru o anu%it1 cerin1 -e
obser8are a scenei#
E9empl)l ./
)e "oate -e(ini un siste% -e re(erin1 -e obser8are "ornin- -e la alte con-iii
-ec;t cele "re6entate %ai sus# De e3e%"lu, se cere -e(inirea %atricii -e trans(or%are
-e obser8are 9n situaia 9n care obiectul care trebuie s1 (ie 816ut se a(l1 9n centrul
siste%ului -e re(erin1 uni8ersal, iar "unctul -e obser8are este un "unct -at 9n s"aiul
tri-i%ensional, EC3
E
, A
E
, 6
E
E#
Pentru ca obiectul a(lat 9n centrul siste%ului -e re(erin1 uni8ersal s1 (ie 816ut
-in "unctul E -at, se -e(inete siste%ul -e re(erin1 -e obser8are -re"t cu centrul 9n
"unctul E, i cu a3a 6
:
orientat1 "e -rea"ta +E Ccu sensul -e la + c1tre EE# Direcia -e
obser8are 9ntr=un siste% -e re(erin1 -re"t este -e(init1 C9n %aBoritatea siste%elor -e
8i6uali6areE 9n sens in8ers -ireciei a3ei 6, -eci c1tre centrul +#
Calculele -e trans(or%are se e(ectuea61 %ai uor -ac1 se -au coor-onatele
s(erice ale "unctului E: -istana a "unctului E (a1 -e ori&ine i un&2iurile i
CFi&# '#2E# Coor-onatele carte6iene ale "unctului E "ot (i calculate 9n (unce -e
coor-onatele s(erice:



cos 6
cos sin A
cos sin 3
E
E
E
Pentru trans(or%area unui obiect -in siste%ul -e re(erin1 uni8ersal 9n
siste%ul -e re(erin1 -e obser8are ast(el -e(init, sunt necesare trei trans(or%1ri
ele%entare# Fn Fi&# '#2 sunt re"re6entate "ri%ele -ou1 trans(or%1ri co%"onente ale
trans(or%1rii -e obser8are#

Translaia *
/
Q *CD3
E
, DA
E
, D6
E
E trans(or%1 siste%ul -e re(erin1 uni8ersal 9ntr=un
siste% -e re(erin1 cu centrul 9n "unctul E i cu a3ele 3Z, AZ, 6Z "aralele cu a3ele
siste%ului -e re(erin1 uni8ersal#
1
1
1
1
]
1

1
cos 1
sin sin 1
sin cos 1
/
*
+rientarea siste%ului -e re(erin1 -e obser8are ast(el 9nc;t a3a 6Z s1 se
su"ra"un1 "este -rea"ta +E se obine "rin -ou1 rotaii#
Pri%a rotaie se e(ectuea61 9n ra"ort cu a3a 6Z cu un un&2i -e 9 D 9n sens
ne&ati8, ast(el 9nc;t noua a31 3ZZ obinut1 s1 (ie nor%al1 la "lanul care trece "rin a3a 6
i "unctul E C"lanul +EE
3A
E CFi&# '#2CbEE# 4ceast1 o"eraie este ec2i8alent1 cu o rotaie
9n sens -irect a"licat1 asu"ra "unctelor, -eci cu %atricea #
1
> #
@
C9D E, un-e
1
1
1
1
]
1

1
1
sin cos
cos sin
1
#
Du"1 aceast1 rotaie, siste%ul obser8ator are a3a 3ZZ "er"en-icular1 "e "lanul
"lanul +EE
3A
i a3a E6ZZ 9n "lanul +EE
3A
#
3
A
E

AZ
6
6Z
3Z
E3A
CaE
3
A
E

AZ
6
6Z
3Z
E
3A
CbE
Fig. .1 Trans(or%area -e obser8are: CaE translaia CbE rotaia 9n ra"ort cu a3a 6Z#
4 -oua rotaie este o rotaie a siste%ului -e coor-onate E3ZZAZZ6ZZ 9n sens
ne&ati8 cu un un&2i e&al cu 9n ra"ort cu a3a E3ZZ, "entru a su"ra"une a3a E6ZZ "este
-rea"ta +E CFi&# '#2CaEE# 4cest1 rotaie este ec2i8alent1 cu o rotaie in8ers1 a"licat1
obiectelor, -eci cu %atricea #
3
Q #
A
C E:
1
1
1
1
]
1

1
cos sin
sin cos
1
3
#
Re6ult1 %atricea -e trans(or%are -e obser8are:
E 6 , A , 3 C E 9 C E C
E E E
* # # 2
@ A J
1
1
1
1
]
1

1
cos sin sin sin cos
sin cos sin cos cos
cos sin
J
2
Trans(or%area unui "unct PC3,A,6E -in siste%ul -e re(erin1 uni8ersal 9n
"unctul PC3
:
,A
:
,6
:
E 9n siste%ul -e re(erin1 obser8ator se obine ast(el:
[ ] [ ]
T T
: : :
1 6 A 3 1 6 A 3
J
2
Fn Fi&# '#! este re"re6entat1 i%a&inea unui cub cu centrul 9n ori&ine i laturile
e&ale cu 2 i "aralele cu a3ele -e coor-onate, obser8at -in "unctul EC1,1,1E#
Pentru "unctul E:
Fig. .1 Trans(or%area -e obser8are:
CcE rotaia 9n ra"ort cu a3a 3ZZC-E siste%ul -e re(erin1 re6ultat
CcE
C-E
3
A
E

AZZ
6 6ZZ
3ZZ
E
3A
3
A
E
A
:
6 6
:
3
:
+

Y '/ /' , ! . sin , ! ! cos
'/ , 2 2 sin , 2 2 cos
! 1




0atricea -e trans(or%are -e obser8are are 8aloarea:
1
1
1
1
1
]
1

1
! 1 ! ! ! ! ! !
! . . . . .
2 2 2 2
J
2

Centrul + al siste%ului -e re(erin1 uni8ersal se trans(or%1 9n "unctul
C E
! 9 = , , Y + 9n siste%ul -e re(erin1 -e obser8are, iar 8;r(ul cubului PC1,1,1E, se
trans(or%1 9n "unctul C E
! 1 = , , Y P # Direcia -e obser8are trece "rintr=un 8;r( al
cubului i "rin centrul lui#
*ra$.formarea (e proiecie
Proiecia unui obiect tri-i%ensional "e un "lan Cnu%it "lan -e "roiecie sau "lan
-e 8i6uali6are D view planeE este (or%at1 -in %uli%ea "unctelor -e intersecie 9ntre
acest "lan i -re"tele nu%ite "roiectori, care "ornesc -intr=un "unct (i3 nu%it centru
-e "roiecie i trec "rin (iecare "unct al obiectului#
Fn (uncie -e -istana centrului -e "roiecie (a1 -e "lanul -e "roiecie, "roieciile
"lane se clasi(ic1 9n "roiecii "ers"ecti81 i "roiecii "aralele# Fn "roieciile "ers"ecti81
centrul -e "roiecie se a(l1 la -istan1 (init1 (a1 -e "lanul -e 8i6uali6are, iar 9n
"roieciile "aralele centrul -e "roiecie este la in(init# Fn ca6ul "roieciilor "aralele,
"roiectorii sunt -re"te "aralele i au o -irecie co%un1, nu%it1 -irecie -e "roiecie#
3
A
6
Fig. .3 E3e%"lu -e obser8are c1tre centrul siste%ului -e re(erin1 uni8ersal#
Fn &ra(ica tri-i%ensional1 se (olosete cel %ai (rec8ent "roiecia "ers"ecti81,
-eoarece aceast1 "roiecie re-1 cel %ai bine e(ectul -e -escretere a -i%ensiunilor
obiectelor o-at1 cu creterea -istanei acestora (a1 -e obser8ator#
0o-ul -e -e(inire a "unctului -e obser8are al scenei, al centrului -e "roiecie i al
"lanului -e 8i6uali6are -e"in- -e siste%ul -e 8i6uali6are (olosit# ?n stu-iu atent al
siste%elor -e 8i6uali6are este necesar -in %ai %ulte %oti8e# C2iar -ac1 un utili6ator
nu trebuie s1 "roiecte6e el 9nsui siste%ul -e 8i6uali6are, e3"loatarea oric1rui siste%
necesit1 o 9nele&ere "recis1 a %o-ului 9n care -i(erii "ara%etri -eter%in1 i%a&inea
obinut1 "e -is"laA# Co%binaiile "osibile sunt 9n %un1r at;t -e %are, 9nc;t ansa -e a
"otri8i -i(erii "ara%etri ai unui siste% -e 8i6uali6are, (1r1 a (i cunoscute con-iiile 9n
care lucrea61 acesta, este in(i%1#
Proie"&ia paralel#
Fn "rioecia "aralel1, centrul -e "roiecie este la in(init, iar toate -re"tele -e
"roiecie sunt "aralele 9ntre ele, a8;n- o -irecie nu%it1 -irecia -e "roiecie#
Proieciile "aralele sunt (oarte rar (olosite 9n &ra(ica -estinat1 siste%elor -e
realitate 8irtual1, -at (iin- c1 i%a&inea re6ultat1 nu -1 in(or%aii asu"ra -istanei
obiectelor 9n scen1#
Planul -e "roiecie al unei "roiecii "aralele "oate (i "er"en-icular "e -irecia
-e "roiecie, i atunci "roiecia se nu%ete "roiecie orto&ra(ic1, sau "oate a8ea o
inclinare oarecare (a1 -e -irecia -e "roiecie, i atunci "roiecia se nu%ete "roiecie
oblic1#
Dintre "roieciile orto&ra(ice, cele %ai utili6ate sunt "roieciile orto&ra(ice 9n
care "lanul -e "roiecie este unul -in "lanurile siste%ului -e coor-onate# Proieciile
orto&ra(ice sunt (olosite (rec8ent 9n -esenul te2nic i, -e ase%enea, ca o eta"1
inter%e-iar1 9n -e(inirea siste%elor -e 8i6uali6are nor%ali6ate, care 8or (i "re6entate
9n "ara&ra(ul ur%1tor# 0atricea -e trans(or%are -e "roiecie orto&ra(ic1 9n "lanul 6 Q
are ur%1toarea e3"resie:
1
1
1
1
]
1

1

1
1
@
P
C'#'E
?n "unct PC3,A,6E se trans(or%1 9n "unctul PZC3,A,E "rin "roiecie orto&ra(ic1
9n "lanul 6Q, care are aceleai coor-onate 3 i A, iar coor-onata 6 are 8aloarea 6ero#
Fn %o- si%ilar, se -e(inesc %atricile -e "roiecie orto&ra(ic1 9n "lanele 3 Q
i A Q :
1
1
1
1
]
1

1
1
1

A
P
,
1
1
1
1
]
1

1
1

1
B
P
C'#/E
Proie"&ia per!pe"ti+#
E3ist1 %ai %ulte %o-alit1i -e -e(inire a unei "roiecii "ers"ecti81, -e la o
-e(inire %ini%al1, "rin care se "oate reali6a "roiecia "unctelor -in s"aiu "e un "lan,
";n1 la -e(inirea a-o"tat1 9n siste%e -e 8i6uali6are co%"le3e, 9n care se s"eci(ic1
8olu%ul -e 8i6uali6are, centrul -e "roiecie i ali "ara%etri# Fn continuare, 8or (i
"re6entate c;te8a siste%e -e 8i6uali6are cu "roiecie "ers"ecti81, 9nce";n- cu cel %ai
si%"lu siste% i ";n1 la siste%ul co%"let -e 8i6uali6are care se con(or%ea61
stan-ar-elor ,M) i PHI,)#
Proiecia "ers"ecti81 se "oate -e(ini %ai intuiti8 "ornin- -e la siste%ul -e
obser8are consi-erat ca un siste% -e re(erin1 st;n&# Centrul -e "roiecie se (i3ea61 9n
centrul siste%ului -e re(erin1 -e obser8are +
:
, -irecia -e obser8are C-e "ri8ireE este
9n sensul "o6iti8 al a3ei +
:
6
:
, iar "lanul -e 8i6uali6are este un "lan "er"en-icular "e
a3a +
:
6
:
, la -istana - (a1 -e centru CFi&# '#'CaEE#
Punctul PC3
:
,A
:
,6
:
E 9n siste%ul -e re(erin1 -e obser8are se "roiectea61 9n
"unctul PZC3
P
,A
P
,6
P
E, a(lat la intersecia -re"tei +
:
P cu "lanul -e 8i6uali6are# Din
triun&2iurile ase%enea +
:
PZ4 i +
:
PB, re6ult1:
:
:
P
6
A -
A
Fn %o- ase%1n1tor se "oate -e-uce 8aloarea lui 3
P
:
:
:
P
6
3 -
3

C'#.E
4ceste relaii se "ot e3"ri%a %atriceal "rin -e(inirea %atricei -e "roiecie
"ers"ecti81 2
P
ast(el:
Fig. . Proiecia "ers"ecti81 -e(init1 "rin centrul -e "roiecie +
:

i "lanul -e "roiecie "er"en-icular "e a3a +
:
6
:
#

A
:
6
:
+
:
3
:
PZ
P
4
)iste% -e re(erin1 -e obser8are st;n&
B
A
:
A
P
6
:
-
A
:
D 6
:
+
:
3
:
PZ
P
4
)iste% -e re(erin1 -e obser8are -re"t
B
A
:
A
P
6
:
-
6
:
Direcia -e obser8are Direcia -e obser8are

1
1
1
1
]
1

- W 1
1
1
1
P
2
C'#7E
Trans(or%area -e "roiecie se "oate scrie atunci:
P 2 > P?
P
,
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

:
:
:
:
P
P
P
P
L
<
\
N
- W 1
1
1
1
L
<
\
N
Re6ult1:

'

- W < L
< <
\ \
N N
: P
: P
: P
: P
i

'




- L W < 6
6 A - < W \ - L W \ A
6 3 - < W N - L W N 3
P P P
: : : : P P P
: : : : P P P
C'#5E
)e obser81 c1 e3"resiile lui 3
P
i A
P
i 6
P
obinute "rin calcul %atriceal sunt
i-entice cu cele -in relaiile '#., re6ultate -in construcia &eo%etric1 "re6entat1 9n Fi&
'#'CaE# Proiecia "ers"ecti81 9nsea%n1 -eci o 9%"1rire a coor-onatelor 3 i A cu
-istana 6, i, 9ntr=a-e81r, 9n "roiecia "ers"ecti81 i%a&inea unui obiect este cu at;t %ai
%ic1 cu c9t se a(l1 la -istan1 %ai %are -e "unctul -e obser8are#
Fn acest siste% -e 8i6uali6are si%"lu s=a -e(init siste%ul -e re(erin1 -e
obser8are ca un siste% st;n&# )e "oate -e(ini acest siste% ca un siste% -e re(erin1
-re"t, iar -irecia -e obser8are 9n-re"tat1 s"re D6
:
# Planul -e 8i6uali6are este
"o6iionat "er"en-icular "e a3a 6, la -istan1 e&al1 cu - (a1 -e ori&ine CFi&# '#'CbEE, -
a8;n- 8aloare ne&ati81# ?r%;n- un raiona%ent ase%1notor cu cel -e %ai sus, re6ult1
%atricea -e "roiecie "ers"ecti81 cu aceeai e3"resie '#7, 9n care - are o 8aloare
ne&ati81# Coor-onatele "unctului trans(or%at sunt -ate -e relaiile '#5# Trebuie
"reci6at c1 9n aceast1 con8enie se "roiectea61 "e "lanul -e 8i6uali6are "unctele a(late
9n -irecia -e obser8are, -eci cu 6
:
ne&ati8#
)e re%arc1 ec2i8alena re6ultatelor obinute, iar con8enia -e siste% -e
re(erin1 -e obser8are st;n& este util1 -oar "entru a se ur%1ri %ai uor raiona%entul
-e calcul#
,i!temul de re(erin&# normalizat
)iste%ul -e "roiecie si%"lu -e(init %ai sus, 9n care toate obiectele -in scen1
sunt "roiectate "e "lanul -e 8i6uali6are, are %ai %ulte incon8eniente i nu "oate (i
(olosit -ec;t 9n a"licaii (oarte si%"le, 9n care se "roiectea61 obiecte a(late tot ti%"ul
9n c;%"ul -e obser8are# Nu aceasta este situaia i%a&inilor &enerate 9n realitatea
8irtual1, 9n care se e3"lorea61 o scen1 8irtual1 -e -i%ensiuni %ari, -in care nu%ai o
"arte este 8i6ibil1 i -eci re-at1 "e ecran#
Trans(or%area -e "roiecie "ers"ecti81 este o trans(or%are costisitoare,
-atorit1 (a"tului c1 necesit1 o"eraii -e 9%"1rire, care consu%1 ti%" -e calcul ri-icat,
-ac1 este e3ecutat1 "rin "ro&ra%, sau circuite co%"le3e, -ac1 este i%"le%entat1
2ar-Lare# E3ecuia ei "entru toate obiectele scenei, inclusi8 "entru cele care nu sunt
8i6ibile, -eci nu sunt re"re6entate "e -is"laA i nu necesit1 coor-onatele 9n "lanul -e
8i6uali6are, este costisitoare i inutil1# Fn "lus, o"eraia -e -ecu"are CclippingE a
"1rilor -in obiectele tri-i%ensionale care nu sunt 8i6ibile -intr=un anu%it "unct -e
obser8are, nu se "oate e3ecuta e(icient -u"1 "roiecie i este necesar1 e3ecuia ei
9nainte -e "roiectarea coor-onatelor 9n "lanul -e 8i6uali6are# 4su"ra acestui as"ect se
8a re8eni cu oca6ia -escrierii o"eraiei -e -ecu"are#
Este e8i-ent c1, "entru re-area e(icient1 a scenelor tri-i%ensionale, este
necesar1 -e(inirea unui 8olu% -e 8i6uali6are Cview volumeE, cunoscut sub nu%ele -e
"ira%i-a -e 8i6uali6are sau trunc2iul -e "ira%i-1 -e 8i6uali6are CfrustumE# Trunc2iul
-e "ira%i-1 -e 8i6uali6are se -e(inete 9n siste%ul -e re(erin1 -e obser8are# Fn (or%a
cea %ai si%"l1, trunc2iul -e "ira%i-1 -e 8i6uali6are este %1r&init -e "atru "lane
laterale care trec "rin "unctul -e obser8are +
:
i -e -ou1 "lane "er"en-iculare "e a3a
+
:
6
:
, "lanul a"ro"iat CnearE "e care se e3ecut1 "roiecia, i "lanul -e"1rtat CfarE# Fn
(i&ura Fi&# '#/ este "re6entat 8olu%ul -e 8i6uali6are 9ntr=un siste% -e re(erin1 -e
obser8are st;n& i -irecia -e obser8are c1tre 6
:
"o6iti8#
Intersecia -intre cele "atru "lane laterale i "lanul -e 8i6uali6are Ccare, 9n
aceast1 -e(iniie, este i "lanul a"ro"iat -e 8i6ibilitateE -eter%in1 o su"ra(a1
-re"tun&2iular1 4BCD 9n "lanul -e 8i6uali6are 9n care 8or (i "roiectate toate obiectele
8i6ibile ale scenei# 4ceast1 su"ra(a1 este (ereastra -e 8i6uali6are Cview plane
windowE# Ecuaiile celor ase "lane ale trunc2iului -e "ira%i-1 re&ulat1 sunt:
Fig. .! De(inirea trunc2iului -e "ira%i-1 -e 8i6uali6are C(rustu%E
9n siste%ul -e re(erin1 -e obser8are st;n&#
6
:
3
:
A
:
+
:
6
:
Q (
6
:
Q -
3
:
Q & 6
:
W-
A
:
Q 2 6
:
W-
4
B
D
C
Direcia -e obser8are

'

t
t
( 6
- 6
- 6 2 A
- 6 & 3
:
:
: :
: :

C'#9E
un-e: 2& D -i%ensiunea laturii ori6ontale a (erestrei -e 8i6uali6are Clatura 4BE
22 D -i%ensiunea laturii 8erticale a (erestrei -e 8i6uali6are Clatura BCE
- D -istana "lanului -e 8i6uali6are i a "lanului a"ro"iat
( D -istana "lanului -e"1rtat#
)e%ni(icaia 8olu%ului -e 8i6uali6are este e8i-ent1: -intre toate obiectele -in
scena 8irtual1, sunt 8i6ibile i re-ate 9n (ereastra -e 8i6uali6are nu%ai acele obiecte
sau "1ri -in obiecte care sunt cu"rinse 9n acest 8olu%# Trunc2iul -e "ira%i-1 -e
8i6uali6are -e(inete 9n acest (el i 8olu%ul -e -ecu"are CclippingE, o"eraie care se
e3ecut1 9ntr=unul -in siste%ele -e re(erin1 care se -e(inesc 9n ca-rul trans(or%1rii -e
"roiecie, i anu%e siste%ul -e re(erin1 nor%ali6at# 4cest siste% -e re(erin1 se %ai
nu%ete i siste% -e re(erin1 canonic# 0oti8ele "entru care -ecu"area se e(ectuea61
cel %ai e(icient 9n siste%ul -e re(erin1 nor%ali6at 8or (i e3"licate ulterior#
)iste%ul -e re(erin1 nor%ali6at este un siste% -e coor-onate tri-i%ensional
9n care trunc2iul -e "ira%i-1 -e 8i6uali6are se trans(or%1 9ntr=un 8olu% canonic, care,
9n &eneral, este un "araleli"i"e- -re"tun&2ic# Pentru siste%ul -e "roiecie -e(init 9n
acest "ara&ra(, 8olu%ul canonic este un "araleli"i"e- -re"tun&2ic cu latura ba6ei e&al1
cu 2 i 9n1li%ea 1 C-u"1 a3a 6
N
E#
Intro-ucerea acestui nou siste% -e re(erin1 "er%ite abor-area trans(or%1rii
-e "roiecie "ers"ecti81 9n -ou1 eta"e: o trans(or%are -in siste%ul -e re(erin1 -e
obser8are 9n siste%ul -e re(erin1 nor%ali6at Cnu%it1 trans(or%are -e nor%ali6areE,
ur%at1 -e calculul "roieciei "rin 9%"1rirea cu L a coor-onatelor o%o&ene# Fntre cele
-ou1 eta"e ale trans(or%1rii -e "roiecie "ers"ecti81 se e3ecut1 o o"eraie i%"ortant1
9n &ra(ica tri-i%ensional1, -ecu"area obiectelor relati8 la 8olu%ul -e 8i6uali6are
nor%ali6at C8olu%ul canonicE#
Pentru trans(or%area -e nor%ali6are Ctrans(or%area -e la siste%ul -e re(erin1
-e obser8are la siste%ul -e re(erin1 nor%ali6atE, se i%"un ur%1toarele cerine:
C1E )e nor%ali6ea61 coor-onata 6
N
, care re"re6int1 a-;nci%ea, ast(el 9nc;t s1
se obin1 "reci6ie %a3i%1 9n o"eraiile -e co%"araie a a-;nci%ii
"unctelor#
C2E >iniile -in siste%ul -e re(erin1 obser8ator trebuie s1 se trans(or%e 9n linii
9n siste%ul -e re(erin1 nor%ali6at#
C!E )u"ra(eele "lane -in siste%ul -e re(erin1 obser8ator trebuie s1 se
trans(or%e 9n su"ra(ee "lane 9n siste%ul -e re(erin1 nor%ali6at#
)=a -e%onstrat RNeL51S c1 aceste cerine sunt satis(1cute -e trans(or%area:
: N
bW6 P a Q 6
un-e a i b sunt constante# 4ceste constante se -eter%in1 -in ur%1toarele
constr;n&eri:
)e ale&e b _ , ast(el ca 6
N
s1 creasc1 atunci c;n- crete 6
:
# 4ceast1
con-iie conser81 noiunea intuiti81 -e a-;nci%e: un "unct are coor-onata
6
N
cu at;t %ai %are cu c;t este %ai -e"arte -e obser8ator#
)e nor%ali6ea61 -o%eniul -e 8ariaie al lui 6
N
, ast(el ca -o%eniul 6
:
R-,(S
s1 se trans(or%e 9n -o%eniul 6
N
R,1S#
Re6ult1 ur%1toarele relaii care -e(inesc trans(or%area -e nor%ali6are:

'

,
_

:
N
:
:
N
:
:
N
6
-
1
- (
(
6
6 2
A -
A
6 &
3 -
3
C'#1E
Coor-onatele o%o&ene ale unui "unct 9n siste%ul nor%ali6at au e3"resiile:

'

: N
: N
: N
: N
6 L
-E -(WC( -E ( WC ( 6 <
2 A - \
& 3 - N
C'#11E
Din aceste e3"resii se -e-uce %atricea -e trans(or%are -e nor%ali6are 2
N
care e(ectuea61 trans(or%area -e la siste%ul -e re(erin1 obser8ator la siste%ul -e
re(erin1 nor%ali6at:
1
1
1
1
]
1

1
-E -(WC( -E ( WC (
2 W -
& W -
N
2
,
1
1
1
1
]
1

1
1
1
1
]
1

1
6
A
3
L
<
\
N
:
:
:
N
N
N
N
N
2 C'#12E
0atricea -e trans(or%are -e nor%ali6are 2
N
"oate (i e3"ri%at1 ca un "ro-us
-e -ou1 %atrice ast(el:
N/ N1 N
2 2 2
1
1
1
1
]
1

1
1
1
1
]
1

1
1
2 W -
& W -
1
-E -(WC( -E ( WC (
1
1
4ceast1 re"re6entare "er%ite anali6a %ai -etaliat1 a trans(or%1rii -e
nor%ali6are# )iste%ul -e re(erin1 nor%ali6at ast(el -e(init este un siste% -e re(erin1
st;n&# 0atricea 2
N/
este o %atrice -e scalare neuni(or%1 "rin care trunc2iul -e
"ira%i-1 -e 8i6uali6are este trans(or%at 9ntr=un trunc2i -e "ira%i-1 re&ulat1 cu
un&2iul la 8;r(ul "ira%i-ei -e 9# 0atricea 2
N1
trans(or%1 acest trunc2i -e "ira%i-1
re&ulat1 9n 8olu%ul canonic, care este un "araleli"i"e- -re"tun&2ic CFi&# '#.E#
Fn siste%ul -e re(erin1 nor%ali6at se e3ecut1 o"eraia -e -ecu"are a
obiectelor 9n coor-onate nor%ali6ate o%o&ene# Fn ur%a acestei o"eraii, -in totalitatea
obiectelor scenei 8irtuale sunt reinute nu%ai acele obiecte sau "1ri Cre6ultate "rin
-ecu"areE a(late 9n interiorul 8olu%ului -e 8i6uali6are canonic, ceea ce 9nsea%n1 c1,
9nainte -e trans(or%area -e nor%ali6are, acestea se a(lau 9n interiorul trunc2iului -e
"ira%i-1 -e 8i6uali6are#
Din coor-onatele o%o&ene N
N
, \
N
, <
N
, L
N
se "ot -e-uce coor-onatele 3
N
, A
N
i 6
N
ale "unctului 9n siste%ul -e re(erin1 nor%ali6at tri-i%ensional:
Fig. .7 Eta"ele trans(or%1rii -e nor%ali6are#
6
:
A
:
+
:
:olu%ul
-e 8i6uali6are
-
(
2
AZ
6Z
+Z
-
-
2
N/
2
N1
6
N
A
N
1
1
D 1
CbE
CaE
CcE
:olu%ul -e 8i6ibilitate 9n siste%ul -e
re(erin1 obser8ator#
)calarea care trans(or%1 8olu%ul -e
8i6ibilitate 9n trunc2i -e "ira%i-1 re&ulat1
cu un&2il la 8;r(ul "ira%i-ei -e 9 &ra-e#
:olu%ul -e 8i6ibilitate canonic 9n
siste%ul -e re(erin1 nor%ali6at
tri-i%ensional#

,
_


:
N N N
:
:
N N N
:
:
N N N
6
-
1
- (
(
L < 6 $
6 2
A -
L \ A $
6 &
3 -
L N 3
)=au obinut, e8i-ent, e3"resii i-entice cu cele -in relaiile '#1, -e la care s=a
"ornit "entru -e(inirea trans(or%1rii -e "roiecie "ers"ecti81#
Coor-onatele 3
N
i A
N
9n siste%ul -e re(erin1 nor%ali6at re"re6int1
coor-onatele "roieciei orto&ra(ice 9n "lanul 6
N
Q Ccare este "lanul -e 8i6uali6areE a
"unctului cores"un61tor# Este -e re%arcat (a"tul c1 trans(or%area -e "roiecie
"ers"ecti81 -in siste%ul -e re(erin1 obser8ator a -e8enit o trans(or%are -e "roiecie
orto&ra(ic1 9n siste%ul -e re(erin1 nor%ali6at# Dar aceaste o"eraii -e trecere -e la
coor-onate o%o&ene la coor-onate tri-i%ensionale i "roiecia orto&ra(ic1 nu se
e(ectuea61 9n siste%ul nor%ali6at ci 9ntr=un alt siste% -e re(erin1, siste%ul ecran !D,
obinut "rin trans(or%area (ereastrei -e 8i6uali6are 9n "oart1 -e a(iare#
?n&2iul -intre "lanele laterale ale "ira%i-ei -e 8i6uali6are Ccare trec "rin a3a
+
:
A
:
i au ecuaiile 3
:
Q t& 6
:
W- E se nu%ete un&2i -e 8i6uali6are "e ori6ontal1
Chori'ontal field of viewD fov-E# ?n&2iul -intre "lanele "ira%i-ei -e 8i6uali6are care
trec "rin a3a +
:
3
:
se nu%ete un&2i -e 8i6uali6are "e 8ertical1 Cvertical field of view
) fovE# :alorile acestora se -e-uc -in "ara%etrii -e "roiecie "ers"ecti81:
-
2
arct& 2 Q (o8A ,
-
&
arct& 2 Q (o83 C'#1!E
:alorile un&2iurilor -e 8i6uali6are 8aria61 "entru -i(erite siste%e &ra(ice 9n
(uncie -e -is"o6iti8ele -e a(iare (olosite#
+ alt1 con8enie -e -e(inire a unui siste% -e 8i6uali6are este aceea -e a
consi-era siste%ul -e re(erin1 -e obser8are ca un siste% -re"t, iar -irecia -e
obser8are i 8olu%ul -e 8i6uali6are 9n-re"tate c1tre 6
:
ne&ati8# ?r%1rin- un
raiona%ent ase%1n1tor celui -e %ai sus, se obine aceeai e3"resie a %atricii -e
nor%ali6are Crelaia '#12E, 9n care 8alorile - i ( au 8alori ne&ati8e, iar siste%ul -e
re(erin1 nor%ali6at re6ultat este un siste% -e re(erin1 st;n&#
E9empl)l .1
)e reia scena 8irtual1 -in E3e%"lul !#!# I%a&inile -in (i&ura -e %ai Bos
cores"un- obiectelor instaniate 9n scena 8irtual1# 43ele -e coor-onate re"re6entate
sunt a3ele siste%ului -e re(erin1 uni8ersal# )iste%ul -e re(erin1 -e obser8are este un
siste% -e re(erin1 -re"t, iar -irecia -e obser8are 9n-re"tat1 c1tre 6
:
ne&ati8# +ri&inea
+
:
are 8alori -i(erite 9n -i(eritele i%a&ini ale (i&urii, aa cu% este in-icat "entru
(iecare -intre ele, i orientare -at1 "rin un&2iurile -e &iraie, tan&aB, ruliu C ,, E#
Trans(or%area -e "ers"ecti81 este -e(init1 "rin "ara%etrii: - Q D1, ( Q D', & Q
1, 2 Q 1# )uccesiunea -e trans(or%1ri e(ectuate "entru obinerea acestor i%a&ini este:
CaE Trans(or%area -e %o-elare, -i(erit1 "entru (iecare -in cuburi, cu
%atricele 2
/
, 2
1
, 2
3
, 2

calculate 9n E3e%"lul !#!# Du"1 trans(or%area


-e %o-elare CinstaniereE, toate obiectele sunt re"re6entate 9n siste%ul -e
re(erin1 uni8ersal i, 9n continuare, 8or (i su"use toate acelorai
trans(or%1ri#
CbE Trans(or%area -e obser8are cu %atricea:
) z , y , x ( ) ( ) ( ) (
V V V
* R R R M
0 / . 5
,
cu 8alorile "ara%etrilor 3
:
, A
:
, 6
:
, , , cores"un61toare (iec1rei
i%a&ini re-ate#
CcE Trans(or%area -e nor%ali6are cu %atricea:

1
1
1
1
]
1

1
1#2/ 1#2/
1
1
N
2
CeE 3
:
Q 2
A
:
Q 2
6
:
Q 2
Q !
Q Q
C(E 3
:
Q 2
A
:
Q 2
6
:
Q 2
Q D !
Q Q
CaE 3
:
Q 2
A
:
Q 2
6
:
Q 2
Q Q Q
CbE 3
:
Q 2
A
:
Q D2
6
:
Q 2
Q Q Q
3
CcE 3
:
Q D 2
A
:
Q 2
6
:
Q 2
Q Q Q
C-E 3
:
Q D 2
A
:
Q D 2
6
:
Q 2
Q Q Q
3
I%a&inile &enerate "e ecran %ai necesit1 i alte trans(or%1ri &ra(ice, "e l;n&1 cele
"re6entate ";n1 acu%: trans(or%area 9n coor-onate ecran !D, "rin care se e(ectuea61 o
cores"on-en1 9ntre (ereastra -e 8i6uali6are i 6ona -e a(iare alocat1 "e ecran Cnu%it1
"oart1 DviewportE, "recu% i o trans(or%are -e rastru, "rin care se &enerea61 %uli%ea
"i3elilor a(iai "e ecran# 4ceste trans(or%1ri 8or (i -escrise "ara&ra(ele ur%1toare#
I%a&inile "re6entate au (ost ca"tate -in (ereastra -e a(iare a "ro&ra%ului care
e3ecut1 toate o"eraiile "re6entate %ai sus# 4cest "ro&ra% a (ost scris (olosin-
biblioteca &ra(ic1 +"en,>, care o(er1 (uncii a-ec8ate acestor o"eraii -e trans(or%are
i re-are a i%a&inilor# Funciile +"en,> "entru reali6area trans(or%1rilor &ra(ice 8or
(i -escrise 9n seciunea .#
Fn acest siste% -e "roiecie "ers"ecti81 s=a "resu"us c1 "lanul -e 8i6uali6are i
"lanul -e 8i6ibilitate a"ro"iat1 coinci-# De-ucerea %atricii -e nor%ali6are "entru
ca6ul &eneral, 9n care cele -ou1 "lane sunt -i(erite, este l1sat1 ca un e3erciiu "entru
cursani# De ase%enea, tot ca un e3erciiu, se "oate -e-uce %atricea -e nor%ali6are 9n
situaia 9n care centrul (erestrei -e 8i6uali6are nu se a(l1 "e a3a 6
:
#
Prin s"eci(icarea siste%ului -e re(erin1 -e obser8are, a 8olu%ului -e 8i6uali6are
i a siste%ului -e "roiecie Cti"ul -e "roiecie, centrul -e "roiecie, -irecia -e
obser8are, (ereastra -e 8i6uali6areE s=a -e(init un siste% -e 8i6uali6are care "oate (i
(olosit "entru re-area obiectelor i a scenelor tri-i%ensionale# 4cest siste% este -estul
-e (le3ibil i "oate aco"eri un nu%1r %are -e a"licaii -e &ra(ic1 "roiecti81 CC4D=
Co%"uter 4i-e- Desi&nE i unele a"licaii -e realitate 8irtual1 nei%ersi81 -e ti"
-es@to", 9n care %e-iul &ra(ic este &enerat "e %onitorul unui calculator#
Dar restriciile i%"use acestui siste% -e 8i6uali6are C-e e3e%"lu, s=a consi-erat c1
centrul -e "roiecie coinci-e cu centrul siste%ului -e re(erin1 -e obser8areE nu "er%it
utili6area lui 9n siste%e -e realitate 8irtual1 i%ersi8e sau se%i=i%ersi8e 9n care este
necesar un c;%" -e 8i6uali6are -e -i%ensiune %are# 4st(el -e situaii se "ot -e(ini 9n
siste%ul -e 8i6uali6are stan-ar- PHI,)#
Si.&em)l (e 4i5)ali5are .&a$(ar(
I%a&inea &enerat1 "e un %onitor sau "roiectat1 -e un "roiector "e un ecran "oate
aco"eri un c;%" -e 8i6uali6are ti"ic -e !/='/ 8ertical=ori6ontal# Pentru c;%"uri -e
Fig. .7 Trans(or%1ri -e "roiecie "ers"ecti81
"entru -i(erite "uncte i -irecii -e obser8are a scenei
8i6uali6are %ai %ari se (olosesc i%a&ini %ulticanal, 9n care (iecare canal re"re6int1 un
8olu% -e 8i6uali6are care se "roiectea61 9n (ereastra -e 8i6uali6are a acestuia# 0ai
%ulte canale -e i%a&ine, care &enerea61 i%a&ini "e %onitoare Bu3ta"use sau
"roiectate "e un ecran -e -i%ensiuni cores"un61toare, "er%it obinerea unor c9%"uri
-e 8i6uali6are e3tinse 9n siste%ele -e realitate 8irtual1 i%ersi8e#
Pentru &enerarea i%a&inilor %ulticanal se utili6ea61 un siste% -e 8i6uali6are care
"er%ite -e(inirea tuturor "ara%etrilor necesari "entru &enerarea si%ultan1 a %ai
%ultor (erestre -e 8i6uali6are# ?n ast(el -e siste% -e 8i6uali6are este cel -e(init 9n
stan-ar-ele ,M) i PHI,), i 8a (i -escris 9n continuare#
Fn siste%ul -e 8i6uali6are stan-ar- PHI,), siste%ul -e re(erin1 obser8ator Cnu%it
view reference coordinate D:RCE este -e(init "rin "unctul -e obser8are :RP Cview
reference pointE, iar centrul -e "roiecie este -i(erit -e acesta i este s"eci(icat "rin
"unctul PRP Cpro0ection reference pointE# Planul -e 8i6uali6are C"e care se e3ecut1
"roiecia i%a&iniiE nu este 9n %o- necesar "er"en-icular "e linia care unete centrul -e
"roiecie cu centrul (erestrei -e 8i6uali6are, ceea ce "er%ite reali6area "roieciilor
oblice# Fereastra -e 8i6uali6are este "o6iionat1 9n orice loc 9n "lanul -e 8i6uali6are,
ceea se "er%ite -e(inirea i re-area si%ultan1 a %ai %ultor i%a&ini ale scenei#
)iste%ul -e 8i6uali6are PHI,) se s"eci(ic1 9n trei eta"e# Fn "ri%a eta"1 se
-e(inete siste%ul -e re(erin1 -e obser8are$ 9n cea -e=a -oua eta"1 se -e(inete
trans(or%area -e nor%ali6are, iar 9n ulti%a eta"1 se -e(inete trans(or%area (ereastr1=
"oart1#
3.1.)6e(inirea !i!temului de re(erin&# de
o%!er+are
)iste%ul -e re(erin1 -e obser8are se -e(inete "rin ur%1torii "ara%etri s"eci(icai
9n siste%ul -e re(erin1 uni8ersal:
Punctul -e obser8are :RP CView Reference !ointE#
Direcia nor%al1 la "lanul -e 8i6uali6are, :PN CView !lane 1ormalE#
?n 8ector a c1rui "roiecie -eter%in1 sensul -e "re6entare a i%a&inii,
:?P Cview up vectorE, i care nu "oate (i "aralel cu 8ectorul :PN#
Punctul :RP, 9%"reun1 cu 8ectorii :PN i :?: -e(inesc siste%ul -e re(erin1
-e obser8are ca un siste% orientat -u"1 re&ula %;inii -re"te, cu a3ele notate ?, :, N#
N este 8ectorul :PN, nor%al la "lanul -e 8i6uali6are, iar ?: este un "lan "aralel cu
"lanul -e 8i6uali6are CFi&# '#5E# Direcia -e obser8are este orientat1 9n sensul ne&ati8
al 8ectorului :PN#
Fn "lanul -e 8i6uali6are se -e(inete (ereastra -e 8i6uali6are, care este un
-re"tun&2i orientat cu laturile "aralele cu a3ele u i 8 ale unui siste% -e re(erin1
bi-i%ensional -e(init 9n acest "lan# 4cest siste% -e re(erin1 are ori&inea 9n "unctul 9n
care se "roiectea61 C"aralel cu -irecia :PNE centrul siste%ului -e re(erin1 -e
obser8are C:RPE "e "lanul -e 8i6uali6are# Direcia a3ei 8 este "aralel1 cu "roiecia
C-u"1 -irecia :PNE a 8ectorului :?: "e "lanul -e 8i6uali6are, ast(el 9nc;t 8ectorul
:?: s"eci(ic1 -ac1 scena este re-at1 9n -irecie 8ertical1 C9n sus sau 9n BosE sau "e
-irecie ori6ontal1 Cs"re -rea"ta sau s"re st;n&aE#
3.1.76e(inirea tran!(orm#rii de normalizare
Para%etrii trans(or%1rii -e nor%ali6are -e(inesc cores"on-ena 9ntre 8olu%ul
-e 8i6uali6are s"eci(icat 9n siste%ul -e re(erin1 obser8ator i 8olu%ul canonic 9n
siste%ul -e re(erin1 nor%ali6at# )e s"eci(ic1 ur%1torii "ara%etri -e -e(inire a
siste%ului -e re(erin1 nor%ali6at relati8 la siste%ul -e re(erin1 -e obser8are:
Ti"ul "roieciei C"aralel1 sau "ers"ecti81E#
Centrul -e "roiecie PRP C!ro0ection Reference !ointE#
Distana :PD CView !lane DistanceE a "lanului -e 8i6uali6are (a1 -e
centrul siste%ului -e re(erin1 -e obser8are, :RP#
Distana "lanului a"ro"iat CnearE i al "lanului -e"1rtat -e 8i6ibilitate CfarE
(a1 -e centrul siste%ului -e re(erin1 -e obser8are#
>i%itele (erestrei -e 8i6uali6are, u
%in
, u
%a3
, 8
%in
, 8
%a3
#
Planul -e 8i6uali6are este un "lan "aralel cu "lanul ?:, a(lat la -istana -at1
-e 8aloarea :PD (a1 -e centrul siste%ului -e obser8are, :RP# Fn "lanul -e 8i6uali6are
se -e(inete siste%ul -e coor-onate "lan u8, 9n care (ereastra -e 8i6uali6are este un
-re"tun&2i 9ntre li%itele u
%in
, u
%a3
, 8
%in
, 8
%a3
#:olu%ul -e 8i6uali6are se -e(inete "rin
-ou1 "lane "aralele cu "lanul -e 8i6uali6are a(late la -istanele near i far -e centrul
siste%ului -e re(erin1 obser8ator :RP i "lanele care trec "rin centrul -e "roiecie
PRP i laturile (erestrei -e 8i6uali6are#
Fig. .6 )"eci(icarea siste%ului -e 8i6uali6are PHI,) 9n "roieca "ers"ecti81#
Planul a"ro"iat

PRP
:RP
Planul -e
8i6uali6are
Fereastra -e
8i6uali6are
Planul
-e"1rtat
:
?
:PN
:PD
near
(ar
Cu
%a3
, 8
%a3
E
Cu
%in
, 8
%in
E
Direcia -e
obser8are
E3ist1 -ou1 "osibilit1i -e "o6iionare a centrului -e "roiecie PRP (a1 -e
(ereastra -e 8i6uali6are:
CaE Dac1 linia care unete centrul -e "roiecie cu centrul (erestrei -e
8i6uali6are este "aralel1 cu 8ectorul :PN, nor%al la "lanul -e 8i6uali6are,
atunci se obine o "roiecie "ers"ecti81 nor%al1, ec2i8alent1 celei
-escrise anterior CFi&# '#9CaEE#
CbE Dac1 "unctul PRP nu se a(l1 "e linia "aralel1 cu 8ectorul :PN care trece
"rin centrul (erestrei -e 8i6uali6are, atunci "roiecia este o "roiecie oblic1
CFi&# '#9CbEE#
I%"le%entarea siste%ului -e 8i6uali6are PHI,) se (ace "rin trans(or%1ri
&eo%etrice succesi8e, la (el ca 9n e3e%"lele "re6entate ";n1 acu%# Trebuie "reci6at c1
9n siste%ul PHI,) stan-ar- siste%ul -e re(erin1 -e obser8are ?:N este siste% -re"t,
iar 8olu%ul -e 8i6uali6are i -irecia -e obser8are sunt orientate c1tre a3a D N#
+ "ri%1 trans(or%are &eo%etric1 este o sc2i%bare -e siste% -e re(erin1 -in
siste%ul -e re(erin1 -e obser8are ?:N 9ntr=un siste% -e re(erin1 notat +3A6, cu
centrul 9n centrul -e "roiecie PRP i cu a3ele "aralele cu a3ele siste%ului ?:N Cs=a
ales aceast1 -enu%ire "entru si%"li(icarea notaiilor, -ar acest siste% nu este siste%ul
-e re(erin1 uni8ersal "entru care, 9n %o- obinuit, s=a (olosit notaia +3A6E# 4ceast1
trans(or%are se e(ectuea61 "rintr=o translaie in8ers1 celei -e(inite -e 8ectorul -e
"o6iie al "unctului PRP#
Ca ur%are a acestei trans(or%1ri se %o-i(ic1 cores"un61tor 8alorile :PD, near,
(ar, u
%in
, u
%a3
, 8
%in
, 8
%a3
# Fie -, n, (, 3
%in
, 3
%a3
, A
%in
, res"ecti8 A
%a3
, 8alorile re6ultate -u"1
translaie# 4ceste 8alori sunt nu%ere reale i "ot (i "o6iti8e sau ne&ati8e# 0atricea -e
trans(or%are -e nor%ali6are "ornin- -in acest siste% +3A6, se "oate -esco%"une 9n
"ro-us -e trei %atrice:
2
N
> 2
N1
2
N/
2
N"
PRP
:PN
Planul -e
8i6uali6are
Fereastra -e
8i6uali6are
CaE
PRP
:PN
Planul -e
8i6uali6are
Fereastra -e
8i6uali6are
CbE
Fig. .9 CaE Proiecia nor%al1 CbE Proiecie oblic1#
0atricele 2
N/
i 2
N1
au se%ni(icaii ase%1n1toare cu %atricele -e68oltate "entru
siste%ul -e 8i6uali6are "rece-ent# Cealalt1 trans(or%are co%"onent1, 2
N"
, este o
trans(or%are -e (or(ecare, "rin care linia central1 a 8olu%ului -e 8i6uali6are Ccea care
unete centrul -e "roiecie PRP cu centrul (erestrei -e 8i6uali6are, Fi&# '#1E se
su"ra"une cu a6a 6 a siste%ului#
Trans(or%area -e (or(ecare %o-i(ic1 8alorile coor-onatelor 3 i A cu 8alori
"ro"orionale cu 6#
Fig. ./" Trans(or%are -e (or(ecare 9n siste%ul -e 8i6uali6are stan-ar-#
D 6
A
43a 8olu%ului -e
8i6uali6are
:olu%ul -e
8i6uali6are
-
n
(
A
%in
A
%a3
Planul a"ro"iat
Planul -e
8i6uali6are
Planul
-e"1rtat
C, A
%a3
, -E
C, A
%in
, -E
PRP
D C3
%a3
P3
%in
EW2, CA
%a3
DA
%in
EW2, -
D C3
%a3
P3
%in
EW2, DCA
%a3
DA
%in
EW2, -
CaE )ituaia -u"1
translaia
"unctului PRP 9n ori&ine
CbE )ituaia -u"1
trans(or%area -e
(or(ecare# :olu%ul -e
8i6uali6are este si%etric,
i a3a acestuia su"ra"us1
"este a3a 6#
For(ecare
Este si%"lu -e obser8at c1 %atricea:
1
1
1
1
]
1

+
+

1
1
- 2 E A A C 1
- 2 E 3 3 C 1
%in %a3
%in %a3
N"
2
C'#1'E
e(ectuea61 o si%etri6are a 8olu%ului -e 8i6uali6are# De e3e%"lu, interseciile
%uc2iilor ori6ontale ale (erestrei -e 8i6uali6are cu "lanul 3 Q se trans(or%1 ast(el:
[ ] [ ]
T
mi m!x mi m!x
T
m!x
1 " 2 ) y y ( 2 ) x (x 1 " y 0 +
89
M
[ ] [ ]
T
mi m!x mi m!x
T
mi
1 " 2 ) y y ( 2 ) x (x 1 " y 0 +
89
M
4 -oua trans(or%are co%"onent1 este trans(or%area -e scalare 2
N/
, "rin care
8olu%ul -e 8i6uali6are este trans(or%at 9ntr=un 8olu% si%etric, cu un&2iul -e la 8;r(ul
"ira%i-ei -e 9:
1
1
1
1
]
1

1
1
E A A C - 2
E 3 3 C - 2
%in %a3
%in %a3
N/
2
C'#1/E
De e3e%"lu, trans(or%area co%"us1 2
N/
2
N"
a"licat1 "unctului -in centrul
(erestrei -e 8i6uali6are, 9l trans(or%1 9ntr=un "unct a(lat "e a3a 6 ne&ati81 C- este
ne&ati8E:
R S R S
T T
%in %a3 %in %a3
1 - Q 1 - 2 W E A P A C 2 W E 3 P 3 C
N" N/
2 2
?lti%a co%"onent1 a trans(or%1rii -e nor%ali6are trans(or%1 8olu%ul -e
8i6uali6are 9n 8olu% canonic C"araleli"i"e- -re"tun&2icE# 0atricea acestei
trans(or%1ri, 2
N1
, este ase%1n1toare %atricei -escrise 9n "ara&ra(ul "rece-ent, -ar se
ine sea%a -e (a"tul c1 "lanul -e 8i6ibilitate a"ro"iat nu %ai coinci-e cu "lanul -e
8i6uali6are:
1
1
1
1
]
1

1
nE n(WC( nE ( WC (
1
1
N1
2
C'#1.E
)iste%ul nor%ali6at ast(el -e(init este un siste% -e re(erin1 st;n&# Fn acest siste%
se e(ectuea61 o"eraiile -e -ecu"are a obiectelor, -u"1 care sec8ena trans(or%1rilor
necesare "entru &enerarea i%a&inii continu1 cu trans(or%area 9n siste%ul -e re(erin1
ecran !D#
Si.&em)l (e referi$- ecra$ 3,
Trans(or%area 9n siste%ul -e re(erin1 ecran !D e(ectuea61 o cores"on-en1 9ntre
(ereastra -in "lanul -e 8i6uali6are i 6ona -e a(iare alocat1 "e -is"laA nu%it1 "oart1
-e a(iare CviewportE# Fereastra -e 8i6uali6are este -e(init1 9ntr=un siste% -e re(erin1
bi-i%ensional 9n "lanul 6
N
Q al siste%ului -e re(erin1 nor%ali6at# Poarta -e a(iare
este -e(init1 9ntr=un siste% -e re(erin1 bi-i%ensional 9n "lanul 6
)
Q al siste%ului -e
re(erin1 ecran !D i este, 9n &eneral, o 6on1 rectan&ular1 -e -i%ensiuni e&ale cu
nu%1rul -e "i3eli cores"un61tori "e ori6ontal1 i "e 8ertical1 a 6onei a(iate# CFi&#
'#11E# Trans(or%area -in siste%ul -e re(erin1 nor%ali6at 9n siste%ul ecran !D las1
coor-onata 6 ne%o-i(icat1# )iste%ul -e re(erin1 ecran !D ast(el -e(init este un siste%
-e re(erin1 st;n&, la (el ca i siste%ul -e re(erin1 nor%ali6at#
Pentru -e(inirea trans(or%1rii 9n siste%ul -e re(erin1 ecran !D, se calculea61 %ai
9nt;i coor-onatele centrului C
F
al (erestrei i ale centrului C
P
al "orii:
2 E A A C A $ 2 E 3 3 C 3
2 E A A C A $ 2 E 3 3 C 3
%in P %a3 P CP %in P %a3 P CP
%in %a3 CF %in %a3 CF
+ +
+ +
C'#17E
Cores"on-ena -intre coor-onatele unui "unct PC3
N
, A
N
E -in (ereastr1 cu ale
"unctului PZC3
)
, A
)
E 9n "oarta -e a(iare se (or%ulea61 %ate%atic ast(el:
Fig. .// Trans(or%area -e la (ereastra -e 8i6uali6are la "oarta -e a(iare#
3
N
A
N
3
%in
3
)
A
)
3
%a3
A
%in
A
%a3
3
P%a3
A
P%a3
A
P%in
3
P%in
P
A
N
3
N
PZ
3
)
A
)
C
F A
CF
3
CF
3
CP
A
CP
C
P
%in %a3
%in P %a3 P
CF )
CP )
%in %a3
%in P %a3 P
CF N
CP )
A A
A A
A A
A A
$
3 3
3 3
3 3
3 3


)e -e(inesc (actorii -e scalare ai trans(or%1rii:
1 s
A A
A A
s
3 3
3 3
s
6
%in %a3
%in P %a3 P
A
%in %a3
%in P %a3 P
3

C'#15E
Re6ult1:
N )
CF A CP N A CF A CP )
CF 3 CP N 3 CF N 3 CP )
6 6
A s A A s E A A C s A A
3 s 3 3 s E 3 3 C s 3 3

+ +
+ +
C'#19E
)e "oate -e-uce %atricea -e trans(or%are ecran !D "rin co%"unerea a trei
trans(or%1ri succesi8e# 0ai 9nt;i se e3ecut1 o translaie, ast(el ca centrul C
F
al
(erestrei s1 aBun&1 9n ori&ine, -eci cu %atricea -e translaie *CD3
CF
, DA
CF
,E#
Fereastra centrat1 9n ori&ine se scalea61 cu (actorii -e scar1 s
3
, s
A
, -e(inii -e relaia
'#15, ast(el 9nc;t (ereastra s1 aBun&1 la -i%ensiunea "orii, iar coor-onata 6 se las1
ne%o-i(icat1# 0atricea -e scalare este -eci SCs
3
, s
A
, s
6
E# ?lti%a trans(or%are necesar1
este o translaie, "rin care centrul "orii este a-us 9n "unctul C
P
, -eci cu %atricea -e
translaie *C3
CP
, A
CP
, E# Re6ult1 %atricea -e trans(or%are -in siste%ul -e re(erin1
nor%ali6at 9n siste%ul -e re(erin1 ecran !D:
1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

1
1
1
1
]
1

N
N
N
N
)
)
)
)
CF A CP A
CF 3 CP 3
CF
CF
A
3
CP
CP
L
<
\
N
L
<
\
N
$
1
1
A s A s
3 s 3 s
1
1
A 1
3 1
1
1
s
s
1
1
A 1
3 1
NS NS
NS
2 2
2
C'#2E
Din aceste relaii re6ult1 <
)
Q <
N
i L
)
Q L
N
# Fn siste%ul -e re(erin1 ecran !D se
trece -e la coor-onatele o%o&ene N
)
, \
)
, <
)
, L
)
, la coor-onatele tri-i%ensionale 3
)
,
A
)
, 6
)
"rin 9%"1rirea cu L
)
#
Planul 6
)
Q -in siste%ul -e re(erin1 ecran !D este "lanul -e "roiecie#
Coor-onatele 3
)
i A
)
re"re6int1 coor-onatele "roieciei orto&ra(ice 9n "lanul 6
)
Q
Ccare este "lanul -e "orii -e a(iareE# Trans(or%area -e "roiecie "ers"ecti81 -in
siste%ul -e re(erin1 -e obser8are a -e8enit o trans(or%are -e "roiecie orto&ra(ic1 9n
siste%ul -e re(erin1 ecran !D# Coor-onata 6
)
9n siste%ul -e re(erin1 ecran !D este
utili6at1 9n al&orit%ii -e eli%inare a su"ra(eelor ascunse# :olu%ul -e 8i6uali6are 9n
siste%ul ecran !D este un "araleli"i"e- -re"tun&2ic cu ba6a un -re"tun&2i -e
-i%ensiuni e&ale cu -i%ensiunile "orii a(iate i 9n1li%ea e&al1 cu 1 C6
)
R,1SE
CFi&# '#12E#
,ec)parea o3iec&elor
Fntr=un siste% 9n care este -e(init "unctul -e obser8are i un 8olu% -e
8i6uali6are, nu interesea61 -ec;t obiectele -in interiorul acestui 8olu%, a c1ror
"roiecie se &enerea61 9n (ereastra -e 8i6uali6are# De aceea, 9n 8i6uali6area scenelor
tri-i%ensionale, se e3ecut1 o"eraia -e -ecu"are la 8olu%ul -e 8i6uali6are, "rin care
se rein nu%ai obiectele sau "1rile -in obiecte cu"rinse 9n acest 8olu%#
+"eraia -e -ecu"are la 8olu%ul -e 8i6uali6are "oate (i -e(init1 ast(el: (iin-
-at un obiect tri-i%ensional i un 8olu% -e 8i6uali6are, "ot e3ista trei "osibilit1i:
+biectul este co%"let 9n interiorul 8olu%ului i, 9n acest ca6, el este
"roiectat 9n (ereastr1 i re-at "e -is"laA#
+biectul este co%"let 9n a(ara 8olu%ului -e 8i6uali6are i, 9n acest ca6, el
"oate (i i&norat#
+biectul intersectea61 8olu%ul -e 8i6uali6are$ 9n acest ca6 se -ecu"ea61
obiectul i "artea 8i6ibil1 Ccu"rins1 9n interiorul 8olu%uluiE este "roiectat1
9n (ereastra -e 8i6uali6are i re-at1 "e -is"laA#
Fig. ./1 :olu%ul -e 8i6uali6are 9n siste%ul -e re(erin1 ecran !D
6
)
3
)
A
)
1

Poarta -e
a(iare
Decu"area obiectelor tri-i%ensionale la 8olu%ul -e 8i6uali6are se e3ecut1 9n siste%ul -e re(erin1
nor%ali6at 9n coor-onate o%o&ene, 9nainte -e 9%"1rirea cu L#
+"eraia -e -ecu"are 9n s"aiul tri-i%ensional re"re6int1 o e3tin-ere a
-ecu"1rii 9n "lanul bi-i%ensional, -e aceea se 8a "re6enta %ai 9nt;i -ecu"area 9n "lan#
6e"uparea 4n plan
Fiin- -at un "oli&on oarecare 9n "lan i o re&iune -e -ecu"are, "roble%a
-ecu"1rii "oli&onului este -e a reine nu%ai acea "arte -in "oli&on care se a(l1 9n
interiorul re&iunii -e -ecu"are# )e consi-er1 ca6ul cel %ai (rec8ent 9nt;lnit, 9n care
re&iunea -e -ecu"are este un -re"tun&2i cu laturile "aralele cu a3ele -e coor-onate#
4ceast1 re&iune -e -ecu"are cores"un-e (erestrei -e 8i6uali6are#
0aBoritatea al&orit%ilor -e -ecu"are, at;t 9n "lan c;t i 9n s"aiu, se ba6ea61
"e al&orit%ul -e -ecu"are )ut2erlan-=Ho-&%an# 4l&orit%ul )ut2erlan-=Ho-&%an
9%"arte "lanul bi-i%ensional 9n nou1 re&iuni, -u"1 "o6iia (a1 -e re&iunea
-re"tun&2iular1 -e -ecu"are -at1 "rin ecuaiile a "atru -re"te: 3 Q 3
%in
$ 3 Q 3
%a3
$
A Q A
%in
$ A Q A
%a3
# CFi&# '#1!E#
Fiec1rei re&iuni 9i cores"un-e un co- -e 8i6ibilitate Ccunoscut sub nu%ele -e
co- )ut2erlan-=Co2enE re"re6entat "e ' bii, b

, b
1
, b
2
, b
!
, -e(inii ast(el:
b

Q se%nC3 D 3
%in
E
b
1
Q se%nC3
%a3
D3E
b
2
Q se%nCA D A
%in
E
b
!
Q se%nCA
%a3
DAE
Fn continuare co-urile -e 8i6ibilitate se re"re6int1 ca o sec8en1 -e ci(re
binare#
Fig. ./3 Co-urile -e 8i6ibilitate )ut2erlan-=Co2en#
"""" ""/"
"/""
"""/
/"""
/""/
"/"/
"//"
/"/"
3 Q 3
%in
3 Q 3
%a3
A Q A
%a3
A Q A
%in
A
3
?n "oli&on oarecare -in "lan "oate (i co%"let inclus 9n re&iunea -e -ecu"are,
"oate (i co%"let 9n a(ara re&iunii -e -ecu"are sau o "oate intersecta# Folosin- co-urile
-e 8i6ibilitate ale 8;r(urilor "oli&onului se "ot i-enti(ica -irect C(1r1 s1 se e3ecute
calcule -e interseciiE -ou1 situaii ale "oli&onului (a1 -e re&iunea -e -ecu"are:
Acceptare sigur# Dac1 toate 8;r(urile "oli&onului se a(l1 9n re&iunea -e
-ecu"are, atunci "olino%ul este 8i6ibil 9n 9ntre&i%e# Fie c1, c2, T#, cn,
co-urile -e 8i6ibilitate ale celor n 8;r(uri ale "oli&onului i )C re6ultatul
reuniunii acestor co-uri Co"eraia +R inclusi8E: )C Q c1[ c2 [T[ cn# Dac1
)C Q , atunci "oli&onul este si&ur 8i6ibil CFi&# '#1' CaEE#
Re0ec(ie sigur# Dac1 toate 8;r(urile unui "oli&on se a(l1 9ntr=unul -in
se%i"lanele in8i6ibile C3 _ 3
%in
$ 3 ` 3
%a3
$ A _ A
%in
$ A ` A
%a3
#E, atunci tot
"oli&onul este si&ur in8i6ibil# Pentru e(ectuarea testului -e reBecie si&ur1
se calculea61 intersecia co-urilor -e 8i6ibilitate Co"eraia 4NDE:
PC Q c1 a c2 aTa cn# Dac1 PC are 8aloare -i(erit1 -e , atunci
"oli&onul este si&ur in8i6ibil -eoarece toate "unctele se a(l1 9n se%i"lanul
in8i6ibil cores"un61tor unui bit -i(erit -e -in co-ul PC CFi&# '#1' CbEE#
Dac1 nu este 9n-e"linit1 nici con-iia -e acce"tare si&ur1, nici con-iia -e reBecie si&ur1, atunci
-ecu"area se calculea61 "rin intersecia laturilor "oli&onului cu -re"tele care %1r&inesc re&iunea -e
-ecu"are CFi&# '#1' CcEE#
Drea"ta Cin(init1E cores"un61toare unei laturi a re&iunii -e -ecu"are 9%"arte "lanul 9n -ou1 se%i"lane:
se%i"lanul Cre&iuneaE 8i6ibil, care se a(l1 -e aceeai "arte a -re"tei ca i re&iunea -e -ecu"are, i
se%i"lanul in8i6ibil, care se a(l1 -e "artea o"us1 (a1 -e re&iunea -e -ecu"are# De e3e%"lu, "entru latura
3 Q 3%in, se%i"lanul 3 _ 3%in, este in8i6ibil iar se%i"lanul 3 3%in este 8i6ibil#
Fn al&orit%ul -e -ecu"are )ut2erlan-=Ho-&%an, -ecu"area unui "oli&on (a1 -e o re&iune -at1 se
e(ectuea61 9ntr=un nu%1r -e "ai e&al cu nu%1rul -e laturi ale re&iunii -e -ecu"are# Fn (iecare "as se
-ecu"ea61 "oli&onul Ciniial sau "ro8enit -intr=un "as anteriorE cu o latur1 a re&iunii -e -ecu"are: se
eli%in1 acea "oriune -in "oli&on care se a(l1 9n se%i"lanul in8i6ibil cores"un61tor laturii i se reine
nu%ai "oriunea 8i6ibil1#
CaE 4cce"tare si&ur1
)C Q
11
1
ReBecie si&ur1
PC Q 1
1
11
11
Decu"are "rin intersecie
)C Q 1111, PC Q
1
1
1
1
Poli&onul se re"re6int1 "rintr=o list1 or-onat1 -e 8;r(uri :1:2T:n, i (iecare "erec2e -e -ou1 8;r(uri
consecuti8e C:i : iP1E, "entru i _ n, i C:n:1E re"re6int1 o latur1 a "oli&onului ca un se&%ent -e -rea"t1
orientat C8ectorE#
Fn (iecare "as -e -ecu"are se "ornete -e la un "oli&on -at "rintr=o list1 or-onat1 -e 8;r(uri i se creea61
lista 8;r(urilor "oli&onului re6ultat "rin -ecu"are relati8 la -rea"ta su"ort a unei laturi a re&iunii -e
-ecu"are# Iniial, lista 8;r(urilor "oli&onului re6ultat este consi-erat1 8i-1# ?n se&%ent orientat :i:B se
"oate a(la 9ntr=una -in "atru situaii "osibile (a1 -e o latur1 -e -ecu"are CFi&# '#1/E#
CaE Dac1 a%bele 8;r(uri se a(l1 9n se%i"lanul 8i6ibil cores"un61tor laturii -e -ecu"are, atunci
se a-au&1 9n list1 8;r(ul :B CFi&# '#1/ CaEE#
CbE Dac1 a%bele 8;r(uri se a(l1 9n se%i"lanul in8i6ibil, atunci nu se a-au&1 nici un 8;r( 9n list1
CFi&# '#1/ CbEE#
CcE Dac1 "ri%ul 8;r( al se&%entului C:iE se a(l1 9n se%i"lanul 8i6ibil, iar al -oilea C:BE se a(l1
9n se%i"lanul in8i6ibil Cse&%entul este orientat -e la se%i"lanul 8i6ibil c1tre se%i"lanul
in8i6ibilE, atunci se calculea61 intersecia I -intre se&%ent i -rea"ta -e -ecu"are i se
a-au&1 intersecia I 9n list1 CFi&# '#1/CcEE#
C-E Dac1 "ri%ul 8;r( al se&%entului C:iE se a(l1 9n se%i"lanul in8i6ibil, iar al -oilea C:BE se
a(l1 9n se%i"lanul 8i6ibil Cse&%entul este orientat -e la se%i"lanul in8i6ibil c1tre
se%i"lanul 8i6ibilE, atunci se calculea61 intersecia I -intre se&%ent i -rea"ta -e -ecu"are
9n lista 8;r(urilor se a-au&1 intersecia I i a"oi 8;r(ul :B CFi&# '#1/ C-EE#
Fn "ri%ul "as, "oli&onul iniial :1:2T:n se -ecu"ea61 relati8 la latura 3 Q 3%in "rin "arcur&erea 9n
or-ine a tuturor se&%entelor orientate ale "oli&onului CFi&# '#1.CaEE# Poli&onul re6ultat se -ecu"ea61
relati8 la ur%1toarea latur1 a re&iunii -e -ecu"are CFi&# '#1. CbEE# Du"1 "arcur&erea unui nu%1r -e "ai
e&al cu nu%1rul -e laturi ale re&iunii -e -ecu"are se obine "oli&onul co%"let -ecu"at CFi&# '#1.C-EE#
Fig. ./ Teste -e 8i6ibilitate "entru -ecu"area 9n "lan#
)e%i"lanul
8i6ibil
:
i
:
B
)e%i"lanul
in8i6ibil
CaE :
i
8i6ibil,
:
B
8i6ibil
)e a-au&1 :
B

)e%i"lanul
8i6ibil
:
i
:
B
)e%i"lanul
in8i6ibil
CbE :
i
in8i6ibil,
:
B
in8i6ibil
Nu se a-au&1
nici un 8;r(
)e%i"lanul
8i6ibil
:
i
:
B
)e%i"lanul
in8i6ibil
C-E :
i
in8i6ibil,
:
B
8i6ibil
)e a-au&1 I, :
B
I
)e%i"lanul
8i6ibil
:
i
:
B
)e%i"lanul
in8i6ibil
CcE :
i
8i6ibil,
:
B
in8i6ibil
)e a-au&1 I
I
Fig. ./! Intersecia -intre o latur1 a "oli&onului i
o -rea"t1 -e -ecu"are#
)e%i"lanul
8i6ibil
:'
A Q A
%in
)e%i"lan
in8i6ibil
I
'
)e%i"lan
8i6ibil
:
!
:
1
I
1
I
2
Poli&onul I
2
:
!
I
!
I
'
:
1
-ecu"at
9n se%i"lanul A A
%in
I
1
I
2
I
!
I
.
I
/
A Q A
%a3
)e%i"lan
in8i6ibil
I
'
)e%i"lan
8i6ibil
I
/
:
1
I
1
I
2
Poli&onul I
2
I
/
I
.
I
!
I
'
:
1
-ecu"at
9n se%i"lanul A A
%in
I
1
I
2
I
!
I
.
I
5
I
7
Fig. ./7 CcE, C-E Decu"area relati8 la laturile ori6ontale ale re&iunii -e -ecu"are
9n al&orit%ul )ut2erlan-=Ho-&%an#
Poli&onul re6ultat este: I
/
I
.
I
!
I
7
I
5
I
1
I
2
3 Q 3
%in
)e%i"lan
in8i6ibil
)e%i"lan
8i6ibil
:
!
:
2
:
1
I
1
I
2
Poli&onul :
1
:
2
:
!
:
'
-ecu"at
9n se%i"lanul 3 3
%in
3 Q 3
%in
)e%i"lan
8i6ibil
:
'
)e%i"lan
in8i6ibil
:
!
:
1
I
1
I
2
Poli&onul I
1
I
2
:
!
:
'
:
1
-ecu"at
9n se%i"lanul 3 3
%a3
I
'
I
!
Fig. ./7 CaE, CbE Decu"area relati8 la laturile 8erticale ale re&iunii -e -ecu"are
9n al&orit%ul )ut2erlan-=Ho-&%an#
Fn Fi&#'#1. este ilustrat al&orit%ul -e -ecu"are )ut2erlan-=Ho-&%an al unui "oli&on con8e3 relati8 la o
re&iune -e -ecu"are rectan&ular1, -ar acest al&orit% "oate (i (olosit 9n ca6ul &eneral, al -ecu"1rii oric1rui
ti" -e "oli&on Ccon8e3, conca8 sau cu &1uriE relati8 la o re&iune -e -ecu"are oarecare#
Decu"area C9n "lan sau 9n s"aiuE "oate (i e3ecutat1 9n orice o"eraie care necesit1 construirea -e
"oli&oare sau obiecte tri-i%ensionale noi "rin calcul, "ornin- -e la obiecte -e ba61, care sunt intersectate
cu alte obiecte sau su"ra(ee#
Fn &enerarea i%a&inilor bi-i%ensionale, -ecu"area, ca o"eraie co%"onent1 a sec8enei -e trans(or%1ri
-e 8i6uali6are, se e(ectuea61 relati8 la (ereastra -e 8i6uali6are, care este o re&iune rectan&ular1#
Poli&oanele sau liniile re6ultate, li%itate la -i%ensiunea (erestrei, sunt trans(or%ate 9n siste%ul -e
re(erin1 al "orii -e a(iare i re-ate "e -is"laA# Dac1 nu se e(ectuea61 -ecu"area "oli&oanelor la li%itele
(erestrei, coor-onatele 8;r(urilor 9n siste%ul -e re(erin1 al "orii -e a(iare -e"1esc li%itele "orii, iar
re6ultatul con8ersiei -e rastru este incorect#
)e "oate e(ectua o -ecu"are a "oli&oanelor i liniilor i 9n "oarta -e a(iare, "rin testul in-i8i-ual al
coor-onatelor (iec1rui "i3el i reBectarea acelora care nu se 9nca-rea61 9n li%itele "orii -e a(iare# 4cesta
este 9ns1 un "roce-eu -eosebit -e costisitor ca ti%" -e e3ecuie i nu se "une "roble%a utili61rii lui 9n
&ra(ica interacti81 i 9n realitatea 8irtual1#
6e"uparea !upra(e&elor relati+ la
+olumul de +izualizare
4l&orit%ii -e -ecu"are a obiectelor 9n s"aiul tri-i%ensional "ot (i consi-erai ca o e3tensie a
al&orit%ilor -e -ecu"are -in "lan, "rin 9nlocuirea re&iunii -e -ecu"are "lane cu un 8olu% -e -ecu"are i
e(ectuarea calculelor -e intersecie a unei su"ra(ee 9n s"aiu cu "lanele 8olu%ului -e -ecu"are#
Decu"area la 8olu%ul -e 8i6uali6are este un ca6 "articular al -ecu"1rii s"aiale, 9n care 8olu%ul -e
-ecu"are este 8olu%ul -e 8i6uali6are Ctrunc2iul -e "ira%i-1 -e 8i6uali6areE -e(init 9n siste%ul -e re(erin1
-e obser8are#
Fn continuare se anali6ea61 %o-ul -e e3ecuie a -ecu"1rii "entru siste%ul -e 8i6uali6are -e(init 9n
sectiunea "rece-ent1 CFi&# '#/E i se 8a e8i-enia -e ce -ecu"area se e3ecut1 cel %ai e(icient 9n siste%ul
-e re(erin1 nor%ali6at, a(ir%aie care nu a (ost 9nc1 %oti8at1#
:olu%ul -e -ecu"are se -e(inete "rin ase "lane 9n siste%ul -e re(erin1 -e obser8are, ale c1ror ecuaii
sunt -ate -e relaiile '#9#
Fiecare "lan 9%"arte s"aiul tri-i%ensional 9n -ou1 se%is"aii, se%is"aiul 8i6ibil, a(lat -e aceeai "arte a
"lanului ca i 8olu%ul -e -ecu"are, i se%is"aiul in8i6ibil, 9n "artea o"us1 a 8olu%ului# Decu"area unei
su"ra(ee 9n ra"ort cu acest "lan se e(ectuea61 ase%1n1tor cu -ecu"area unui "oli&on (a1 -e o latur1 -e
-ecu"are: (iecare latur1 orientat1 intro-uce 6ero, unul sau -ou1 8;r(uri 9n lista se 8;r(uri a su"ra(eei
re6ultate, 9n (uncie -e orientare i -e intersecia ei cu "lanul# ?n 8;r( este 8i6ibil 9n ra"ort cu un "lan -ac1
se a(l1 9n se%is"aiul 8i6ibil -eter%inat -e "lanul -at# De e3e%"lu, un 8;r( este 8i6ibil 9n ra"ort cu "lanul
- 26 Q A
: :
, -ac1 A: 26:W- CFi&# '#17 CaEE#
Fn %o- ase%1n1tor, -ecu"area relati8 la celelate "lane ale 8olu%ului -e -ecu"are necesit1 testele:
# z ; " z ; z
"
$
x ; z
"
$
x ; z
"
%
y
V V V V V V V V
C'#21E
4ceste teste i%"lic1 o"eraii asu"ra coor-onatelor 8;r(urilor, o"eraii care 9n (or%1 %atriceal1 9nsea%n1
9n%ulirea cu %atricea 2N/, co%"onent1 a %atricei -e nor%ali6are# 4a cu% se "oate obser8a 9n Fi&#
'#17CbE, %atricea 2N/ trans(or%1 siste%ul -e re(erin1 -e obser8are 9ntr=un siste% -e re(erin1 +Z3ZAZ6Z,
9n care 8olu%ul -e 8i6uali6are C-eci 8olu%ul -e -ecu"areE este un trunc2i -e "ira%i-1 re&ulat1 cu un&2iul
-e la 8;r(ul "ira%i-ei -e 9# Relaiile '#21 -e testare a 8i6ibilit1ii unui "unct 9n siste%ul -e re(erin1 -e
obser8are sunt ec2i8alente cu ur%1toarele relaii 9n siste%ul +Z3ZAZ6Z:
3Z 6Z$ 3Z D 6Z$ AZ 6Z$ AZ D 6Z$ 6Z ($ 6Z - C'#22E
Dac1 s=ar e3ecuta -ecu"area 9n siste%ul -e re(erin1 inter%e-iar +Z3ZAZ6Z, atunci toate "unctele -in
siste%ul -e re(erin1 -e obser8are se trans(or%1 %ai 9nt;i cu %atricea 2N/, "entru trecerea 9n siste%ul
+Z3ZAZ6Z, a"oi se e3ecut1 -ecu"area, iar -u"1 -ecu"are, 8;r(urile 8i6ibile se trans(or%1 cu %atricea 2N1,
"entru trecere 9n siste%ul -e re(erin1 nor%ali6at i "roiecie 9n (ereastra -e 8i6uali6are CFi&# '#17CcEE#
4"licarea se"arat1 a -ou1 trans(or%1ri, %ai 9nt;i "rin %atricea 2N/ i a"oi "rin %atricea 2N1 este
costisitoarte i nenecesar1, -at (iin- c1 -ecu"area se "oate (ace -irect 9n siste%ul nor%ali6at CFi&# '#17
CcEE#
A
:
Q 26
:
W-
A
:
6
:
A
:
Q D 26
:
W-
6
:
Q - 6
:
Q (
A
Z
Q 6
Z
A
Z
6
Z
6
Z
Q - 6
Z
Q (
1
1
1
1
]
1

1 0 0 0
0 1 0 0
0 0 " % 0
0 0 0 " $
81
M
6
N
A
N
6
N
Q 1 6
N
Q
A
N
Q D 1
A
N
Q 1
CaE CbE
1
1
1
1
]
1

0 1 0 0
") & (# #" & ) " & # ( # 0 0
0 0 1 0
0 0 0 1
82
M
CcE
CaE :olu%ul -e -ecu"are
9n sist# re(# -e obser8are
CbE :olu%ul -e -ecu"are
9n sist# +Z3ZAZ6Z
CcE :olu%ul -e -ecu"are
9n sist# re(# nor%ali6at
Fig. ./7 :olu%ul -e -ecu"are 9n siste%ul -e 8i6uali6are#
C"roiecie 9n "lanul 3 Q E
Fn siste%ul -e re(erin1 nor%ali6at 8olu%ul -e -ecu"are este un "araleli"i"e- -re"tun&2ic cu su"ra(eele
"aralele cu "lanele siste%ului -e coor-onate# Testele -e 8i6ibilitate ale unui "unct 9n ra"ort cu "lanele
8olu%ului -e -ecu"are sunt:
3N 1$ 3N D 1$ AN 1$ AN D 1$ 6N 1$ 6N $ C'#2!E
4ceste teste se "ot e(ectua -irect 9n coor-onatele o%o&ene 9n siste%ul nor%ali6at, (1r1 s1 %ai (ie necesar1
9%"1rirea cu LN:
NN LN $ NN D LN $
\N LN $ \N D LN $ C'#2'E
<N LN $ <N $
Co-ul -e 8i6ibilitate C al unui 8;r( 9n coor-onate nor%ali6ate o%o&ene se e3"ri%1 "e . bii i
(iecare bit se "o6iionea61 9n (uncie -e re6ultatul unuia -in testele -in relaia '#2':
b

Q se%nCN
N
D L
N
E
b
1
Q se%nCL
N
DN
N
E
b
2
Q se%nC\
N
D L
N
E
b
!
Q se%nCL
N
D\
N
E
b
'
Q se%nC<
N
D L
N
E
b
/
Q se%nC<
N
E
)"aiul o%o&en nor%ali6at se 9%"arte 9n 27 -e re&iuni -u"1 "o6iia lor (a1 -e "lanele care
-e(inesc 8olu%ul canonic -e 8i6uali6are# Fn interiorul 8olu%ului canonic, toate "unctele au co-ul -e
8i6ibilitate cu toi biii e&ali cu CC Q E# Fn toate celelalte re&iuni, co-ul -e 8i6ibilitate este -i(erit
-e , a8;n- unul sau %ai %uli bii e&ali cu 1#
4l&orit%ul )ut2erlan-=Ho-&%an -e -ecu"are 9n s"aiu se -es(1oar1 9n %o- ase%1n1tor cu
al&orit%ul -e -ecu"are 9n "lan# Pentru o su"ra(a1 -at1 "rin 8;r(urile ei 9n s"aiu, -ecu"area relati8 la un
8olu%ul -at "rin ecuaiile "lanelor sale se e(ectuea61 9n %o-ul ur%1tor:
C1E )e calculea61 co-urile -e 8i6ibilitate ale 8;r(urilor su"ra(eei#
C2E )e e(ectuea61 testele -e acce"tare i reBecie si&ur1# Pentru su"ra(eele care nu 9n-e"linesc
nici unul -in aceste teste se continu1 cu -ecu"area "rin intersecia cu 8olu%ul -e -ecu"are#
C!E Decu"area "rin intersecie a unei su"ra(ee se e(ectuea61 9ntr=un nu%1r -e "ai e&al cu
nu%1rul -e "lane ale 8olu%ului -e -ecu"are# Fn (iecare "as se obine o nou1 su"ra(a1, -in
care a (ost eli%inat1 "oriunea in8i6ibil1 9n ra"ort cu "lanul -e -ecu"are res"ecti8#
Du"1 e(ectuarea -ecu"1rii, se calculea61 coor-onatele 3N, AN, 6N ale 8;r(urilor su"ra(eelor 8i6ibile
re6ultate C"rin 9%"1rirea cu LNE, iar toate celelalte 8;r(uri Cale su"ra(eelor in8i6ibileE sunt i&norate# 4cest
lucru 9nsea%n1 c1 o"eraia -e 9%"1rire o%o&en1 se e3ecut1 "entru un nu%1r strict necesar -e 8;r(uri,
ceea ce re"re6int1 un c;ti& 9n 8ite6a -e e3ecuie#
)e "une "roble%a -ac1 nu ar (i %ai si%"lu s1 (ie e(ectuat1 -ecu"area 9n "lan, -eci -u"1 calculul
"roieciilor su"ra(eelor, -at (iin- c1 al&orit%ul -e -ecu"are 9n "lan este %ai si%"lu# 4cest lucru ar
9nse%na ca toate su"ra(eele s1 (ie "roiectate "e "lanul -e 8i6uali6are, -u"1 care s1 se e(ectue6e -ecu"area
relati8 la (ereastra -e 8i6uali6are# 4ceast1 soluie este 9ns1 inacce"tabil1, -atorit1 (a"tului c1 9n (ereastra
se "roiece se "roiectea61 at;t "unctele C8;r(uri ale su"ra(eelorE a(late 9n 8olu%ul -e 8i6uali6are, c;t i
cele a(late 9ntr=un 8olu% si%etric cu acesta (a1 -e "lanul 6: Q , care se a(l1 9n s"atele obser8atorului#
Tratarea tuturor acestor su"ra(ee "roiectate 9n (ereastra -e 8i6uali6are -ar in8i6ibile, consu%1 un ti%" -e
e3ecuie 9n %o- inutil# De aceea, -ecu"area obiectelor la 8olu%ul -e 8i6uali6are nu se "oate e3ecuta
corect i e(icient -ec;t 9n s"aiul tri-i%ensional, i anu%e 9n coor-onate nor%ali6ate o%o&ene#
Eliminarea o%ie"telor a(late 4n
e3teriorul
+olumului de +izualizare
)e "oate -etalia %o-ul -e e3ecuie a -ecu"1rii relati8 la 8olu%ul -e 8i6uali6are# 4l&orit%ul -e ba61 se
re(er1 la -ecu"area unei su"ra(ee 9n s"aiu, -at1 ca o succesiune -e 8;r(uri i, i%"licit, o succesiune -e
se&%ente -e -rea"t1 orientate Claturile su"ra(eeiE, relati8 la un 8olu% -e -ecu"are, care este 8olu%ul
canonic 9n coor-onate o%o&ene nor%ali6ate#
Decu"area "unctelor 9n s"aiu este un si%"lu test -e 8i6ibilitate Cecuaiile '#2'E, iar -ecu"area unei linii
este un ca6 "articular Ccu n Q 2E al al&orit%ului -e -ecu"are a unei su"ra(ee#
Decu"area unui obiect tri-i%ensional, %o-elat ca o colecie -e (ee Csu"ra(ee "laneE se re-uce la
-ecu"area (iec1rei (ee 9n "arte, iar obiectul re6ultat este co%"us -in toate (eele sale 8i6ibile i "1rile
re6ultate "rin -ecu"are#
+ cretere a e(icienei 9n o"eraia -e -ecu"are se "oate obine (olosin- teste -e reBecie i -e acce"tare
si&ur1 nu nu%ai "entru (iecare su"ra(a1 9n "arte, -ar i "entru un obiect tri-i%ensional 9n 9ntre&i%e#
Proce-eul -e calcul al reuniunii C)CE i al interseciei CPCE co-urilor -e 8i6ibilitate ale unui obiect
tri-i%ensional -e"in-e -e %o-ul -e re"re6entare al acestuia# Pentru obiectele tri-i%ensionale %o-elate
"rin (ee -ate ca list1 -e in-eci la 8;r(uri se calculea61 -irect 8alorile )C i PC ale celor N 8;r(uri ale
obiectului# Pentru obiecte re"re6entate "rin (ee se"arate, se "ot colecta co-urile -e 8i6ibilitate ale (eelor
co%"onente i calcula reunuinea )C i intersecia PC# Testul -e acce"tare sau reBecie si&ur1 C&''in(E
a unui obiect tri-i%ensional este "re6entat 9n "seu-oco- ase%1n1tor li%baBului C ast(el:
int Cullin&CEU
PC Q 3!F$
)C Q $
(or CiQ$ i_N$ iPPEU
)C Q )C [ Ci$
PC Q PC a Ci$
V
i( CPCE U
+biect si&ur in8i6ibi, 8a (i reBectat$
return $
V
else i( C)CEU
+biect si&ur 8i6ibil 9n 9ntre&i%e$
Nu se 8a %ai testa (iecare su"ra(a1$
return 1$
V
else U
)e 8a -ecu"a (iecare su"ra(a1$
return D1$
V
V
Ce anu%e se e3ecut1 9n (iecare -in situaii -e"in-e, e8i-ent, -e %o-ul -e or&ani6are al "ro&ra%ului i -e
biblioteca &ra(ic1 (olosit1# Fn orice ca6, -ac1 obiectul este si&ur in8i6ibil, atunci se aban-onea61 toate
o"eraiile re(eritoare la acest obiect i se trece la obiectul ur%1tor#
)elecia obiectelor, a-ic1 i-enti(icarea obiectelor "otenial 8i6ibile "entru re-area i%a&inii acestora i
eli%inarea obiectelor si&ur in8i6ibile CcullingE, este o resurs1 "uternic1 -e cretere a e(icienei -e re-are a
scenelor 8irtuale# Fn scenele 8irtuale -e -i%ensiuni %ari, care conin un nu%1r %are -e obiecte, 9n (iecare
ca-ru -e i%a&ine sunt 8i6ibile i -eci trebuie s1 (ie "relucrate un nu%1r %ult %ai %ic obiecte -ec;t
nu%1rul total -e obiecte ale scenei# De aceea, i-enti(icarea c;t %ai -e8re%e "osibil a obiectelor si&ur
in8i6ibile i eli%inarea lor con-uce la re-ucerea substanial1 a ti%"ului -e re-are a scenei# Fn re-area
scenelor co%"le3e, acest "roce-eu se i%"le%entea61 %ai e(icient -ec;t %o-ul si%"lu -escris %ai sus
"rin -e(inirea 8olu%ului -e -eli%itare a obiectelor#
5olumul de delimitare
:olu%ul -e -eli%itare C$ounding $o-E al unui obiect sau al unui &ru" -e obiecte Cierar2ie -e obiecteE este
un 8olu% -e(init c;t %ai si%"lu, care inclu-e toate 8;r(urile obiectelor i are -i%ensiuni %ini%e# )e
(olosesc ca 8olu%e -e -eli%itare "araleli"i"e-e -re"tun&2ice sau s(ere#
Fiin- -at un obiect cu un 8olu% -e -eli%itare, testul -e eli%inare CcullingE se e(ectuea61 asu"ra
8olu%ului -e -eli%itare: se calculea61 intersecia co-urilor -e 8i6ibilitate ale 8;r(urilor 8olu%ului -e
-eli%itare i, -ac1 este -i(erit1 -e 6ero, atunci 8olu%ul -e -eli%itare i i%"licit, 9ntre&ul obiect este
in8i6ibil i aban-onat#
4ceast1 %o-alitate -e re"re6entare i "relucrare a obiectelor este a"roa"e unani% a-o"tat1 9n realitatea
8irtual1, -atorit1 e3ecuiei e(iciente a testului: -eci6ia -e eli%inare a unui obiect se "oate lua "rin
consi-erarea unui nu%1r -e o"t 8;r(uri, 9n locul unui nu%1r (oarte %are -e 8;r(uri c;t are un obiect 9n
%o- obinuit#
:olu%ul -e -eli%itare al unui obiect se -e(inete 9n siste%ul -e re(erin1 local C-e %o-elareE al obiectului,
ca un "araleli"i"e- -re"tun&2ic cu %uc2iile "aralele cu a3ele -e coor-onate# ?n ast(el -e "araleli"i"e- se
"oate s"eci(ica "rin coor-onatele a -ou1 8;r(uri o"use C3%in, A%in, 6%inE i C3%a3, A%a3, 6%a3E# :;r(urile lui sunt
trans(or%ate -in siste%ul -e re(erin1 local 9n alte siste%e -e re(erin1 Cuni8ersal, -e obser8are, etc#E, la
(el ca i 8;r(urile obiectului# Calculul co-urilor -e 8i6ibilitate i testul -e eli%inare se "oate e(ectua 9n
siste%ul -e re(erin1 -e obser8are sau 9n alt siste% -e re(erin1 Csiste%ul nor%ali6atE -ac1 biblioteca
&ra(ic1 "er%ite accesul la coor-onatele 9n acest siste%#
Fn Fi&# '#15 sunt re"re6entate trei obiecte 9n "o6iii -i(erite (a1 -e 8olu%ul -e 8i6uali6are# :olu%ul -e
-eli%itare al "ri%ului obiect este co%"let e3terior (a1 -e 8olu%ul -e 8i6uali6are i obiectul
cores"un61tor CGceainicH D teapotE este i&norat "entru "unctul -e obser8are -at# Cel -e=al -oilea obiect
Cicosae-ruE este co%"let 8i6ibil, 8olu%ul s1u -e -eli%itare (iin- inclus 9n 8olu%ul -e 8i6uali6are# Pentru
cel -e=al treilea obiect Cs(er1 re"re6entat1 Lire(ra%eE, 8olu%ul -e -eli%itare intersectea61 8olu%ul -e
8i6uali6are i trebuie s1 (ie e3ecutat1 -ecu"area su"ra(eelor sale relati8 la 8olu%ul -e 8i6uali6are#
6
:
3
:
A
:
+
:
Fig. ./6 Eli%inarea obiectelor CcullingE "e ba6a 8olu%ului -e -eli%itare
C$ounding $o-E#
Fn scenele 8irtuale %o-elate ierar2ic se construiesc 8olu%e -e -eli%itare la (iecare ni8el -e ierar2ie i
obiectele sau &ru"urile -e obiecte sunt selectate "e ba6a testului -e eli%inare e(ectuat asu"ra 8olu%ului
-e -eli%itare cores"un61tor#
6ete"&ia "oliziunii
Detecia coli6iunii este un as"ect i%"ortant 9n %o-elarea %e-iului 8irtual, "rin (a"tul c1 si%ulea61 un
as"ect realist al %e-iului: obiectele reale nu "ot trece unele "rin altele$ atunci c;n- un obiect se atin&e -e
un altul e3ist1 un r1s"uns -e coli6iune: -e(or%area obiectelor, sc2i%barea traiectoriei -e -e"lasare,
e3"lo6ia, etc# >a interaciunea -intre utili6ator i obiectele 8irtuale se "ot "ro-uce (ore, 8ibraii, i alte
reacii tactile care sunt "relucrate 9n siste%#
Detecia coli6iunii se "oate calcula a"ro3i%ati8, (olosin- 8olu%ele -e -eli%itate, sau e3act, "rin
consi-erarea tuturor "unctelor obiectelor# Dat (iin- c1 8olu%ul -e -eli%itare -e"1este 9n %ulte "uncte
su"ra(aa -e (rontier1 a obiectului, calculul a"ro3i%ati8 al coli6iunii intro-uce coli6iuni (alse 9ntre
obiecte: nu obiectele s=au atins ci 8olu%ele lor -e -eli%itare#
,enerarea e3act1 a coli6iunii se calculea61 ca a -oua eta"1 -u"1 calculul a"ro3i%ati8 al coli6iunii# Dac1
-ou1 obiecte au 8olu%ele -e -eli%itare -isBuncte, atunci ele si&ur nu se atin&# Dac1 -ou1 obiecte au
8olu%e -e -eli%itare care se atin& sau inter"1trun-, atunci se calculea61 coli6iunea e3act1 "rin
consi-erarea tuturor "unctelor obiectelor
'
Transfor"area de rastru
Trans(or%area -e rastru Crasteri'ationE este o con8ersie -e la re"re6entarea
"rin coor-onatele 8;r(urilor a unui se&%ent sau a unui "oli&on C"ri%iti81 &eo%etric1E,
la re"re6entarea "rin %uli%ea cores"un61toare -e "i3eli care se a(iea61 "e -is"laA#
Trans(or%area -e rastru se %ai nu%ete con8ersie -e baleiere Cscan conversionE, sau
-esenarea se&%entelor, res"ecti8 a "oli&oanelor Cline drawing, polgon drawingE sau
&enerare linie, res"ecti8 "oli&on Cline generation, polgon generationE#
Trans(or%area -e rastru i%"lic1 trecerea -e la s"aiul bi-i%ensional continuu
C"oarta -e a(iare -e(init1 9n "lanul 3
)
Q al siste%ului -e re(erin1 ecran !DE la
s"aiul -iscret al i%a&inii CFi&# /#1E
CbE
3
)
A
)
CaE
3
i
A
i
3
@
3
@
P1
A
@
P1
A
@
3
@

A
@

)"aiul i%a&ine este un tablou bi-i%ensional -e locaii -iscrete nu%ite "i3eli,
(iecare "i3el a8;n- o a-res1 care cores"un-e "o6iiei 9n i%a&ine a acesteia#
Di%ensiunea i%a&inii este s"eci(icat1 "rin nu%1rul -e "i3eli "e ori6ontal1 C0E,
res"ecti8 "e 8ertical1 CNE, care "ot (i a(iai 9n 6ona -e ecran atribuit1 "orii -e a(iare#
Di%ensiunea %a3i%1 a i%a&inii -e"in-e -e re6oluia -is"laA=ului (olosit#
?n "i3el ocu"1 9n "oarta -e a(iare o 6on1 "1trat1 -e -i%ensiune 1 3 1 a c1rui
a-res1 este -at1 -e coor-onata colului st;n&a=Bos# De e3e%"lu, "i3elul -e a-res1
C3
@
, A
@
E -in s"aiul i%a&ine cores"un-e unui "1trat -in "oarta -e a(iare cu colurile -e
coor-onate C3
@
, A
@
E C3
@
P1, A
@
E C3
@
P1, A
@
P1E C3
@
, A
@
P1E, un-e 3
@
i A
@
sunt nu%ere 9ntre&i#
Fn %o- si%"li(icat se consi-er1 c1 i%a&inea "e ecran a "i3elilor este (or%at1 -in 6one
"1trate a-iacente, -ar, 9n realitate, i%a&inea "e ecran a unui "i3el este o 6on1 circular1,
iar aceste cercuri nu sunt a-iacente ci se 9ntre"1trun-#
?n "i3el -in s"aiul i%a&ine se re"re6int1 "rin culoarea lui, care se
%e%orea61 9ntr=un bu((er -e i%a&ine# 4-resa "i3elului 9n s"aiul i%a&ine -eter%in1
a-resa 9n bu((erul -e i%a&ine 9n care se %e%orea61 culoarea acestuia#
Din coor-onatele 3 i A ale 8;r(urilor "ri%iti8elor &eo%etrice 9n "oarta -e
a(iare se calculea61 ecuaiile se&%entelor -e -rea"t1 ClaturileE, iar %uli%ea -e "i3eli
&enerat1 9n s"aiul i%a&ine trebuie s1 a"ro3i%e6e c;t %ai bine se&%entele -e -rea"t1
sau interiorul "oli&oanele -eli%itat "rin laturile sale CFi&#/#1E#
Trans(or%area -e rastru a se&%entelor sau "oli&oanelor calculea61 a-resa
(iec1rui "i3el -in %uli%ea -e "i3eli "rin care se a"ro3i%ea61 "ri%iti8a &eo%etric1
-at1 i 9nscrie la a-resa cores"un61toare -in bu((erul -e i%a&ine intensitatea -e
culoare a "i3elului res"ecti8#
Culoarea "i3elului "oate (i o culoare constant1, re6ultat1 -in atributul -e
culoare al "ri%iti8ei &eo%etrice sau -in con-iii -e u%brire constant1 C"oli&onal1E, i
atunci aceast1 culoare se 9nscrie la toate a-resele "i3elilor care a"arin "ri%iti8ei
&eo%etrice 9n bu((erul -e i%a&ine# Fn ca6ul u%bririi ,ourau-, culoarea (iec1rui "i3el
se calculea61 "rin inter"olare, conco%itent cu calculul a-resei "i3elilor 9n
trans(or%area -e rastru#
Conco%itent cu trans(or%area -e rastru, se "oate e3ecuta o"eraia -e
eli%inare a su"ra(eelor ascunse, (olosin- coor-onata 6
)
Ca-;nci%eaE 8;r(urilor
"ri%iti8elor &eo%etrice calculate 9n siste%ul -e re(erin1 ecran !D Cal&orit%ul -e ti"
bu((er -e a-;nci%e C<=bu((erEE#
Fn cele %ai %ulte -in siste%ele &ra(ice actuale, trans(or%area -e rastru,
u%brirea i eli%inarea su"ra(eelor ascunse se e3ecut1 intercorelat, 9ntr=o sin&ur1
scanare CbaleiereE a "ri%iti8ei &eo%etrice# >a siste%ele e8oluate se a-au&1 la acestea
i o"eraiile -e nete6ire a liniilor Canti=aliasin&E i -e te3turare#
Fnainte -e -escrierea o"eraiilor -e &enerare a "ri%iti8elor &eo%etrice, se 8a
-escrie %o-ul 9n care sunt re"re6entate i re-ate culorile 9n &ra(ica "e calculator#
Fig. !./ CaE )"aiul bi-i%ensional continuu al "orii -e a(iare
CbE )"aiul bi-i%ensional -iscret al i%a&inii
#epre5e$&area c)lorilor 0$ .i.&emele
grafice
I%a&inea care se obine "e -is"laA este co%"us1 -intr=un anu%it nu%1r -e
"i3eli, -at -e re6oluia -is"laA=ului# Fiecare "i3el are o "o6iie "e ecran, -at1 -e a-resa
lui 9n "oarta -e a(iare, i o culoare care "oate (i re"re6entat1 9n %ai %ulte %o-ele:
%o-elul R,B, %o-elul H):, %o-elul H>), i altele# Dintre aceste %o-ele, 9n &ra(ic1
se (olosete cel %ai (rec8ent %o-elul R,B#
Modelul RG:
Fn %o-elul R,B, culoarea este re"re6entat1 "rintr=un tri"let -e culori "ri%are,
rou CredE 8er-e CgreenE, albastru C$lueE# ?tili6area "re"on-erent1 a %o-elului R,B
9n &ra(ic1 se -atorea61 9n "ri%ul r;n- (a"tului c1 %onitoarele color (olosesc acest
%o-el -e "ro-ucere a culorii# Culoarea este "ro-us1 "e ecranul unui %onitor "rin
e3citarea a trei "uncte a-iacente -e substan1 (os(orescent1 -e culori rou, 8er-e i,
res"ecti8, albastru# Punctele (os(orescente (iin- a"ro"iate, oc2iul "erce"e tri"letul -e
"uncte ca un sin&ur "unct a c1rui culoare este su%a celor trei co%"onente#
)"aiul -e re"re6entare a tuturor culorilor 9n %o-elul R,B este un cub 9ntr=un
siste% -e coor-onate cu a3ele notate Re-, ,reen, Blue CFi&# /#2E#
+rice culoare 9n %o-elul R,B se e3"ri%1 "rintr=un tri"let Cr,&,bE i 9i
cores"un-e un "unct 9n s"aiul R,B al c1rui 8ector C este:
C Q r#P&8Pb8
C/#1E
un-e #, 8, B sunt 8ersorii a3elor Re-, ,reen, Blue# Fn acest %o-el culoarea ne&ru
este re"re6entat1 "rin tri"letul C,,E, iar culoarea alb este re"re6entat1 "rin tri"letul
C1,1,1E#
Fn siste%ele &ra(ice se %ai (olosete o 8ariant1 a %o-elului R,B, %o-elul
R,B4, un-e cea -e=a "atra co%"onent1 CE in-ic1 trans"arena su"ra(eei# :aloarea 1
Re-
K2ite
\elloL
,reen
Blue
0a&enta
CAan
Blac@
Fig. !.1 )"aiul culorilor 9n %o-elul R,B
a acestei co%"onente CQ1E 9nsea%n1 su"ra(a1 o"ac1, iar 8aloarea %ini%1 CQE
9nsea%n1 su"ra(a1 co%"let trans"arent1# Dac1 trans"arena unei su"ra(ee este
-i(erit1 -e 6ero, atunci culoarea care se atribuie "i3elilor acestei su"ra(ee se %o-i(ic1
9n (uncie -e culoarea e3istent1 9n bu((erul -e i%a&ine 9n "o6iiile cores"un61toare#
Culoarea re6ultat1 a unui "i3el este CZQ fC,C,C
P
E, un-e:
CCr,&,bE este culoarea su"ra(eei
este trans"arena su"ra(eei, cu 8alori 9ntre i 1
C
P
Cr
P
,&
P
,&
P
E este culoarea "rece-ent1 a "i3elului, a(lat1 9n bu((erul -e
i%a&ine
CZCrZ,&Z,bZE este noua culoare a "i3elului, re6ultat1 "rin a"licarea unei
(uncii f (iec1rei co%"onente -e culoare
Bibliotecile &ra(ice "er%it -e(inirea %ai %ultor (uncii f -e co%binare liniar1
9ntre culoarea trans"arent1 cu culoarea -e (on-#
Modelul ;,5
0o-elul H): re"re6int1 o trans(or%are neliniar1 a s"aiului R,B, "rin care
culorile sunt s"eci(icate "rin co%"onentele: nuan1 ChueE, saturaie CsaturationE i
8aloare C8alueE# 0o-elul H): este (olosit 9n -e(inirea %ai intuiti81 a culorilor
C"erce"tual1E, -ec;t selecia unor culori "ri%are# De e3e%"lu, sarcina -e a %o-i(ica o
culoare ast(el 9nc;t s1 (ie G%ai lu%inos1H, G%ai "ali-1H, G%ai &alben1H, etc, se
reali6ea61 %ult %ai si%"lu 9n %o-elul H): -ec;t 9n %o-elul R,B#
)"aiul culorilor 9n %o-elul H): este o "ira%i-1 2e3a&onal1 9ntr=un siste% -e
coor-onate "olare H:) CFi&# /#!E
De(iniiile "ara%etrilor H, ), : sunt le&ate -e %o-ul 9n care este "erce"ut1
culoarea:
Nuana ChueE este acea calitate "rin care oc2iul -istin&e o (a%ilie -e culori
-e alt1 (a%ilie -e culori, -e e3%"lu rou -e &alben, 8er-e -e albastru, etc#
:
)
H
CAan
,reen
Re-
\elloL
K2ite
Blac@
Blue
0a&enta
Fig. !.3 )"aiul culorilor 9n %o-elul H):#
)aturaia CsaturationE, nu%it1 i cro%icitate CchromaE este calitatea culorii
"rin care se -istin&e o culoare "uternic1 -e o culoare slab1# )e %ai "oate
-e(ini ca intensitatea culorii sau -istana (a1 -e nuana &ri#
:aloare CvalueE este calitatea "rin care se -istin&e o culoare lu%inoas1 -e
o culoare 9ntunecat1#
Fn %o-elul H:), 8ariaia "ara%etrului H C9ntre i !.E cores"un-e seleciei
culorii# )c1-erea "ara%etrului ) C-esaturarea culoriiE 9nsea%n1 a-1u&area -e alb#
)c1-erea "ara%etrului : C-e8aluarea culoriiE 9nsea%n1 a-1u&are -e ne&ru# Con8ersia
-in s"aiul R,B 9n s"aiul H): se 9nele&e %ai uor 9ntr=o inter"retare &eo%etric1:
2e3a&onul -in re"re6entarea H:) se obine "rin "roiectarea cubului R,B "e un "lan
nor%al la -ia&onala "rinci"al1, "e -irecia -ia&onalei "rinci"ale# Cores"on-ena -intre
8;r(urile 2e3a&onului -e ba61 H): i 8;r(urile cubului R,B este:
R,B H):
1 re- ,1,1 CH este %1surat 9n &ra-eE
11 AelloL .,1,1
1 &reen 12,1,1
11 cAan 15,1,1
1 blue 2',1,1
11 %a&enta !,1,1
Pentru aceei -e(iniie a unei culori C-e e3e%"lu, "rin tri"letul r&bE este
"osibil ca %onitoare -i(erite s1 &enere6e culori -i(erite, -atorit1 caracteristicilor
constructi8e -i(erite ale %onitoarelor# Fn &eneral, 9ntre co%"onenta -e culoare
trans%is1 unui %onitor i intensitatea "ro-us1 -e ecranul %onitorului e3ist1 o relaie
neliniar1 -e (or%a:
C E C E C E
b & r Y
i %
Y
i %
Y
i %
B M Q B $ , M Q , $ R M Q R

C/#2E
un-e ia 8alori 9ntre 2#! i 2#5#
>ineri6area relaiei 9ntre 8alorile co%"onentelor culorii "ro-use "rin "ro&ra%
i intensit1ile &enerate "e ecran se nu%ete corecie &a%a Cgamma corectionE#
Corecia &a%a se reali6ea61 a"lic;n- o trans(or%are care, co%"us1 cu trans(or%area
/#! s1 asi&ure o relaie liniar1 9ntre culoarea CR
i
, ,
i
, B
i
E &enerat1 "rin "ro&ra% i
culoarea CR
%
, ,
%
, B
%
E &enerat1 "e ecranul %onitorului# 4cest1 trans(or%are este:
C E C E C E
b & r
1
i
Y
i
1
i
Y
i
1
i
Y
i
B @ Q B $ , @ Q , $ R @ Q R

C/#!E
Corecia &a%a se "oate i%"ele%enta "rintr=o tabel1 -e c1utare Cloo@=u" tableE
9ncor"orat1 9n controlerul &ra(ic, care trans(or%1 8alorile R
i
, ,
i
, B
i
citite -in bu((erul
-e i%a&ine 9n 8alorile cores"un61toare
Y
i
Y
i
Y
i
B , , , R trans%ise %onitorului# >i"sa
coreciei &a%a sau o corecie &a%a calculat1 eronat, "ro-uce i%a&ini incorecte#
8e$erarea .egme$&elor (e (reap&-
Fn orice bibliotec1 &ra(ic1 se &1sete o (uncie care "oate (i a"elat1 "entru
&enerarea unui se&%ent -e -rea"t1# De e3e%"lu (uncia 'ine() -in biblioteca
co%"ilatorului Borlan- C, sau (uncia )ine*+() -in inter(aa Kin!24PI, trasea61 o
linie 9n (erestra -e a(iare a "ro&ra%ului#
)e consi-er1 un se&%ent -e -rea"t1 4B -at "rin ca"etele lui Cx
,
,y
,
E, Cx
-
,y
-
E
9n siste%ul -e coor-onate "oarta -e a(iare CFi&# /#'E# Ecuaia -re"tei care trece "rin
aceste "uncte este y = ax+b, un-e a = (y
-
y
,
).(x
-
x
,
), b = y
,
ax
,
Fn acelai siste% -e re(erin1, a-resa unui "i3el este -at1 -e coor-onatele
colului lui st;n&a=Bos, -eci "i3elul -e a-res1 (x
k
,y
k
) este un "1trat cu colurile
Cx
k
,y
k
E, Cx
k
+1,y
k
E, Cx
k
+1,y
k
+1E, (x
k
,y
k
+1E, un-e x
k
i y
k
sunt nu%ere 9ntre&i#
Dac1 x
1
x
2
, atunci se calculea61 sec8ena -e "uncte "e -rea"t1:
(x
1
= x
,
, y
1
= ax
1
+b),
(x
2
= x
1
+1, y
2
= ax
2
+b),T#(x
i
, y
i
= ax
i
+b)TT#
Fiec1rui "unct "e -rea"t1 i se asocia61 un "i3el a c1rui a-res1 9n siste%ul -e
re(erin1 i%a&ine se a"ro3i%ea61 "rin trunc2ierea sau rotunBirea coor-onatelor
"unctului 9n siste%ul -e re(erin1 -e a(iare:
3
i
ZQ CintE3
i
sau 3
i
ZQ CintEC3
i
P#/E
A
i
ZQ CintEA
i
sau A
i
Z

Q CintECA
i
P#/E
Fn acest %o- se obine trans(or%area 9n s"aiul i%a&ine a unui se&%ent -e
-rea"t1, re"re6entat "rin %uli%ea "i3elilor care a"ro3i%ea61 se&%entul -e -rea"t1
-at#
4"licarea -irect1 a (or%ulei -e calcul a "unctelor -e "e -rea"t1 are
-e6a8antaBul c1 necesit1 %ai %ulte o"eraii Ca-unare, 9n%ulireE 9n nu%ere (lotante
"entru (iecare "i3el, o"eraii care au ti%" -e e3ecuie ri-icat# ?n alt -e6a8antaB al
acestei %eto-e este c1 &enerea61 se&%ente -e -rea"t1 9ntreru"te -ac1 a ` 1 CFi&# /#
'CbEE#
Fig. !. ,enerarea se&%entelor -e -rea"t1
"rin a"licarea -irect1 a relaiilor -e calcul#
CaE a Q #/
CbE aQ2
3 3
A A
,
-
,
-
Fnl1turarea acestor incon8eniente se (ace "rin utili6area al&orit%ilor
incre%entali 9n care se e8it1 re"etarea o"eraiilor -e 9n%ulire 9n 8ir&ul1 (lotant1,
(olosin- trecerea "rin incre%entare -e la un "unct la ur%1torul# Pentru obinerea
se&%entelor -e -rea"t1 (1r1 9ntreru"ri se tratea61 se"arat ca6urile ab/(a) 1 i
ab/(a)01#
Dac1 ab/(a) 1 i x
,
x
-
, se 9nce"e &enerarea -in "unctul x
1
= x
,
,
A
1
Q A
4
i la (iecare "as se incre%ente61 x cu 1, -eci se iau "unctele -e "e -rea"t1 care
au: x
1
=x
,
, x
2
=x
1
+1, Tx
i
,x
i+1
=x
i
+1,T## Dat (iin- c1 y
i
= ax
i
+b, re6ult1 c1
y
i+1
= ax
i+1
+b = a(x
i
+1)+b, deci y
i+1
= y
i
+a# Deci, "entru trecerea -e la
un "unct la ur%1torul, x se incre%entea61 cu 1, iar y se incre%entea61 cu 8aloarea
"antei# Punctului -e "e -rea"t1 -e coor-onate Cx
i
, y
i
E, 9i cores"un-e un "i3el a c1rui
a-res1 9n s"aiul i%a&ine se calculea61 "rin trunc2iere sau rotunBire#
Dac1 ab/(a) 1 i x
,
0 x
-
, se 9nce"e &enerarea -in "unctul x
1
= x
-
,
y
1
= y
-
i restul calculelor se continu1 la (el ca 9n ca6ul "rece-ent#
Dac1 ab/(a) 01 i x
,
x
-
, se 9nce"e &enerarea se&%entului -in
"unctul x
1
= x
,
, A
1
Q A
4
i la (iecare "as se incre%entea61 A cu 1, -eci se calculea61
"unctele care au: y
1
=y
,
, y
2
=y
1
+1,T#y
i
, y
i+1
= y
i
+1,T Deoarece x
i
=(y
i
-
b).a, re6ult1 c1 x
i+1
=(y
i+1
-b)a = x
i
+1.a1 Deci, "entru trecerea -e la un
"unct la ur%1torul, y se incre%entea61 cu 1, iar x se incre%entea61 cu in8ersul "antei
-re"tei#
Dac1 ab/(a) 0 1 i x
,
0 x
-
, se 9nce"e &enerarea -in "unctul x
1
= x
-
,
y
1
= y
-
, i restul calculelor se continu1 la (el ca 9n ca6ul "rece-ent#
4l&orit%ul incre%ental -e &enerare a "ri%iti8elor &eo%etrice are %ai %ulte
8ariante -e i%"le%entare, 9n (uncie -e situaia 9n care este a"licat# Pentru se&%ente
-e -rea"t1, se a-a"tea61 al&orit%ul incre%ental ast(el 9nc;t s1 se &enere6e se&%ente
(1r1 9ntreru"eri, (olosin- nu%ai o"eraii cu nu%ere 9ntre&i# 4ceast1 8ariant1 este
cunoscut1 sub nu%ele -e al&orit%ul Bresen2a%# Pentru &enerarea "oli&oanelor,
8arianta -e al&orit% incre%ental este al&orit%ul -e baleiere "e linii Cscan&lineE#
4l&orit%ul Bresen2a% se ba6ea61 "e %eto-a incre%ental1, -ar este o"ti%i6at
ast(el 9nc;t (olosete nu%ai o"eraii cu nu%ere 9ntre&i# Datorit1 acestei "ro"riet1i, el
"oate (i i%"le%entat 2ar-Lare i, 9n %aBoritatea ca6urilor, o"eraiile -e &enerare a
se&%entelor -e -rea"t1 -in acceleratoarele &ra(ice se ba6ea61 "e o i%"le%entare
2ar-Lare a al&orit%ului Bresen2a%# Descrierea -etaliat1 a al&orit%ului Bresen2a% se
"oate &1si 9n biblio&ra(ie R0ol-9.S#
In-i(erent -e al&orit%ul -e con8ersie (olosit "entru &enerarea liniilor, trecerea
-e la s"aiul bi-i%ensional continuu, 9n care "o6iia "unctelor este re"re6entat1 "rin
nu%ere reale, la re"re6entarea 9n s"aiul -iscret al i%a&inii, este o a"ro3i%are "rin
eantionare, care "ro-uce erori -e re"re6entare# Din cau6a acestei a"ro3i%1ri, orice
linie -rea"t1 Ccu e3ce"ia celor ori6ontale sau 8erticaleE a"are 6i%at1 C0aggedE, ca o
Gscar1H -e se&%ente -e -rea"t1 succesi8e, aa cu% se "oate obser8a 9n orice i%a&ine
&enerat1 "e un -is"laA sau re"ro-us1 "e i%"ri%ant1, inclusi8 9n te3tul -e (a1#
I%a&inea -e scar1 este cu at;t %ai "re&nant1 cu c;t re6oluia -is"laA=ului Cnu%1rul -e
"i3eli "e ori6ontal1 i "e 8ertical1E este %ai %ic1# Dac1 re6oluia crete, as"ectul
ne-orit -e scar1 este atenuat, -ar nu este eli%inat# Nete6irea liniilor se "oate obine
"rin -i(erite %eto-e -e (iltrare, %eto-e cunoscute sub nu%ele -e (iltrare anti=aliasin&#
8e$erarea poligoa$elor
0eto-a cea %ai (rec8ent (olosit1 "entru &enerarea %uli%ii "i3elilor "rin care
se a"ro3i%ea61 o su"ra(a1 "oli&onal1 este %eto-a -e baleiere "e linii a "oli&onului
Cal&orit%ul scan&lineE# Princi"iul -e ba61 al acestei %eto-e "entru un "oli&on con8e3
este "re6entat 9n Fi&# /#/#
)e consi-er1 "oli&onul ,2-2&23242, care re"re6int1 "roiecia 9n "lanul 6
)
Q
al siste%ului -e re(erin1 ecran !D, a unei su"ra(ee ,-&34 -in s"aiul tri-i%ensional
uni8ersal# Poli&onul este baleiat cu o linie ori6ontal1 care ia 8alori succesi8e, y
1
,
y
2
,Ty
i
, y
i+1
##, un-e y
1
este 8aloarea coor-onatei y %ini%1 a 8;r(urilor
"oli&onului, iar y
i+1
= y
i
+1# Pentru (iecare "o6iie y
i
a liniei -e baleiere, se
calculea61 interseciile x
i,1
, x
i,2
cu -ou1 -in laturile "oli&onului# Pi3elii a c1ror
a-rese sunt cu"rinse 9n inter8alul Cx
i,1
,y
i
E, Cx
i,2
,y
i
E, a"arin "oli&onului i sunt
"relucrai 9n %o- cores"un61tor# Pentru al&orit%ul si%"lu -e &enerare a "oli&oanelor,
culoarea "oli&onului Ccunoscut1 ca atribut a (eei cores"un61toare a obiectuluiE este
9nscris1 9n bu((erul -e i%a&ine la toate a-resele cu"rinse 9n inter8alul res"ecti8# Fn
al&orit%ii 9n care se co%bin1 &enerarea cu eli%inarea su"ra(eelor ascunse sau
u%brire, se "relucrea61 toi "i3elii cores"un61tori acestui inter8al#
Fie ur%1toarele ecuaii ale laturilor st;n&a i -rea"ta cu care se intersectea61
-rea"ta y = y
i
:
x = m
1
y + n
1

x = m
2
y + n
2
C/#'E
Pentru situaia -in Fi&#/#/, intersecia -re"tei y = y
i
are loc cu laturile ,2-2
i -2&2, "entru care coe(icienii -in ecuaiile -e %ai sus au 8alorile:
m
1
= (x
,
x
-
).(y
,
y
-
), n
1
= x
-
m
1
y
-
m
2
= (x
&
x
-
).(y
&
y
-
), n
2
= x
&
m
2
y
&
C/#/E
Fig. !.! Princi"iul baleierii "e linii a "oli&oanelor Cscan=lineE
3
A
3
i,1
A
iP1
QA
i
P1
A
i
3
i,2
3
iP1,2
3
iP1,1
-2
,2
&2
32
42
A
1
52
i,2
52
iP1, 2
52
i,1
0Z
iP1,1
Interseciile cores"un61toare sunt: x
i,1
= m
1
y
i
+n
1
, x
i,2
= m
2
y
i
+n
2
1
Coor-onatele interseciilor liniei ur%1toare -e baleiere y = y
i+1
, un-e
y
i+1
= y
i
+1, se "ot calcula -in coor-onatele "rece-ente (olosin- coe(icienii m
1
i m
2
ai laturilor intersectate:
x
i+1,1
= x
i,1
+ m
1

x
i+1,2
= x
i,2
+ m
2
C/#.E
)ec8ena -e "i3eli ai c1ror a-rese sunt cu"rinse 9n inter8alul Cx
i+1,1
, y
i+1
E,
Cx
i+1,2
, y
i+1
E a"arin "oli&onului "e linia -e baleiere y = y
i+1
i sunt tratai
cores"un61tor#
4cesta este "rinci"iul -e ba61 al baleierii "e linii Cscan=lineE# Ca6urile "articulare,
c;n- se sc2i%b1 latura cu care are loc intersecia Cla colurile "oli&onuluiE, sau c;n-
e3ist1 laturi ori6ontale, se tratea61 se"arat#
4l&orit%ul -e baleiere "e linie se "oate i%"le%enta i "entru "oli&oane
conca8e# Fn acest ca6, o linie -e baleiere "oate interesecta %ai %ulte "erec2i -e laturi,
re6ult;n- %ai %ulte se&%ente -e interecie i -eci %ai %ulte sec8ene -e "i3eli care
a"arin "oli&onului CFi&# /#.CaEE# Fn &eneral, 9ns1, "oli&oanele conca8e sau cu &1uri se
tratea61 "e %ai %ulte ni8ele# 4cceleratoarele &ra(ice i%"le%entea61 2ar-Lare
auto%ate -e &enerare a unor su"ra(ee con8e3e si%"le Ctriun&2iuri sau tra"e6eE#
Desco%"unerea unui "oli&on con8e3 9n %ai %ulte triun&2iuri este o o"eraie si%"l1
care, -e cele %ai %ulte ori, este "reluat1 -e biblioteca &ra(ic1, care "une la -is"o6iie
(uncii -e &enerare a "oli&oanelor con8e3e cu un nu%1r oarecare -e laturi#
Desco%"unerea "oli&oanelor conca8e 9n "oli&oane con8e3e este tratat1 la ni8elul
"ro&ra%ului -e a"licaie# 4ceast1 ierar2i6are 9n "relucrarea "oli&oanelor este "reci6at1
9n seciunea ur%1toare "entru biblioteca +"en,>#
Ca i 9n ca6ul liniilor, %uc2iile "oli&oanelor &enerate "re6int1 as"ectul -e
scar1 -e se&%ente, -atorit1 trecerii la s"aiul -iscret al i%a&inii# 4l&orit%ii -e (iltrare
"entru nete6irea %uc2iilor "oli&onului Cal&orit%i -e anti=aliasin&E se e3ecut1, 9n
&eneral, conco%itent cu al&orit%ul -e &enerare scan=line a "oli&onului#
Fig. !.7 ,enerarea "oli&oanelor conca8e:
&enerare -irect1 "rin baleiere "e linii$
trans(or%are 9n %uli%e -e triun&2iuri Ctrian&ulari6areE#
3
i,1
3
i,!
3
i,'
3
i,2
CaE
CbE
Elimi$area .)prafeelor a.c)$.e
Re"re6entarea "e -is"laA a tuturor su"ra(eelor obiectelor "roiectate 9n (ereastra -e 8i6uali6are "ro-uce o
i%a&ine nerealist1 -eoarece este "osibil ca o su"ra(a1 care se a(l1 9n s"atele altei su"ra(ee s1 (ie 8i6ibil1
"e ecran# 4cest1 situaie "ro8ine -in trans(or%area -e "roiecie -in s"aiul tri-i%ensional 9n s"aiul
bi-i%ensional C"lanul -e 8i6uali6areE# Fn &eneral, orice "roiecie 9nsea%n1 o re-ucere a -i%ensionalit1ii
s"aiului -e re"re6entare i, "rin acesta, se "ier- o "arte -in "ro"riet1ile (or%elor# Datorit1 "roieciei,
su"ra(ee -istincte, a(late la -istane -i(erite 9n s"aiu, sunt "roiectate 9n aceeai re&iune "e -is"laA i sunt
re"re6entate su"ra"us# Pentru obinerea unor i%a&ini corecte, care s1 re(lecte relaia s"aial1 -intre
obiecte, se "relucrea61 su"li%entar su"ra(eele "roiectate ale obiectelor#
Prelucrarea su"ra(eelor -in "unct -e 8e-ere al "o6iiei relati8e 9ntre ele, "relucrare cunoscut1 sub nu%ele
-e eli%inarea su"ra(eelor ascunse Chidden surface removalE se "oate e(ectua 9n -ou1 %o-uri:
CaE Eli%inarea su"ra(eelor ascunse 9n s"aiul obiect, "rin co%"ararea a-;nci%ii relati8e a
su"ra(eelor obiectelor 9n siste%ul -e re(erin1 -e obser8are sau 9n siste%ul -e re(erin1
nor%ali6at#
CbE Eli%inarea su"ra(eelor ascunse 9n s"aiul i%a&ine, "rin co%"ararea a-;nci%ii "i3elilor
i%a&inii re6ultai -in &enerarea Ccon8ersia -e rastruE a tuturor su"ra(eelor obiectelor, "rin
al&orit%ul cunoscut sub nu%ele -e al&orit% -e ti" bu((er -e a-;nci%e Cdepth $uffer, 2&
$ufferE#
Fn %o%entul actual, eli%inarea su"ra(eelor ascunse "rin al&orit%ul <=bu((er este a"roa"e uni8ersal
(olosit1 9n &ra(ic1, -atorit1 calit1ilor re%arcabile ale acestei abor-1ri, care "er%ite i%"le%ent1ri
2ar-Lare e(iciente i este in-e"en-ent1 -e %o-ul -e re"re6entare a obiectelor scenei# 4li al&orit%i -e
eli%inare a su"ra(eelor ascunse se %ai (olosesc -oar 9n a"licaii &ra(ice (oarte s"eciali6ate, care nu
bene(icia61 -e %ecanis%ul -e <=bu((er#
Compararea ad<n"imilor
Pentru eli%inarea su"ra(eelor ascunse se co%"ar1 a-;nci%ea C-istana (a1 -e "unctul -e obser8areE a
tuturor su"ra(eelor sau a "i3elilor re6ultai "rin con8ersia -e rastru#
?n "unct P este ascuns -e o su"ra(a1 ), -ac1 a-;nci%ea "unctului este %ai %are -ec;t a-;nci%ea
interseciei I a -rea"tei care unete "unctul P cu centrul -e "roiecie Cse consi-er1 centrul -e "roiecie
i-entic cu ori&inea siste%ului -e re(erin1 -e obser8are +: , Fi&# /#7CaEE, -eci -ac1 +:P ` +:I#
+ su"ra(a1 4 este ascuns1 -e alt1 su"ra(a1 ) -ac1 toate "unctele su"ra(eei 4 sunt ascunse -e su"ra(aa
) CFi&# /#7CbEE# Dac1 o su"ra(a1 ascun-e ) su"ra(aa 4, atunci se consi-er1 c1 a-;nci%ea su"ra(eei )
este %ai %ic1 -ec;t cea a su"ra(eei ascunse 4#
Co%"ararea a-;nci%ilor a -ou1 "uncte 9n siste%ul -e re(erin1 -e obser8are este -estul -e co%"licat1,
-eoarece co%"araia are sens nu%ai -ac1 cele -ou1 "uncte se a(l1 "e aceeai linie -e "roiecie CFi&# /#7E#
4ceast1 o"eraie este %ai si%"l1 9n siste%ul -e re(erin1 ecran !D# Fn acest siste%, 6) Q 6N, iar 6N este
-e(init -e relaia '#1 ast(el:

,
_


V
' (
z
"
1
" #
#
z z
Fig. !.7 CaE )u"ra(aa ) ascun-e "unctul P#
CbE )u"ra(aa 4 ascun-e su"ra(aa B#
+
:
I
)
P
+
:
)
4
CaE
CbE
4cest1 relaie trans(or%1, -e e3e%"lu, un cub 9n siste%ul -e re(erin1 -e obser8are, 9ntr=un trunc2i -e
"ira%i-1 9n siste%ul ecran !D CFi&# /#5E#
Proiecia "ers"ecti81 -in siste%ul -e re(erin1 -e obser8are se trans(or%1 9n "roiecie "aralel1 9n siste%ul
-e re(erin1 ecran !D# Deoarece 6: Q se trans(or%1 9n 6) Q D , liniile -e "roiecie 9n siste%ul ecran !D
sunt linii "aralele 9n-re"tate c1tre D # 4-;nci%ea unui "unct P1C31,A1,61E 9n siste%ul -e re(erin1 -e
obser8are, care este -at1 -e -istana
2
1
2
1
2
1 1 :
6 P A P 3 Q P +
, se trans(or%1 9n coor-onata 6) a
"unctului 9n siste%ul -e re(erin1 ecran !D#
Testul -e a-;nci%e -in siste%ul -e re(erin1 -e obser8are, "entru a -eter%ina -ac1 un "unct P
1
este %ai
a"roa"e -e centrul -e "roiecie Ccare este, 9n &eneral, acelai cu "unctul -e obser8areE -ec;t "unctul P
2
,
necesit1 ca cele -ou1 "uncte s1 se a(le "e aceeai linie -e "roiecie# Fn siste%ul ecran !D, toate "unctele
care au aceleai coor-onate Cx
6
, y
6
E 9n "lanul -e "roiecie se a(l1 "e acelai "roiector, o -rea"t1 "aralel1
cu a3a 6), -eci se "oate e(ectua testul -e a-;nci%e "rin co%"araia coor-onatelor 6) ale "unctelor#

)e "oate tra&e conclu6ia c1 o"eraiile care i%"lic1 testarea sau co%"ararea a-;nci%ilor se e3ecut1 %ai
si%"lu 9n siste%ul -e re(erin1 ecran !D# 4cest lucru este utili6at at;t 9n al&orit%ii -e eli%inare a
su"ra(eelor ascunse 9n s"aiul obiect c;t i 9n al&orit%ii 9n s"aiul i%a&ine#
Eliminarea !upra(e&elor a!"un!e 4n
!pa&iul o%ie"t
3
:
Direcia -e
obser8are
A
:
=6
:
6
)
3
)
A
)
D
Fig. !.6 Trans(or%area unui cub i a liniilor -e "roiecie
-in siste%ul -e re(erin1 -e obser8are 9n siste%ul -e re(erin1 ecran !D#
6
:
?nul -in cei %ai cunoscui al&orit%i -e eli%inare a su"ra(eelor ascunse 9n s"aiul obiect este al&orit%ul
"ro"us -e NeLell, cunoscut i sub nu%ele -e al&orit%ul "ictorului, -atorit1 analo&iei cu %o-ul 9n care un
"ictor creea61 un tablou# Fn acest al&orit%, se sortea61 su"ra(eele 9n or-inea -escresc1toare a a-;nci%ii i
se re-au 9n aceast1 or-ine "e -is"laA# Eli%inarea su"ra(eelor ascunse se obine "rin su"ra"unerea noii
su"ra(ee C%ai a"ro"iat1E "este su"ra(eele %ai -e"1rtate, -eBa -esenate# >ista or-onat1 -e su"ra(ee
Cnu%it1 list1 -e -is"laAE se creea61 9n siste%ul -e re(erin1 -e obser8are sau 9n siste%ul -e re(erin1 ecran
!D, -u"1 o"eraia -e -ecu"are#
+r-onarea su"ra(eelor -u"1 a-;nci%e este o o"eraie co%"licat1, %ai ales -ac1 -ou1 su"ra(ee se
intersectea61 9ntre ele, situaie 9n care nu se "oate -eci-e care su"ra(a1 este %ai a"ro"iat1, -ec;t "rin
-i8i6area uneia -in ele -e=a lun&ul liniei -e intersecie#

?n alt al&orit% -e eli%inare a su"ra(eelor ascunse 9n s"aiul obiect este al&orit%ul cu sub-i8i6area
recursi81 a "oli&oanelor Cal&orit%ul Keiler=4t2ertonE# )"re -eosebire -e al&orit%ul "ictorului, 9n care
intersectarea su"ra(eelor "roiectate se e(ectuea61 "rin su"ra9nscrierea su"ra(eelor %ai a"ro"iate "este
cele %ai -e"1rtate, 9n al&orit%ul Keiler=4t2erton se e3ecut1 o o"eraie -e -ecu"are 9n siste%ul -e
re(erin1 nor%ali6at 9ntre toate su"ra(eele obiectelor i se rein nu%ai su"ra(eele G9n8in1toareH, a-ic1
cele %ai a"ro"iate# >ista acestora Clista -e -is"laAE nu %ai conine su"ra(ee care se "ot su"ra"une "e
ecran i nu %ai trebuie s1 (ie or-onat1# Ca i 9n al&orit%ul "ictorului, o"eraiile -e creare a listei -e
-is"laA necesit1 un ti%" -e e3ecuie (oarte %are, care -e"in-e -e nu%1rul -e su"ra(ee care se
"relucrea61# 4cest lucru li%itea61 -rastic "osibilitatea -e utili6are a al&orit%ilor 9n s"aiul obiect#
Eliminarea !upra(e&elor a!"un!e 4n
!pa&iul imagine= Algoritmul .2%u((er
De68oltat -e Cat%ull C197/E, al&orit%ul <=bu((er intro-uce o %eto-1 si%"l1 -e eli%inare a su"ra(eelor
ascunse, 9n care se e(ectuea61 co%"araia 9ntre a-;nci%ea 6) a (iec1rui "i3el C3, AE al "oli&oanelor
&enerate i se selectea61 "i3elul cu a-;nci%ea %ini%1 Ccel %ai a"ro"iatE#
4ceast1 selecie se i%"le%entea61 cel %ai con8enabil "rin (olosirea unui bu((er -e a-;nci%e C<=bu((erE
care %e%orea61 a-;nci%ea tuturor "i3elilor &enerai 9n s"aiul -e i%a&ine, a c1ror culoare este %e%orat1
9n bu((erul -e i%a&ine# Fn orice %o%ent, la (iecare a-res1 C3, AE 9n <=bu((er, este %e%orat1 a-;nci%ea
celui %ai a"ro"iat "i3el -e a-res1 C3, AE re6ultat 9n trans(or%area -e rastru a "oli&oanelor# 4-;nci%ea
unui nou "i3el &enerat este co%"arat1 cu a-;nci%ea "i3elului cu aceeai a-res1 -in <=bu((er i noul "i3el
9nlocuiete "i3elul anterior nu%ai -ac1 a-;nci%ea lui este %ai %ic1# Fnlocuirea "i3elului anterior cu un
"i3el nou &enerat se reali6ea61 "rin 9nscrierea culorii noului "i3el 9n bu((erul -e i%a&ine la a-resa C3, AE i
9nscrierea a-;nci%ii lui la aceeai a-res1 C3, AE 9n <=bu((er#
Co%"araia 9ntre a-;nci%ile "unctelor 9n siste%ul -e re(erin1 ecran !D are a8antaBul c1 "oate (i e(ectuat1
"rin co%"araia coor-onatelor z
6
, -at (iin- c1 toate "unctele cu aceleai coor-onate Cx, yE se a(l1 "e
aceeai linie -e "roiecie "aralel1 cu a3a z
6
#CFi&# /#5E# Dar aceast1 si%"litate -e calcul are, totui, un
incon8enient, i anu%e acela c1 a-;nci%ile -in siste%ul -e re(erin1 -e obser8are nu se trans(or%1 liniar
9n siste%ul -e re(erin1 ecran !D# Inter8ale e&ale 9n 6: nu se trans(or%1 9n inter8ale e&ale 9n z
6
, ceea ce se
"oate obser8a i -in relaiile -e trans(or%are '#1# Cu c;t z
7
se a"ro"ie -e "lanul -e 8i6ibilitate -e"1rtat
C(arE, z
6
se a"ro"ie %ai ra"i- -e 1# +biectelele sunt co%"ri%ate 9n (uncie -e coor-onata lor 6:, i acest
lucru are consecine asu"ra "reci6iei 9n co%"araia a-;nci%ilor#
4l&orit%ul <=bu((er se e3ecut1 conco%itent cu trans(or%area -e rastru a "oli&oanelor# Fiecare "oli&on
este -escris "rin lista 8;r(urilor sale re"re6entate 9n siste%ul -e re(erin1 ecran !D# 4-;nci%ea "i3elilor
"oli&onului se calculea61 "rin inter"olare "ornin- -e la a-;nci%ea 8;r(urilor acestuia#
Inter"olarea "entru calculul a-;nci%ii "i3elilor se e(ectuea61 9n -ou1 eta"e: o inter"olare -e=a lun&ul
laturilor "oli&onului, "rin care se obine a-;nci%ea "i3elilor -e "e conturul "oli&onului, i o inter"olare
-e=a lun&ul (iec1rei liniei -e baleiere, "rin care se obine a-;nci%ea tuturor "i3elilor interiori# 4l&orit%ul
-e &enerare a "oli&oanelor "rin baleiere "e linii Cscan=lineE se trans(or%1 ast(el 9ntr=un al&orit% co%binat
-e baleiere i <=bu((er Cscan&line 2&$ufferE#
)e reia al&orit%ul -e &enerare a "oli&oanelor "rin baleiere "e linii -in "ara&ra(ul /#! i Fi&#/#/# Prin
"roiecia su"ra(eei 4BCDE -in s"aiu 9n "lanul x
6
= 0 se obine "oli&onul 4ZZBZZCZZDZZEZZ
CFi&# /#9E# >iniile -e baleiere ale acestui "oli&on sunt -re"tele -e ecuaii A Q A1, A Q A2,T#A Q Ai, A Q AiP1,
TDrea"ta A Q Ai interesctea61 laturile 4ZZBZZ i BZZCZZ 9n "unctele 0ZZi,1 CAi, 6i,1E i 0ZZi,2 CAi, 6i,2E#
6
A
6
i,1
A
iP1
QA
i
P1
A
i
6
i,2
6
iP1,2
6
iP1,1
-ZZ
,ZZ
&ZZ
3ZZ
4ZZ
A
B
5ZZ
i,1
5ZZ
i,2
5ZZ
i+1,1
5ZZ
i+1,2
Ecuaiile laturilor 4ZZBZZ i BZZCZZ se "ot scrie si%ilar cu relaiile /#':
z = m
1z
y+n
1z

z = m
2z
y+n
2z
C/#7E
un-e: m
1z
= (z
,
z
-
).(y
,
y
-
), n
1z
= y
-
m
1z
z
-
m
2z
= (z
&
z
-
).(y
&
y
-
), n
2z
= y
&
m
1z
z
&
C/#5E
Interseciile -re"telor 4ZZBZZ i BZZCZZ cu -rea"ta A Q A
i
au coor-onatele
z
i,1
= m
1z
y
i
+n
1z
i z
i,2
= m
2z
y
i
+n
2z
1 Coor-onatele "unctelor -e intersecie ale
-re"tei y = y
i+1
= y
i
+1, se "ot calcula -in coor-onatele interseciilor "rece-ente
(olosin- coe(icienii %
16
i %
26
ai laturilor intersectate:
z
i+1,1
= z
i,1
+ m
1z

z
i+1,2
= z
i,2
+ m
2z
C/#9E
Pentru (iecare linie -e baleiere se calculea61 coor-onatele interseciilor cu laturile
"oli&onului "rin incre%entarea 8alorilor "rece-ente cu coe(icienii -ai -e relaiile
C/#5E#
Cele -ou1 o"eraii -e baleiere, "entru calculul a-resei i al a-;nci%ii "i3elilor -e
"e conturul unei su"ra(eei 4BCDE, se e3ecut1 conco%itent "rin intersecia su"ra(eei
cu "lanele -e ecuaii y = y
1
, y = y
2
,T# y
i
, y
i+1
, T >aturile 4B i BC sunt
intersectate -e "lanul y = y
i
9n "unctele 0
i,1
i 0
i,2
# Interseciile Cx
i,1
, y
i
E, Cx
i,2
,
y
i
E se calculea61 9n "lanul z
6
= 0, "rin intersecia -re"tei y = y
i
cu "roieciile
4ZBZ i BZCZ ale laturilor 4B i BC 9n "lanul z
6
= 0# Interseciile Cz
i,1
, y
i
E, Cz
i,2
,
y
i
E se calculea61 9n "lanul x
6
= 0, "rin intersecia -re"tei A Q A
i
cu "roieciile 4ZZBZZ
i BZZCZZ ale laturilor 4B i BC 9n "lanul x
6
= 0#
4-resele "i3elilor se obin "rin rotunBirea Csau trunc2iereaE coor-onatelor "unctelor -e intersecie Cx
i,1
,
y
i
E, Cx
i,2
, y
i
E$ 8alorile z
i,1
i z
i,2
re"re6int1 a-;nci%ea acestor "i3eli, care se a(l1 "e conturul
"oli&onului#
Pentru calculul a-;nci%ii "i3elilor interiori Ca celor ce nu se a(l1 "e conturul "oli&onuluiE, se e(ectuea61 o
inter"olare "e (iecare linie -e baleiere#
Fn "lanul y = y
i
, relaia -intre coor-onatele x i z ale -re"tei 5
i,1
5
i,2
este:
z = m
ix
x+n
ix
(/#1E
un-e: m
ix
= (x
i,2
x
i,1
).(z
i,2
z
i,1
), n
ix
= z
i,1
m
ix
x
i,1
Fig. !.9 Baleierea "oli&onului 9n "lanul A6#
3
6
3
i,1
3
i,2
6
i,2
6
i,1
5
i,1
5
i,2
?n "unct "e aceast1 -rea"t1 are coor-onatele 3i,B, 6i,B Q 3i,B %i3 P ni3# Pe se&%entul -e -rea"t1 0i,10i,2 se
calculea61 "uncte succesi8e "rin incre%entarea cu 1 a coor-onatei 3 i calculul "rin incre%entare cu
"anta m
ix
a coor-onatei z:
x
i,j+1
= x
i,j
+18 z
i,j+1
= z
i,j
+ m
ix
C/#11E
:aloarea z
i,j
re"re6int1 a-;nci%ea "i3elului a c1rui a-res1 se obine "rin rotunBirea sau trunc2ierea
coor-onatelor "unctului Cx
i,j
, y
i
E#
Toate aceste o"eraii se e3ecut1 "entru (iecare (a1 a obiectelor tri-i%ensionale 9n siste%ul -e coor-onate
ecran !D, i "entru (iecare "i3el se actuali6ea61 9n %o- cores"un61tor culoarea 9n bu((erul -e i%a&ine i
a-;nci%ea 9n bu((erul -e a-;nci%e# E3"ri%ate 9n "seu-oco- ase%1n1tor li%baBului C, o"eraiile
co%binate -e con8ersie -e baleiere i <=bu((er C(uncia )canlineE arat1 ast(el:
8oi- )canlineCEU
(or Ctoate 8alorile C3,AEEU
i%a&ebbu((erR3SRAS Q culoarebster&ere$
#9bffe:;x<;y< = max9z8 .= ini!ia'iza:e #-
bffe: =.
}
f+: (fieca:e >+'i(+n){
ca'c'' y
min
, y
max
a'e >+'i(+n'i8
f+: (y
i
= y
min
8 y
i
?= y
max
8y
i
++){
ca'c' x
i,1
, x
i,2
ca'c' z
i,1
, z
i,2
f+: (x=x
i,1
8x?x
i,2
8x++){
ca'c' z8
if(z ? #9bffe:;x<;y<){
#9bffe:;x<;y< = z8
ima(e9bffe:;x<;y< = c'+a:e8
}
}
}
}
}
Cel %ai i%"ortant a8antaB al al&orit%ului <=bu((er este si%"litatea i%"le%ent1rii lui, iar -e6a8antaBul
"rinci"al 9l constitue %e%oria su"li%entar1 necesar1 "entru i%"le%entarea bu((erului -e a-;nci%e#
Di%ensiunea (iec1rei locaii C(iecare locaie cores"un6;n- unui "i3el -in i%a&ineE este -at1 -e "reci6ia -e
re"re6entare a a-;nci%ii 6# Datorit1 co%"resiei "e care o intro-uce trans(or%area -e la siste%ul -e
re(erin1 -e obser8are la siste%ele -e re(erin1 nor%ali6at i ecran !D Crelaia '#1E, este "osibil ca -ou1
8alori 6: -istincte s1 (ie trans(or%ate 9n 8alori 6) i-entice# Fn %o- obinuit, se (olosesc 2 sau !2 -e bii
"entru re"re6entarea a-;nci%ii unui "i3el, ceea ce 9nsea%n1 c1 <=bu((erul "oate -e8eni %ai %are -ec;t
bu((erul -e i%a&ine, construit 9n %o- obinuit cu 2' -e biiW"i3el#
Fn reali61rile %ai 8ec2i ale siste%elor &ra(ice, bu((erul -e a-;nci%e era i%"le%entat 9n %e%oria
"rinci"al1# Fn %o%entul actual, sunt -is"onibile ter%inale &ra(ice care au <=bu((erul reali6at ca o
%e%orie -e-icat1, i aceasta re"re6int1 cea %ai bun1 soluie#
?n alt a8antaB al <=bu((erului 9l re"re6int1 in-e"en-ena -e (or%a -e re"re6entare a obiectelor#
Descrierea -at1 %ai sus se re(er1 la utili6area <=bu((erului 9n re-area obiectelor %o-elate "rin su"ra(ee
Fig. !./" Inter"olarea a-;nci%ilor "e linia -e baleiere y = y
i
#
"oli&onale, -ar aceasta nu este o restricie, -eoarece se "oate calcula a-;nci%ea 6 "entru orice ti" -e
su"ra(a1, iar %ecanis%ul -e co%"araie a a-;nci%ilor este acelai#

Eliminarea !upra(e&elor orientate in+er!
4l&orit%ii -e eli%inare a su"ra(eelor ascunse "re6entai %ai sus se ocu"1 -e
co%"ararea su"ra(eelor "ro8enin- -e la oric;te obiecte -i(erite, "entru care trebuie s1
(ie calculate a-;nci%ile i sortate C9n s"aiul obiectE sau co%"arate C9n s"aiul i%a&ineE
"entru a -eci-e care su"ra(a1 ascun-e o alt1 su"ra(a1#
E3ist1 9ns1 i o situaie -e ascun-ere 9ntre su"ra(ee care se "oate re6ol8a %ult
%ai si%"lu, i anu%e ascun-erea reci"roc1 9ntre (eele unui obiect o"ac#
Fn %o-elarea obiectelor tri-i%ensionale, (eele co%"onente sunt re"re6entate orientat 9n s"aiu, ast(el
9nc;t nor%alele tuturor (eelor unui obiect s1 (ie 9n-re"tate c1tre aceeai re&iune a s"aiului Cs"re
interiorul sau s"re e3teriorul obiectuluiE#
Dac1 un obiect o"ac ale c1rui nor%ale la (ee sunt 9n-re"tate s"re e3terior, este
"ri8it -intr=un "unct -e obser8are, (eele ale c1ror nor%ale sunt orientate c1tre "unctul
-e obser8are ascun- C%asc2ea61E (eele ale c1ror nor%ale sunt orientate 9n -irecie
in8ers1#
+rientarea consistent1 a (eelor unui obiect "er%ite selecia nu%ai a acelor (ee ale obiectului care sunt
orientate c1tre "unctul -e obser8are# 4ceast1 o"eraie -e selecie Cnu%it1 eli%inarea (eelor orientate
in8ers = G-in s"ateH = $ac3face eliminationE se e(ectuea61 9n siste%ul -e re(erin1 -e obser8are CFi&# /#11E#
Pentru testul -e 8i6ibilitate al (eelor 9n (uncie -e orientare se calculea61 "ro-usul scalar -intre nor%ala
la su"ra(a1 i un 8ector -intr=un "unct al (eei s"re "unctul -e obser8are# Dac1 nor%alele la (eele
obiectului sunt 9n-re"tate c1tre e3terior Csens "o6iti8, in8ers acelor -e ceasE i un&2iul -intre cei -oi
8ectori este %ai %ic -e 9, atunci su"ra(aa este 8i6ibil1#
Pro-usul scalar a -oi 8ectori, N i J este:
cos Q N J N K J
un-e [J[ i [N[ sunt %o-ulele celor -oi 8ectori, iar este un&2iul -intre ei# )e "oate scrie -eci:
Fig. !.// )elecia (eelor 9n (uncie -e orientare
Nor%ala la su"ra(a1
Nor%ala la su"ra(a1
Nor%ala la su"ra(a1
Punctul -e
obser8are

In8i6ibil1
:i6ibil1
:i6ibil1
_ 9
` 9
_ 9
:N ` -ac1 _ 9
:N Q -ac1 Q 9
:N _ -ac1 ` 9
De aici re6ult1 con-iia -e 8i6ibilitate a unei (ee: "entru ca o (a1 s1 (ie 8i6ibil1, "ro-usul scalar
-intre nor%ala acesteia i un 8ector -intr=un "unct al (eei s"re "unctul -e obser8are trebuie s1 (ie "o6iti8:
NJ `
C/#12E
Dac1 se consi-er1 nor%ala la su"ra(a1 orientat1 c1tre interiorul obiectului C9n sens ne&ati8, 9n
-irecia acelor -e ceasE, atunci con-iia -e 8i6ibilitate a unei (eei este ca "ro-usul scalar -intre nor%al1 i
un 8ector -intr=un "unct al (eei s"re "unctul -e obser8are trebuie s1 (ie ne&ati8#
Eli%inarea (eelor orientate in8ers se e3ecut1 9n siste%ul -e re(erin1 -e obser8are$ orice (a1 care
este in8i6ibil1 este i&norat1 "entru o"eraiile ulterioare -e re-are# 4cest test este (oarte i%"ortant
-eoarece, 9n %e-ie, Bu%1tate -in (eele unui obiect tri-i%ensional sunt orientate in8ers (a1 -e "unctul -e
obser8are i "ot (i eli%inate -in calcul#
Dac1 obiectul are (ee trans"arente, atunci nu se "ot eli%ina (eele 9n (uncie -e orientare i toate
(eele obiectului trebuie s1 (ie luate 9n consi-erare i "relucrate cores"un61tor# Pentru o (a1 -at1 "rin
succesiunea 8;r(urilor sale :1,:2, T#:n, nor%ala se calculea61 ca "ro-us 8ectorial a 8ectorilor care
re"re6int1 -ou1 laturi succesi8e CFi&# /#12 CaEE#
N Q C:2 D :1E 3 C:! D:2E
Dac1 C3%, A%, 6%E re"re6int1 coor-onatele 8;r(ului :% , , iar i, :, ; sunt 8ersorii a3elor 3,A,6 atunci nor%ala
N are e3"resia:
2 3 2 3 2 3
1 2 1 2 1 2 2 3 1 2
z z y y x x
z z y y x x ) V V ( ) V V (


> ? i
8
)e -e68olt1 -eter%inantul -u"1 "ri%a linie, i re6ult1:
N Q CCA2 D A1E C6! D 62E D CA! D A2E C62 D 61EE i =
CC3! D 32E C62 D 61E D C32 D 31E C6! D 62EE : = C/#1!E
CC32 D 31E CA! D A2E D C3! D 32E CA2 D A1EE ;
Dac1 or-inea -e "arcur&ere a 8;r(urilor (eei se in8ersea61, -eci se consi-er1 (aa :n,T:2:1, atunci
nor%ala se calculea61 "rin "ro-usul NQC:2D:!E3C:1D :2E care are se%nul in8ersat CFi&# /#12 CbEE, ceea
ce se re&1sete 9n (or%ula -e calcul a "ro-usului 8ectorial#
Re6ult1 c1 sensul 8ectorului nor%al la o (a1 este -at -e or-inea -e "arcur&ere a 8;r(urilor (eei# Dac1 9n
siste%ul -e re(erin1 local C-e %o-elareE (eele unui obiect sunt -e(inite C"rin or-inea 8;r(urilorE ast(el
9nc;t toate nor%alele s1 (ie 9n-re"tate s"re aceeai re&iune a s"aiului Cs"re e3teriorul obiectuluiE, aceast1
orientare se "1strea61 -u"1 trans(or%area -e instaniere i obser8are i 9n siste%ul -e re(erin1 -e
obser8are obiectele 8or a8ea nor%alele orientate consistent Ctoate orientate c1tre e3teriorE# 4ceast1
:
1
:
!
:
2
:
/
:
'
N
CaE
:
1
:
!
:
2
:
/
:
'
N
CbE
Fig. !./1 Calculul nor%alei la o su"ra(a1#
con-iie este su(icient1 "entru calculul 8i6ibilit1ii (iec1rei (ee "rin "ro-us scalar al nor%alei cu 8ectorul
-e -irecie -e la un "unct al (eei c1tre "unctul -e obser8are#
Eli%inarea su"ra(eelor orientate in8ers ale obiectelor o"ace trebuie s1 (ie e(ectuat1 9n orice siste% -e
8i6uali6are, -eoarece este un test care se e3ecut1 e(icient i eli%in1 9n %e-ie Bu%1tate -in su"ra(eele
obiectelor -in scen1#
Dac1 scena este co%"us1 -intr=un sin&ur obiect con8e3 o"ac, eli%inarea
(eelor orientate in8ers este su(icient1 "entru a re6ol8a "roble%a ascun-erii (eelor
in8i6ibile# Dac1, 9ns1, obiectul este conca8, este "osibil ca o (a1 orientat1 -irect Cc1tre
"unctul -e obser8areE s1 (ie "arial %ascat1 -e o (a1 orientat1 in8ers i atunci
eli%inarea su"ra(eelor orientate in8ers nu %ai este su(icient1, (iin- necesar unul -in
al&orit%ii -e eli%inare a su"ra(eelor ascunse care se ba6ea61 "e calculul a-;nci%ii#
>a (el, -ac1 9n scen1 e3ist1 %ai %ult -e un obiect, "e l;n&1 eli%inarea su"ra(eelor
orientate in8ers, este necesar1 eli%inarea su"ra(eelor ascunse#
A$&i-alia.i$g
)e "oate obser8a uor c1 liniile a(iate "e -is"laA a"ar ca o sec8en1 -e "uncte
care -au un as"ect 6i%at C9n tre"te -e scar1E, as"ect cunoscut sub nu%ele -e aliasing#
Fn te3t se 8a "1stra ter%enul ori&inal -e aliasin&, -at (iin- c1 tra-ucerile sunt %ai "uin
su&esti8e#
Cau6a (un-a%ental1 a aliasin&=ului 9n &ra(ica "e calculator este crearea
i%a&inilor "rin eantionare 9n -o%eniul s"aiului i, "entru i%a&inile ani%ate, i 9n
-o%eniul ti%"# Pentru &enerarea unei i%a&ini, "asul (inal 9l constitue calculul
intensit1ii "i3elilor, care re"re6int1 trecerea -e la intensitatea @(x,y) -e(init1 9n
s"aiul bi-i%ensional continuu, la intensitatea (iec1rui "i3el, 9n s"aiul i%a&ine -iscret#
4ceast1 trecere este ec2i8alent1 cu eantionarea s"aiului bi-i%ensional continuu cu o
&ril1 -e "uncte -e eantionare, consi-erate, -e e3e%"lu, 9n centrul (iec1rui "i3el
Cea %ai (a%iliar1 %ani(estare a aliasin&=ului 9l constitue as"ectul -e as"eritate
C0aggedE al liniilor sau al %uc2iilor "oli&oanelor# De ase%enea, su"ra(eele 9n&uste "ot
a"are 9ntreru"te, 9n (uncie -e orientarea lor# ?n alt e(ect al aliasin&=ului 9l constitue
a"ariia i -is"ariia obiectelor %ici, care ocu"1 o su"ra(a1 %ai %ic1 -ec;t su"ra(aa
unui "i3el i care sunt re-ate sau nu 9n (uncie -e intersecia cu &rila -e eantionare#
4ceste e(ecte sunt %ai su"1r1toare 9n sec8enele -e i%a&ini 9n %icare#
0uc2iile 9n (or%1 -e scar1 sau su"ra(eele 9ntreru"te -au o sen6aie -e %icare
necontrolat1 a acestora CcrowlE, care este intolerabil1 9n %ulte a"licaii -e realitate
8irtual1, -e e3e%"lu 9n si%ulatoarele -e 6bor#
Te2nicile -e "relucrare a i%a&inii "entru atenuarea e(ectelor -e aliasin& sunt
cunoscute sub nu%ele -e anti=aliasin&# Toi al&orit%ii (olosii "entru -i%inuarea
e(ectului -e aliasin& necesit1 resurse -e %e%orie i -e calcul consi-erabile i, cu c;t
se a-%it a"ro3i%1ri %ai &rosiere, cu at;t sca-e calitatea i%a&inii -atorit1 6&o%otului
-e s"ectru trans"us# Fn seciunea 7 este "re6entat1 o %o-alitate -e nete6ire a %uc2iilor
"oli&oanelor i%"le%entat1 9n biblioteca &ra(ic1 +"en,>#
*e9&)rarea
4"licarea te3turilor este o te2nic1 i%"ortant1 -e cretere a realis%ului
scenelor 8irtuale, "rin care se &enerea61 i%a&ini ale obiectelor tri-i%ensionale %ult
%ai interesante i %ult %ai co%"le3e# Prin te3turare se %o-ulea61 culoarea
su"ra(eelor obiectelor (olosin- o i%a&ine re"etiti81 Cte3turaE, obin;n-u=se un e(ect
ase%1n1tor aceleia -e a"licare Cli"ireE a unui -esen "e o su"ra(a1#
Fn -ecursul -e68olt1rii te2nicilor -e te3turare, au (ost "ro"use i alte
%o-alit1i -e creare a i%"resiei -e te3turare, -e e3e%"lu "rin "erturbaia nor%alelor
su"ra(eelor, sau "rin 8ariaii ale ilu%in1rii %e-iului a%biant al obiectelor# Fn
%o%entul actual, %eto-a cea %ai lar& r;s"9n-it1, cu nu%eroase i%"le%ent1ri
2ar-Lare 9n siste%ele &ra(ice, este "rin %o-ularea culorii su"ra(eelor obiectelor
(olosin- i%a&ini -e te3turare# Te3turile care %o-ulea61 culoarea su"ra(eelor %1resc
in(or%aia 8i6ual1 "re6entat1 "rin su&erarea %aterialului su"ra(eei# De e3e%"lu, "rin
a"licarea re"etat1 a i%a&inii unei c1r1%i6i Cobinut1, -e cele %ai %ulte ori "rin
scanarea unei (oto&ra(ii a unui "erete realE, un sin&ur -re"tun&2i ca"1t1 as"ectul unui
"erete 9ntre& CFi&# /#1!CaEE# Desenarea unui ast(el -e "erete (olosin- c;te un "oli&on
"entru (iecare c1r1%i-1 este e3tre% -e ine(icient1 i i%a&inea obinut1 este nerealist1,
-eoarece (iecare c1r1%i-1 este "rea nete-1 i re&ulat1# De ase%enea, "rin te3turare se
"oate a"lica "e o su"ra(a1 o i%a&ine care este "ractic i%"osibil s1 (ie &enerat1 "rin
su"ra(ee "oli&onale CFi&# /#1!CbEE#
Pentru te3turarea obiectelor "rin %o-ularea culorii su"ra(eelor trebuie s1 se
-e(ineasc1 ur%1toarele caracteristici:
0o-ul -e a"licare a te3turii "e su"ra(aa unui obiect#
0o-ul -e -i%inuare Celi%inareE a e(ectelor -e aliasin& care a"ar 9n
a"licarea te3turilor C(iltrarea te3turilorE#
Apli"a&ia te3turilor
CaE CbE
Fig. !./3 )u"ra(ee te3turate "rin a"licarea unei te3turi bi-i%ensionale
4"licaia te3turii Cte-ture mappingE asi&ur1 re-area corect1 a "oli&oanelor,
atunci c;n- li se atribuie o te3tur1# De e3e%"lu, atunci c;n- un "erete te3turat este
obser8at 9n "ers"ecti81, c1r1%i6ile %ai -e"1rtate se 81- %ai %ici -ec;t cele a"ro"iate#
Te3turile "ot (i -e(inite ca i%a&ini bi-i%ensionale, care se a"lic1 su"ra(eelor
obiectelor, sau ca un c;%" tri-i%ensional, i atunci culoarea obiectului se -eter%in1
"rin intersecia su"ra(eelor sale cu acest c;%" tri-i%ensional al te3turii# Te3turile
tri-i%ensionale sunt %ai rar i%"le%entate 9n siste%ele &ra(ice, -e aceea 9n continuare
8or (i "re6entate nu%ai te3turile bi-i%ensionale#
Te3tura bi-i%ensional1 este o i%a&ine -e(init1 9ntr=un s"aiu bi-i%ensional
Cnu%it s"aiul te3turiiE TCs, tE, 9n inter8alul R,1S "e a%bele a3e -e coor-onate s i t#
Te3tura este alc1tuit1 -in ele%entele co%"onente -iscrete care sunt -re"tun&2iuri Csau
"1trateE nu%ite te3eli# Fiecare i%a&ine -e te3tur1 este -e(init1 "rin re6oluia ei, -at1 ca
nu%1r -e te3eli "e cele -ou1 coor-onate# De e3e%"lu, se (olosesc i%a&ini -e te3tur1
-e 2/. 3 2/. te3eli, /12 3 12', 12' 3 12', etc#
4"licaia te3turii bi-i%ensionale unui obiect const1 -in "ara%etri6area
su"ra(eelor, ur%at1 -e trans(or%area obiectului 9n siste%ul -e re(erin1 ecran !D CFi&#
/#1'E# Prin "ara%etri6area su"ra(eelor se asocia61 un "unct -e coor-onate Cs, tE 9n
s"aiul te3turii (iec1rui 8;r( al obiectului %o-elat Cre"re6entat 9n siste%ul -e re(erin1
-e %o-elareE# Trans(or%area co%"let1 -e a"licaie a te3turii %ai necesit1, -u"1
"ara%etri6area su"ra(eelor, toate trans(or%1rile &eo%etrice obinuite, -e la siste%ul
-e re(erin1 %o-el Cs"aiul obiectE la siste%ul -e re(erin1 ecran !D#
Dac1 se co%"un cele -ou1 trans(or%1ri C"ara%etri6area su"ra(eei i
trans(or%area 9n s"aiul ecran !DE se obine o trans(or%are -e a"licaie a te3turii
Cte-ture mappingE, care trans(or%1 "uncte -in s"aiul te3turii 9n s"aiul ecran !D# Fn
Fi&# /#1/ CaE, te3tura este o tabl1 -e a2, -e(init1 9n s"aiul te3turii# 4ceast1 te3tur1
este a"licat1 unor su"ra(ee "rin -e(inirea coor-onatelor (iec1rui 8;r( al su"ra(eei 9n
"lanul te3turii, iar "rin trans(or%area 9n s"aiul ecran !D i trans(or%area -e rastru, se
obine i%a&inea su"ra(eelor te3turate CFi&# /#1/ Cb1, b2, cEE#
Trans(or%area -e "ara%etri6are a%"lasea61 i%a&inea te3turii "e un obiect
"rin asocierea unui "unct Cs, tE 9n s"aiul te3turii C"ara%etrul -e te3turareE, (iec1rui
"unct C3
%
, A
%
, 6
%
E al obiectului# 0o-ul cu% "oate (i colat1 o su"ra(a1 "lan1 Cte3turaE
"e un obiect tri-i%ensional nu are o soluie unic1 i nu "oate (i reali6at -ec;t a-%i;n-
-i(erite ti"uri -e erori i -istorsiuni# Fn i%"le%ent1rile "ractice au (ost a-o"tate %ai
%ulte te2nici s"eci(ice a"licaiilor# De e3e%"lu, se "oate atribui c;te o te3tur1 (iec1rei
(ee a unui obiect Caa cu% este 9n Fi&# /#1!E, unui &ru" -e (ee ale obiectului, sau se
"oate "roiecta aceeai te3tur1 "e toate (eele obiectului#
s
t
CaE
1#
1#
Cb1E Cb2E
CcE
)"aiul te3turii
TCs,tE
)"aiul obiect
C3
%
, 6
%
, A
%
E
)"aiul ecran !D
C3
)
, A
)
E
Para%etri6area
su"ra(eelor
Proiecie
Fig. !./ +"eraiile -e a"licaie a te3turilor bi-i%ensionale#
Pentru a"licaia te3turii "e o su"ra(a1 "lan1, se -e(inesc coor-onatele Cs, tE 9n
s"aiul te3turii "entru (iecare 8;r( al su"ra(eei# 4ceste coor-onate sunt calculate o
sin&ur1 -at1, la %o-elarea obiectului, i sunt %e%orate 9%"reun1 cu coor-onatele
8;r(ului i cu nor%ala 9n 8;r(# Dac1 s, t 1, atunci i%a&inea te3turii a"are C9n
9ntre&i%e sau "arialE "e su"ra(aa te3turat1# De e3e%"lu, 9n Fi&# /#1/, "ri%a su"ra(a1
te3turat1, are coo-onatele 8;r(urilor 9n s"aiul te3turii C#, #E, C#/, #E C#/, 1#E,
C#, 1#E, i i%a&inile -in Fi& /#1/Cb1E i Cb2E se obin "rin -ou1 trans(or%1ri -e
%o-elare -i(erite Ca%"lasare 9n s"aiul uni8ersalE# Cea -e a -oua su"ra(a1 are
coor-onatele 8;r(urilor 9n s"aiul te3turii C#/, 1#E, C1#, #E, C1#, 1#E, C#/, #/E i
i%a&inea -in Fi&# /#1/CcE "entru un anu%it "unct -e obser8are#
Dac1 coor-onatele 8;r(urilor su"ra(eei 9n s"aiul te3turii -e"1esc "1tratul cu
latur1 e&al1 cu 1 9n care este -e(init1 i%a&inea -e te3tur1, atunci se "oate ca te3tura s1
se re"ete "e su"ra(aa te3turat1# De e3e%"lu, 9n i%a&inea -in Fi&# /#1!CaE, (aa
8ertical1 a cubului are coor-onatele -e te3tur1 ale 8;r(urilor C#, #E, C'#, #E, C'#,
'#E, C#, '#E# Te3tura C(or%at1 -in -ou1 Gc1r1%i6iHE se re"et1 -e "atru ori "e
su"ra(a1 Cse 81- o"t c1r1%i6iE#
4-resa te3elilor cores"un61tori "i3elilor unei "ri%iti8e &eo%etrice Cobinui
"rin trans(or%area -e rastruE, se calculea61 "rintr=o transformare invers
transformrii de aplica(ie a te-turii. ?n "i3el, -e(init ca un "1trat 9n s"aiul ecran !D,
este trans(or%at 9n s"aiul %o-el obiect "rintr=o trans(or%are in8ers1 trans(or%1rii
%o-el=ecran !D, i a"oi este trans(or%at 9n s"aiul te3turii, "rintr=o trans(or%are
in8ers1 trans(or%1rii -e "ara%etri6are# Deoarece trans(or%area in8ers1 trans(or%1rii
%o-el=ecran !D nu este linear1, unui "i3el -in i%a&ine 9i cores"un-e o su"ra(a1 9n
s"aiul te3turii care, 9n &eneral, este un "atrulater# Culoarea te3elului cores"un61tor
acestui "atrulater este atribuit1 "i3elului#
Calculul te3elilor 9n s"aiul te3turii cores"un61tori "i3elilor "ri%iti8elor
&eo%etrice este un "roces -e eantionare i este "osibil s1 a"ar1 un 6&o%ot -e s"ectru
trans"us Caliasian&E, atunci c;n- (rec8ena -e eantionare este %ai %ic1 -ec;t -ublul
(rec8enei s"aiale %a3i%e a te3turii# De aceea trebuie s1 (ie (olosite te2nici -e anti=
aliasin&, a-ic1 (iltrarea te3turilor# 4ceste as"ecte sunt "re6entate 9n "ara&ra(ul ur%1tor#
Fig. !./! Trans(or%area -e a"licaie a te3turilor#
CaE )"aiul te3turii# Cb1E, Cb2E, CcE )u"ra(ee te3turate 9n s"aiul ecran !D#

Filtrarea te3turilor
Feno%enul -e aliasin& care a"are 9n te3turare are cau6a 9n eantionarea
i%a&inii -e te3tur1# Trans(or%area -in s"aiul ecran !D 9n s"aiul te3turii
bi-i%ensionale &enerea61 o su"ra(a1 9n (or%1 -e "atrulater cores"un61toare (iec1rui
"i3el, care este nu%it1 "re=i%a&inea "i3elului# Pentru si%"li(icarea "re6ent1rii se
"resu"une c1 "re=i%a&inea "i3elului este un "1trat 9n s"aiul te3turii CFi&# /#1.E#
Dac1 nu se e(ectuea61
(iltrarea te3turii, atunci se
atribuie "i3elului culoarea
te3elului cel %ai a"ro"iat -e
centrul "re=i%a&inii acestuia# Probele%ele -e aliasin& care a"ar 9n aceast1 situaie sunt
(oarte &ra8e, %ai ales "entru i%a&inile su"ra(eelor "ri8ite 9n "ers"ecti81, 9n care
8aria61 %ult -i%ensiunea "re=i%a&inii "i3elilor#
Pre=i%a&inea unui "i3el 9n "lanul te3turii -e"in-e -e "o6iia su"ra(eei (a1 -e
"unctul i -irecia -e obser8are# )e "resu"une o su"ra(a1 "1trat1 cu "ara%etrii te3turii
C,E, C1,E, C1,1E, C,1E, "er"en-icular1 "e -irecia -e obser8are, la o -istan1 D ast(el
c1 i%a&inea ei "e ecran este un "1trat -e N 3 N "i3eli# )e %ai "resu"une, -e
ase%enea, c1 te3tura (olosit1 are re6oluia -e N 3 N te3eli# Fn aceast1 situaie, aria "re=
i%a&inii unui "i3el 9n s"aiul te3turii este e&al1 un aria unui te3el CFi&# /#17E#
Fig. !./7 Pre=i%a&inea unui "i3el 9n s"aiul te3turii#
Poli&on Te3tur1
Pi3el
Pre=i%a&ine
"i3el
Poli&on
Te3tur1
Pi3el
Pre=i%a&ine
"i3el
Dac1 su"ra(aa se a"ro"ie -e "unctul -e obser8are, la -istan1 DW2, atunci
i%a&inea su"ra(eei "e ecran este -e 2N 3 2N "i3eli i i%a&inea celor 2N 3 2N "i3eli
aco"er1 N 3 N te3eli, -eci aria i%a&inii unui "i3el este acu% c -in aria unui te3el
CFi&# /#15E# Cu c;t su"ra(aa se a"ro"ie %ai %ult, cu at;t sca-e -i%ensiunea "re=
i%a&inii "i3elului 9n "lanul te3turii i, -eci crete (rec8ena -e eantionare Cin8ersul
-i%ensiunii "re=i%a&inii "i3eluluiE a te3turii# Fn aceast1 situaie nu a"are 6&o%ot -e
aliasin&, -ar i%a&inea nu -e8ine %ai bun1, c2iar -ac1 se e(ectuea61 (iltrarea "rin
%e-ierea "on-erat1 a culorilor te3elilor aco"erii -e "re=i%a&inea "i3elului# 4ceast1
situaie se -atorea61 (a"tului c1 te3tura nu este o i%a&ine continu1, ci este re"re6entat1
"rin ele%ente -iscrete Cte3eliiE i se obser81 -iscontinuit1ile -e trecere -e la un te3el
la altul#
Dac1 su"ra(aa se -e"1rtea61 -e "unctul -e obser8are, -e e3e%"lu la -istana
2D, atunci su"ra(aa are -i%ensiunea -e CNW2E 3 CNW2E "i3eli "e ecran este i i%a&inea
acestora aco"er1 N 3 N te3eli, -eci aria "re=i%a&inii unui "i3el este -e "atru ori %ai
%are -ec;t aria unui te3el CFi&# /#19E#
Cu c;t su"ra(aa se -e"1rtea61 %ai %ult, cu at;t crete -i%ensiunea "re=
i%a&inii "i3elului 9n "lanul te3turii i, -eci, sca-e (rec8ena -e eantionare a te3turii
Fig. !./7 Pre=i%a&inea unui "i3el cu arie e&al1 cu aria te3elului
Fig. !./6 Pre=i%a&inea unui "i3el cu arie %ai %ic1 -ec;t aria te3elului
Poli&on
Te3tur1
Pi3el
Pre=i%a&ine
"i3el
Poli&on
Te3tur1
Pi3el
Pre=i%a&ine
"i3el
Fig. !./9 Pre=i%a&inea unui "i3el cu aria %ai %are -ec;t aria unui te3el#
Cin8ersul -i%ensiunii "re=i%a&inii "i3eluluiE# Fn aceast1 situaie a"are 6&o%ot -e
aliasin&, -ac1 nu se e(ectuea61 (iltarea i%a&inii te3turii# Filtrarea se e3ecut1 9ntr=o
(ereastr1 Fourier "e -i%ensiunea "re=i%a&inii unui "i3el 9n "lanul te3turii, i se
e(ectuea61 "rin %e-ierea "on-erat1 a intensit1ilor tuturor te3elilor aco"erii -e "re=
i%a&inea "i3elului#
Prefil&rarea &e9&)rilor# Proce-eul -e (iltrare a te3turii "oate (i accelerat
-atorit1 (a"tului c1 i%a&inea care se (iltrea61 Cte3turaE este cunoscut1 i se "ot construi
i%a&ini "re(iltrate ale acesteia# Fn loc s1 se e(ectue6e %e-ierea "e su"ra(aa %ai %ultor
te3eli atunci c;n- "re=i%a&inea "i3elului aco"er1 un nun1r %are -e te3eli, se "oate
(olosi o i%a&ine -e te3tur1 "re(iltrat1, cu re6oluie %ai sc16ut1, 9n care culoarea
(iec1rui nou te3el re"re6int1 %e-ia culorilor te3elilor -in te3tura ori&inal1#
+ te2nic1 ele&ant1 -e "re(iltrare a te3turilor, care are o %are "o"ularitate i
nu%eroase i%"le%ent1ri 2ar-Lare 9n acceleratoarele &ra(ice, este te2nica nu%it1
mip&map, -e68oltat1 -e Kilia%s 9n 195!# Fn loc s1 (ie (olosit1 o sin&ur1 i%a&ine -e
te3tur1, 9n te2nica %i"=%a" se (olosete o succesiune -e i%a&ini ale aceleiai te3turi,
toate -eri8ate -in i%a&inea ori&inal1, "rin %e-ierea culorilor i re-ucerea re6oluiei#
Fiecare i%a&ine -in succesiune are o re6oluie e&al1 cu Bu%1tatera re6oluiei i%a&inii
"rece-ente i (iecare te3el este %e-ia a "atru te3eli -in i%a&inea "rece-ent1##
Ter%enul mip "ro8ine -in e3"resia multum in parvo C%ulte lucruri 9ntr=un s"aiu
restr;nsE# Para%etrul > este "ara%etrul -e selecie a ni8elului -e (iltrare a te3turii#
Ni8elul > Q re"re6int1 i%a&inea ori&inal1 a te3turii Ci%a&inea ne(iltrat1E cu re6oluia
%a3i%1# Fn &eneral, 9n te2nica %i"=%a" se (olosesc re6oluii e&ale "e cele -ou1
coor-onate s i t, cu 8aloare o "utere a lui 2, iar i%a&inile "re(iltrate au re6oluii care
sca- "rin 9nBu%1t1ire ";n1 la 8aloarea 1 3 1 CFi&# /#2E#
Prin selecia ni8elului -e (iltrare a te3turii C>E, se ale&e i%a&inea cu re6oluia
cea %ai "otri8it1 "entru -i%ensiunea "re=i%a&inii "i3elului# Pentru e8itarea
-iscontinuit1ilor 9ntre i%a&ini la re6oluii -i(erite, se "ot co%bina -ou1 ni8ele -e
(iltrare "rin inter"olare liniar1# )elecia corect1 a ni8elului > este i%"ortant1# Dac1 >
este "rea %are, i%a&inea a"are esto%"at1$ -ac1 > este "rea %ic, atunci se obser81
Fig. !.1" Te3tur1 %i"=%a"
> Q > Q 2 > Q 1 > Q ! > Q '
6&o%otul -e aliasin&# Ni8elul > se ale&e ast(el ca aria "re=i%a&inii "i3elului s1 (ie c;t
%ai a"ro"iat1 -e aria te3elului#
Detaliile -e e3ecuie ale "re(iltr1rii (olosin- te3turi %i"=%a" -e"in- -e
i%"le%entarea s"eci(ic1, 2ar-Lare sau so(tLare# Fn seciunea ur%1toare sunt
"re6entate (unciile bibliotecii +"en,> "rin care se "ot "ro&ra%a a"licaii &ra(ice
(olosin- te3turarea su"ra(eelor#
(
)ilioteca grafic *pen+,
Pentru "ro&ra%area a"licaiilor &ra(ice co%"le3e necesare 9n crearea i
re-area scenelor 8irtuale, se "ot utili6a 9n %o%entul -e (a1 %ai %ulte biblioteci i
inter(ee &ra(ice, "recu% i siste%e -e -e68oltare -e "ro&ra%e Ctool@it=uriE, care
"er%it "roiectantului s1 reutili6e6e un nu%1r %are -e (uncii &ra(ice -eBa
i%"le%entate i s1=i concentre6e e(orturile asu"ra a"licaiei 9ns1i# Dat (iin- c1
%aBoritatea acestor biblioteci sunt (oarte ie(ine sau accesibile &ratis "rin Internet i "ot
(i (olosite 9ntr=un nu%1r %are -e "lat(or%e 2ar-Lare i so(tLare, cunoaterea i
utili6area lor este -eosebit -e i%"ortant1 i util1#
Dintre bibliotecile &ra(ice e3istente, biblioteca +"en,>, scris1 9n li%baBul C,
este una -intre cele %ai utili6ate, -atorit1 (a"tului c1 i%"le%entea61 un nu%1r %are -e
(uncii &ra(ice -e ba61 "entru crearea a"liciilor &ra(ice interacti8e, asi&ur;n- o
inter(a1 in-e"en-ent1 -e "lat(or%a 2ar-Lare#
Intro-us1 9n anul 1992, biblioteca +"en,> a -e8enit 9n %o%entul -e (a1 cea
%ai intens (olosit1 inter(a1 &ra(ic1 "entru o %are 8arietate -e "lat(or%e 2ar-Lare i
"entru o %are 8arietate -e a"licaii &ra(ice 2D i !D, -e la "roiectare asistat1 -e
calculator CC4DE, la ani%aie, i%a&istic1 %e-ical1 i realitate 8irtual1# Datorit1
su"ortului o(erit "rin s"eci(icaiile unui consoriu s"eciali6at C+"en,> 4rc2itecture
Re8ieL Boar-E i a nu%1rului %are -e i%"le%ent1ri e3istente, 9n %o%entul -e (a1
+"en,> este 9n %o- real sin&urul stan-ar- &ra(ic %ulti"lat(or%1# Calit1ile -e
%aturitate, stabilitate, "ortabilitate i (iabilitate se a-au&1 la cele -e co%"atibilitate
9ntre 8ersiunile e3istente i -e uurin1 -e utili6are -atorit1 unei bune structur1ri i a
-ocu%entaiei care se &1sete cu uurin1# 4u (ost "ublicate nu%eroase c1ri, e3e%"le
-e co- i alte in(or%aii ie(tine sau accesibile liber "e reeaua internet# ?na -in
a-resele internet care se "ot (olosi "entru ast(el -e in(or%aii este
"""1+>en('1+:(#
4"licaiile +"en,> "ot rula "e "lat(or%e (oarte 8ariate, 9nce";n- cu PC, staii
-e lucru i ";n1 la su"ecalculatoare, sub cele %ai cunoscute siste%e -e o"erare:
>inu3, ?ni3, Kin-oLs NT, Kin-oLs 9/, 0ac +)# De ase%enea se inte&rea61 9n orice
siste% -e a-%inistrare a (erestrelor CLin-oLin&E, inclu6;n- Kin!2, NWKin-oLs, i
Presentation 0ana&er# Funiile +"en,> sunt a"elabile -in li%baBele 4-a, C, CPP i
Ja8a# Ca re6ultat, a"licaiile scrise "entru +"en,> "ot (i a-a"tate "entru orice siste%
-is"onibil al utili6atorilor# Din consoriul -e ar2itectur1 +"en,> (ac "arte
re"re6entani -e la (ir%ele Co%"aX, E8ens=)ut2erlan-, HeLlett=Pac@ar-, IB0, Intel,
Inter&ra"2, 0icroso(t i )ilcon ,ra"2ics# Pentru scrierea a"licaiilor (olosin- inter(aa
+"en,> -e c1tre utili6atori (inali nu este necesar1 obinerea unei licene#
I%"le%ent1rile bibliotecii +"en,> -i(er1 -e la un siste% &ra(ic la altul,
-e68oltatorii siste%elor a8;n- ast(el "osibilitatea -e o"ti%i6a costul i "er(or%aele
acestora# Funciile +"en,>, care sunt aceleai ca inter(a1 -e a"el, "ot (i e3ecutate -e
2ar-Lare s"eciali6at, "ot (i e3ecutate ca rutine so(t -e "rocesorul unit1ii centrale
CP?, sau "ot (i i%"le%entate ca o co%binaie -e rutine so(tLare i 2ar-are
s"eciali6at# 4ceast1 (le3ibilitate -e i%"le%entare a "er%is reali6area unei &a%e
8ariate -e acceleratoarele &ra(ice +"en,>, -e la si%"le "l1ci -e re-are &ra(ic1, ";n1
la i%"le%etarea co%"let1 a "i"eline=ului &ra(ic, inclusi8, (unciile -e <=bu((er,
antialisin&, cea1, te3turare# E3ist1 acceleratoare &ra(ice +"en,> -e la "l1ci cu "re
sc16ut "entru calculatoare PC, ";n1 la siste%e &ra(ice ale staiilor -e lucru "uternice i
%ulti"rocesoare#
Fn lucrarea -e (a1 sunt "re6entate as"ectele cele %ai i%"ortante ale
"ro&ra%1rii a"licaiilor &ra(ice (olosin- biblioteca +"en,>, cu intenia -e a asi&ura un
%ini% -e cunotine -e "ornire a e3"erienei -e "ro&ra%are# De ase%enea, sunt
-escrise "ro&ra%ele (olosite "entru e3e%"li(icarea as"ectelor teoretice -e %o-elare i
&enerare a i%a&inilor C"re6entate 9n seciunile 2, !, ' i /E# Pre6entarea co%"let1 a
tuturor (unciilor bibliotecii +"en,> nu este nici "osibil1, nici necesar1# Nu%ai &2i-ul
-e "ro&ra%are +"en,> C4penG5 !rogramming Guide, RKoo97SE conine "este .
-e "a&ini, la care se a-au&1 %anualele -e re(erin1 i %ulte altele# Dar, o-at1 9nelese
"rinci"iile -e or&ani6are a inter(eei, restul -etaliilor -e i%"le%entare se "ot "arcur&e
cu uurin1 -in orice %aterial -is"onibil sau 2el" on=line#
Folosin- biblioteca +"en,>, un "ro&ra%ator 9n -o%eniul &ra(icii se "oate
concentra asu"ra a"licaiei -orite i nu %ai trebuie s1 (ie "reocu"at -e -etaliile -e
i%"le%entare a -i(eritelor (uncii Gstan-ar-H# Pro&ra%atorul nu este obli&at s1 scrie
al&orit%ul -e &enerare a liniilor sau a su"ra(eelor, nu trebuie s1 calcule6e -ecu"area
obiectelor la 8olu%ul -e 8i6uali6are, etc, toate acestea (iin- -eBa i%"le%entate 9n
(unciile bibliotecii i, cel %ai "robabil, %ult %ai e(icient i a-a"tat "lat(or%ei
2ar-Lare -ec;t le=ar "utea reali6a el 9nsui#
Fn re-area obiectelor tri-i%ensionale, biblioteca +"en,> (olosete un nu%1r
re-us -e "ri%iti8e &eo%etrice C"uncte, linii, "oli&oaneE, iar %o-ele co%"le3e ale
obiectelor i scenelor tri-i%ensionale se "ot -e68olta "articulari6at "entru (iecare
a"licaie, "e ba6a acestor "ri%iti8e#
Dat (iin- c1 +"en,> "re8e-e un set "uternic, -ar -e ni8el sc16ut, -e co%en6i
-e re-are a obiectelor, %ai sunt (olosite i alte biblioteci -e ni8el %ai 9nalt care
utili6ea61 aceste co%en6i i "reiau o "arte -in sarcinile -e "ro&ra%are &ra(ic1# 4st(el
-e biblioteci sunt:
Biblioteca -e (uncii utilitare ,>? C+"en,> ?tilitA >ibrarAE "er%ite
-e(inirea siste%elor -e 8i6uali6are, re-area su"ra(eelor curbe i alte
(uncii &ra(ice#
Pentru (iecare siste% Kin-oLs e3ist1 o e3tensie a bibliotecii +"en,>
care asi&ur1 inter(aa cu siste%ul res"ecti8: "entru 0icroso(t Kin-oLs,
e3tensia K,>, "entru siste%e care (olosesc siste%ul N Kin-oL, e3tensia
,>N, "entru siste%e I0B +)W2, e3tensia P,>#
Biblioteca -e -e68oltare ,>?T C+"en,> ?tilitA Tool@itE este un siste%
-e -e68oltare in-e"en-ent -e siste%ul Kin-oLs, care ascun-e -i(icult1ile
inter(eelor -e a"licaii Kin-oLs, "un;n- la -is"o6iie (uncii "entru
crearea i iniiali6area (erestrelor, (uncii "entru "relucrarea e8eni%entelor
-e intrare i "entru e3ecuia "ro&ra%elor &ra(ice ba6ate "e biblioteca
+"en,>#
Fn orice a"licaie +"en,> trebuie s1 (ie incluse (iierele 2ea-er ('1A i
('1A sau ('!1A C-ac1 este utili6at1 biblioteca ,>?TE# Toate (unciile bibliotecii
+"en,> 9nce" cu "re(i3ul (', (unciile B)C 9nce" cu "re(i3ul (', iar (unciile
,>?T 9nce" cu "re(i3ul ('!#
,e54ol&area programelor grafice
folo.i$( )&ili&ar)l 8LU*
Biblioteca &ra(ic1 +"en,> conine (uncii -e re-are a "ri%iti8elor &eo%etrice
in-e"en-ente -e siste%ul -e o"erare, -e orice siste% Kin-oLs sau -e "lat(or%a
2ar-Lare# Ea nu conine nici o (uncie "entru a crea sau a-%inistra (erestre -e a(iare
"e -is"laA CLin-oLsE i nici (uncii -e citire a e8eni%entelor -e intrare C%ouse sau
tastatur1E# Pentru crearea i a-%inistarea (erestrelor -e a(iare i a e8eni%entelor -e
intrare se "ot abor-a %ai %ulte soluii: utili6area -irect1 a inter(eei Kin-oLs CKin!2
4PIE, (olosirea co%"ilatoarelor sub Kin-oLs, care conin (uncii -e acces la (erestre i
e8eni%ente sau (olosirea altor instru%ente CutilitareE care 9n&lobea61 inter(aa
+"en,> 9n siste%ul -e o"erare res"ecti8#
?n ast(el -e utilitar este ,>?T, care se co%"ilea61 i instalea61 "entru (iecare
ti" -e siste% Kin-oLs# Hea-er=ul ('!1A trebuie s1 (ie inclus 9n (iierele a"licaiei,
iar biblioteca ('!1'ib trebuie le&at1 Clin@at1E cu "ro&ra%ul -e a"licaie# Fn
lucrarea -e (a1 s=a (olosit 8ersiunea ('!31D, care "oate (i "reluat1 -in internet
C"""1/(i1c+m.>b.+>en('.B)C*E#
)ub ,>?T, orice a"licaie se structurea61 (olosin- %ai %ulte (uncii
ca''back# + (uncie ca''back este o (uncie care a"arine "ro&ra%ului a"licaiei
i este a"elat1 -e un alt "ro&ra%, 9n acest ca6 siste%ul -e o"erare, la a"ariia anu%itor
e8eni%ente# Fn ,>?T sunt "re-e(inite c;te8a ti"uri -e (uncii callbac@$ acestea sunt
scrise 9n a"licaie i "ointerii lor sunt trans%ii la 9nre&istrare siste%ului Kin-oLs,
care le a"elea61 C"rin "ointerul "ri%itE 9n %o%entele necesare ale e3ecuiei#
Fun"&ii de "ontrol ale (ere!trei de
a(i@are
)unt -is"onibile cinci (uncii "entru controlul (erestrei -e a(iare a
"ro&ra%ului# 4ici trebuie s1 (ie "reci6ate -i(eritele se%ni(icaii ale ter%enului
su"rautili6at G(ereastr1H# Fn &eneral, 9n "ro&ra%are se (olosete ter%enul (erestr1
CwindowE "entru orice 6on1 -e a(iare controlat1 "e -is"laA$ (erestrele sunt &estionate
-e siste%ul -e o"erare C9n ca6ul siste%ului 0icroso(t Kin-oLs C9/, NTE E sau -e
subsiste%ul &ra(ic N Kin-oL care se e3ecut1 sub siste%ele -e o"erare -e ti" ?ni3#
Fn a"licaiile -e &ra(ic1 tri-i%ensional1 ter%enul -e (ereastr1 -e 8i6uali6are
Cview plane windowE se re(er1 la re&iunea rectan&ular1 care re"re6int1 intersecia
-intre "lanul -e 8i6uali6are i 8olu%ul -e 8i6uali6are i 9n care sunt "roiectate toate
obiectele 8i6ibile ale scenei# Fereastra -e 8i6uali6are se a(iea61 9ntr=o "oart1 -e
a(iare CviewportE care se -e(inete "rin trans(or%area (ereastr1="oart1# Poarta -e
a(iare &ra(ic1 se a%"lasea61 9ntr=o (ereastr1 -e a(iare CwindowE i le&1tura -intre
"oarta -e a(iare i (ereastra -e a(iare este reali6at1 -i(erit, 9n (uncie -e %o-ul -e
"ro&ra%are (olosit Cinter(a1 Kin-oLs sau tool@itE#
Fn "ro&r%ele -e68oltate sub ,>?T, corelarea -intre "oarta -e a(iare i
(ereastra Kin-oL este asi&urat1 -e ur%1toarele (uncii:
v+id ('!@ni!(in!= a:(c, cAa:== a:(v)8
4ceast1 (uncie iniiali6ea61 ,>?T (olosin- ar&u%entele -in linia -e
co%an-1$ ea trebuie s1 (ie a"elat1 9naintea oric1ror alte (uncii ,>?T sau +"en,>#
v+id ('!@ni!3i/>'ay5+de(n/i(ned in! m+de)8
)"eci(ic1 caracteristicile -e a(iare a culorilor i a bu((erului -e a-;nci%e i
nu%1rul -e bu((ere -e i%a&ine# Para%etrul m+de se obine "rin )4? lo&ic 9ntre
8alorile (iec1rei o"iuni# De e3e%"lu,
('!@ni!3i/>'ay5+de(B)C*93EC-)4FB)C*9GB-FB)C*934P*H)
iniiali6ea61 a(iarea culorilor 9n %o-ul R,B, cu -ou1 bu((ere -e i%a&ine i bu((er -e
a-;nci%e# 4lte 8alori ale "ara%etrului m+de sunt: B)C*96@IB)4 Cun sin&ur bu((er
-e i%a&ineE, B)C*9GB-, C%o-elul R,B4 al culoriiE, B)C*96*4I&@) C8ali-are
bu((er ablonE B)C*9,&&C5 C8ali-are bu((er -e acu%ulareE#
v+id ('!@ni!Jind+"P+/i!i+n(in! x, in! y)8
)"eci(ic1 locaia iniial1 "e ecran a colului st;n&a sus al (erestrei -e a(iare#
v+id ('!@ni!Jind+"6ize(in! "id!A, in! Aei(!A)8
De(inete -i%ensiunea iniial1 a (erestrei -e a(iare 9n nu%1r -e "i3eli "e
l1i%e C"id!AE i 9n1li%e CAei(!AE #
in! ('!&:ea!eJind+"(cAa:= /!:in()8
Creea61 (ereastra 9n care se a(iea61 conte3tul -e re-are C"oartaE +"en,> i
returnea61 i-enti(icatorul (erestrei# 4ceast1 (ereastr1 este a(iat1 nu%ai -u"1 a"elul
(unciei ('!5ain)++>()#
Fun"&ii "all%a">.
Funciile ca''back se -e(inesc 9n "ro&ra% i se 9nre&istrea61 9n siste% "rin
inter%e-iul unor (uncii ,>?T# Ele sunt a"elate -e siste%ul -e o"erare atunci c;n-
este necesar, 9n (uncie -e e8eni%entele a"1rute#
('!3i/>'ayKnc(v+id(=3i/>'ay)(v+id))8
4ceast1 (uncie 9nre&istrea61 (uncia callbac@ 3i/>'ay 9n care se calculea61
i se a(iea61 i%a&inea# 4r&u%entul (unciei este un "ointer la o (uncie (1r1
ar&u%ente care nu returnea61 nici o 8aloare# Funcia 3i/>'ay Ca a"licaieiE este
a"elat1 ori-ec;te ori este necesar1 -esenarea (erestrei: la iniiali6are, la %o-i(icarea
-i%ensiunilor (erestrei, sau la a"elul e3"licit al (unciei ('P+/!Gedi/>'ay()#
('!Ge/Aa>eKnc(v+id(=Ge/Aa>e)(in! ", in! A))8
Fnre&istrea61 (uncia callbac@ Ge/Aa>e care este a"elat1 ori-ec;te ori se
%o-i(ic1 -i%ensiunea (erestrei -e a(iare# 4r&u%entul este un "ointer la (uncia cu
nu%ele Ge/Aa>e cu -ou1 ar&u%ente -e ti" 9ntre& i care nu returnea61 nici o 8aloare#
Fn aceast1 (uncie, "ro&ra%ul -e a"licaie trebuie s1 re(ac1 trans(or%area (ereastr1=
"oart1, -at (iin- c1 (ereastra -e a(iare i=a %o-i(icat -i%ensiunile#
('!Leyb+a:dKnc(v+id(=Leyb+a:d)(n/i(ned in! key,
in! x, in! y)8
Fnre&istrea61 (uncia callbac@ Leyb+a:d care este a"elat1 atunci c;n- se
acionea61 o tast1# Para%etrul key este co-ul tastei, iar x i y sunt coor-onatele
Crelati8 la (ereastra -e a(iareE a %ouse=ului 9n %o%entul acion1rii tastei#
('!5+/eKnc(v+id(=5+/eKnc)(n/i(ned in! b!!+n,
in! /!a!e, in! x, in! y)8
Fnre&istrea61 (uncia callbac@ 5+/eKnc care este a"elat1 atunci c;n- este
a"1sat sau eliberat un buton al %ouse=ului# Para%etrul b!!+n este co-ul butonului
C"oate a8ea una -in constantele B)C*9)4K*9-C**EI, B)C*95@33)49-C**EI
sau B)C*9G@BH*9-C**EIE # Para%etrul state in-ic1 a"1sarea CB)C*93EJIE sau
eliberarea CB)C*9CPE al unui buton al %ouse=ului# Para%etrii 3 i A sunt coor-onatele
relati8 la (ereastra -e a(iare a %ouse=ului 9n %o%entul e8eni%entului#
Fun"&ii de e3e"u&ie GLA*
E3ecuia unui "ro&ra% (olosin- tool@it=ul ,>?T se lansea61 "rin a"elul
(unciei ('!5ain)++>(), -u"1 ce au (ost e(ectuate toate iniiali61rile i
9nre&istr1rile (unciilor callbac@# 4ceast1 bucl1 -e e3ecuie "oate (i o"rit1 "rin
9nc2i-erea (erestrei a"licaiei# Fn cursul e3ecuiei sunt a"elate (unciile callbac@ 9n
%o%entele a"ariiei -i(eritelor e8eni%ente# Fn cursul e3ecuiei se %ai "oate e3ecuta un
"roces atunci c9n- nu a"are nici un e8eni%ent Catunci c;n- coa-a -e e8eni%ente este
8i-1E# 4cest "roces e3ecut1 (uncia callbac@ @d'eKnc 9nre&istrat1 "rin a"elul
(unciei ('!@d'eKnc(v+id(=@d'eKnc)(v+id))8 4ceast1 (uncie este
(olosit1 9n ani%aie#
Generarea o%ie"telor tridimen!ionale
0ulte "ro&ra%e (olosesc %o-ele si%"le -e obiecte tri-i%ensionale "entru a
ilustra -i(erite as"ecte ale "relucr1rilor &ra(ice# ,>?T conine c;te8a (uncii care
"er%it re-area unor ast(el -e obiecte tri-i%ensionale 9n %o-ul Lire(ra%e sau cu
su"ra(ee "line CfilledE# Fiecare obiect este re"re6entat 9ntr=un siste% -e re(erin1 local,
iar -i%ensiunea lui "oate (i trans%is1 ca ar&u%ent al (unciei res"ecti8e# Po6iionarea
i orientarea obiectelor 9n scen1 se (ace 9n "ro&ra%ul -e a"licaie# E3e%"le -e ast(el
-e (uncii sunt:
8oi- &lutKireCubeC,>-ouble si6eE$
8oi- &lut)oli-CubeC,>-ouble si6eE$
8oi- &lutKire)"2ereC,>-ouble ra-ius, ,>int slices,
,>int stac@sE$
8oi- &lut)oli-)"2ereC,>-ouble ra-ius, ,>int slices,
,>int stac@sE$
Pro&ra%ele ,>?T au un %o- s"eci(ic -e or&ani6are, care "ro8ine -in (elul 9n
care sunt -e(inite i a"elate (unciile callbac@# 4cest %o- 8a (i "re6entat la "ri%ul
e3e%"lu -e "ro&ra% +"en,>=,>?T i 8a (i reluat a"oi cu %ici %o-i(ic1ri i 9n alte
e3e%"le#
Carac&eri.&icile 3i3lio&ecii Ope$8L
Fn (iierul 2ea-er ale bibliotecii +"en,> C('1AE sunt -e(inite %ai %ulte
constante si%bolice care re"re6int1 -i(erite st1ri, 8ariabile sau 8alori -e selecie a
o"iunilor +"en,># 4ceste constante sunt toate scrise cu %aBuscule i sunt "rece-ate
-e "re(i3ul B)9# De e3e%"lu, constantele si%bolice care -e(inesc 8alorile *GC4 i
K,)64 i cele care selectea61 ti"ul unei "ri%iti8e &ra(ice sunt:
Wd Boolean dW
e-e(ine ,>bTR?E 1
e-e(ine ,>bF4>)E
Wd Be&in0o-e dW
e-e(ine ,>bP+INT) 3
e-e(ine ,>b>INE) 31
e-e(ine ,>b>INEb>++P 32
e-e(ine ,>b>INEb)TRIP 3!
e-e(ine ,>bTRI4N,>E) 3'
e-e(ine ,>bTRI4N,>Eb)TRIP 3/
e-e(ine ,>bTRI4N,>EbF4N 3.
e-e(ine ,>bO?4D) 37
e-e(ine ,>bO?4Db)TRIP 35
e-e(ine ,>bP+>\,+N 39
De ase%enea, biblioteca +"en,> -e(inete "ro"riile ti"uri -e -ate, cele %ai
%ulte cores"un6;n- ti"urilor -e -ate (un-a%entale ale li%baBului C #De e3e%"lu, 9n
('1A sunt -e(inite ur%1toarele ti"uri:
tA"e-e( unsi&ne- int ,>enu%$
tA"e-e( unsi&ne- c2ar ,>boolean$
tA"e-e( si&ne- c2ar ,>bAte$
tA"e-e( unsi&ne- c2ar ,>ubAte$
tA"e-e( s2ort ,>s2ort$
tA"e-e( int ,>int$
tA"e-e( int ,>si6ei$
tA"e-e( unsi&ne- int ,>uint$
tA"e-e( (loat ,>(loat$
tA"e-e( (loat ,>cla%"($
tA"e-e( -ouble ,>-ouble$
tA"e-e( -ouble ,>cla%"-$
tA"e-e( 8oi- ,>8oi-$
Pentru a 9nele&e (uncionarea co%en6ilor +"en,>, se -escriu 9n continuare
cele %ai i%"ortante -intre caracteristicile +"en,>#
Poarta de a(i@are OpenGL
Poarta -e a(iare %ai este nu%it1 conte3t -e re-are Crendering conte-tE, i este
asociat1 unei (erestre -in siste%ul Kin-Ls# Dac1 se "ro&ra%ea61 (olosin- biblioteca
,>?T, corelarea -intre (ereastra Kin-oLs i "ortul +"en,> este asi&urat1 -e (uncii
ale acestei biblioteci# Dac1 nu se (olosete ,>?T, atunci (unciile bibliotecilor -e
e3tensie N,>, K,> sau P,> "er%it atribuirea unui conte3t -e a(iare Kin-oLs
"entru conte3tul -e re-are +"en,> i accesul la conte3tul -e a(iare Kin-oLs Cdevice
conte-tE# Funcia +"en,> care -e(inete trans(or%area (ereastr1="oart1 este:
8oi- &l:ieL"ortC,>int 3, ,>int A,
,>si6ei Li-t2, ,>si6ei 2ei&2tE$
un-e 3 i A s"eci(ic1 "o6iia colului st;n&a=Bos al -re"tun&2iului "orii 9n (ereastra -e
a(iare CLin-oLE i au 8alorile i%"licite , # Para%etrii Lei-t2 i 2ei&t2 s"eci(ic1
l1i%ea, res"ecti8 9n1li%ea, "orii -e a(iare, -at1 ca nu%1r -e "i3eli# )e rea%intete
c1 trans(or%area (erestr1="oart1 este co%"onent1 a trans(or%1rii -in siste%ul -e
re(erin1 nor%ali6at 9n siste%ul -e re(erin1 ecran !D Cseciunea '#'E#
?n "i3el este re"re6entat 9n +"en,> "rintr=un -escri"tor care -e(inete %ai
%uli "ara%etri:
nu%1rul -e biiW"i3el "entru %e%orarea culorii
nu%1rul -e biiW"i3el "entru %e%orarea a-;nci%ii
nu%1rul -e bu((ere -e i%a&ine
:u((erul de "adru
Bu((erul -e ca-ru Cframe $ufferE conine toate -atele care -e(inesc o i%a&ine
i const1 -in %ai %ulte seciuni lo&ice: bu((erul -e i%a&ine Csau bu((erul -e culoareE,
bu((erul -e a-;nci%e C2&$ufferE, bu((erul ablon CstencilE, bu((erul -e acu%ulare
CacumulationE#
B)ffer)l (e imagi$e Ccolor $ufferE 9n +"en,> "oate conine una sau %ai
%ulte seciuni, 9n (iecare (iin- %e%orat1 culoarea "i3elilor -in "oarta -e a(iare#
Re-area i%a&inilor (olosin- un sin&ur bu((er -e i%a&ine este (olosit1 "entru i%a&ini
statice, cel %ai (rec8ent 9n "roiectarea &ra(ic1 CC4DE# Fn &enerarea interacti81 a
i%a&inilor -ina%ice, un sin&ur bu((er -e i%a&ine "ro-uce e(ecte ne-orite, care
-i%inuea61 %ult calitatea i%a&ii &enerate#
+rice ca-ru -e i%a&ine 9nce"e cu ter&erea C-e (a"t, u%"lerea cu o culoare -e
(on-E a bu((erului -e i%a&ine# Du"1 aceasta sunt &enerai "e r;n- "i3elii care a"arin
tuturor ele%entelor i%a&inii Clinii, "uncte, su"ra(eeE i intensit1ile -e culoare ale
acestora sunt 9nscrise 9n bu((erul -e i%a&ine# Pentru trecerea la ca-rul ur%1tor, trebuie
-in nou ters bu((erul -e i%a&ine i reluat1 &enerarea ele%entelor co%"onente, "entru
noua i%a&ine# C2iar -ac1 ar (i "osibil1 &enerarea i 9nscrierea 9n bu((er a ele%entelor
i%a&inii cu o 8ite61 (oarte %are Cceea ce este &reu -e reali6atE, tot ar e3ista un inter8al
-e ti%" 9n care bu((erul este ters i acest lucru este "erce"ut ca o ";l";ire a i%a&inii#
Fn &ra(ica interacti81 ti%"ul necesar "entru 9nscrierea -atelor 9n bu((er este C9n ca6ul
cel %ai (ericitE (oarte a"ro"iat -e inter8alul -e sc2i%bare a unui ca-ru a i%a&inii
Cu"-ate rateE i, -ac1 acest "roces are loc si%ultan cu e3tra&erea -atelor -in bu((er i
a(iarea lor "e -is"laA, atunci ecranul 8a "re6enta un ti%" (oarte scurt i%a&inea
co%"let1 a (iec1rui ca-ru, iar cea %ai %are "arte -in ti%" ecranul 8a (i ters sau 8a
conine i%a&ini "ariale ale ca-rului# Te2nica uni8ersal (olosit1 "entru re-area
i%a&inilor -ina%ice Ccare se sc2i%b1 -e la un ca-ru la altulE este te2nica du$lului
$uffer de imagine#
Fn aceast1 te2nic1 e3ist1 -ou1 bu((ere -e i%a&ine: bu((erul -in (a1 CfrontE, -in
care este a(iat1 i%a&inea "e ecran i bu((erul -in s"ate C$ac3E, 9n care se 9nscriu
ele%entele -e i%a&ine &enerate# C;n- i%a&inea unui ca-ru a (ost co%"let &enerat1, ea
"oate (i a(iat1 "e ecran "rintr=o si%"l1 o"eraie -e co%utare 9ntre bu((ere: bu((erul
s"ate -e8ine bu((er (a1, i -in el ur%ea61 s1 (ie a(iat1 i%a&ine ca-rului curent, iar
bu((erul (a1 -e8ine bu((er s"ate i 9n el ur%ea61 s1 (ie &enerat1 i%a&inea noului
ca-ru# Co%utarea 9ntre bu((erele -e i%a&ine se "oate sincroni6a cu cursa -e re8enire
"e 8ertical1 a %onitorului i atunci i%a&inile sunt "re6entate continuu, (1r1 s1 se
obser8e i%a&ini (ra&%entate sau ";l";iri#
Fn +"en,> co%utarea bu((erelor este e(ectuat1 -e (uncia 6"a>-ffe:/()#
4ceast1 (uncie trebuie s1 (ie a"elat1 la ter%inarea &ener1rii i%a&inii tuturor
obiectelor 8i6ibile 9n (iecare ca-ru#
0o-ul 9n care se e3ecut1 co%utarea bu((erelor -e"in-e -e "lat(or%a
2ar-Lare# Fn li"sa unui accelerator &ra(ic, toate o"eraiile +"en,> sunt e3ecutate
so(tLare, bu((erul s"ate este o 6on1 -in %e%orie "rinci"al1, iar bu((erul (a1 este
%e%oria 8i-eo -in a-a"torul &ra(ic# >a co%utarea bu((erelor care se "ro-uce la a"elul
(unciei 6"a>-ffe:/(), are loc co"ierea bu((erului bac@ Ccare este i%"le%entat ca
un bit%a" in-e"en-ent -e -is"o6iti8 = DIB = -e8ice in-e"en-ent bit%a"E, 9n bu((erul
(ront, care este %e%oria -e ecran a a-a"torului &ra(ic#
De(inirea i utili6area bu((erelor co%"onente ale unui bu((er -e ca-ru
+"en,> este "uin %ai co%"le31 -ec;t %o-ul &eneral -e e3ecuie -escris %ai sus,
-eoarece se o(er1 "osibilitatea creerii at;t a i%a&inilor cu si%"lu sau -ublu bu((er,
%ono&ra(ice i stereo&ra(ice i selectarea bu((erului 9n care se scrie sau se citete la un
%o%ent -at# Funcia:
v+id ('3:a"-ffe:(B)enm m+de)8
stabilete bu((erul 9n care se -esenea61 "ri%iti8ele &eo%etrice# Para%etrul m+de
"oate lua una -in 8alorile: B)9IEI4, B)9KGEI*b)4K*, B)9KGEI*9G@BH*,
B)9-,&L9)4K*, B)9-,&L9G@BH*, B)9KGEI*, B)9-,&L, B)9)4K*,
B)9G@BH*, B)9KGEI*9,I39-,&L1 :aloarea i%"licit1 este B)9KGEI*
"entru i%a&ini cu un sin&ur bu((er i B)9-,&L "entru i%a&ini cu -ublu bu((er#
Celelate o"iuni se re(er1 la i%a&ini stereosco"ice#
Funcia ('Gead-ffe:(B)enm m+de) stabilete bu((erul curent -in
care se citesc "i3elii surs1 9n o"eraii -e co%binare sau acu%ulare# Para%etrul m+de
"oate lua una -in 8alorile -escrise %ai sus# :aloarea i%"licit1 este B)9KGEI* "entru
i%a&ini %ono&ra(ice cu un sin&ur bu((er -e culoare sau B)9-,&L "entru i%a&ini
%ono&ra(ice cu -ou1 bu((ere -e culoare#
Pentru i%a&inile stereo&ra(ice, biblioteca +"en,> "une la -is"o6iie bu((erele
necesare "entru -e(inirea celor -ou1 i%a&ini -i(erite Cst;n&a, -rea"taE, "entru si%"lu
i -ublu bu((er i (uncii "entru selecia 9ntre acestea# Crearea "ro"riu=6is1 a i%a&inilor
stereosco"ice este re6ol8at1 la ni8elul "ro&ra%ului -e a"licaie i necesit1 -is"o6iti8e
-e a(iare a-ec8ate#
B)ffer)l (e a(L$cime Cdepth $ufferE %e%orea61 a-;nci%ea (iec1rui "i3el i,
"rin aceasta, "er%ite eli%inarea su"ra(eelor ascunse# Bu((erul -e a-;nci%e conine
acelai nu%1r -e locaii ca i un bu((er -e i%a&ine, (iecare locaie cores"un6;n- unui
"i3el, -e o anu%it1 a-res1## :aloarea %e%orat1 9n locaia cores"un61toare unui "i3el
este -istana (a1 -e "unctul -e obser8are Ca-;nci%ea "i3eluluiE# >a &enerarea unui
nou "i3el cu aceeai a-res1, se co%"ar1 a-;nci%ea noului "i3el cu a-;nci%ea
%e%orat1 9n bu((erul -e a-;nci%e, i noul "i3el 9nlocuiete 8ec2iul "i3el C9l
Gascun-eHE -ac1 este %ai a"ro"iat -e "unctul -e obser8are# Bu((erul -e a-;nci%e se
%ai nu%ete i <=bu((er, -e la coor-onata 6, care re"re6int1 a-;nci%ea 9n siste%ul -e
re(erin1 ecran !D#
B)ffer)l %a3lo$ Cstencil $ufferE este un bu((er au3iliar care este utili6at "entru
restricionarea -esen1rii 9n anu%ite 6one ale "orii -e a(iare# )e "ot obine ast(el
i%a&ini 9nca-rate 9n anu%ite abloane, ca -e e3e%"lu, instru%ente -e a(iare (olosite
9n si%ulatoare -e antrena%ent# Bu((erul ablon "oate (i (olosit i "entru re-area
su"ra(eelor co"lanare#
B)ffer)l (e ac)m)lare Caccumulation $ufferE este (olosit "entru crearea
i%a&inilor antialisin& "rin acu%ularea intensit1ilor -e culoare a "i3elilor re6ultai "rin
eantionarea i%a&inii#
Opera&iile de %az# OpenGL
+"en,> -esenea61 "ri%iti8e &eo%etrice C"uncte, linii i "oli&oaneE 9n -i(erite
%o-uri selectabile# Pri%iti8ele sunt -e(inite "rintr=un &ru" -e unul sau %ai %ulte
8;r(uri CverticesE# ?n 8;r( -e(inete un "unct, ca"1tul unei linii sau 8;r(ul unui
"oli&on# Fiecare 8;r( are asociat un set -e -ate:
coor-onate,
culoare,
nor%al1,
coor-onate -e te3tur1#
4ceste -ate sunt "relucrate in-e"en-ent, 9n or-ine i 9n acelai %o- "entru
toate "ri%iti8ele &eo%etrice# )in&ura -eosebire care a"are este aceea c1, -ac1 o linie
sau o su"ra(a1 este -ecu"at1, atunci &ru"ul -e 8;r(uri care -escriau iniial "ri%iti8a
res"ecti81 este 9nlocuit cu un alt &ru", 9n care "ot a"are 8;r(uri noi re6ultate -in
intersecia laturilor cu "lanele 8olu%ului -e -ecu"are C8olu%ul canonicE sau unele
8;r(uri -in cele iniiale "ot s1 -is"ar1#
Co%en6ile sunt "relucrate 9n or-inea 9n care au (ost "ri%ite 9n +"en,>, a-ic1
orice co%an-1 este co%"let e3ecutat1 9nainte ca s1 (ie e3ecutat1 o nou1 co%an-1#
+"en,> este o inter(a1 "roce-ural1, sec8ena -e co%en6i Ca"eluri -e (unciiE
"rescriu ce o"eraii s1 (ie e3ecutate i nu ce re6ultat s=ar -ori s1 (ie obinut# )e "ot
s"eci(ica 8alori ale %atricelor -e trans(or%are, ti"ul "roieciei, coe(icieni -e re(le3ie,
etc# Datorit1 naturii "roce-urale a bibliotecii +"en,>, este i%"ortant s1 (ie cunoscut
%o-ul 9n care o"era61, "entru a "utea s1 (ie (olosit1 cu succes#
0o-elul -e e3ecuie +"en,> este %o-elul client&server# + a"licaie CclientE
&enerea61 co%en6i care sunt inter"retate i e3ecutate -e c1tre +"en,> Cser8erE#
)er8erul +"en,> "oate s1 (ie e3ecut "e un alt calculator -ec;t a"licaia, -ar atunci
trebuie s1 (ie -e(init un "rotocol -e co%unicaie client=ser8er, -at (iin- c1 nu e3ist1
co%en6i +"en,> "entru ast(el -e o"eraii#
E(ectul co%en6ilor +"en,> asu"ra bu((erului -e i%a&ine este controlat -e
siste%ul Kin-oLs care aloc1 6ona -e a(iare a "orii C8ieL"ortE +"en,> "e ecran#
Fi&ura .#1 "re6int1 o -ia&ra%1 bloc si%"li(icat1 a %o-ului 9n care +"en,>
"relucrea61 -atele# )=au i&norat "entru 9nce"ut as"ectele le&ate -e te3turare i anti=
alisin&# )ec8ena -e o"eraii +"en,> Cnu%it1 pipeline graficE se e3ecut1 asu"ra
8;r(urilor i asu"ra -atelor asociate acestora: coor-onate, culoare, nor%al1 Ci
coor-onate -e te3tur1, care nu sunt re"re6entate 9n (i&ur1E# )uccesiunea o"eraiilor
+"en,> ur%ea61 a"roa"e i-entic succesiunea &eneric1 a o"eraiilor &ra(ice "re6entat1
9n Fi&# '#1#
Biblioteca +"en,> "ri%ete o succesiune -e "ri%iti8e &eo%etrice "e care le
-esenea61, a-ic1 le con8ertete 9n %uli%ea -e "i3eli cores"un61toare, 9nscriin-
8alorile culorilor acestora 9ntr=un bu((er -e i%a&ine# Fn continuare sunt -etaliate
(iecare -intre o"eraiile &ra(ice "re6entate 9n (i&ur1#
0o-ul 9n care este e3ecutat1 sec8ena -e o"eraii "entru re-area "ri%iti8elor
&ra(ice -e"in-e -e starea bibliotecii +"en,>, stare care este -e(init1 "rin %ai %ulte
8ariabile -e stare ale acesteia C"ara%etriE# Nu%1rul -e 8ariabile -e stare ale bibliotecii
este -estul -e %are, -escrierea lor ele "oate (i &1sit1 9n %anualul -e re(erin1 C4penG5
Reference %anualE, iar "e "arcursul e3"unerii 8or (i "re6entate nu%ai cele %ai
i%"ortante -intre acestea#
>a iniiali6are, (iecare 8ariabil1 -e stare este setat1 la o 8aloare i%"licit1# +
stare o -at1 setat1 9i %enine 8aloarea nesc2i%bat1 ";n1 la o nou1 setare a acesteia#
:ariabilele -e stare au -enu%iri sub (or%1 -e constante si%bolice care "ot (i (olosite
"entru a(larea 8alorilor acestora# De e3e%"lu, 9n Fi&# .#1 sunt re"re6entate -ou1
8ariabile -e stare, culoarea curent1 i nor%ala curent1, care au -enu%irile -e(inite 9n
('1A:
e-e(ine ,>bC?RRENTbC+>+R 3B
e-e(ine ,>bC?RRENTbN+R04> 3B2
Nor%ala
curent1
Culoarea
curent1
Nor%al1
Culoare
0atricea 0o-el:ieL
Ilu%inare i colorare
:erte3
4sa%blare "ri%iti8e
Nor%ali6are C0atricea -e "roiecieE
Decu"are la 8olu%ul canonic
F%"1rirea la L$ "roiecie
Trans(or%area (erestr1="oart1
Con8ersie -e rastru
Bu((er -e i%a&ine
Fig. 7./ +"eraiile &ra(ice +"en,>
:ariabilele -e stare +"en,> sunt -e -ou1 cate&orii: 8ariabile -e ti" binar i
8ariabile -e(inite "rin -i(erite structuri -e -ate#
:ariabile -e ti" binar "ot a8ea una -in -ou1 st1ri: starea acti81 Cena$ledE sau
starea inacti81 Cdisa$ledE# )etarea la starea acti81 se reali6ea61 "rin a"elul (unciei:
8oi- &lEnableC,>enu% "ara%E$
un-e >a:am este nu%ele si%bolic al "ara%etrului C8ariabilei -e stareE#
)etarea la starea inacti81 se reali6ea61 "rin a"elul (unciei:
8oi- &lDisableC,>enu% "ara%E$
De e3e%"lu, a"elul (unciei ('4nab'e(B)934P*H9*46*) acti8ea61
testul -e a-;nci%e i actuali6area cores"un61toare a bu((erului -e a-;nci%e Cdepth
$ufferE, iar a"elul (unciei ('3i/ab'e(B)934P*H9*46*)-e6acti8ea61 testul -e
a-;nci%e#
Fn orice loc 9ntr=un "ro&ra% +"en,>, se "oate a(la 8aloarea unui "ara%etru
binar "rin a"elul (unciei:
,>boolean &lIsEnable-C,>enu% "ara%E$
care returnea61 B)9*GC4 -ac1 "ara%etrul >a:am este 9n starea acti81, i
B)9K,)64, -ac1 "ara%etrul >a:am este 9n starea inacti81#
:aloarea unei 8ariabile -e stare care nu este -e ti" binar se setea61 "rin a"elul
unei (uncii s"eci(ice 8ariabilei res"ecti8e, care are ca ar&u%ente 8alorile necesare
"entru actuali6are# De e3e%"lu, 8ariabila -e stare culoare curent1, -enu%it1
B)9&CGG4I*9&E)EG, se setea61 "rin (uncia:
8oi- &lColor!(C,>(loat re-, ,>(loat &reen, ,>(loat blueE$
la o 8aloare -at1 "rin trei co%"onente: rou CredE, 8er-e CgreenE, albastru C$lueE#
Fiin- o bibliotec1 -e68oltat1 9n li%baBul C, (1r1 "osibilitatea -e su"ra9nc1rcare
a (unciilor, selecia unei (uncii a"elate cu -i(erite ti"uri -e ar&u%ente -e a"el este
reali6at1 "rin %o-i(icarea C"rintr=un su(i3E a nu%elui (unciei# De e3e%"lu, (uncia -e
setare a culorii curente are %ai %ulte 8ariante, -u"1 ti"ul i nu%1rul ar&u%entelor:
('&+'+:3f(), ('&+'+:3b(), ('&+'+:4d(), etc1 Fn continuare, 9n
aceast1 lucrare se notea61 &eneric cu e su(i3ul -intr=o (a%ilie -e (uncii C-e e3e%"lu,
('&+'+:M()E#
:aloarea unui "ara%etru C8ariabil1 -e stareE +"en,> care nu este -e ti" binar
se "oate obine 9n orice loc 9n "ro&ra% "rin a"elul uneia -in (unciile ('Be!M():
8oi- &l,etBoolean8C,>enu% "na%e, ,>booleand "ara%sE$
8oi- &l,etDouble8C,>enu% "na%e, ,>-oubled "ara%sE$
8oi- &l,etFloat8C,>enu% "na%e, ,>(loatd "ara%sE$
8oi- &l,etInte&er8C,>enu% "na%e, ,>intd "ara%sE$
un-e >a:am/ este a-reasa un-e se -e"un 8alorile co%"onente ale "ara%etrului
>name# De e3e%"lu, "rin instruciunile:
,>(loat colorR'S$
&l,etFloat8C,>bC?RRENTbC+>+R, colorE$
se obin cele "atru co%"onente ale culorii curente Cre-, &reen, blue, al"2aE 9n 8ectorul
c+'+:#
Primiti+e geometri"e
+"en,> e3ecut1 sec8ena -e o"eraii &ra(ice asu"ra (iec1rei "ri%iti8e
&eo%etrice, -e(init1 "rintr=o %uli%e -e 8;r(uri i ti"ul acesteia# Coor-onatele unui
8;r( sunt trans%ise c1tre +"en,> "rin a"elul unei (uncii ('7e:!exM()# 4ceasta
are %ai %ulte 8ariante, -u"1 nu%1rul i ti"ul ar&u%entelor# Iat1, -e e3e%"lu, nu%ai
c;te8a -in "rototi"urile (unciilor ('7e:!exM()N
8oi- &l:erte32-C,>-ouble 3, ,>-ouble AE$
8oi- &l:erte3!-C,>-ouble 3, ,>-ouble A, ,>-ouble 6E$
8oi- &l:erte3!(C,>(loat 3, ,>(loat A, ,>(loat 6E$
8oi- &l:erte3'-C,>-ouble 3, ,>-ouble A,
,>-ouble 6, ,>-ouble LE$
:;r(urile "ot (i s"eci(icate 9n "lan, 9n s"aiu sau 9n coor-onate o%o&ene,
(olosin- a"elul (unciei cores"un61toare#
+ "ri%iti81 &eo%etric1 se -e(inete "rintr=o %uli%e -e 8;r(uri Ccare -au
-escrierea &eo%etric1 a "ri%iti8eiE i "rintr=unul -in ti"urile "restabilite, care in-ic1
to"olo&ia, a-ic1 %o-ul 9n care sunt conectate 8;r(urile 9ntre ele# 0uli%ea -e 8;r(uri
este -eli%itat1 9ntre (unciile ('-e(in() i ('4nd()# 4ceeai %uli%e -e 8;r(uri
C8

, 8
1
, 8
2
,T#8
nD1
E "oate (i tratat1 ca "uncte i6olate, linii, "oli&on, etc, 9n (uncie -e
ti"ul "ri%iti8ei, care este trans%is ca ar&u%ent al (unciei ('-e(in()N
8oi- &lBe&inC,>enu% %o-eE$
:alorile ar&u%entului m+de i, -eci, ti"urile -e "ri%iti8e acce"tate -e
+"en,> sunt "re6entate 9n tabelul -e %ai Bos# Fn Fi&# .#2 sunt ilustrate aceste "ri%iti8e
&eo%etrice#
*a3el)l 7./ Ti"urile -e "ri%iti8e &eo%etrice
4r&u%ent Pri%iti81 &eo%etric1
B)9PE@I*6
Desenea61 n "uncte
B)9)@I46
Desenea61 se&%entele -e -rea"t1 i6olate C8,81E, C82,8!E,T
#a#%#-# Dac1 n este i%"ar ulti%ul 8;r( este i&norat
B)9)@I496*G@P
Desenea61 linia "oli&onal1 (or%at1 -in se&%entele C8,81E,
C81,82E, ## # TC8nD2, 8 nD1E
B)9)@I49)EEP
>a (el ca "ri%iti8a B)9)@I496*G@P, -ar se %ai -esene61
se&%entul C8n, 8E care 9nc2i-e o bucl1#
B)9*G@,IB)46
Desenea61 o serie -e triun&2iuri (olosin- 8;r(urile C8,81,82E,
C8!,8',8/E, #a#%#-# Dac1 n nu este %ulti"lu -e !, atunci ulti%ele
1 sau 2 8;r(uri sunt i&norate#
B)9*G@,IB)496*G@P
Desenea61 o serie -e triun&2iuri (olosin- 8;r(urile C8,81,82E,
C82,81,8!E,###a#%#-# +r-inea este aleas1 ast(el ca triun&2iurile s1
aib1 aceeai orientare, -eci s1 "oat1 (or%a o su"ra(a1 9nc2is1#
B)9*G@,IB)49K,I
Desenea61 triun&2iurile C8,81,82E, C8,82,8!E, #a#%#-#
B)9OC,36
Desenea61 o serie -e "atrulatere C8,81,82,8!E, C8',8/,8.,87E,
#a#%#-# Dac1 n nu este %ulti"lu -e ', ulti%ele 1, 2 sau !
8;r(uri sunt i&norate#
B)9OC,3696*G@P
Desenea61 o serie -e "atrulatere C8,81,8!,82E, C8!,82,8/,8'E,
#a#%#- Dac1 n _ ', nu se -esena61 ni%ic# Dac1 n este i%"ar,
ulti%ul 8;r( este i&norat#
B)9PE)$BEI
Desenea61 un "oli&on cu n 8;r(uri, C8,81,T8nD1E# Dac1
"oli&onul nu este con8e3, re6ultatul este i%"re-ictibil#
4cest tabel, 9%"reun1 cu (i&ura -e %ai Bos CFi&# .#2E sunt su(iciente "entru
9nele&erea %o-ului 9n care +"en,> inter"retea61 "ri%iti8ele &eo%etrice#
8

8
/
8
'
8
1
8
!
8
2
B)9PE@I*6
Fig. 7.1 Pri%iti8ele &eo%etrice +"en,>
8

8
!
8
'
8
1
8
/
8
2
B)9OC,36
8
7
8
.
8

8
2
8
'
8
1
8
/ 8
!
B)9OC,396*G@P
8
.
8
7
8

8
/
8
'
8
1
8
!
8
2
B)9PE)$BEI
8

8
/
8
'
8
1
8
!
8
2
B)9)@I46
8

8
/
8
!
8
2
8
'
8
1
B)9)@I496*G@P
8

8
/
8
'
8
1
8
!
8
2
B)9)@I49)EEP
8

8
/
8
'
8
1
8
!
B)9*G@,IB)49K,I
8
2
8

8
/
8
'
8
1 8
!
8
2
B)9*G@,IB)46
8
1
8
/
8
'
8

8
!
8
2
B)9*G@,IB)496*G@P
8
2
Pri%iti8ele -e ti" su"ra(a1 Ctriun&2iuri, "atrulatere, "oli&oaneE "ot (i -esenate
9n %o-ul Gca-ru -e s;r%1H CwireframeE, sau 9n %o-ul "lin CfillE, "rin setarea 8ariabilei
-e stare B)9PE)$BEI95E34 (olosin- (uncia:
8oi- &lPolA&on0o-eC,>enu% (ace, ,>enu% %o-eE$
un-e ar&u%entul m+de "oate lua una -in 8alorile:
B)9PE@I* : se -esenea61 nu%ai 8;r(urile "ri%iti8ei, ca "uncte 9n s"aiu,
in-i(erent -e ti"ul acesteia#
B)9)@I4: %uc2iile "oli&oanelor se -esenea61 ca se&%ente -e -rea"t1#
B)9K@)): se -esenea61 "oli&onul "lin#
4r&u%entul face se re(er1 la ti"ul "ri%iti8ei &eo%etrice C-in "unct -e
8e-ere al orient1riiE c1reia i se a"lic1 %o-ul -e re-are m+de# Din "unct -e 8e-ere al
orient1rii, +"en,> a-%ite "ri%iti8e orientate -irect Cf:+n!faceE i "ri%iti8e
orientate in8ers CbackfaceE# 4r&u%entul face "oate lua una -in 8alorile:
B)9KGEI*, B)9-,&L sau B)9KGEI*9,I39-,&L, "entru a se s"eci(ica
"ri%iti8e orientate -irect, "ri%iti8e orientate in8ers i, res"ecti8 a%bele ti"uri -e
"ri%iti8e#
Fn %o- i%"licit, sunt consi-erate orientate -irect su"ra(eele ale c1ror 8;r(uri
sunt "arcurse 9n or-inea in8ers1 acelor -e ceas# 4cest1 setare se "oate %o-i(ica "rin
(uncia ('K:+n!Kace(B)enm m+de), un-e m+de "oate lua 8aloarea B)9&&J,
"entru orientare 9n sens in8ers acelor -e ceas Ccountercloc3wiseE sau B)9&J, "entru
orientare 9n sensul acelor -e ceasornic Ccloc3wiseE#
Reprezentarea "ulorilor 4n OpenGL
Fn biblioteca +"en,> sunt -e(inite -ou1 %o-ele -e culori: %o-elul -e culori
R,B4 i %o-elul -e culori in-e3ate# Fn %o-elul R,B4 sunt %e%orate co%"onentele
-e culoare R, ,, B i trans"arena 4 "entru (iecare "ri%iti81 &eo%etric1 sau "i3el al
i%a&inii# Fn %o-elul -e culori in-e3ate, culoarea "ri%iti8elor &eo%etrice sau a
"i3elilor este re"re6entat1 "rintr=un in-e3 9ntr=o tabel1 -e culori Ccolor mapE, care are
%e%orate "entru (iecare intrare Cin-e3E co%"onentele cores"un61toare R,,,B,4 ale
culorii# Fn %o-ul -e culori in-e3ate nu%1rul -e culori a(iabile si%ultan este li%itat -e
-i%ensiunea tabelei culorilor i, 9n "lus, nu se "ot e(ectua unele -intre "relucr1rile
&ra(ice i%"ortante Ccu% sunt u%brirea, antialiasin&, ceaaE# De aceea, %o-elul -e
culori in-e3ate este (olosit 9n "rinci"al 9n a"licaii -e "roiectare &ra(ic1 CC4DE 9n care
este necesar un nu%1r %ic -e culori i nu se (olosesc u%brirea, ceaa, etc#
Fn a"licaiile -e realitate 8irtual1 nu se "oate (olosi %o-elul -e culori in-e3ate,
-e aceea 9n continuare nu 8or %ai (i "re6entate co%en6ile sau o"iunile care se re(er1
la acest %o-el i toate -escrierile consi-er1 nu%ai %o-elul R,B4#
Culoarea care se atribuie unui "i3el -intr=o "ri%iti81 &eo%etric1 -e"in-e -e
%ai %ulte con-iii, "ut;n- (i o culoare constant1 a "ri%iti8ei, o culoare calculat1 "rin
inter"olare 9ntre culorile 8;r(urilor "ri%iti8ei, sau o culoare calculat1 9n (uncie -e
ilu%inare, anti=aliasin& i te3turare# Presu"un;n- "entru %o%ent culoarea constant1 a
unei "ri%iti8e, aceasta se obine "rin setarea unei 8ariabile -e stare a bibliotecii,
8ariabila -e culoare curent1 CB)9&CGG4I*9&E)EGE# Culoarea curent1 se setea61
(olosin- una -in (unciile ('&+'+:M(), care are %ai %ulte 8ariante, 9n (uncie -e
ti"ul i nu%1rul ar&u%entelor# De e3e%"lu, c;te8a -in "rototi"urile acestei (uncii
-e(inite 9n ('1A sunt:
8oi- &lColor!(C,>(loat re-, ,>(loat &reen, ,>(loat blueE$
8oi- &lColor!ubC,>ubAte re-,,>ubAte &reen, ,>ubAte blueE$
8oi- &lColor'-C,>-ouble re-, ,>-ouble &reen,
,>-ouble blue, ,>-ouble al"2aE$
Culoarea se "oate s"eci(ica "rin trei sau "atru 8alori, care cores"un-
co%"onentelor rou CredE, 8er-e CgreenE, albastru C$lueE, res"ecti8 trans"aren1
CalphaE ca a "atra co%"onent1 "entru (unciile cu ' ar&u%ente# Fiecare co%"onent1 a
culorii curente este %e%orat1 ca un nu%1r 9n 8ir&ul1 (lotant1 cu"rins 9n inter8alul
R,1S# :alorile ar&u%entelor -e ti" 9ntre& (1r1 se%n Cunsi&ne- int, unsi&ne- c2ar, etc#E
sunt con8ertite liniar 9n nu%ere 9n 8ir&ul1 (lotant1, ast(el 9nc;t 8aloarea este
trans(or%at1 9n #, iar 8aloarea %a3i%1 re"re6entabil1 este trans(or%at1 9n 1#
Cintensitate %a3i%1E# :alorile ar&u%entelor -e ti" 9ntre& cu se%n sunt con8ertite liniar
9n nu%ere 9n 8ir&ul1 (lotant1, ast(el 9nc;t 8aloarea ne&ati81 %a3i%1 este trans(or%at1
9n D1#, iar 8aloarea "o6iti81 %a3i%1 este trans(or%at1 9n 1# Cintensitate %a3i%1E#
:aloarea (inal1 a culorii unui "i3el, re6ultat1 -in toate calculele -e u%brire,
anti=aliasin&, te3turare, etc, este %e%orat1 9n bu((erul -e i%a&ine, o co%"onent1 (iin-
re"re6entat1 "rintr=un nu%1r n -e bii Cnu nea"1rat acelai nu%1r -e bii "entru
(iecare co%"onent1E# Deci co%"onentele culorilor "i3elilor %e%orate 9n bu((erul -e
i%a&ine sunt nu%ere 9ntre& 9n inter8alul C , 2
n
D 1E, care se obin "rin con8ersia
nu%erelor 9n 8ir&ul1 %obil1 "rin care sunt re"re6entate i "relucrate culorile
"ri%iti8elor &eo%etrice, ale %aterialelor, etc#
E9empl)l 7./
)ec8ena -e (uncii "entru re-area unui "oli&on 9n s"aiul tri-i%ensional i
i%a&inea cores"un61toare &enerat1 -e +"en,> arat1 9n (elul ur%1tor:
&lColor!(C#5,#5,#5E$
&lBe&inC,>bP+>\,+NE$
&l:erte3!-C=',2,=2E$
&l:erte3!-C=1,/,=2E$
&l:erte3!-C/,2#/,=2E$
&l:erte3!-C!,=!,=2E$
&l:erte3!-C=1,=',=2E$
&lEn-CE$
In-entarea instruciunilor cu"rinse 9ntre ('-e(in() i ('4nd() nu este
necesar1 9n li%baBul C CCPPE 9n care este scris co-ul, ea este (olosit1 -oar "entru a
%arca 9nce"utul i s(;ritul "ri%iti8ei &eo%etrice#
Fn %o- i%"licit, calculul trans"arenei nu este 8ali-at# 4"elul (unciei
('4nab'e(B)9-)4I3), 8ali-ea61 co%binarea culorilor, "rin care culoarea (iec1rui
"i3el al "oli&onului este co%binat1 cu culoarea "i3elului e3istent 9n bu((erul -e
i%a&ine# 0o-ul 9n care are loc co%binarea se setea61 "rin (uncia ('-'endKnc(),
care selectea61 unul -in %ai %ulte %o-uri -e co%binare liniar1 9ntre culoarea
"ri%iti8ei i culoarea e3istent1 9n bu((er# Prin co%binarea culorilor se si%ulea61
trans"arena su"ra(eelor "recu% i alte te2nici -e re-are realist1 a i%a&inilor Canti=
aliasin&, cea1E# E3e%"le -e trans"aren1 obinut1 "rin co%binarea culorilor sunt -ate
9n seciunea 7#'#/#1#
E9empl)l 7.1
)e "oate &enera un "oli&on re&ulat "rin calculul coor-onatelor 8;r(urilor i
(olosirea lor ca ar&u%ente ale (unciilor ('7e:!exM()# De e3e%"lu, calculul i
-esenarea 9n +"en,> a conturului unui octo&on 9n s"aiu este ur%1toarea:
e-e(ine PI !#1'1/92
int n Q 5$
-ouble ra-ius Q 1$
&lColor!-C,,E$
&lBe&inC,>b>INEb>++PE$
(or Cint iQ$i_n$iPPEU
-ouble an&le Q 2dPIdiWn$
&l:erte3!-Cra-iusdcosCan&leE,
ra-iusdsinCan&leE,=2E$
V
&lEn-CE$

Si.&em)l (e 4i5)ali5are Ope$8L
)iste%ul -e 8i6uali6are +"en,> -e(inete siste%ele -e re(erin1,
trans(or%1rile &eo%etrice i relaiile C%atricealeE -e trans(or%are "entru re-area
"ri%iti8elor &eo%etrice# )iste%ul -e 8i6uali6are +"en,> este o "articulari6are a
siste%ului PHI,), 9n care centrul siste%ului -e re(erin1 -e obser8are C:RPE coinci-e
cu centrul -e "roiecie CPRPE#
,i!temele de re(erin&#
)iste%ul -e re(erin1 uni8ersal -e(init 9n +"en,> este un siste% -re"t, iar
%atricea care re"re6int1 un "unct C9n "lan, 9n s"aiul tri-i%ensional sau 9n coor-onate
o%o&eneE este %atrice coloan1#
Pentru re"re6entarea unei %atrice '3' (olosite "entru trans(or%1ri &eo%etrice
9n coor-onate o%o&ene, 9n +"en,> este utili6at1 con8enia coloan1 %aBor1: (iin- -at
un nu%1r -e 1. 8alori reale Cti" f'+a! sau d+b'eE, 9n or-inea a

, a
1
, a
2
,T a
1/
,
%atricea cores"un61toare este:
1
1
1
1
]
1

15 11 7 3
1) 10 6 2
13 * 5 1
12 8 ) 0
! ! ! !
! ! ! !
! ! ! !
! ! ! !
A
4ceste con8enii sunt aceleai cu con8eniile a-o"tate 9n lucrarea -e (a1, -eci
%atricele -e trans(or%1ri &eo%etrice ale bibliotecii +"en,> sunt i-entice cu cele
"re6entate 9n seciunile "rece-ente#
)iste%ul -e re(erin1 -e obser8are este un siste% -e re(erin1 -re"t, -e(init ca
locali6are i orientare relati8 la siste%ul -e re(erin1 uni8ersal# Fn acest siste% -e
re(erin1 -e obser8are se "oate -e(ini o trans(or%are -e "roiecie "aralel1 orto&ra(ic1
sau -e "roiecie "ers"ecti81#
Funciile o(erite -e +"en,> "er%it -e(inirea "roieciei "ers"ecti8e "e un "lan
"er"en-icular "e a3a 6 a siste%ului -e re(erin1 -e obser8are, cu -irecia -e obser8are
s"re D6 CFi&# .#!E# Trunc2iul -e "ira%i-1 -e 8i6uali6are este orientat s"re D6
:
i "oate
(i -e(init "rin 8alorile:
'near : -istana C-at1 ca 8aloare "o6iti81E a "lanului -e 8i6uali6are i a
"lanului -e 8i6ibilitate a"ro"iat (a1 -e centrul siste%ului -e re(erin1 -e
obser8are C+
:
E
'far : -istana C-at1 ca 8aloare "o6iti81E a "lanului -e 8i6ibilitate -e"1rtat
(a1 -e centrul siste%ului -e re(erin1 -e obser8are
left6 right: s"eci(ic1 coor-onatele "lanelor 8erticale ale 8olu%ului -e
8i6uali6are
top6 $ottom: s"eci(ic1 coor-onatele "lanelor ori6ontale ale 8olu%ului -e
8i6uali6are#
Colul -in st;n&a=Bos CDE al (erestrei -e 8i6uali6are are coor-onatele C'ef!,
b+!!+m, znea:E 9n siste%ul -e re(erin1 -e obser8are, iar colul -in -rea"ta=sus
CBE are coor-onatele C:i(A!, !+>, znea:E 9n acelai siste%#
D6
:
3
:
A
:
+
:
6
:
Q D6(ar
6
:
Q D6near
4
B
D
C
Direcia -e obser8are
6
:
Fig. 7.3 De(inirea "roieciei "ers"ecti81 i a 8olu%ului -e 8i6uali6are 9n +"en,>#
Funcia +"en,> care -e(inete o ast(el -e "roiecie "ers"ecti81 este (uncia
('K:/!m(), care are "rototi"ul:
8oi- &lFrustu%C,>-ouble le(t, ,>-ouble ri&2t,
,>-ouble botto%, ,>-ouble to",
,>-ouble 6near, ,>-ouble 6(arE$

0atricea -e nor%ali6are calculat1 9n acest ca6 este o "articulari6are a
"ro-usului %atricelor -ate -e relaiile '#1', '#1/, '#1., 9n care:
n = znea:8 d = znea:8 f = zfa:$
3
%in
Q le(t$ 3
%a3
Q ri&2t$ A
%in
Q botto%$ A
%a3
Q to"#
De-ucerea ei este "ro"us1 ca un e3erciiu "entru cursani#
*ran!(orm#ri geometri"e
4a -u"1 cu% s=a %ai ar1tat, nu este e(icient s1 se calcule6e "ro-usul -intre
%atricea -e re"re6entare a (iec1rui "unct i %atricele -e trans(or%1ri succesi8e, ci se
calculea61 o %atrice -e trans(or%are co%"us1, care se "oate a"lica unuia sau %ai
%ultor obiecte# Pentru calculul %atricelor -e trans(or%are co%"use C"rin "ro-us -e
%atriceE se (olosete o matrice de transformare curent i o"eraii -e acu%ulare 9n
%atricea curent1 "rin "ost%ulti"licare C9n%ulire la -rea"taE: se 9n%ulete %atricea
curent1 cu noua %atrice C9n aceast1 or-ineE i re6ultatul 9nlocuiete coninutul %atricei
curente#
Pentru sec8ena -e trans(or%1ri 9n or-inea 2
/
, 2
1
E2
$
, a"licate obiectelor,
se iniiali6ea61 %atricea curent1 C cu %atricea i-entitate, -u"1 care se calculea61
%atricea co%"us1 "rin "ost%ulti"licare 9n or-ine in8ers1 celei 9n care se a"lic1
%atricele co%"onente:
P 2 ......2 2 2 > 2P > P?
2 ......2 2 2 > 2 > C
2 ......2 2 2 > C2 > C
......2 2 2 > C2 > C
. .......... .......... ..........
2 2 > C2 > C
2 > C2 > C
I > C
/ 1 / - $ $
/ 1 / - $ $
/ 1 / - $ $ /
1 / - $ $ 1
/ - $ $ / - $
$ $
Fn aceast1 trans(or%are, se a"lic1 %ai 9nt;i %atricea 2
/
"unctului P$ "unctului
trans(or%at re6ultat i se a"lic1 trans(or%area 2
1
, #a#%#-#
)e "oate reine -eci c1 %atricea co%"us1 2 se scrie ca "ro-us 9n or-inea
in8ers1 a"lic1rii trans(or%1rilor co%"onente i tot 9n or-ine in8ers1 se acu%ulea61 9n
%atricea curent1#
4cest %o- -e calcul al %atricelor co%"use are su"ort 9n +"en,> "rin %ai
%ulte 8ariabile interne C%atrice curenteE i (uncii "rin care acestea "ot (i calculate#
Pentru 9nce"ut, se consi-er1 o %atrice curent1 oarecare C stabilit1 9n +"en,>
"rintr=o co%an-1 cores"un61toare C8a (i "re6entat1 %ai BosE#
0atricea curent1 se "oate iniiali6a cu %atricea i-entitate "rin (uncia
(')+ad@den!i!y(), sau cu o %atrice oarecare, -at1 "rin "ointer la un 8ector -e
1. 8alori consecuti8e, "rin (uncia (')+ad5a!:ixM():
&l>oa-0atri3-Cconst ,>-oubled %E$
&l>oa-0atri3(Cconst ,>(loatd %E$
:alorile -in 8ectorul B)d+b'e= m Cres"ecti8 B)f'+a!= mE sunt
atribuite 9n or-inea coloan1 %aBor1 %atricei curente#
Coninutul %atricei curente "oate (i %o-i(icat "rin %ulti"licare Cla -rea"taE cu
o alt1 %atrice, -at1 "rintr=un 8ector -e 1. 8alori -e ti" d+b'e sau f'+a! utili6;n-
(uncia ('5'!5a!:ixM()N
&l0ult0atri3-Cconst ,>-oubled %E$
&l0ult0atri3(Cconst ,>(loatd %E$
0atricea curent1 C este 9nlocuit1 cu "ro-usul C 2, un-e 2 este %atricea
cores"un61toare 8ectorului -at "rin "ointerul m#
Crearea unei %atrice "entru o trans(or%are ele%entar1 Ctranslaie, scalare, etcE
i 9n%ulirea ei cu %atricea curent1 se "oate (ace "rin a"elul unei sin&ure (uncii
+"en,>#
*ra$.formarea (e &ra$.laie cu 8alorile 3, A, 6 se i%"le%entea61 "rin a"elul
uneia -in (unciile ('*:an/'a!ed() sau ('*:an/'a!ef(), -u"1 ti"ul
ar&u%entelor -e a"el:
&lTranslate-C,>-ouble 3, ,>-ouble A, ,>-ouble 6E$
&lTranslate(C,>(loat 3, ,>(loat A, ,>(loat 6E$
Funcia ('*:an/'a!eM() creea61 o %atrice -e translaie *C3,A,6E, -at1 -e
relaia !#2, 9n%ulete la -rea"ta %atricea curent1 C, iar re6ultatul 9nlocuiete
coninutul %atricei curente C, -eci: C Q C *C3,A,6E#
*ra$.formarea (e .calare este e(ectuat1 -e una -in (unciile ('6ca'ed()
sau ('6ca'ef():
&l)cale-C,>-ouble 3, ,>-ouble A, ,>-ouble 6E$
&l)cale(C,>(loat 3, ,>(loat A, ,>(loat 6E$
Funcia ('6ca'eM() crea61 o %atrice -e scalare SC3,A,6E, i o 9n%ulete cu
%atricea curent1, re6ultatul (iin- -e"us 9n %atricea curent1#
*ra$.formarea (e ro&aie se -e(inete "rintr=o -irecie -e rotaie -at1 "rin
8ectorul -e "o6iie 3,A,6 i un un&2i an('e Cs"eci(icat 9n &ra-eE# Prototi"urile
(unciilor -e rotaie sunt:
&lRotate-C,>-ouble an&le, ,>-ouble 3,
,>-ouble A, ,>-ouble 6E$
&lRotate(C,>(loat an&le, ,>(loat 3,
,>(loat A, ,>(loat 6E$
Rotaiile 9n ra"ort cu a3ele -e coor-onate sunt ca6uri "articulare ale (unciilor
('G+!a!eM()# De e3e%"lu, rotaia cu un&2iul an('e 9n ra"ort cu a3a x se obine la
a"elul (unciei ('G+!a!ed(an('e,1,0,0) sau ('G+!a!ef(an('e,1,0,0)#
*ra$.form-rile comp).e se e(ectuea61 "rin acu%ularea "ro-usului
%atricelor co%"onente 9n %atricea curent1# De e3e%"lu, trans(or%1rile -e %o-elare
-in E3e%"lul !#! au (ost i%"le%entate 9n +"en,> -u"1 cu% ur%ea61#
Trans(or%area 2
1
Q *C,D5,E SC2,2,2E:
&lTranslate-C,=5,E$
&l)cale-C2,2,2E$
Trans(or%area 2
3
Q *C5,,E#
@
CW'ESC2,1,2E:
&lTranslate-C5,,E$
&lRotate-C'/,,,1E$
&l)cale-C2,1,2E$
Trans(or%area 2

Q *CD5,,E#
@
CDW'ESC2,1,2E:
&lTranslate-C=5,,E$
&lRotate-C='/,,,1E$
&l)cale-C2,1,2E$
S&i4ele ma&ricelor (e &ra$.formare# Du"1 cu% s=a %ai ar1tat, trans(or%area
unui obiect -in siste%ul -e re(erin1 local C-e %o-elareE 9n siste%ul -e re(erin1
nor%ali6at este co%"us1 -in succesiunea trans(or%1rilor -e %o-elareCinstaniereE2
I
,
-e obser8are 2
J
i -e nor%ali6are 2
N
:
2>2
N
2
J
2
I
Trans(or%area -e instaniere 2
I
este, 9n &eneral, s"eci(ic1 (iec1rui obiect, -eci
se calculea61 "entru (iecare obiect 9n "arte#
Pentru cele %ai %ulte -in a"licaiile &ra(ice, 9n care scena este obser8at1 -intr=
un sin&ur "unct -e obser8are, %atricea -e obser8are 2
J
este unic1 "entru toate
obiectele 9ntr=un ca-ru -at, -ar se %o-i(ic1 la ca-rul ur%1tor Ci%a&inea ur%1toareE,
-ac1 obser8atorul i=a sc2i%bat "o6iia -e obser8are, situaie cea %ai "robabil1 9n
&ra(ica interacti81#
0atricea -e nor%ali6are 2
N
este -e(init1 -e "ara%etrii -e "roiecie, care, aa
cu% s=a "re6entat 9n seciunea "rece-ent1, cores"un- construciei siste%ului &ra(ic
Cti"ul i nu%1rul -e "roiectoare, un&2iul -e 8i6ibilitateE -eci aceast1 %atrice este o
caracteristic1 constructi81 a siste%ului &ra(ic i r1%9ne constant1 "e toat1 "erioa-a
-es(1ur1rii "ro&ra%ului, "entru toate obiectele i "entru toate i%a&inile &enerate
Cca-rele -e i%a&ineE# Fn conclu6ie, sunt necesare ur%1toarele %atrice -e trans(or%are
9n cursul &ener1rii i%a&inilor succesi8e, la %o%entele Cca-releE i, iP1, iP2, T
Ca-rul i: 2>2
N
2
Ji
2
I/
, "entru obiectul 1
2>2
N
2
Ji
2
I1
, "entru obiectul 2
TTTTTTTTTTTTTT##
2>2
N
2
Ji
2
I;
, "entru obiectul @
TTTTTTTTTTTTTT
Ca-rul iP1: 2>2
N
2
Ji=/
2
I/
, "entru obiectul 1
2>2
N
2
Ji=/
2
I1
, "entru obiectul 2
TTTTTTTTTTTTTT##
2>2
N
2
Ji=/
2
I;
, "entru obiectul @
TTTTTTTTTTTTTT
)e "une "roble%a care este cea %ai e(icient1 or&ani6are a acestor o"eraii -e
trans(or%1ri succesi8e# Dac1 s=ar utili6a o sin&ur1 %atrice curent1, sec8ena
o"eraiilor -e co%"unere ar trebui s1 (ie e(ectuat1 "entru (iecare obiect, 9n (iecare
ca-ru -e i%a&ine# Este e8i-ent c1 utili6area unei sin&ure %atrice curente -e
trans(or%are este ine(icient1 i neBusti(icat1, -at (iin- c1 o %atrice este o resurs1
e3tre% -e "uin costisitoare#
)oluia a-o"tat1 9n +"en,> este -e a se (olosi %ai %ulte sti8e -e %atrice -e
trans(or%are, 9n care s1 (ie reinute i reutili6ate %atricele inter%e-iare -e
trans(or%are#
Trans(or%1rile -e %o-elare i -e obser8are sunt e(ectuate 9ntr=o sti81 -e
%atrice, nu%it1 sti8a %atricelor -e %o-elare=8i6uali6are Cmodelview matri- stac3E#
Trans(or%area -e nor%ali6are este "relucrat1 9ntr=o sti81 -e %atrice se"arat1, nu%it1
sti8a %atricelor -e "roiecie Cpro0ection matri- stac3E# 0ai e3ist1 9nc1 o sti81 -e
%atrice "entru o"eraiile -e te3turare, nu%it1 sti8a %atricelor -e te3turare Cte-ture
matri- stac3E# )e"ararea %atricelor -e %o-elare=8i6uali6are i -e "roiecie "er%ite
e3ecuia 9n "aralel a o"eraiilor -in "i"eline=ul &ra(ic al acceleratoarelor 2ar-Lare care
au "re816ute resurse "entru ast(el -e "relucr1ri#
Fiecare sti81 -e %atrice se co%"ort1 ase%1n1tor cu o sti81 obinuit1, asu"ra
c1reia se o"erea61 "rin (uncii -e intro-ucere C>/AE i e3tra&ere C>+>E# 4ceste
(uncii -i(er1 (oarte "uin (a1 -e (unciile >/A i >+> (olosite 9n &eneral 9n
"ro&ra%are#
Fn orice %o%ent, una -in cele trei sti8e -e %atrice este -eclarat1 ca sti81
curent1 i toate o"eraiile cu %atricele -e trans(or%are sunt a-resate sti8ei curente#
)etarea unei sti8e curente se (ace "rin a"elul (unciei
8oi- &l0atri30o-eC,>enu% %o-eE$
un-e ar&u%entul m+de "oate lua una -in constantele si%bolice:
,>b0+DE>:IEK, "entru setarea sti8ei -e %o-elare=8i6uali6are ca sti81 curent1
,>bPR+JECTI+N, "entru setarea sti8ei -e "roiecie ca sti81 curent1
,>bTENT?RE, "entru setarea sti8ei -e te3turare ca sti81 curent1
0atricea -in 8;r(ul sti8ei curente este %atricea curent1 C, cu care se
e(ectuea61 toate o"eraiile cu %atriceC(')+ad@den!i!y(), (')+ad5a!:ixM(),
('5'!5a!:ixM(), ('*:an/'a!eM(), etcE#
Funcia:
8oi- &lPus20atri3CE$
a-au&1 o nou1 %atrice 9n sti8a curent1, e&al1 cu %atricea -in 8;r(ul acesteia, care
-e8ine noul 8;r( al sti8ei CFi&# .#'E# Fnc1rcarea unei noi 8alori 9n noua %atrice curent1
se (ace "rin o"eraii ulterioare -e 9nc1rcare sau acu%ulare "rin "ost%ulti"licare# De
(a"t, aceasta este caracteristica cea %ai i%"ortant1 a sti8elor %atricelor -e
trans(or%1ri, c1 o"eraia >/A se e3ecut1 "rin -ou1 sau %ai %ulte (uncii:
('P/A5a!:ix() crea61 o nou1 "o6iie 9n ca"ul sti8ei, i-entic1 cu 8aloarea
"rece-ent1, i 9n aceast1 "o6iie se continu1 o"eraiile -e co%"unere a %atricelor "rin
"ost%ulti"licare#
Funcia:
8oi- &lPo"0atri3CE$
eli%in1 %atricea -in 8;r(ul sti8ei curente, iar %atricea "rece-ent1 acesteia -e8ine
noua %atrice curent1# 4ceast1 (uncie nu sal8ea61 %atricea eli%inat1 C-eci ea nu este
Ge3tras1H, ca 9n o"eraiile >+> obinuiteE, iar -ac1 aceast1 %atrice ar %ai (i necesar1,
ea trebuie s1 (ie co"iat1 9n alt1 6on1 -e %e%orie, 9nainte -e a"elul (unciei
('P+>5a!:ix()#
Funcia ('P/A5a!:ix() se a"elea61 atunci c;n- o %atrice a(lat1 9n ca"ul
sti8ei trebuie s1 (ie sal8at1 "entru a (i utili6at1 ulterior# Funcia ('P+>5a!:ix() se
a"elea61 atunci c;n- o"eraiile -e co%"unere a %atricelor trebuie s1 continue cu o
%atrice a(lat1 su$ ca"ul sti8ei#
>a iniiali6area bibliotecii +"en,>, (iecare sti81 -e %atrice conine o %atrice
care este 8;r(ul sti8ei res"ecti8e#
)e "oate "re6enta acu% un "ro&ra% +"en,> si%"lu, (olosin- utilitarul B)C*,
care e3e%"li(ic1 (olosirea sti8elor %atricelor -e trans(or%1ri &eo%etrice#
E9empl)l 7.3
)e reia ca e3e%"lu -e utili6are a sti8elor %atricelor -e trans(or%are
"ro&ra%ul -in e3e%"lul '#2, 9n care se &enerea61 i%a&inea unei scene obinut1 "rin
instanierea a "atru obiecte#
0atricea -e nor%ali6are i "roiecie se calculea61 o sin&ur1 -at1 i se
intro-uce 9n 8;r(ul sti8ei %atricelor -e "roiecie# Pentru aceasta, se setea61 ca sti81
curent1 sti8a %atricelor -e "roiecie i se iniiali6ea61 %atricea -in 8;r(ul acestei sti8e
cu %atricea i-entitate:
C>2

E
2

E
2

C>2

('P/A5a!:ix()
2

E
2

C>2

*
C>2

E
2

('*:an/'a!eM() ('P+>5a!:ix()
Fig. 7. +"eraii cu sti8a %atricelor -e trans(or%are
&l0atri30o-eC,>bPR+JECTI+NE$
&l>oa-I-entitACE$
:aloarea %atricei -e nor%ali6are se setea61 (olosin- (uncia ('K:/!m(),
-escris1 %ai sus# Funcia ('K:/!m() creea61 %atricea -e nor%ali6are
cores"un61toare ar&u%entelor -e a"el, o 9n%ulete cu %atricea curent1 Ccare are
8aloarea -e %atrice i-entitateE, i -e"une re6ultatul 9n %atricea curent1, care este
%atricea -in 8;r(ul sti8el %atricelor -e "roiecie# Fn acest e3e%"lu se a"elea61:
&lFrustu%CD1, 1,D1, 1, 1, 'E$
0atricele -e trans(or%are -e %o-elare i obser8are se co%"un 9n sti8a
%atricelor -e %o-elare=8i6uali6are# )iste%ul -e re(erin1 -e obser8are are centrul 9n
"unctul Cxv,zv,yvE i este rotit cu un un&2i (ama 9n ra"ort cu a3a 6# Paii -e calcul
a %atricelor sunt ur%1torii:
C1E 0ai 9nt;i se setea61 ca sti81 curent1 sti8a -e %o-elare=8i6uali6are i se
iniilali6ea61 %atricea -in 8;r(ul acesteia cu %atricea i-entitate:
&l0atri30o-eC,>b0+DE>:IEKE$
&l>oa-I-entitACE$
C2E )e cree61 9n sti8a curent1 %atricea -e trans(or%are -e obser8are
2
J
Q #
@
CD&a%aE*CD38, DA8, D68E:
&lRotate-C=&a%a, ,,1E$
&lTranslate-C=38,=68,=68E$
C!E Pri%ul obiect are %atricea -e instaniere 2
I/
> I, -eci %atricea curent1
Ccare conine %atricea -e 8i6uali6areE se a"lic1 coor-onatelor 8;r(urilor
cubului -in siste%ul -e re(erin1 -e %o-elare# Funcia CubeCE trans%ite
aceste 8;r(uri c1tre +"en,>:
CubeCE$
C'E Dac1 s=ar construi 9n acest %o%ent %atricea -e trans(or%are "entru
obiectul al -oilea, "rin %ulti"licarea %atricei curente cu %atricele
co%"onente -e instaniere -in 2
1
Q *C,D5,E SC2,2,2E, atunci %atricea -e
obser8are, s=ar "ier-e i "entru ur%1torul obiect ar trebui calculat1 -in
nou# De aceea, se reine 9n sti81 %atricea -e obser8are "rin a"elul (unciei
('P/A5a!:ix(), care crea61 o nou1 %atrice 9n 8;r(ul sti8ei, cu
aceeai 8aloare Ce&al1 cu 2
J
E# 0atricea -e instaniere 2
1
se co%"une cu
%atricea -e obser8are 9n aceast1 nou1 %atrice curent1, se a"elea61 (uncia
&be(), -u"1 care %atricea -in 8;r(ul sti8ei C2
J
2
1
E nu %ai este
necesar1# Prin a"elul (unciei ('P+>5a!:ix(), aceast1 %atrice este
eli%inat1 i, 9n aceli ti%", se re&1sete 9n 8;r(ul sti8ei %atricea -e
obser8are 2
J
, care 8a "utea (i (olosit1 "entru obiectele ur%1toare#
Funciile a"elate 9n acest "as sunt:
&lPus20atri3CE$
&lTranslate-C,=5,E$
&l)cale-C2,2,2E$
CubeCE$
&lPo"0atri3CE$
C/E Pentru celelalte obiecte se re"et1 o"eraiile -e la "unctul '#
Pro&ra%ul ur%1tor, care conine cele e3"licate %ai sus, este un e3e%"lu ti"ic
-e "ro&ra% &ra(ic (olosin- biblioteca +"en,> i utilitarul ,>?T# Fn acest "ro&ra% se
"oate ur%1ri iniiali6area bibliotecii ,>?T, -e(inirea (unciilor ca''back i %o-ul
-e utili6are a sti8elor -e trans(or%1ri &eo%etrice# ?nele (uncii nou intro-use 9n
"ro&ra% sunt e3"licate 9n co%entarii#

einclu-e _&lW&lut#2`
WW Initiali6ari
8oi- InitCEU
&lClearColorC1#,1#,1#,#E$ WW culoare -e ster&ere
&lEnableC,>bDEPTHbTE)TE$ WW 8ali-are <=bu((er
V
WW Re-are cub
8oi- CubeCEU
&lColor!(C#5,#5,#5E$
&lBe&inC,>bP+>\,+NE$
&l:erte3!-C=1,=1, 1E$
&l:erte3!-C 1,=1, 1E$
&l:erte3!-C 1, 1, 1E$
&l:erte3!-C=1, 1, 1E$
&lEn-CE$
&lColor!(C,,E$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C=1,=1,=1E$
&l:erte3!-C 1,=1,=1E$
&l:erte3!-C 1, 1,=1E$
&l:erte3!-C=1, 1,=1E$
&lEn-CE$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C=1,=1,=1E$
&l:erte3!-C 1,=1,=1E$
&l:erte3!-C 1,=1, 1E$
&l:erte3!-C=1,=1, 1E$
&lEn-CE$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C=1,1,=1E$
&l:erte3!-C 1,1,=1E$
&l:erte3!-C 1,1, 1E$
&l:erte3!-C=1,1, 1E$
&lEn-CE$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C=1,=1,=1E$
&l:erte3!-C=1, 1,=1E$
&l:erte3!-C=1, 1, 1E$
&l:erte3!-C=1,=1, 1E$
&lEn-CE$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C1,=1,=1E$
&l:erte3!-C1, 1,=1E$
&l:erte3!-C1, 1, 1E$
&l:erte3!-C1,=1, 1E$
&lEn-CE$
V
WW ,enerare a3e -e coor-onate
8oi- 43esC-ouble 3,-ouble A, -ouble 6EU
&lColor!(C,,E$
&lBe&inC,>b>INE)E$
&l:erte3!-C,,E$
&l:erte3!-C3,,E$
&l:erte3!-C,,E$
&l:erte3!-C,A,E$
&l:erte3!-C,,E$
&l:erte3!-C,,6E$
&lEn-CE$
WW Te3te 3, A, 6
&lColor!ubC, , E$
&lRasterPos!(C1#1d3, #, #E$
&lutBit%a"C2aracterC,>?TbBIT04PbHE>:ETIC4b12, Y3YE$
&lRasterPos!(C#, 1#1dA, #E$
&lutBit%a"C2aracterC,>?TbBIT04PbHE>:ETIC4b12, YAYE$
&lRasterPos!(C#, #, 1#1d6E$
&lutBit%a"C2aracterC,>?TbBIT04PbHE>:ETIC4b12, Y6YE$
WW )4,ETI
TTTTTTTTTTTTTT##
V
WW Functia callbac@ a"elata la sc2i%barea -i%# (erestrei
8oi- Res2a"eCint L, int 2EU
2 Q C2 QQ E ] 1 : 2$
&l:ieL"ortC, , L, 2E$
&l0atri30o-eC,>bPR+JECTI+NE$
&l>oa-I-entitACE$
&lFrustu%C=C,>(loatELWC,>(loatE2,
C,>(loatELWC,>(loatE2, =1, 1, 1, 'E$
&l0atri30o-eC,>b0+DE>:IEKE$
&l>oa-I-entitACE$
V
static -ouble 38 Q 2, A8 Q 2, 68 Q 2$
static -ouble &a%a Q $
WW Functia callbac@ -e &enerare i%a&ine
8oi- Dis"laACEU
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lPus20atri3CE$
&lRotate-C=&a%a, ,,1E$
&lTranslate-C=2,=2,=2E$
WW trans(# -e obs#: C Q #@CD!E*CD2,D2,D2E
43esC1.,5,1.E$
CubeCE$ WW "ri%ul obiect
&lPus20atri3CE$ WW al -oilea obiect
&lTranslate-C,=5,E$
&l)cale-C2,2,2E$
WW C Q #@CD!E*CD2,D2,D2E*C,D5,ESC2,2,2E
CubeCE$
&lPo"0atri3CE$ WW C Q #@CD!E*CD2,D2,D2E
&lPus20atri3CE$ WW al treilea obiect
&lTranslate-C5,,E$
&lRotate-C'/,,,1E$
&l)cale-C2,1,2E$
WW C Q #@CD!E*CD2,D2,D2E*C5,,E#@C'/ESC2,2,2E
CubeCE$
&lPo"0atri3CE$ WW C Q #@CD!E*CD2,D2,D2E
&lPus20atri3CE$ WW al "atrulea obiect
&lTranslate-C=5,,E$
&lRotate-C='/,,,1E$
&l)cale-C2,1,2E$
WWC Q #@CD!E*CD2,D2,D2E*CD5,,E#@CD'/ESC2,1,2E
CubeCE$
&lPo"0atri3CE$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
int %ainCint ar&c, c2ardd ar&8EU
&lutInitCaar&c, ar&8E$
&lutInitDis"laA0o-eC,>?TbD+?B>E [ ,>?TbR,B
[ ,>?TbDEPTH E$
&lutInitKin-oL)i6eC/,/E$
&lutInitKin-oLPositionC1,1E$
&lutCreateKin-oLCfTrans(or%ari &ra(icefE$
InitCE$
&lutDis"laAFuncCDis"laAE$
&lutRes2a"eFuncCRes2a"eE$
&lut0ain>oo"CE$
return $
V
Fn (uncia local1 -e iniiali6are @ni!() se setea61 culoarea -e ter&ere a
bu((erului -e i%a&ine (olosin- (uncia ('&'ea:&+'+:CE# 4ceast1 culoare -e ter&ere
este %e%orat1 9ntr=o 8ariabil1 -e stare i este (olosit1 "entru ter&erea bu((erului -e
i%a&ine atunci c;n- se a"elea61 (uncia ('&'ea:()# De ase%enea, se 8ali-ea61
testul -e a-;nci%e, "entru eli%inarea su"ra(eelor ascunse#
Funcia cea %ai i%"ortant1 a "ro&ra%ului este (uncia 3i/>'ay() 9n care
se e3ecut1 toate o"eraiile -e &enerare a unei i%a&ini: ter&erea bu((erului -e i%a&ine,
C(uncia ('&'ea:() E, crearea %atricelor -e trans(or%are 9n sti8a %atricelor -e
%o-elare=8i6uali6are, &enerarea i%a&inii a "atru obiecte a"lic;n- trans(or%area
cores"un61toare %o-elului cub C(uncia &be())# >a s(;ritul o"eraiilor -e &enerare
a i%a&inii, se co%ut1 bu((erul -e i%a&ine "rin a"elul (unciei
('!6"a>-ffe:/()# :alorea %atricei curente 9n (iecare "as -e e3ecuie este
scris1 9n co%entarii# In-ent1rile instruciunilor nu sunt necesare, -ar "er%it ur%1rirea
%ai uoar1 a o"eraiilor cu sti8ele -e %atrice# Funcia callbac@ 3i/>'ay este a"elat1
-e siste%ul -e o"erare ori -e c;te ori este necesar1 re-esenarea (erestrei -e a(iare#
+ (or%1 (oarte si%"li(icat1 -e -esenare a unui obiect tri-i%ensional (or%at
-in %ai %ulte (ee, (iecare (a1 (or%at1 -in %ai %ulte 8;r(uri, este -at1 9n (uncia
&be()# C1tre +"en,> se trans%it "ri%iti8e &eo%etrice co%"use -in 8;r(urile
(iec1rei (ee -ate 9n coor-onate 9n siste%ul -e re(erin1 local C-e %o-elareE# Dac1 se
ur%1rete -ia&ra%a -e e3ecuie a o"eraiilor 9n +"en,> -in Fi&# .#1, se 8e-e c1
asu"ra 8;r(urilor unei "ri%iti8e se a"lic1 trans(or%area -in %atricea curent1 -in sti8a
-e %o-elare=8i6uali6are# De aceea este "osibil ca, "entru (iecare instaniere, s1 (ie
trans%ise aceleai coor-onate Cale %o-eluluiE, care sunt trans(or%ate Cinstaniere i
obser8areE 9n siste%ul -e re(erin1 -e obser8are# Fn e3e%"lul -at, "ri%a (a1 se
-esenea61 ca un "oli&on "lin -e culoare &ri, iar celelate ca %uc2ii -e culoare nea&r1,
"entru o %ai bun1 "erce"ere a i%a&inii -esenate alb=ne&ru#
)ec8ena -e o"eraii continu1 cu asa%blarea "ri%iti8elor &eo%etrice, (olosin-
in(or%aiile to"olo&ice trans%ise -e (uncia ('-e(in() i 8;r(urile "ri%iti8ei
trans(or%ate 9n siste%ul -e re(erin1 -e obser8are, nor%ali6area, (olosin- %atricea -in
8;r(ul sti8ei %atricelor -e "roiecie, -ecu"area, 9%"1rirea o%o&en1, "roiecia,
trans(or%area (ereastr1 "oart1 i con8ersia -e rastru "entru 9nscrierea 8alorilor
cores"un61toare a "i3elilor "ri%iti8ei &eo%etrice#
Funcia -e re-are a a3elor -e coor-onate ,xe/() &enerea61 a3ele -e
coor-onate i nu%ele lor, "rintr=un caracter a(iat (olosin- (uncia:
('!-i!ma>&Aa:ac!e:()1 Partea -e -esenare a s1&eilor a3elor nu este
"re6entat1 -ar se "oate co%"leta cu uurin1#
Funcia callbac@ -e re-i%ensionare Ge/Aa>e() "ri%ete la a"elul ei -e
c1tre siste% -i%ensiunile " i A ale (erestrei -e a(iare# Fn aceast1 (uncie se setea61
-i%ensiunea "orii e&al1 cu -i%ensiunea (erestrei -e a(iare i cu colul st;n&a=Bos 9n
"unctul -e coor-onate C,E al (erestrei, "rin a"elul (unciei ('7ie">+:!()# Tot 9n
aceast1 (uncie callbac@ este -e(init1 trans(or%area -e nor%ali6are i "roiecie
"ers"ecti81 C('K:/!m()E ast(el 9nc;t scalarea -intre (ereastra -e 8i6uali6are i
"oarta -e a(iare Ccare a (ost setat1 e&al1 cu (ereastra -e a(iareE s1 (ie uni(or%1, a-ic1
ra"ortul -intre -i%ensiunile "e ori6ontal1 i 8ertical1 ale (erestrei -e 8i6uali6are s1 (ie
e&al cu ra"ortul -intre -i%ensiunile "e ori6ontal1 i 8ertical1 ale "orii -e a(iare#
Funcia -e -e(inire a "roieciei "ers"ecti81 i a 8olu%ului -e 8i6uali6are,
('K:/!m(), o"erea61 asu"ra sti8ei %atricelor -e "roiecie# Funcia Ge/Aa>e()
este a"elat1 at;t la lansarea "ro&ra%ului a"licaiei c;t i la orice %o-i(icare a
-i%ensiunilor (erestrei#
Fn (uncia main() a "ro&ra%ului a"licaiei sunt a"elate (unciile ,>?T -e
iniiali6are a (erestrei -e a(iare, sunt 9nre&istrate (unciile callbac@ necesare i a"oi se
intr1 9n e3ecuia "ro&ra%ului la a"elul (unciei ('!5ain)++>()#
I%a&inile -in (i&urile '#7 a,b,c,-,e,( s=au obinut "rin %o-i(icarea
cores"un61toare a 8alorilor 8ariabilelor xv, yv, zv, (ama i reco%"ilarea
"ro&ra%ului#

)ti8ele %atricelor -e trans(or%are sunt -eosebit -e utile "entru re-area
scenelor i a obiectelor %o-elate ierar2ic, 9n care scena sau (iecare obiect este co%"us
-in %ai %ulte subobiecte, "e %ai %ulte ni8ele -e ierar2ie# Fiecare obiect co%"onent
este -e(init "rintr=o %atrice -e locali6are relati8 la obiectul c1ruia 9i a"arine Cobiect
"1rinteE, i instanierea acestuia se obine "rin co%"unerea %atricei -e locali6are
"ro"rii cu %atricea -e locali6are a obiectului "1rinte# Re"re6entarea i re-area
scenelor %o-elate ierar2ic este tratat1 9n seciunea ., -ar 9n e3e%"lul ur%1tor se 8a
"re6enta un scurt "ro&ra% -e a"licaie care (olosete co%"unerea %ai %ultor
trans(or%1ri -e %o-elare#
E9empl)l 7.
Pro&ra%ul -escrie construirea unui siste% solar (oarte si%"li(icat, cu soarele,
-ou1 "lanete i un satelit al uneia -intre "lanete# )(erele care re"re6int1 aceste cor"uri
sunt re-ate (olosin- (uncii ale bibliotecii B)C*, ('6+'id6>Ae:e() i
('Ji:e6>Ae:e() care "ri%esc ca ar&u%ente -i%ensiunea, nu%1rul -e "aralele i
nu%1rul -e %eri-iane ale s(erei#
)e consi-er1 c1 soarele se a(l1 9n centrul siste%ului -e re(erin1 uni8ersal i c1
"lanetele e3ecut1 o %icare -e rotaie 9n Burul soarelui 9n "lanul 6 Q , la -istane
-i(erite# )atelitul e3ecut1 o %icare -e rotaie 9n Burul unei "lanete, -e ase%enea 9n
"lanul 6 Q # )iste%ul -e re(erin1 -e obser8are are a3ele "aralele cu a3ele siste%ului
uni8ersal i centrul "e a3a 6 "o6iti81, la o 8aloare con8enabil aleas1 "entru a a8ea
obiectele 9n c;%"ul -e 8i6ibilitate#
Po6iia centrului unei "lanete -e"in-e -e ra6a -e rotaie :
P
9n Burul soarelui i
-e un&2iul -e rotaie C-at -e 8ariabila
P
care 8aria61 9ntre i !.E i are
coor-onatele E , sin r , cos r C C
P P P P P
# )e "oate obser8a uor c1 aceaste coor-onate
se obin "rintr=o translaie cu *Cr
P
,,E, ur%at1 -e o rotaie cu #
@
C
P
E, -eci %atricea -e
instaniere a unei "lanete este 2
P
Q #
@
C
P
E*Cr
P
,,E#
Trans(or%area -e instaniere a satelitului se calculea61 relati8 la siste%ul -e
re(erin1 local al "lanetei sale# >a (el ca i "entru o "lanet1, "o6iia centrulului
satelitului -e"in-e -e ra6a -e rotaie C:
6
E a acestuia i un&2iul -e rotaie C
)
E i are
coor-onatele 9n siste%ul -e re(erin1 local al "lanetei E , sin r , cos r C C
) ) ) ) )
#
Re6ult1 c1 %atricea -e instaniere a satelitului relati8 la siste%ul -e re(erin1 al
"lanetei sale este 2
S
Q #
@
C
)
E*Cr
)
,,E# Pro&ra%ul -e re"re6entare a acestui siste%
solar este ur%1torul:
einclu-e _&lW&lut#2`
e-e(ine r"1 1#5
e-e(ine r"2 1#2
e-e(ine rs1 #.
static int ro"1 Q 2, ro"2 Q ', ros1 Q 2$
static (loat 6"os Q /$
8oi- InitCEU
&lClearColorC1#,1#,1#,#E$
&lEnableC,>bDEPTHbTE)TE$
V
8oi- 43esC-ouble 3,-ouble A, -ouble 6EU
WW aceeai (uncie ca 9n e3e%"lul "rece-ent
V
8oi- MeAboar-Cunsi&ne- c2ar @eA, int 3, int AEU
sLitc2 C@eAEU
case Y<Y:
6"os Q 6"osP#1$
&lutPostRe-is"laACE$
brea@$
case Y6Y:
6"os Q 6"os=#1$
&lutPostRe-is"laACE$
brea@$
case YPY:
ro"1 Q Cro"1P1Eg!.$
ro"2 Q Cro"2P1Eg!.$
&lutPostRe-is"laACE$
brea@$
case Y"Y:
ro"1 Q Cro"1=1Eg!.$
ro"2 Q Cro"2=1Eg!.$
&lutPostRe-is"laACE$
brea@$
case Y)Y:
ros1 Q Cros1P1Eg!.$
&lutPostRe-is"laACE$
brea@$
case YsY:
ros1 Q Cros1=1Eg!.$
&lutPostRe-is"laACE$
brea@$
V
V
8oi- Dis"laAC8oi-EU
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lPus20atri3CE$
&lTranslate(C=1,=1,=6"osE$ WWtrans(#-e obs#
43esC!,1#/,2#/E$
&lColor!(C#',#',#'E$
&lut)oli-)"2ereC#., 1., 1.E$ WW soare
&lColor!(C,,E$
&lPus20atri3CE$
&lRotate(Cro"1, ,,1E$
&lTranslate(Cr"1,,E$
&lutKire)"2ereC#2/, 5, 5E$ WW "laneta 1
43esC1,#5,1#5E$
&lRotate(Cros1, ,,1E$
&lTranslate(Crs1,,E$
&lut)oli-)"2ereC#1, 5, 5E$ WW satelit 1
43esC#/,#/,1E$
&lPo"0atri3CE$
&lRotate(Cro"2, ,,1E$
&lTranslate(Cr"2,,E$
&lutKire)"2ereC#2, 5, 5E$ WW "laneta 2
43esC#/,1#1,2#/E$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
8oi- Res2a"eCint L, int 2EU
2 Q C2 QQ E ] 1 : 2$
&l:ieL"ortC, , L, 2E$
&l0atri30o-eC,>bPR+JECTI+NE$
&l>oa-I-entitACE$
&luPers"ecti8eC.#,C,>(loatELWC,>(loatE2, 1, '#E$
&l0atri30o-eC,>b0+DE>:IEKE$
&l>oa-I-entitACE$
V
int %ainCint ar&c, c2ardd ar&8EU
&lutInitCaar&c, ar&8E$
&lutInitDis"laA0o-eC,>?TbD+?B>E [ ,>?TbR,B
[ ,>?TbDEPTH E$
&lutInitKin-oL)i6eC/,/E$
&lutInitKin-oLPositionC1,1E$
&lutCreateKin-oLCf)iste% )olarfE$
InitCE$
&lutDis"laAFuncCDis"laAE$
&lutRes2a"eFuncCRes2a"eE$
&lutMeAboar-FuncCMeAboar-E$
&lut0ain>oo"CE$
return $
V
I%a&inile obinute la e3ecuia acestui "ro&ra% sunt "re6entate 9n Fi&# '#/# Fn
(uncia @ni!() se 8ali-ea61 (uncionarea al&orit%ului -e <=bu((er, "entru ascun-erea
su"ra(eelor ascunse 9n (uncie -e a-;nci%e Ccoor-onata 6 9n siste%ul -e re(erin1
nor%ali6atE "rin (uncia ('4nab'e(B)934P*H9*46*)# :aloarea cu care este
ters bu((erul -e a-;nci%e la 9nce"utul (iec1rui ca-ru Cla e3ecuia (unciei
('&'ea:()E are i%"licit 8aloarea %a3i%1 a coor-onatei 6 a 8olu%ului canonic 9n
siste%ul -e re(erin1 nor%ali6at C1#E#
Fn (uncia Ge/Aa>e() este utili6at1 o alt1 (uncie -e -e(inire a "roieciei
"ers"ecti81, (uncia ('Pe:/>ec!ive() -in biblioteca ,>?, care este o 8ersiune
si%"li(icat1 a (unciei ('K:/!m()# Prototi"ul acestei (uncii este:
8oi- &luPers"ecti8eC,>-ouble (o8A, ,>-ouble as"ect,
,>-ouble 6Near, ,>-ouble 6FarE$
un-e f+vy este un&2iul -e 8i6ibilitate "e 8ertical1 C9n &ra-eE$ a/>ec! este ra"ortul
".A a -i%ensiunilor "e ori6ontal1 i 8ertical1 a (erestrei -e a(iare$ zIea: i zKa:
sunt 8alorile absolute ale -istanelor "lanelor -e 8i6ibilitate a"ro"iat1, res"ecti8
-e"1rtat1#

CaE ro"1Q$ ro"2 Q $ros1 Q $
Funcia callbac@ Leyb+a:d() este a"elat1 la acionarea unei taste# Fn acest
e3e%"lu si%"lu sunt tratate c;te8a taste# Tasta h6Z sca-e iar tasta h< h crete 8aloarea
coor-onatei z
7
a obser8atorului# Tastele h"Z i hPZ sca-, res"ecti8, cresc un&2iul -e
rotaie al "lanetelor# Tastele hsZ i h)Z sca-, res"ecti8, cresc un&2iul -e rotaie al
satelitului# )e obine o %icare interacti81 C(oarte si%"li(icat1, e a-e81rat, -ar
intuiti81E a "lanetelor i satelitului#
Funcia callbac@ 3i/>'ay() se e3ecut1 la (iecare re-esenare care are loc la
%o-i(icarea -i%ensiunilor (erestrei -e a(iare i "rin a"elul (unciei
('!P+/!Gedi/>'ay(), la %o-i(icarea "o6iiei -e obser8are Cz>+/E sau a uneia
-intre 8alorile un&2iurilor :+>1, :+>2 sau :+/1#
P1strarea %atricei i-entitate 9n sti8a -e %o-elare=8i6uali6are, ast(el 9nc;t s1
"oat1 (i (olosit1 "entru o nou1 sec8en1 -e co%"unere se reali6ea61 "rin "erec2ea -e
(uncii ('P/A5a!:ix() i ('P+>5a!:ix() cea %ai e3terioar1 -in (uncia
3i/>'ay()# 0atricea -e trans(or%are -e obser8are construit1 9n %atricea curent1
este reinut1 9n sti81 "rin cea=a -e=a -oua (uncie ('P/A5a!:ix()# 0atricea -e
instaniere "entru "ri%a "lanet1 necesit1 intro-ucerea %ai 9nt;i a rotaiei i a"oi a
translaiei i ea se a"lic1 acesteia# 0atricea -e instaniere a satelitului se construiete
"rin co%"unerea %atricei sale -e instaniere cu %atricea -e instaniere a "lanetei
res"ecti8e# Du"1 instniere satelitului, %atricea -e instaniere a acestuia nu %ai este
CbE ro"1 Q 2$ ro"2 Q '$ ros1 Q 2$
Fig. 7.! Dou1 i%a&ini ale siste%ului solar,
"entru -ou1 "o6iii -i(erite ale "lanetelor i satelitului#
necesar1, (uncia ('P+>5a!:ix()o eli%in1 -in sti81 i 8;r(ul sti8ei conine acu%
%atricea -e trans(or%are -e obser8are, care "oate (i (olosit1 "entru co%"unerea
%atricei "entru cea -e=a -oua "lanet1# Fn Fi&# '#/ sunt "re6entate -ou1 i%a&ini ca"tate
-in (ereastra -e a(iare a "ro&ra%ului "entru -i(erite 8alori ale "o6iiilor "lanetelor i
satelitului# I%a&inea ne(iin- color, s=a consi-erat c1 re"re6entarea Lire(ra%e "entru
"lanete este %ai su&esti81# Pentru (iecare obiect s=au -esenat i a3ele -e coor-onate
ale siste%ul -e re(erin1 local#
Este interesant -e "reci6at (a"tul c1, 9n %area %aBoritate a a"licaiilor &ra(ice,
(iecare i%a&ine Cca-ru, frameE se &enerea61 in-e"en-ent -e i%a&inile "rece-ente#
Pentru (iecare ca-ru se calculea61 "o6iia -e obser8are i "o6iia obiectelor 9n scen1
C-ac1 aceasta 8aria61, aa cu% este situaia 9n e3e%"lul siste%ului solarE i i%a&inea
se &enerea61 "ornin- -e (iecare -at1 -e la aceste in(or%aii# Trecerea -e la o i%a&ine
la ur%1toarea "rin acu%ularea unor 8alori C-e %icare sau -e "o6iieE nu a-uce nici un
bene(iciu se%ni(icati8 ca 8ite61 -e e3ecuie i "oate "ro-uce erori -e "o6iionare la
e3ecuie un ti%" 9n-elun&at# C2iar %o-i(icarea cu o 8aloare e3tre% -e %ic1 a "o6iiei
"ri%iti8elor &eo%etrice re-ate "e -is"laA necesit1 ter&erea i%a&inii "rece-ente i
construirea uneia noi "rin reluarea 9ntre&ii succesiuni a o"eraiilor &ra(ice, -eoarece
este (oarte co%"licat C"ractic i%"osibilE -e a se calcula ce "1ri ale ecranului r1%9n
nesc2i%bate i ce "1ri se %o-i(ic1 i cu% se %o-i(ic1#
,ec)parea .)prafeelor %i elimi$area
o3iec&elor afla&e 0$ e9&erior)l 4ol)m)l)i
(e 4i5)ali5are
Fn +"en,> -ecu"area "ri%iti8elor &eo%etrice la 8olu%ul -e 8i6uali6are este
e(ectuat1 9n %o- auto%ati6at, (1r1 nici o inter8enie -in "artea "ro&ra%atorului#
:olu%ul -e 8i6uali6are se -e(inete o -at1 cu -e(inirea "roieciei "ers"ecti81 C(olosin-
una -in (unciile ('K:/!m() sau ('Pe:/>ec!ive()E sau a "roieciei
"aralele C(olosin- (uncia ('E:!A+()E# Dac1 se ur%1rete -ia&ra%a -e e3ecuie -in
Fi&# .#1, se "oate obser8a c1, -u"1 ce 8;r(urile au (ost trans(or%ate "rin 9n%ulire cu
%atricea curent1 a sti8ei -e %o-elare=8i6uali6are, se reco%"un "ri%iti8ele
&eo%etrice, -u"1 care se a"lic1 trans(or%area -e nor%ali6are i -ecu"area# Fn cursul
trans(or%1rii -e %o-elare=8i6uali6are, 8;r(urile au (ost tratate in-i8i-ual Ctrans(or%at
(iecare 9n "arteE, -ar "entru -ecu"are este necesar s1 (ie reco%"use 9n "ri%iti8e,
-eoarece -ecu"area se e(ectuea61 "rin "arcur&ere 9n or-ine a laturilor "oli&oanelor#
Fiin- o bibliotec1 -e (uncii -e ni8el sc16ut, care se ocu"1 -e re-area unor
"ri%iti8e &eo%etrice, +"en,> nu "re8e-e nici o (acilitate "entru eli%inarea obiectelor
care sunt 9n e3teriorul 8olu%ului -e 8i6uali6are CcullingE# Este sarcina "ro&ra%atorului
s1 -e(ineasc1 8olu%ele -e -eli%itare, s1 le trans(or%e -in siste%ul local 9n siste%ul
-e re(erin1 -e obser8are i s1 le utili6e6e "entru eli%inarea obiectelor a(late co%"let
9n e3teriorul 8olu%ului -e 8i6uali6are Cobiecte Gin8i6ibileHE#
Di(erite siste%e -e -e68oltare a a"licaiilor &ra(ice Ccu% sunt siste%ele
)ense5 i Per(or%erE o(er1 su"ort "entru -e(inirea i utili6area 8olu%elor -e
-eli%itare i eli%inare a obiectelor in8i6ibile#
Eliminarea !upra(e&elor a!"un!e
Fn +"en,> este i%"le%entat al&orit%ul <=bu((er -e eli%inare a su"ra(eelor
ascunse# Nu%1rul -e biiW"i3eli ai bu((erului -e a-;nci%e se stabilete la -e(inirea
(or%atului "i3elului# I%"licit, se setea61 bu((erul -e a-;nci%e cu !2 biiW"i3el# Dac1
se (olosete utilitarul ,>?T, atunci (uncia -e iniiali6are a %o-ului -e a(iare trebuie
s1 conin1 o"iunea B)C*934P*H:
('!@ni!3i/>'ay5+de(B)C*93EC-)4FB)C*9GB-FB)C*934P*H)
>a iniiali6area bibliotecii +"en,> testul -e a-;nci%e este in8ali-at# Pentru
8ali-area lui se a"elea61 (uncia ('4nab'e(B)934P*H9*46*), iar la 9nce"utul
(iec1rui ca-ru -e i%a&ine trebuie s1 (ie ters i bu((erul -e a-9nci%e, o -at1 cu
ter&erea bu((erului -e i%a&ine, ceea ce se obine "rin intro-ucerea o"iunii
B)934P*H9-CKK4G9-@* 9n a"elul (unciei ('&'ea:()N
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
:aloarea cu care se Gter&e G bu((erul -e a-;nci%e este i%"licit 8aloarea
%a3i%1 1, iar testul care se e(ectuea61 i%"licit este -e 9nscriere a noului "i3el -ac1 are
a-;nci%ea %ai %ic1 -ec1t 8aloarea -in bu((er CB)9)466E# Fn +"en,> %ai e3ist1
"osibilitatea -e a -e(ini alt1 8aloare -e ter&ere a bu((erului -e a-;nci%e C"rin (uncia
('&'ea:3e>!A(B)c'am>d de>!A)), ca i stabilirea testului -e co%"araie,
"rin (uncia
8oi- &lDe"t2FuncC,>enu% (uncE$
un-e fnc "oate (i una -in %ai %ulte constante si%bolice a-%ise CB)bI474G,
B)b)466, B)b4OC,), B)b)4OC,), B)bBG4,*4G, B)bIE*4OC,),
B)bB4OC,), B)b,)J,$6E #
,ele"&ia !upra(e&elor 4n (un"&ie de
orientare
+"en,> o(er1 su"ort -irect "entru selecia "ri%iti8elor &eo%etrice 9n (uncie
-e orientarea lor# + "ri%iti81 &eo%etric1 este -e cate&oria cu orientare -irect1 Cs"re
(a1 = frontfaceE -ac1 sensul -e "arcur&ere al acesteia Cor-inea 8;r(urilor -ate "rin
(unciile ('7e:!exM() cu"rinse 9n blocul ('-e(in(),('4nd()E, este aceeai cu
or-inea stabilit1 "rin (uncia ('K:+n!Kace() C9n sensul acelor -e ceas sau 9n sens
in8ers acelor -e ceasE# 4l(tel, "ri%iti8a are orientare in8ers1 Cs"re s"ate = $ac3faceE#
Prin (uncia ('&''Kace(B)enm !y>e) se selectea61 care ti" -e su"ra(ee
trebuie s1 (ie eli%inate: -ac1 ar&u%entul !y>e are 8aloare B)9-,&L sunt eli%inate
"ri%iti8ele cu orientare in8ers1$ -ac1 are 8aloarea B)9KGEI* sunt eli%inate
"ri%iti8ele cu orientare -irect1# Testul -e orientare i eli%inarea "ri%iti8elor se
e3ecut1 nu%ai -ac1 a (ost 8ali-at acest test, "rin a"elul (unciei
&lEnableCB)9&C))9K,&4E#
Fn se&%entul -e co- care ur%ea61, cele -ou1 "oli&oane sunt cu orientare
-irect1 C(rontE -eoarece 8;r(urile lor sunt -ate 9n sensul in8ers acelor -e ceas, aa cu%
este setarea i%"licit1 a sensului -e "arcur&ere -irect1 9n +"en,># Pri%ul "oli&on este
-esenat, -eoarece este acti81 o"iunea -e eli%inare a "ri%iti8elor cu orientare in8ers1,
iar al -oilea nu este -esenat, -eoarece este acti81 o"iunea -e eli%inare a "ri%iti8elor
cu orientare -irect1#
8oi- Dis"laACEU
&lPolA&on0o-eC,>bFR+NTb4NDbB4CM, ,>bFI>>E$
&lEnableC,>bC?>>bF4CEE$WW 8ali-ea61 selectia
&lCullFaceC,>bB4CME$ WW se eli%ina "ri%iti8e in8erse
&lColor!(C#/,#/,#/E$
&lBe&inC,>bP+>\,+NE$ WWorientat -irect, se -esenea6a
&l:erte3!-C!,!,=1E$
&l:erte3!-C',!,=1E$
&l:erte3!-C',',=1E$
&l:erte3!-C!,',=1E$
&lEn-CE$
&lCullFaceC,>bFR+NTE$ WW se eli%ina "ri%iti8e -irecte
&lBe&inC,>bP+>\,+NE$WWorientat -irect, nu se -esenea6a
&l:erte3!-C1,1,=1E$
&l:erte3!-C2,1,=1E$
&l:erte3!-C2,2,=1E$
&l:erte3!-C1,2,=1E$
&lEn-CE$
V
Li.&e (e (i.plaG Ope$8L
+ list1 -e -is"laA este un &ru" -e co%en6i +"en,> care sunt %e%orate
"entru a (i utili6ate ulterior# 4tunci c;n- este a"elat1 o list1 -e -is"laA, co%en6ile "e
care le conine sunt e3ecutate 9n or-inea 9n care ele au (ost %e%orate# >istele -e
-is"laA "ot 9%bun1t1i "er(or%anele -e e3ecuie atunci c;n- se re-esenea61 aceleai
(or%e &eo%etrice -e %ai %ulte ori#
De(inirea unei liste -e -is"laA 9nce"e cu a"elul (unciei ('Ie")i/!() i se
ter%in1 la a"elul (unciei ('4nd)i/!()# Prototi"ul (uncia ('Ie")i/! este:
8oi- &lNeL>istC,>uint list, ,>enu% %o-eE$
Para%etrul 'i/! este un in-ice care i-enti(ic1 lista -e -is"laA i este (olosit la
a"elul acesteia# Para%etrul m+de "oate lua una -in constantele si%bolice
B)9&E5P@)4 sau B)9&E5P@)49,I394%4&C*4# 0o-ul B)9&E5P@)4 are ca
e(ect co%"unerea listei -e -is"la6# 0o-ul B)9&E5P@)494I394%4&C*4 are ca
e(ect co%"unerea listei i e3ecuia ei i%e-iat1#
+ list1 -e -is"laA cu in-icele 'i/! este e3ecutat1 la a"elul (unciei:
8oi- &lCall>istC,>uint listE$
Ca e3e%"lu -e utili6are a unei liste -e -is"laA se reiau co%en6ile -e -esenare
a unui octo&on -in E3e%"lul .#2#
einclu-e _%at2#2`
einclu-e _&li&lut#2`
e-e(ine PI !#1'1/92
8oi- Dis">ist1CEU
&lNeL>istC1,,>bC+0PI>EE$
int n Q 5$
-ouble ra-ius Q 1$
&lColor!-C,,E$
&lBe&inC,>b>INEb>++PE$
(or Cint iQ$i_n$iPPEU
-ouble an&le Q 2dPIdiWn$
&l:erte3!-Cra-iusdcosCan&leE,
ra-iusdsinCan&leE,='E$
V
&lEn-CE$
&lEn->istCE$
V
8oi- InitCEU
&lClearColorC1#,1#,1#,1#E$
Dis">ist1CE$
V
8oi- Dis"laACEU
&lClearC,>bC+>+RbB?FFERbBIT[,>bDEPTHbB?FFERbBITE$
&lCall>istC1E$
&lut)La"Bu((ersCE$
V
Funciile Ge/Aa>e() i main() ale "ro&ra%ului sunt cele "re6entate 9n
"ro&ra%ele "rece-ente# Funcia 3i/>'ay)i/!() a"elat1 la iniiali6are crea61 lista
-e -is"laA cu in-icele 1 care conine calculul coor-onatelor octo&onului i +"en,> -e
-esenare a acestuia# Fn (uncia 3i/>'ay() este a"elat1 (uncia ('&a'')i/!(1),
care re-esenea61 octo&onul la (iecare a"el#
48antaBul listelor -e -is"laA este se%ni(icati8 atunci c;n-, "entru &enerarea
unei i%a&ini, se (olosesc (uncii -e calcul co%binate cu co%en6i +"en,>: calculele se
e3ecut1 o sin&ur1 -at1, la crearea listei, iar co%en6ile +"en,> re6ultate se e3ecut1 la
(iecare a"el al listei#
+ ast(el -e situaie este "re6ent1 i 9n e3e%"lul -e %ai sus i a"are (rec8ent 9n
o"eraiile -e ilu%inare, u%brire i te3turare a obiectelor#
*e9&)rarea 0$ Ope$8L
Biblioteca +"en,> "er%ite te3turarea obiectelor, o(erin- su"ort "entru un
nu%1r (oarte %are -e "osibilit1i -e -e(inire, a"licare i (iltrare a te3turilor# Fn lucrare
8or (i "re6entate nu%ai o "arte -intre aceste "osibilit1i, ca e3e%"li(icare a %o-ului -e
i%"le%entare a te3tur1rii i ca ba61 -e "ornire 9n crearea a"licaiilor &ra(ice# Celelate
as"ecte, %ai -e -etaliu, se "ot ur%1ri 9n %anualul -e re(erin1 al bibliotecii, "recu% i
9n nu%eroasele e3e%"le care sunt -is"onibile 9n +"en,> i ,>?T# #
)e "ot -e(ini te3turi uni-i%ensionale sau bi-i%ensionale, cu re6oluii Cnu%1r
-e te3eliE care se s"eci(ic1 la crearea i%a&inii te3turii# Fiecare te3el const1 -in una,
-ou1, trei sau "atru co%"onente, re"re6ent;n- 8alori -e %o-ulare sau c8a-ru"le
R,B4# Te3turarea "oate (i 8ali-at1 sau in8ali-at1 "rin a"elul (unciei ('4nab'e(),
res"ecti8 ('3i/ab'e(), cu ar&u%ent una -in constantele si%bolice
B)*4%*CG4913 sau B)9*4%*CG4923, "entru te3turi uni-i%ensionale sau
bi-i%ensionale#
6e(inirea te3turilor
Fn +"en,> se "ot -e(ini %ai %ulte te3turi C9n &eneral, la iniiali6area
"ro&ra%uluiE i (iecare su"ra(a1 se te3turea61 (olosin- una -intre acestea# Fiecare
te3tur1 Cobiect te3tur1 = te-ture o$0ectE are un nu%e unic 9n "ro&ra% i este -e(init1
"rintr=un set -e -ate care "er%it a"licarea acesteia su"ra(eelor: a-resa i%a&inii
te3turii, (uncia te3turii C%o-ulare, 9nlocuire, co%binareE, i "ro"riet1ile te3turii
C(iltr1ri, %o- -e re"etare, etcE#
Posibilitatea -e a %ane8ra %ai %ulte te3turi 9n ti%"ul e3ecuiei, (1r1 s1 (ie
necesar 9nc1rcarea sau &enerarea i%a&inii te3turii -e (iecare -at1, 9%bun1t1ete
"er(or%anele -e te3turare# Deoarece +"en,> este o inter(a1 -e "ro&ra%are scris1 9n
li%baBul C, obiectele te3tur1 sunt -e(inite "rin -ate i (uncii se"arate, care trebuie s1
(ie s"eci(icate 9ntr=o anu%it1 or-ine:
CaE ,enerarea nu%elor te3turilor#
CbE Crearea obiectelor te3tur1 i conectarea lor C$indE la nu%ele te3turilor#
CcE 4cti8area unei te3turi, "entru a"licarea acesteia "ri%iti8elor &eo%etrice
care ur%ea61#
N)mele &e9&)rii# Nu%ele te3turilor sunt nu%ere 9ntre&i (1r1 se%n C-e ti"ul
B)in!E care sunt %e%orate 9ntr=un 8ector trans%is ca ar&u%ent (unciei:
v+id ('Ben*ex!:e/(B)/izei n, B)in! =!ex!:eIame/)8
4ceast1 (uncie creea61 un 8ector -e n nu%e -e te3turi, unice 9n "ro&ra%, "e
care le %e%orea61 9n 8ectorul !ex!:eIame/# Nu%ele create nu sunt nea"1rat
nu%ere succesi8e# Funcia ('Ben*ex!:e/() creea61 nu%ai nu%ele te3turilor i
le %arc2ea61 ca utili6ate, -ar obiectele te3tur1 se creea61 nu%ai la conectarea C$indE
acestora#
Crearea &e9&)rilor. Funcia ('-ind*ex!:e() se (olosete at;t "entru
crearea c;t i "entru utili6area unei te3turi# Prototi"ul ei este:
v+id ('-ind*ex!:e(B)enm !a:(e!, B)in! !exIame)8
Para%etrul !a:(e! "oate a8ea ca 8aloare una -in constantele si%bolice
B)9*4%*CG4913 sau ,>b*4%*CG4923, "entru te3turi uni-i%ensionale, res"ecti8
bi-i%ensionale# 4r&u%entul !exIame este nu%ele unei te3turi, &enerat -e (uncia
('Ben*ex!:e/() i %e%orat 9n 8ectorul -e nu%e ale te3turilor#
4tunci c;n- este a"elat1 "ri%a oar1 "entru un nu%e -e te3tur1, (uncia
('-ind*ex!:e() creea61 un nou obiect te3tur1, cu toate -atele re(eritoare la
i%a&inea i "ro"riet1ile te3turii i%"licite# Du"1 a"elul (unciei
('-ind*ex!:e(), te3tura cu nu%ele -at ca ar&u%ent -e8ine te3tur1 curent1 i
toate o"eraiile ulterioare, at;t "entru -e(inirea unor "ro"riet1i ale te3turii, c;t i
"entru a"licaia te3turii, (olosesc te3tura curent1# Te3tura curent1 se sc2i%b1 "rin
a"elul unei noi (uncii ('-ind*ex!:e()#
Crearea imagi$ii (e &e9&)r-# I%a&inea te3turii este un tablou uni-i%ensional
sau bi-i%ensional -e te3eli, (iecare te3el a8;n- una, -ou1, trei sau "atru co%"onente#
)e%ni(icaia co%"onentelor te3elilor se stabilete la crearea i%a&inii te3turii "rin
-e(inirea (or%atului intern al i%a&inii "rintr=un ar&u%ent al uneia -in (unciile
('*ex@ma(e13(), ('*ex@ma(e23()#
Te3turile uni-i%ensionale au o utili6are restr;ns1# Ele sunt (olosite "entru
te3turarea 9n ben6i, "entru care 8ariaia culorii are o sin&ur1 -irecie# Fn continuare se
8or "re6enta te3turile bi-i%ensionale, care sunt cel %ai (rec8ent (olosite# Funcia
('*ex@ma(e23() are ur%1torul "rototi":
v+id ('*ex@ma(e23(B)enm !a:(e!,B)in! 'eve',
B)in! in!e:na'K+:ma!,B)/izei "id!A,
B)/izei Aei(A!,B)in! b+:de:,
B)enm f+:ma!,B)enm !y>e,c+n/! B)v+id =>ixe'/)8
Para%etrul !a:(e! s"eci(ic1 crearea unei i%a&ini -e te3tur1 bi-i%ensional1
C"rin constanta si%bolic1 B)9*4%*CG4923E sau o intero&are a ca"acit1ii -e
%e%orare a unei i%a&ini -e te3tur1 C"rin constanta si%bolic1
B)9PGE%$9*4%*CG4923E#
Para%etrul 'eve' in-ic1 ni8elul i%a&inii 9ntr=o succesiune -e i%a&ini
"re(iltrate -e ti"ul %i"=%a"# Ni8elul re"re6int1 i%a&inea ori&inal1, cu re6oluia
%a3i%1# Celelate ni8ele se "ot crea auto%at -in i%a&inea ori&inal1 C"rin (uncia
('-i'd235i>ma>/()E sau "ot (i create -in tablouri -e te3eli, cu acelai (or%at
ca i%a&inea -e ni8el a te3turii#
Para%etrul in!e:na'K+:ma! in-ic1 ti"ul co%"onentelor te3elilor te3turii,
ca intensitate, lu%inan1 sau R, ,, B, 4# :aloarea ar&u%entului in!e:na'K+:ma!
"oate (i un 9ntre& 9ntre 1 i ' sau una -intre trei6eci i -ou1 -e constante si%bolice,
-intre care cele %ai (rec8ent (olosite sunt: B)9)C5@I,I&4,
B)9)C5@I,I&49,)PH,, B)9GB-, B)9GB-,# 4ceste constante cores"un-
8alorilor 1, 2, !, ' ale ar&u%entului# 4ceste co%"onente ale te3elilor sunt co%binate
cu co%"onentele culorii "ro"rii C9nainte -e te3turareE a "i3elului "entru a crea
culoarea (inal1 a "i3elului# 0o-ul -e co%binare -e"in-e -e (uncia -e te3turare,
-escris1 i%e-iat %ai Bos#
Para%etrii "id!A i Aei(A! -au -i%ensiunea i%a&inii te3turii, 9n nu%1r -e
te3eli, "e ori6ontal1 i "e 8ertical1#
Para%etrul b+:de: re"re6int1 l1i%ea bor-erului i%a&inii -e te3tur1# 4ceast1
caracteristic1 "er%ite ali"irea %ai %ultor "oriuni -e i%a&ini 9ntr=o sin&ur1 i%a&ine -e
te3tur1, iar bor-erul este (olosit 9n o"eraiile -e (iltrare, 9n care sunt necesari te3eli
8ecini te3elului curent, "entru %e-ierea culorilor acestora# De8i6area unei i%a&ini -e
te3tur1 9n %ai %ulte "1ri este i%"us1 9n anu%ite i%"le%ent1ri ale bibliotecii
+"en,>, atunci c;n- te3turarea este i%"le%entat1 2ar-Lare i i%a&inea -e te3tur1 se
9ncarc1 9ntr=o %e%orie ra"i-1 -in acceleratorul &ra(ic# Dac1 i%a&inea te3turii este
"rea %are "entru a (i stocat1 9n 9ntre&i%e 9n %e%oria -e te3tur1, atunci se "oate
9%"1ri 9n %ai %ulte "1ri, care sunt 9nc1rcate i (olosite succesi8# Fn aceast1 situaie
bor-erul "er%ite (iltrarea corect1 la &raniele "1rilor co%"onente ale i%a&inii#
Para%etrii f+:ma! i !y>e se re(er1 la (or%atul i ti"ul -atelor i%a&inii
-e te3tur1# Para%etrul (or%at "oate (i una -in constantele si%bolice
B)9&E)EG9@I34%, B)9GB-, B)9GB-,, B)9G43, B)9BG44I, B)9-)C4,
B)9,)PH,, B)9)C5@I,I&4, B)9)C5@I,I&49,)PH,# Para%etrul !y>e "oate
(i B)9-$*4, B)9CI6@BI439-$*4, B)96HEG*, B)9CI6@BI4396HEG*,
B)9@I*, B)9CI6@BI439@I*, B)9K)E,* /a B)9-@*5,P#
?lti%ul "ara%etru, >ixe'/, conine -atele i%a&inii -e te3turii#
>a a"elul (unciei ('*ex@ma(e23(), se creea61 i%a&inea te3turii curente
Ccea conectat1 "rin (uncia ('-ind*ex!:e()E , 9n (or%atul s"eci(icat#
F)$cii (e &e9&)rare. 0o-ul 9n care se calculea61 culoarea unui "i3el Csau
(ra&%ent -e "i3elE se stabilete "rin a"elul uneia -in (unciile ('*ex4nvM():
8oi- &lTe3En8(C,>enu% tar&et,,>enu% "na%e,,>(loat "ara%E$
8oi- &lTe3En8iC,>enu% tar&et,,>enu% "na%e,,>(loat "ara%E$
un-e ar&u%entele au ur%1toarea se%ni(icaie:
!a:(e! s"eci(ic1 %e-iul CenvironmentE -e a"licare a te3turii$ trebuie s1
(ie constanta si%bolic1 B)9*4%*CG494I7#
>name este nu%ele si%bolic al unui "ara%entru -e %e-iu -e te3turare$
trebuie s1 aib1 8aloarea B)9*4%*CG494I795E34#
>a:am s"eci(ic1 (uncia -e te3turare "rintr=o constant1 si%bolic1 care
"oate lua una -in 8alorile B)95E3C),*4, B)934&,), +:
B)9-)4I31
Funciile -e te3turare stabilesc %o-ul -e calcul al culorii re6ultate a "i3elilor
"e ba6a culorii te3elilor -in i%a&inea -e te3tur1 i a culorii "i3elilor "ri%iti8ei
&eo%etrice Ccare se obin -in culoarea curect1 sau -in calcule -e u%brireE# Fn &eneral,
9n %o-ul B)934&,), culoarea (inal1 atribuit1 unui "i3el este culoarea te3turii$ 9n
%o-ul B)95E3C),*4, se (olosete culoarea te3turii "entru %o-ularea culorii
(ra&%entului C"i3eluluiE$ 9n %o-ul B)9-)4I3 se co%bin1 culoarea te3turii cu
culoarea (ra&%entului# 4ceast1 %o-alitate &eneral1 -e atribuire a culorii -e"in-e i -e
(or%atul intern al te3turii, care se stabilete la crearea i%a&inii -e te3tur1#
A&ri3)irea coor(o$a&elor (e &e9&)rare. Coor-onatele 8;r(urilor "ri%iti8elor
&eo%etrice 9n "lanul te3turii Ccoor-onatele -e te3turareE se trans%it "rin (unciile
('*ex&++:dM(), care "ot "ri%i 1, 2, ! sau ' ar&u%ente -e -i(erite ti"uri, re6ult;n-
un nu%1r %are -e "osibilit1i -e a"el# + "arte -intre acestea sunt:
8oi- &lTe3Coor-1(C,>(loat sE$
8oi- &lTe3Coor-2(C,>(loat s,,>(loat tE$
8oi- &lTe3Coor-!(C,>(loat s,,>(loat t,,>(loat rE$
8oi- &lTe3Coor-'(C,>(loat s,,>(loat t,,>(loat r,
,>(loat XE$
8oi- &lTe3Coor-1(C,>-ouble sE$
8oi- &lTe3Coor-2(C,>-ouble s,,>-ouble tE$
8oi- &lTe3Coor-!(C,>-ouble s,,>-ouble t,,>-ouble rE$
8oi- &lTe3Coor-'(C,>-ouble s,,>-ouble t,,>-ouble r,
,>-ouble XE$
Coor-onatele -e te3turare "ot a8ea 1, 2 sau ! "entru te3turi uni-i%ensionale,
bi-i%ensionale sau tri-i%ensionale# Fn s"aiul te3turii coor-onatele sunt notate /, !,
:, cors"un61tor coor-onatelor x, y, z 9n s"aiul obiect# Cea -e=a "atra co%"onent1,
P, este co%"onenta -e scal1 9n re"re6entarea te3turii 9ntr=un siste% -e coor-onate
o%o&en, ase%1n1tor siste%ului -e coor-onate o%o&en (olosit "entru re"re6entarea
"unctelor 9n s"aiu# 4ceast1 coor-onat1 este (olosit1 -ac1 sunt necesare trans(or%1ri
ale te3turi 9n coor-onate o%o&ene# Fn 8ersiunea (olosit1 9n %o%entul -e (a1 a
bibliotecii +"en,> C:ersiunea 1#1E, nu este 9nc1 i%"le%entat1 te3turarea s"aial1 i
coor-onata : nu este (olosit1, (iin- "re816ut1 ca re6er81 "entru utili6are ulterioar1#
Dac1 8alorile coor-onatelor -e te3turare 9n 8;r(urile "ri%iti8elor &ra(ice sunt
cu"rinse 9n inter8alul R,1S, atunci te3tura este a"licat1 o sin&ur1 -at1 "e su"ra(aa
res"ecti81# Dac1 aceste 8alori -e"1esc inter8alul R,1S, atunci te3tura "oate (i re"etat1
"e su"ra(a1 sau li%itat1 la inter8alul R,1S# Pro"rietatea unei te3turi -e a (i re"etat1
sau li%itat1 se stabilete "rin a"elul uneia -in (unciile:
8oi- &lTe3Para%eter(C,>enu% tar&et,,>enu% "na%e,
,>(loat "ara%E$
8oi- &lTe3Para%eteriC,>enu% tar&et,,>enu% "na%e,
,>int "ara%E$
Fn aceste (uncii, "ara%etrul !a:(e! re"re6int1 ti"ul te3turii i "oate lua una
-in constantele si%bolice B)9*4%*CG4913 sau B)9*4%*CG4923# Para%etrul
>name s"eci(ic1 nu%ele si%bolic al unei "ro"riet1i a te3turii# i "oate lua una -in
constantele: B)9*4%*CG495@I9K@)*4G, B)9*4%*CG495,%9K@)*4G,
B)9*4%*CG49JG,P96, B)9*4%*CG49JG,P9*1 Pri%ele -ou1 8alori se
re(er1 la o"iunile -e (iltrare ale te3turii i 8or (i "re6entate 9n "ara&ra(ul ur%1tor#
?r%1toarele 8alori, setea61 "ro"rietatea -e re"etare a te3turii "entru coor-onata /,
res"ecti8 !# Fn acest ca6, "ara%etrul >a:am "oate (i B)9G4P4,*, "entru re"etarea
te3turii, sau B)9&),5P, "entru li%itarea te3turii la inter8alul R,1S#
0ai %ulte as"ecte "ri8in- -e(inirea i (olosirea te3turilor 9n +"en,> 8or (i
-etaliate 9n e3e%"lele care ur%ea61#
E9empl)l 7.!
Fn acest e3e%"lu este "re6entat "ro&ra%ul "rin care se a"lic1 te3turi 9n tabl1
-e a2 unor su"ra(ee 9n s"aiu# I%a&inea "e care o &enerea61 este o 8ariant1 a celei
-in Fi&# /#1/#
einclu-e _,>W&lut#2`
e-e(ine i%a&eKi-t2 .'
e-e(ine i%a&eHei&2t .'
static ,>ubAte i%a&e'Ri%a&eHei&2tSRi%a&eKi-t2SR'S$
static ,>ubAte i%a&e5Ri%a&eHei&2tSRi%a&eKi-t2SR'S$
static ,>uint te3Na%eR2S$
8oi- 0a@ei%a&esCEU
int c$
(or Cint iQ$i_i%a&eHei&2t$iPPEU
(or Cint BQ$B_i%a&eKi-t2$BPPEU
c Q CCCia3'EQQEjCCBa3'EQQEE d2//$
i%a&e'RiSRBSRS Q C,>ubAteE c$
i%a&e'RiSRBSR1S Q C,>ubAteE c$
i%a&e'RiSRBSR2S Q C,>ubAteE c$
i%a&e'RiSRBSR!S Q C,>ubAteE 2//$
c Q CCCia35EQQEjCCBa35EQQEE d2//$
i%a&e5RiSRBSRS Q C,>ubAteE c$
i%a&e5RiSRBSR1S Q C,>ubAteE c$
i%a&e5RiSRBSR2S Q C,>ubAteE c$
i%a&e5RiSRBSR!S Q C,>ubAteE 2//$
V
V
V
8oi- InitC8oi-EU
&lClearColorC#., #., #., 1#E$
&lEnableC,>bDEPTHbTE)TE$
&l)2a-e0o-elC,>bF>4TE$
Wd TENT?R4RE dW
0a@ei%a&esCE$
&lPi3el)toreiC,>b?NP4CMb4>I,N0ENT,1E$
&l,enTe3turesC2, te3Na%eE$ WW se crea6a -oua te3turi
Wd De(inirea "ri%ei te3turi dW
&lBin-Te3tureC,>bTENT?REb2D,te3Na%eRSE$
&lTe3I%a&e2DC,>bTENT?REb2D,,,>bR,B4,i%a&eKi-t2,
i%a&eHei&2t,,,>bR,B4,,>b?N)I,NEDbB\TE,i%a&e'E$
&lTe3En8(C,>bTENT?REbEN:, ,>bTENT?REbEN:b0+DE,
,>bDEC4>E$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REbKR4Pb),
,>bREPE4TE$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REbKR4PbT,
,>bREPE4TE$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REb04,bFI>TER,
,>bNE4RE)TE$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REb0INbFI>TER,
,>bNE4RE)TE$
Wd De(inirea celui -e=a -oua te3turi dW
&lBin-Te3tureC,>bTENT?REb2D, te3Na%eR1SE$
&lTe3I%a&e2DC,>bTENT?REb2D, , ,>bR,B4, i%a&eKi-t2,
i%a&eHei&2t, , ,>bR,B4, ,>b?N)I,NEDbB\TE,i%a&e5E$
&lTe3En8(C,>bTENT?REbEN:, ,>bTENT?REbEN:b0+DE,
,>bDEC4>E$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REbKR4Pb),
,>bREPE4TE$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REbKR4PbT,
,>bREPE4TE$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REb04,bFI>TER,
,>bNE4RE)TE$
&lTe3Para%eteriC,>bTENT?REb2D,,>bTENT?REb0INbFI>TER,
,>bNE4RE)TE$
&lEnableC,>bTENT?REb2DE$
V
8oi- Dis"laACEU
&lClearC,>bDEPTHbB?FFERbBIT [ ,>bC+>+RbB?FFERbBITE$
&lBin-Te3tureC,>bTENT?REb2D, te3Na%eR1SE$
&lPus20atri3CE$
&lTranslate-C=2#,#,=5E$
&lBe&inC,>bO?4D)E$
&lTe3Coor-2(C#,#E$&l:erte3!(C=#/,=1#,#E$
&lTe3Coor-2(C#/,#E$&l:erte3!(C #/,=1#,#E$
&lTe3Coor-2(C#/,1#E$&l:erte3!(C #/, 1#,#E$
&lTe3Coor-2(C#,1#E$&l:erte3!(C=#/, 1#,#E$
&lEn-CE$
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate-C#,#,=5E$
&lRotate-C=7,1#,#,#E$
&lBe&inC,>bO?4D)E$
&lTe3Coor-2(C#,#E$&l:erte3!(C=#/,=1#,#E$
&lTe3Coor-2(C#/,#E$&l:erte3!(C #/,=1#,#E$
&lTe3Coor-2(C#/,1#E$&l:erte3!(C #/, 1#,#E$
&lTe3Coor-2(C#,1#E$&l:erte3!(C=#/, 1#,#E$
&lEn-CE$
&lPo"0atri3CE$
&lBin-Te3tureC,>bTENT?REb2D, te3Na%eRSE$
&lPus20atri3CE$
&lTranslate-C1#/,#,=5E$
&lBe&inC,>bO?4D)E$
&lTe3Coor-2(C#/,#E$&l:erte3!(C#,=1#,#E$
&lTe3Coor-2(C1#,#E$&l:erte3!(C 1#,=1#,#E$
&lTe3Coor-2(C1#,1#E$&l:erte3!(C 1#, 1#,#E$
&lTe3Coor-2(C#/,#/E$&l:erte3!(C=#, #,#E$
&lEn-CE$
&lPo"0atri3CE$

&lut)La"Bu((ersCE$
V
8oi- Res2a"eCint L, int 2EU
2 Q C2 QQ E ] 1 : 2$
&l:ieL"ortC, , L, 2E$
&l0atri30o-eC,>bPR+JECTI+NE$
&l>oa-I-entitACE$
&luPers"ecti8eC.#, C,>(loatE LWC,>(loatE 2,
#1, '#E$
&l0atri30o-eC,>b0+DE>:IEKE$
&l>oa-I-entitACE$
V
int %ainCint ar&c, c2ardd ar&8EU
&lutInitCaar&c, ar&8E$
&lutInitDis"laA0o-eC,>?TbD+?B>E[,>?TbR,B[,>?TbDEPTHE$
&lutInitKin-oL)i6eC/,/E$
&lutInitKin-oLPositionC1,1E$
&lutCreateKin-oLCfTe3ture C2ec@ I%a&efE$
InitCE$
&lutDis"laAFuncCDis"laAE$
&lutRes2a"eFuncCRes2a"eE$
&lut0ain>oo"CE$
return $
V
I%a&inea ca"tat1 -in (ereastra a(iat1 la e3ecuia acestui "ro&ra% este -at1 9n
Fi&# .#. i -i(er1 -e i%a&inea -in Fi&# /#1/ "rin (a"tul c1 se (olosesc -ou1 te3turi#
Fn %o- obinuit, i%a&inile te3turilor se citesc -in (iiere, -ar te3turile si%"le,
9n tabl1 -e a2, se "ot &enera "rin "ro&ra%# Funcia 5akeima(e/() creea61 -ou1
tablouri -e .' 3 .' locaii, (iecare locaie (iin- un 8ector cu "atru co%"onente R, ,, B,
4# Fn "ri%ul tablou Ci%a&e'E este creat1 o tabl1 cu 1. 3 1. "1trate alternante -e
culoare alb1 i nea&r1, (iecare "1trat -e -i%ensiune ' 3 ' te3eli# Fn al -oilea tablou
Ci%a&e5E este creat1 o tabl1 cu 5 3 5 "1trate alternante -e culoare alb1 i nea&r1,
(iecare "1trat -e -i%ensiune 5 3 5 te3eli#
Te3turile sunt -e(inite 9n (uncia @ni!()# 0ai 9nt;i se creea61 nu%ele a
-ou1 te3turi 9n 8ectorul !exIame;2<, "rin (uncia ('Ben*ex!:e/()# Pentru
crearea i -e(inirea "ro"riet1ilor (iec1rei te3turi, se conectea61 %ai 9nt;i te3tura
s"eci(icat1 "rin nu%ele ei C(uncia ('-ind*ex!:e()E i a"oi se s"eci(ic1
"ro"riet1ile te3turii#
Fn (uncia 3i/>'ay() se utili6ea61 te3turile -e(inite "entru te3turarea unor
"ri%iti8e &eo%etrice# Te3tura care se a"lic1 este te3tura curent1, acti8at1 "rin nu%ele
ei -at ca ar&u%ent (unciei -e conectare ('-ind*ex!:e()# Ca ur%are, "ri%ele
-ou1 su"ra(ee sunt te3turate cu te3tura cu nu%ele !exIame;1<, iar a treia su"ra(a1
este te3turat1 cu te3tura cu nu%ele !exIame;0<, ceea ce se "oate obser8a 9n
i%a&inea -in Fi&# '#1/# I%a&inea -in Fi&# !#./ a (ost &enerat1 cu acelai "ro&ra%, -ar
s=a acti8at nu%ai te3tura cu nu%ele !exIame;1<, a-ic1 te3tura (or%at1 -in 5 3 5
"1trate# Fntr=un bloc ('-e(in()- ('4nd() se trans%it 8;r(urile unei "ri%iti8e
&eo%etrice$ "entru (iecare 8;r( se -e(inesc %ai 9nt;i coor-onatele -e te3turare Ccu
('*ex&++:d2f()E i a"oi coor-onatele s"aiale ale 8;r(ului Ccu ('7e:!ex3f()E#
Restul (unciilor -in "ro&ra% e(ectuea61 o"eraiile -eBa cunoscute, -e trans(or%1ri
&eo%etrice, setare culori -e ter&ere, etc#
Filtrarea te3turilor
Fig. 7.7 4"licaia te3turilor "e su"ra(ee "lane
Ti"ul -e (iltrare care se a"lic1 unei te3turi este -e(init "rin 8alorile a -oi
"ara%etri, B)9*4%*CG495,B9K@)*4G Qi B)9*4%*CG495@I9K@)*4G# setai
"rin a"elul (unciei ('*exPa:ame!e:M()# Filtrarea -e %1rire Cmagnification,
B)9*4%*CG495,B9K@)*4GE se a"lic1 atunci c;n- -i%ensiunea "re=i%a&inii
"i3elului este e&al1 sau %ai %ic1 -ec;t -i%ensiunea te3elului CFi&# .#7CaEE# Filtrarea
-e %icorare Cminification, B)9*4%*CG495@I9K@)*4GE se a"lic1 atunci c;n-
-i%ensiunea "re=i%a&inii "i3elului este %ai %are -ec;t -i%ensiunea te3elului CFi&#
.#7CbEE#
Dac1 nu este -e(init1 i%a&ine %i"=%a" a te3turii, cei -oi "ara%etri -e (iltrare
B)9*4%*CG495,B9K@)*4G i B)9*4%*CG495,B9K@)*4G "ot lua nu%ai
una -in 8alorile B)9I4,G46* sau B)9)@I4,G1 :aloarea B)9I4,G46*
9nsea%n1, -e (a"t, li"sa (iltr1rii: se selectea61 te3elul cel %ai a"ro"iat -e centrul "re=
i%a&inii "i3elului# :aloarea B)9)@I4,G asi&ur1 (iltrarea te3turii "rin calculul %e-iei
"on-erate a "atru te3eli cei %ai a"ro"iai -e centrul "re=i%a&inii "i3elului# Dac1 este
i%"le%entat1 so(tLare, (iltrarea te3turii CB)9)@I4,G) este e3ecutat1 %ai lent -ec;t
eantionarea acesteia CB)9I4,G46*E#
Fn unele ca6uri nu este si%"lu -e -ecis -ac1 trebuie s1 se e3ecute o (iltrare -e
%1rire sau o (iltrare -e %icorare# Patrulaterul "rin care se re"re6int1 "re=i%a&inea
"i3elului "oate s1 aib1 -i%ensiunea 9ntr=o -irecie %ai %ic1 -ec;t -i%ensiunea
te3elului, iar 9n alt1 -irecie %ai %are -ec;t -i%ensiunea te3elului# Fn ast(el -e situaii
+"en,> selectea61 (iltrul care -1 cel %ai bun re6ultat "osibil#
Filtrarea -e %icorare este accelerat1 "rin te2nica -e "re(iltrare a te3turilor
(olosin- i%a&ini -e te3turi %i"=%a"# )ec8ena -e i%a&ini ale te3turii %i"=%a" "oate
(i &enerat1 "rin a"elul (unciei ('*ex@ma(e23() "entru (iecare ni8el, 9nce";n- cu
ni8elul Cre6oluie %a3i%1E ";n1 la ulti%ul ni8el, cu re6oluie 1 3 1# Datele (iec1rei
i%a&ini Ctabloul bi-i%ensional -e te3eliE se obin -in i%a&inea "rece-ent1 "rin
9nlocuirea (iec1rui &ru" -e "atru te3eli cu un te3el a c1rui culoare este %e-ia culorilor
celor "atru te3eli -in i%a&inea "rece-ent1#
Fig. 7.7 CaE Filtrarea -e %1rire a te3turii#
CbE(iltrarea -e %icorare a te3turii#
a te3turii
Poli&on Te3tur1
CbE B)9*4%*CG495@I9K@)*4G
Poli&on Te3tur1
CaE B)9*4%*CG495,B9K@)*4G
Pre=i%a&ine
"i3el Pi3el
Dac1 s=a -e(init i%a&inea %i"=%a" a te3turii, atunci (iltrarea -e %icorare se
"oate reali6a 9n %ai %ulte %o-uri, -e"in6;n- -e (elul 9n care se selectea61 ni8elul
i%a&inii %i"=%a" i -e ti"ul -e (iltrare 9n i%a&inea %i"=%a" selectat1# Filtrul -e
%icorare CB)9*4%*CG495@I9K@)*4GE este -e(init "rintr=una -in ur%1toarele
constante si%bolice:
B)9I4,G46*: nu se a"lic1 nici=o (iltrare, se selectea61 te3elul cel %ai
a"ro"iat -e centrul "re=i%a&inii "i3elului -in i%a&inea -e ni8el a
te3turii %i"=%a"#
B)9)@I4,G: se selectea61 i%a&inea -e ni8el a te3turii %i"=%a" i se
%e-ia61 "on-erat "atru te3eli cei %ai a"ro"iai -e centrul "re=i%a&inii
"i3elului#
B)9I4,G46*95@P5,P9I4,G46*: se selectea61 ni8elul i%a&inii %i"=
%a" a te3turii "entru care -i%ensiunea "re=i%a&inii "i3elului este cea %ai
a"ro"iat1 -e -i%ensiunea te3elului i 9n aceast1 i%a&ine se selectea61
te3elul cel %ai a"ro"iat -e centrul "re=i%a&inii "i3elului#
B)9)@I4,G95@P5,P9I4,G46*: se selectea61 ni8elul i%a&inii %i"=
%a" a te3turii "entru care -i%ensiunea "re=i%a&inii "i3elului este cea %ai
a"ro"iat1 -e -i%ensiunea te3elului i 9n aceast1 i%a&ine se %e-ia61
"on-erat "atru te3eli cei %ai a"ro"iai -e centrul "re=i%a&inii "i3elului#
B)9I4,G46*95@P5,P9)@I4,G: se selectea61 -ou1 i%a&ini %i"=%a"
9n care "re=i%a&inea "i3elului are -i%ensiunea cea %ai a"ro"iat1 -e
i%a&inea te3elului$ 9n (iecare -in aceste i%a&ini se selectea61 c;te un
te3el -u"1 criteriul B)9I4,G46* Cte3elul cel %ai a"ro"iat -e centrul
"re=i%a&inii "i3eluluiE$ aceti te3eli se %e-ia61 "on-erat "entru obinerea
8alorii (inale a culorii "i3elului#
B)9)@I4,G95@P5,P9)@I4,G: se selectea61 -ou1 i%a&ini %i"=%a" 9n
care "re=i%a&inea "i3elului are -i%ensiunea cea %ai a"ro"iat1 -e
i%a&inea te3elului$ 9n (iecare -in aceste i%a&ini se selectea61 c;te un
te3el -u"1 criteriul B)9)@I4,G C%e-ia "on-erat1 a "atru te3eli cei %ai
a"ro"iai -e centrul "re=i%a&inii "i3eluluiE i aceste 8alori se %e-ia61
"on-erat "entru obinerea 8alorii (inale a culorii "i3elului#
Filtrarea B)9)@I4,G95@P5,P9)@I4,G, care se %ai nu%ete i (iltrare
triliniar1, este cel %ai e(icient %o- -e eli%inare a 6&o%otului -e aliasin& al te3turii,
-ar i cel %ai costisitor -in "unct -e 8e-ere al "uterii -e calcul# C2iar -in si%"la
enu%erare a o"eraiilor e(ectuate, se "oate obser8a cantitatea -e calcule e3tre% -e
%are necesar1 "entru (iecare "i3el al i%a&inii &enerate# Filtrarea trilinear1 a te3turilor
&enerea61 i%a&ini -eosebit -e realiste, -ar este (ie lent1, -ac1 este e3ecutat1 so(tLare,
(ie costisitoare, -ac1 este i%"le%entat1 2ar-Lare#
Fn e3e%"lul ur%1tor se "re6int1 %o-ul -e "ro&ra%are a (iltr1rii te3turilor i
re6ultatele care se "ot obine cu -i(erite ti"uri -e (iltr1ri#
E9empl)l 7.7
einclu-e _,>W&lut#2`
einclu-e _&lW&lau3#2`
4?NbR,BI%a&eRec di%a&e$
8oi- CubeCEU
&lBe&inC,>bO?4D)E$
&lTe3Coor-2(C#,#E$&l:erte3!(C=1#,=1#,1#E$
&lTe3Coor-2(C1#,#E$&l:erte3!(C 1#,=1#,1#E$
&lTe3Coor-2(C1#,1#E$&l:erte3!(C 1#, 1#,1#E$
&lTe3Coor-2(C#,1#E$&l:erte3!(C=1#, 1#,1#E$
&lTe3Coor-2(C#,#E$&l:erte3!(C=1#, 1#, 1#E$
&lTe3Coor-2(C1#,#E$&l:erte3!(C 1#, 1#, 1#E$
&lTe3Coor-2(C1#,1#E$&l:erte3!(C 1#, 1#,=2#E$
&lTe3Coor-2(C#,1#E$&l:erte3!(C=1#, 1#,=2#E$
&lTe3Coor-2(C#,#E$&l:erte3!(C1#,=1#, 1#E$
&lTe3Coor-2(C1#,#E$&l:erte3!(C1#,=1#,=2#E$
&lTe3Coor-2(C1#,1#E$&l:erte3!(C1#, 1#,=2#E$
&lTe3Coor-2(C#,1#E$&l:erte3!(C1#, 1#, 1#E$
TTTTTTTTTTTTTTTTTTTTTTTTTTTT#T
&lEn-CE$
V
8oi- InitC8oi-EU
&lClearColorC1#, 1#, 1#, 1#E$
&lEnableC,>bC?>>bF4CEE$
&lEnableC,>bDEPTHbTE)TE$
i%a&e Q au3R,BI%a&e>oa-Cf##Wte3turesWbric@#r&bfE$
WWi%a&e Q au3R,BI%a&e>oa-Cf##Wte3turesWcircles#r&bfE$
&lPi3el)toreiC,>b?NP4CMb4>I,N0ENT, 1E$
&luBuil-2D0i"%a"sC,>bTENT?REb2D, !, i%a&e=`si6eN,
i%a&e=`si6e\,,>bR,B,,>b?N)I,NEDbB\TE,i%a&e=`-ataE$
&lTe3En8(C,>bTENT?REbEN:, ,>bTENT?REbEN:b0+DE,
,>bDEC4>E$
&lTe3Para%eter(C,>bTENT?REb2D, ,>bTENT?REbKR4Pb),
,>bREPE4TE$
&lTe3Para%eter(C,>bTENT?REb2D, ,>bTENT?REbKR4PbT,
,>bREPE4TE$
&lEnableC,>bTENT?REb2DE$
V
8oi- Dis"laACEU
&lClearC,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
WW Pri%ul obiect,(ara (iltrarea te3turii
&lPus20atri3CE$
&lTranslate(C=2#, =2#/, =5#E$
&lRotate-C=!, #,1#,#E$
&lRotate-C 2, 1#,#,#E$
&lTe3Para%eter(C,>bTENT?REb2D, ,>bTENT?REb04,bFI>TER,
,>bNE4RE)TE$
&lTe3Para%eter(C,>bTENT?REb2D, ,>bTENT?REb0INbFI>TER,
,>bNE4RE)TE$
CubeCE$
&lPo"0atri3CE$
WW 4l -oilea obiect,cu (iltrarea te3turii
&lPus20atri3CE$
&lTranslate(C=2#, =2#/, =5#E$
&lRotate-C2, #,1#,#E$
&lRotate-C2, 1#,#,#E$
&lTe3Para%eter(C,>bTENT?REb2D, ,>bTENT?REb04,bFI>TER,
,>b>INE4RE$
&lTe3Para%eter(C,>bTENT?REb2D, ,>bTENT?REb0INbFI>TER,
,>b>INE4Rb0IP04Pb>INE4RE$
CubeCE$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
8oi- Res2a"eCint L, int 2EU
2 Q C2 QQ E ] 1 : 2$
&l:ieL"ortC, , L, 2E$
&l0atri30o-eC,>bPR+JECTI+NE$
&l>oa-I-entitACE$
&luPers"ecti8eC.#,C,>(loatEL WC,>(loatE2,#1,1E$
&l0atri30o-eC,>bTENT?REE$
&l>oa-I-entitACE$
&l)cale-C',','E$
&l0atri30o-eC,>b0+DE>:IEKE$
&l>oa-I-entitACE$
V
Funcia main() este i-entic1 cu cea -in e3e%"lul anterior i nu a %ai (ost
"re6entat1 -in nou# Fn (uncia Ge/Aa>e() se 9ncarc1 %atricea -in 8;r(ul sti8ei
%atricelor -e te3turare cu o %atrice -e scalare, care %ulti"lic1 coor-onatele -e
te3turare cu (actorul '#
Fn acest "ro&ra% se (olosete o sin&ur1 te3tur1, care este 9n "er%anen1 te3tura
curent1# Toate (unciile -e -e(inire a "ara%etrilor i -e a"licare a te3turii se re(er1 la
acest1 unic1 te3tur1 i nu a %ai (ost necesar atribuirea unui nu%e i conectarea C$indE
te3turii "entru -e(inire i acti8are#
I%a&inea te3turii se citete -intr=un (iier, (olosin- (uncia
axGB-@ma(e)+ad() care a"arine unei biblioteci au3iliare +"en,>,
('ax1'ib, care nu a (ost 9nc1 -escris1# 4cest1 bibliotec1 au3iliar1 este o 8ersiune
%ai 8ec2e a siste%ului -e -e68oltare B)C*, care a 9nlocuit=o "entru cea %ai %are
"arte -in (unciile -e creare a (erestrei -e a(iare +"en,>, tratare a e8eni%entelor -in
siste% sau &enerarea unor obiecte tri-i%ensionale# Deoarece 9n 8ersiunea !#. a
siste%ului B)C* 9n care au (ost scrise "ro&ra%ele, nu e3ist1 o (uncie -e 9nc1rcare a
i%a&inilor -e te3tur1, s=a a"elat (uncia -in ('ax1'ib# I%a&inile 9n (or%at# Prin
(uncii ale bibliotecii ('ax1'ib se "ot 9nc1rca i%a&ini -e te3tur1 9n (or%at R,B
sau 9n (or%at bit%a" DIB CDevice 7ndependent *itmapE#
I%a&inea citit1 -in (iier este (olosit1 "entru crearea sec8enei %i"=%a" -e
i%a&ini "re(iltrate ale te3turii# 4cest1 o"eraie se "oate e(ectua "rin (uncia
('-i'd235i>ma>/()# Du"1 crearea i%a&inii %i"=%a" a te3turii, o"eraiile -e
-e(inire i a"licaie a te3turii sunt ase%1n1toare cu cele "re6entate 9n e3e%"lele
"rece-ente# )etarea ti"ului -e (iltrare se (ace 9n (uncia 3i/>'ay() "entru (iecare
-in obiecte &enerate, "rin (unciile ('*exPa:ame!e:f()# Fn Fi&# .#5 se obser81
-i(erena -intre i%a&inea (iltrat1 i i%a&inea ne(iltrat1#
CbE CaE
Creare i%a&inilor cu te3turi cu (iltrare %i"=%a" necesit1 o "utere -e calcul
-eosebit -e ri-icat1 i este necesar1 i%"le%entarea 2ar-Lare 9n aceleratoarele &ra(ice
a al&orit%ilor -e te3turare "entru re-area 9n ti%" real#
Fig. 7.6 CaE I%a&ine cu te3tur1 ne(iltrat1#
CbE I%a&ine cu te3tur1 (iltrat1#
-
Modele de refle.ie /i ilu"inare
Re-area obiectelor tri-i%ensionale "rin su"ra(ee colorate uni(or% crea61
i%a&ini nerealiste i -i(icil -e inter"retat# De e3e%"lu, -ac1 se re-1 i%a&inea unei
s(ere a"ro3i%ate "rin "oli&oane color;n- (eele 8i6ibile cu aceeai culoare alb1, se
obine un cerc alb# 4cest as"ect nerealist a"are -atorit1 (a"tului c1 "erce"ia celei -e=a
treia -i%ensiuni este %ult in(luienat1 -e %o-ul -e re-are a ilu%in1rii obiectelor#
I%a&inea aceleiai s(erei 9n care se ine sea%a -e ilu%inare este %ult %ai su&esti81#
Fn lu%ea real1, atunci c;n- lu%ina "ro8enit1 -e la -i(erite surse -e lu%in1
ca-e asu"ra obiectelor o"ace, o "arte este absorbit1 -e obiect, iar o "arte este
re(lectat1# +c2iul "erce"e lu%ina re(lectat1 -e obiect, "entru a inter"reta (or%a,
culoarea i alte -etalii ale obiectului# Pentru calculul ilu%in1rii 9n &ra(ica "e calculator
trebuie s1 (ie -e(inite sursele -e lu%in1 i interaciunea -intre lu%in1 i su"ra(ee#
?n model de iluminare -e(inete natura lu%inii e%ise -e o surs1 -e lu%in1,
a-ic1 -istribuia intensit1ii lu%inii e%ise# ?n model de refle-ie -escrie interaciunea
-intre lu%in1 i o su"ra(a1, 9n (uncie -e "ro"riet1ile su"ra(eei i natura sursei -e
lu%in1# 0o-elele -e ilu%inare i -e re(le3ie 9n &ra(ica "e calculator "er%it re-area
acce"tabil1 -in "unct -e 8e-ere al "erce"iei u%ane a obiectele tri-i%ensionale
"roiectate 9n s"aiul ecran bi-i%ensional# Ni8elul -e acce"tabilitate al re-1rii -e"in-e
-e natura a"licaiei# Cu c;t este cerut un ni8el -e realis% %ai ri-icat, cu at;t este
necesar un %o-el -e re(le3ie %ai co%"le3 i cerine -e "relucrare %ai %ari#
I%"le%entarea unui %o-el -e re(le3ie 9n "roce-eul -e calculare a intensit1ii
culorii (iec1rui "i3el este cunoscut1 sub nu%ele -e tehnic de um$rire#
Co$.i(eraii &eore&ice a.)pra refle9iei
l)mi$ii
>u%ina inci-ent1 la o su"ra(a1 a unui obiect este -istribuit1 9n "atru
cate&orii: lu%ina re(ectat1, lu%ina a-sorbit1, lu%ina trans%is1 i lu%ina 9%"r1tiat1 i
e%is1 CFi&# 7#1E#

Fn sinte6a -e i%a&ine se 9ncearc1 %o-elarea c;t %ai e(icient1 i co%"let1 a
acestui %o- -e interaciune a lu%inii cu obiectele# Intensitatea i lun&i%ea -e un-1 a
lu%inii re(lectate -e o su"ra(a1 a unui obiect -e"in-e -e %ai %uli (actori: lun&i%ea
-e un-1 a lu%inii inci-ente, un&2iul -e inci-en1, natura su"ra(eei i "ro"riet1ile ei
electrice: "er%iti8itatea, "er%eabilitatea i con-ucana# 0o-elul e3act al interaciunii
este e3tre% -e co%"le3 i el "oate (i a"ro3i%at "rin inter%e-iul func(iei de refle-ie
$idirec(ional C$idirectional reflectivit function D BDRFE, care "er%ite o a"reciere
cantitati81 su(icient -e su&esti81 "entru re-area ilu%in1rii obiectelor 9n &ra(ica "e
calculator#
Funcia -e re(le3ie bi-irecional1 este relaia -intre intensitatea lu%inii
re(lectate 9n -irecia C
8

8
E i ener&ia lu%inii "ri%ite -in -irecia C
i

i
E CFi&# 7#2E:
E , C E
E , , , C I
Q E , , , , C R
i i i
8 8 i i :
8 8 i i b-



C7#1E
4
B
>u%ina
9%"r1tiat1
i e%is1
>u%ina
trans%is1
Re(le3ie
-i(u61
Re(le3ie
-irecionat1
Cs"ecular1E
>u%ina
inci-ent1
Re(le3ie
intern1
>u%ina
absorbit1
Fig. 7./ Interaciunea lu%inii cu un cor" soli-
:
N
>
i
i
8
8
Funcia -e re(le3ie bi-irecional1 -e"in-e -e lun&i%ea -e un-1 # Relaia 9ntre
ener&ia lu%inii inci-ente cores"un61toare unui un&2i soli-
i
i intensitate I
i
este:
i i i i i i i i
- cos E , C I Q E , C E C7#2E
Pentru &ra(ica "e calculator se "oate consi-era 9n %o- si%"li(icat c1
intensitatea re(lectat1 este co%"us1 -in trei co%"onente: co%"onenta -e re(le3ie
-irecionat1 Cs"ecular1E, co%"onenta -e re(le3ie -i(u61 -irecionat1 i co%"onenta -e
re(le3ie -i(u61 i-eal1# Pri%ele -ou1 co%"onente se -atorea61 re(le3iei -e "ri% or-in,
iar co%"onenta -e re(le3ie -i(u61 i-eal1 se -atorea61 re(le3iilor %ulti"le i a
re(le3iilor subsu"ra(eelor CFi&# 7#!E#
:alorile co%"onentelor intensit1ilor re(lectate -e"in- -e ru&o6itatea
su"ra(eei i -e lun&i%ea -e un-1 a lu%inii# Dac1 su"ra(aa ar (i o&lin-1 "er(ect1,
atunci sin&ura co%"onent1 -e lu%in1 re(lectat1 ar (i co%"onenta -irecionat1
Cs"ecular1E# Pentru su"ra(ee reale, cu un anu%it &ra- -e ru&o6itate, co%"onenta
s"ecular1 se -e(inete ca intensitatea re(lectat1 9n -irecia:
8
Q
i
,
8
Q
i
, consi-erat1
(a1 -e orientarea %e-ie a su"ra(eei# Intensitatea acestei co%"onente -e"in-e -e
ru&o6itatea su"ra(eei: cu c;t su"ra(aa este %ai nete-1, cu at;t co%"onenta s"ecular1
este %ai %are#
Co%"onenta -e -i(u6ie -irecionat1 -e"in-e -e ase%enea -e re(le3iile -e "ri%
or-in# Direciile -e re(le3ie sunt 9%"r1tiate 9n se%is(era centrat1 9n "unctul -e
Fig. 7.1 Funcia -e re(le3ie bi-irecional1
>
Re(le3ie
-e "ri% or-in
>
Re(le3ie
%ulti"l1
Re(le3ii ale
subsu"ra(eelor
+rientarea %e-ie
a su"ra(eei
Fig. 7.3 Re(le3ii -e "ri% or-in, re(le3ii %ulti"le
i re(le3ii ale subsu"ra(eelor
inci-en1, -ar e3ist1 o -irecie "re(erinial1, care este -irecia re(le3iei s"eculare
"entru su"ra(eele cu ru&o6itate re-us1#
Co%"onenta -e -i(u6ie i-eal1 re(lect1 lu%ina 9n toate -ireciile 9n interiorul
unei se%is(ere centrate 9n "unctul -e inci-en1, -atorit1 9%"r1tierii "ro8ocate -e
subsu"ra(eele co%"onente#
Prin -esco%"unerea (unciei -e re(le3ie bi-irecional1 9n trei co%"onente se
"oate -e68olta un %o-el analitic ba6at "e as"ecte (i6ice, o"tice i &eo%etrice, care s1
"er%it1 si%ularea ilu%in1rii i a re(le3iei 9n &ra(ica "e calculator# 0o-elul -e re(le3ie
P2on& este cel %ai cunoscut %o-el 9n &ra(ica "e calculator, care a-o"t1 o re"re6entare
e%"iric1 i (eno%enolo&ic1, "rin (or%ule -e calcul si%"le -e i%itare a co%"ort1rii
teoretice a re(le3iei lu%inii, -escrise %ai sus#
2o(el)l PMo$g (e refle9ie a l)mi$ii
0o-elul -e re(le3ie P2on& i%it1 e(icient %o-ul real -e re(le3ie, ";n1 la un
&ra- care "ro-uce o "erce"ie -estul -e bun1 obiectelor ilu%inate i, -e aceea, are o
lar&1 utili6are 9n &ra(ica "e calculator# 0o-elul -e re(le3ie P2on& consi-er1 lu%ina
re(lectat1 -e o su"ra(a1 ca (iin- o co%binaie liniar1 a trei co%"onente: re(le3ia
-i(u61, s"ecular1 i a%biental1#
Compo$e$&a (e refle9ie (if)5- cores"un-e co%"onentei -e re(le3ie -i(u61
i-eal1 -escris1 9n seciunea "rece-ent1 i este e8aluat1 "rin relaia:
cos @ I Q E k C @ I Q I
- i - i -
N L C7#!E
un-e I
i
este intensitatea lu%inii inci-ente, L este 8ectorul unitate 9n-re"tat c1tre sursa
-e lu%in1 i N este 8ectorul unitate nor%al la su"ra(a1 9n "unctul -e inci-en1 CFi&#
7#'CaEE# Pentru o su"ra(a1 "lan1 un&2iul este constant i, -eci, co%"onenta -e
re(le3ie -i(u61 este constant1# @
-
este un coe(icient -e re(le3ie Cre(lectan1E e%"iric,
care -e"in-e -e lun&i%ea -e un-1 a lu%inii i -e natura su"ra(eei# Dat (iin- c1 9n
re(le3ia -i(u61 lu%ina este re(lectat1 9n toate -ireciile, aceast1 co%"onent1 nu
-e"in-e -e "o6iia -e obser8are#
Dac1 e3ist1 %ai %ulte surse -e lu%in1, atunci:
n
n , i - -
E k C I @ Q I N L
$
C7#'E
un-e L
$
este 8ectorul unitate 9n -irecia celei -e=a n=a surs1 -e lu%in1#
N

L
CaE
N

L
#
J

CbE
Compo$e$&a .pec)lar- a refle9iei 9n %o-elul P2on& -e"in-e -e un&2iul
9ntre -irecia -e obser8are J i -irecia -e o&lin-ire # CFi&# 7#'CbEE# Dac1 se
consi-er1 # i J 8ectorii unitate ai acestor -irecii, atunci:
n
s i
n
s i s
E k C @ I Q cos @ I Q I J # C7#/E
un-e n este un in-ice care si%ulea61 ru&o6itatea su"ra(eei#
Pentru o su"ra(a1 o&lin-1 "er(ect1, n tin-e c1tre in(init i lu%ina este re(lectat1
nu%ai 9n -irecia -e o&lin-ire R, "entru care cos
n
Q1# Pentru 8alori (inite ale
in-icelui n, se &enerea61 un lob -e re(le3ie, a c1rui &rosi%e este o (uncie -e
ru&o6itatea su"ra(eei CFi&# 7#/E#
E(ectul re(le3iei s"eculare 9n %o-elul P2on& este acela -e a "ro-uce o ilu%inare
%ai accentuat1 ChighlightE, care este re(le3ia sursei -e lu%in1 "e o arie a su"ra(eei,
care -e"in-e -e 8aloarea lui n# Culoarea lu%inii re(lectate s"ecular "oate (i -i(erit1 -e
culoarea lu%inii re(lectate -i(u6# Fn %o-elele cele %ai si%"le -e re(le3ie s"ecular1, se
"resu"une c1 aceast1 co%"onent1 are culoarea sursei -e lu%in1# De e3e%"lu, o
su"ra(a1 -e culoare 8er-e ilu%inat1 -e o surs1 -e lu%in1 alb1 "ro-uce o co%"onent1
-e re(le3ie -e -i(u6ie -e culoare 8er-e, -ar "ata lu%inoas1 -e re(le3ie s"ecular1 are
culoarea alb1#
Compo$e$&a (e l)mi$- am3ie$&al- se a-au&1 9n %o-elul P2on& "entru a si%ula
ilu%inarea &lobal1 a scenei# 4ceast1 co%"onent1 "er%ite ilu%inarea su"ra(eelor care
Fig. 7. CaE Re(le3ia -i(u61 P2on&#
CbE Re(le3ia s"ecular1 P2on&#
Fig. 7.! CaE In-ice n %are si%ulea61 re(le3ie s"ecular1 9n lob 9n&ust#
CbE In-ice n %ic si%ulea61 re(le3ie s"ecular1 9n lob lar&#
L
N
#
J
CbE
L
N
#
J
CaE
nu sunt 8i6ibile -in sursa -e lu%in1, -ar sunt 8i6ibile -in "unctul -e obser8are# F1r1
co%"onenta a%biental1, su"ra(eele care nu sunt 9n-re"tate c1tre o surs1 -e lu%in1 ar
(i re-ate co%"let ne&re, ceea ce ar crea un e(ect nerealist# Co%"onenta a%biental1
a"ro3i%ea61 ilu%inarea in-irect1 a su"ra(eelor, -e e3e%"lu -atorit1 re(le3iilor
%ulti"le (a1 -e "ereii unei incinte# 4ceste re(le3ii sunt (oarte -e co%"licat -e
si%ulat, ast(el 9nc;t %o-elul P2on& le i&nor1 i a-au&1 o co%"onent1 -e lu%in1
a%biental1 constant1 -at1 -e relaia:
a a &
@ I Q I
C7#.E
Prin 9nsu%area co%"onentelor -e lu%in1 -i(u61, s"ecular1 i a%biental1, se obine
ilu%inarea total1 a unei su"ra(ee:
C E C E C E
n
s - i a a
k @ P k @ I P @ I Q I J # N L C7#7E
Fn %o-elul R,B -e re"re6entare a culorilor, relaia 7#7 se -esco%"une 9n trei
relaii, "entru (iecare co%"onent1 rou, 8er-e, albastru:
C E C E C E
C E C E C E
C E C E C E
n
sb -b i ab a b
n
s& -& i a& a &
n
sr -r i ar a r
k @ P k @ I P @ I Q I
k @ P k @ I P @ I Q I
k @ P k @ I P @ I Q I
J # N L
J # N L
J # N L
C7#5E
Fn %o- obinuit se consi-er1 co%"onenta s"ecular1 -e culoare alb1 C-eci
@
sr
Q @
s&
Q @
sb
Q @
s
E, iar culoarea su"ra(eei este controlat1 "rin coe(icienii -e re(le3ie
-i(u61 C@
-r
, @
-&
, @
-b
E i a%biental1 C@
ar
, @
a&
, @
ab
E# Re6ult1 relaia -e calcul a culorii unei
su"ra(ee 9n %o-elul P2on&:
C E C E C E
n
s - i a a
k @ P k E b , & , r C @ I P E b , & , r C @ I Q E b , & , r C I J # N L C7#9E
0o-elul P2on& -e re(le3ie este un %o-el (oarte si%"li(icat al co%"ort1rii
obiectelor ilu%inate# Fn acest %o-el, se consi-er1 sursele -e lu%in1 "uncti(or%e,
i&nor;n-u=se -istribuia surselor lu%inoase i si%ul;n-u=se un ter%en &lobal -e
ilu%inare a%biental1# Cu toate aceste si%"li(ic1ri, %o-elul P2on& "ro-uce i%a&ini cu
un &ra- -e realis% care este su(icient "entru %ulte a"licaii#
2o(ele (e )m3rire
4"licarea -irect1 a relaiei 7#5 "entru calculul culorii (iec1rui "i3el necesit1 un
ti%" -e e3ecuie e3tre% -e ri-icat, care nu este acce"tabil 9n &ra(ica interacti81# De
aceea, 9n sinte6a -e i%a&ine se (olosesc anu%ite %eto-e si%"li(icate -e calcul a
culorii (iec1rui "i3el, nu%ite te2nici C%o-eleE -e u%brire# Te2nicile -e u%brire -e"in-
-e %o-ul -e re"re6entare a obiectelor# Pentru obiectele %o-elate "rin reea -e
"oli&oane, se (olosesc %ai %ulte %o-ele -e u%brire: u%brirea constant1 C"oli&onal1,
flatE, u%brirea ,ourau- i u%brirea P2on&#
Modelul de um%rire "on!tant#
Fn u%brirea constant1 se a-%ite calculul unei sin&ure intensit1i a culorii
"entru (iecare su"ra(a1 "oli&onal1$ acest %o- -e calcul este "osibil -ac1 se a-%ite
i"ote6a si%"li(icatoare c1 at;t sursele -e lu%in1 c;t i obser8atorul sunt la in(init#
?%brirea constant1 "ro-uce -iscontinuit1i -e culoare la (rontiera -intre su"ra(ee#
Calculul u%bririi constante 9nsea%n1 a"licarea (or%ulelor P2on& C7#5E "entru (iecare
su"ra(a1 8i6ibil1, o sin&ur1 -at1 "entru (iecare "o6iie a obser8atorului#
Modelul de um%rire Gouraud
Pentru eli%inarea -iscontinuit1ilor -e colorare care a"ar 9n u%brirea
constant1, ,ourau- C1971E a intro-us o %eto-1 -e u%brire care=i "oart1 nu%ele i care
calculea61 intensitatea -e culoare a "i3elilor su"ra(eelor "rin %eto-e -e inter"olare,
"ornin- -e la intensit1ile 9n 8;r(urile "oli&onului# 0eto-a incre%ental1 -e calcul a
intensit1ii -e culoare a "i3elilor este ase%1n1toare %eto-ei -e calcul a a-;nci%ii
"i3elilor (olosit1 9n al&orit%ul <=bu((er# Fn &eneral, se a"lic1 co%binat trans(or%area
-e rastru, eli%inarea su"ra(eelor ascunse i u%brirea ,ourau-, 9ntr=un al&orit% -e
baleiere "e linii &enerali6at#
?%brirea ,ourau- este o te2nic1 -e inter"olare biliniar1 a intensit1ii culorii,
(oarte si%"l1 i econo%ic1, care atenuea61 -iscontinuit1ile -e la (rontiera
"oli&oanelor "rin care este re"re6entat un obiect tri-i%ensional, (1r1 s1 eli%ine
co%"let as"ectul "oli&onal al obiectelor#
Intensitatea -e culoare se calculea61 9n 8;r(urile "oli&oanelor "rin a"licarea
relaiilor 7#5 -e calcul a re(le3iei 9n %o-elul P2on&# Nor%ala 9ntr=un 8;r( al unui
"oli&on se calculea61 ca %e-ie a nor%alelor tuturor "oli&oanelor care sunt a-iacente
8;r(ului CFi&# 7#.E:
1
1
m
v
i
i
m

1

C7#1E
N
A
N

N
3
N
1
N
/
Fig. 7.7 Nor%ala la 8;r(ul NA este %e-ia nor%alelor N/, N1, N3, N
a "oli&oanelor a-iacente 9n 8;r(ul res"ecti8#
Nor%alele 9n 8;r(urile "oli&oanelor sunt -e(inite 9n siste%ul -e re(erin1
%o-el i ele sunt trans(or%ate 9n siste%ul -e re(erin1 -e obser8are "rin a"licarea
acelorai trans(or%1ri care se a"lic1 8;r(urilor: trans(or%area -e instaniere i
trans(or%area -e obser8are# Fn siste%ul -e re(erin1 -e obser8are se calculea61
intensit1ile 9n 8;r(urile "oli&oanelor i aceste 8alori sunt (olosite "entru inter"olare
biliniar1 9n al&orit%ul -e con8ersie -e baleiere "e linii a "oli&oanelor#
4cest %o- -e calcul "er%ite ca nor%alele 9n 8;r(uri s1 (ie calculate o sin&ur1
-at1, la %o-elare, i %e%orate ca "arte a %o-elului obiectului 9n ba6a -e -ate &ra(ic1#
4tunci c;n- se -ecu"ea61 (eele obiectelor, "ot s1 a"ar1 8;r(uri noi, care nu e3istau 9n
%o-elul obiectului iniial# Pentru aceste 8;r(uri se calculea61 nor%alele 9n noile
8;r(uri "rin inter"olare 9ntre nor%alele laturilor intersectate -e "lanul -e -ecu"are#
Inter"olarea biliniar1 a intensit1ilor -e culoare a "i3elilor unui "oli&on se
e3ecut1 9n ca-rul al&orit%ului -e baleiere "e linii "ornin- -e la intensit1ile -e culoare
ale 8;r(urilor "oli&onului, calculate "rin relaiile %o-elului -e re(le3ie P2on&#
)e reia e3e%"lul -e baleiere "e linii -in seciunile /#! i /#'#!# Poli&onul
4BCDE are intensit1ile -e culoare calculate 9n 8;r(uri: I
4
, I
B
, I
C
, I
D
, i, res"ecti8, I
E
#
Intensit1ile la ca"etele liniilor -e baleiere se calculea61 -in intensit1ile 8;r(urilor
CFi&# 7#7E# Pentru laturile 4B i BC, ecuaiile -e inter"olare sunt:
@

= m
i1
y+n
i1

@ = m
i2
y+n
i2
C7#11E
un-e: m
i1
= (@
,
@
-
).(y
,
y
-
), n
i1
= y
-
m
i1
@
-
m
i2
= (@
&
@
-
).(y
&
y
-
), n
i2
= y
&
m
i2
@
&
C7#12E
Din %oti8e -e e(icien1 a calculelor, aceste ecuaii se i%"le%entea61 incre%ental#
Intensit1ile se calculea61 9n "unctele -e intersecie cu liniile -e baleiere A
1
, A
2
, TA
i
,
A
iP1
,TFiin- calculate intensit1ile I
i,1
i I
i,2
cores"un61toare liniei -e baleiere A Q A
i
,
intensit1ile I
iP1,1
i I
iP1,2
, cores"un61toare liniei -e baleiere ur%1toare, A
iP1
Q A
i
P1 se
obin "rin incre%entare:
@
i+1,1
= @
i,1
+ m
i1
@
i+1,2
= @
i,2
+ m
i2
C7#1!E
Intensitatea I
i,1
se atribuie "i3elului a c1rui a-res1 se obine -in coor-onatele
"unctului C3
i,1
, A
i
E, intensitatea I
i,2
se atribuie "i3elului a c1rui a-res1 se obine -in
coor-onatele "unctului C3
i,2
, A
i
E, etc#
Fig. 7.7 Inter"olarea intensit1ii "e laturile "oli&onului
i "e o linie -e baleiere 9n u%brirea ,ourau-#
I
A
I
i,1
A
iP1
QA
i
P1
A
i
I
i,2
I
iP1,2
I
iP1,1
@
-
@
,
I
C
@
3
@
4
A
B
I
i,B
A
4
A
C
Intensit1ile -e=a lun&ul liniei -e baleiere se calculea61 -in intensit1ile la
ca"etele acesteia# Pentru linia -e baleiere y = y
i
, ecuaia -e inter"olare a intensit1ii
este:
@

= m
ix
x+n
ix

un-e: m
ix
= (@
i,2
@
i,1
).(x
i,2
x
i,1
), n
ix
= x
i,1
m
ix
@
i,1
C7#1'E
I%"le%entarea e(icient1 a acestei inter"ol1ri se (ace -e ase%enea incre%ental#
Fiin- calculat1 intensitatea @
i,j
cores"un61toare "unctului -e coor-onate Cx
i,j
, y
i
E,
intensitatea 9n "unctul ur%1tor eantionat "e linia -e baleiere Cx
i,j+1
, y
i
, un-e
x
i,j+1
= x
i,j
+1E este:
@
i,j+1
= @
i,j
+ m
ix
C7#1/E
Pentru (iecare linie -e baleiere se calculea61 intensitatea 9n "uncte succesi8e "rin
incre%entarea 8alorii "rece-ente cu coe(icientul -at -e relaia 7#1'#
Fn Fi&# 7#5 este e3e%"li(icat1 -i(erena -intre u%brirea "oli&onal1 i u%brirea
,ourau-# Dou1 s(ere re"re6entate "rin reea -e su"ra(ee "lane C"oli&oaneE sunt
ilu%inate -e la aceeai surs1 "uncti(or%1 -e lu%in1 i au aceleai caracteristici -e
re(lectan1 ai %aterialului# Di(erena -intre cele -ou1 i%a&ini ale s(erei "ro8ine -in
(a"tul c1 "entru "ri%a s(er1 se (olosete u%brirea "oli&onal1 iar "entru cea -e=a -oua
s(er1 u%brirea ,ourau-#
Dei acce"tabil1 9n %ulte a"licaii, at;t ca e(icien1 c;t i ca realis% -e
re"re6entare, u%brirea ,ourau- "oate s1 "ro8oace unele ano%alii care "ro8in 9n
"ri%ul r;n- -in calculul nor%alei 9ntr=un 8;r( "rin %e-ierea nor%alelor (eelor
a-iacente# De e3e%"lu, 9n Fi&# 7#9 se obser81 cu% este "osibil s1 se obin1 nor%ale 9n
8;r(uri i-entice Ci -eci intensit1i e&aleE, -in nor%ale la su"ra(ee -i(erite#
Fig. 7.6 Di(erena -intre u%brirea "oli&onal1 i u%brirea ,ourau-#
+ alt1 -e(icien1 a %o-elului ,ourau- este c1 nu se "oate obine o "at1 -e
lu%in1 C2i&2li&2tE -atorat1 re(le3iei s"eculare 9n interiorul unui "oli&on, -ac1 8;r(urile
"oli&onului nu sunt cu"rinse 9n aceast1 "at1 -e lu%in1#
+ "arte -in -e(icienele te2nicii -e u%brire ,ourau- sunt eli%inate 9n %o-elul
-e u%brire P2on&#
Modelul de um%rire PBong
0o-elul -e u%brire P2on& este -e ase%enea un %o-el -e calcul a intensit1ii
culorii "rin inter"olare biliniar1, ca i %o-elul ,ourau-, -ar 9n acest %o-el se
inter"olea61 nor%alele i se calculea61 e3act intensitatea culorii CFi&# 7#1E#
Eta"ele -e calcul a intensit1ii culorii 9n %o-elul -e u%brire P2on& sunt:
Calculul nor%alelor 9n 8;r(urile "oli&onului#
Pentru (iecare linie -e baleiere, se calculea61 "rin inter"olare 8ectorii
nor%ali ai interseciei liniei -e baleiere cu laturile "oli&onului, (olosin-
nor%alele 9n 8;r(uri CN
i,/
i N
i,1
9n (i&ura -e %ai susE#
Nor%alele la ca"etele unei linii -e baleiere sunt (olosite "entru calculul
"rin inter"olare a nor%alei (iec1rui "unct Cc1ruia 9n cores"un-e un "i3elE
-e "e linia -e baleiere CN
i,:
E#
Fig. 7.9 + su"ra(a1 "liat1 re&ulat "ro-uce nor%ale 9n 8;r(uri e&ale,
-eci colorare constant1 a su"ra(eelor 9n u%brirea ,ourau-
Fig. 7./" Inter"olarea nor%alelor 9n %o-elul -e u%brire P2on&#
>inie -e baleiere
N
A
N
,
N
B
N
C
N
i,/
N
i,1
N
i,:
Nor%alele calculate "rin inter"olare sunt (olosite "entru calculul
intensit1ii culorii 9n (iecare "unct#
?%brirea P2on& este %ai costisitoare -in "unct -e 8e-ere al o"eraiilor
e(ectuate -eoarece, "entru (iecare "i3el, se a"lic1 relaia -e calcul 7#5, care conine
"ro-use scalare -e 8ectori i 9n%uliri# Dar, -in "unct -e 8e-ere al calit1ii i%a&inii
&enerate, u%brirea P2on& este %ai bun1, -at (iin-c1 se calculea61 nor%ale (oarte
a"ro"iate -e nor%ala real1 9n (iecare "unct al su"ra(eei# Fn te2nica -e u%brire P2on&
se "oate si%ula %ult %ai corect re(le3ia s"ecular1 ChighlightE#
Fn seciunea ur%1toare sunt "re6entate %o-alit1ile -e "ro&ra%are a ilu%in1rii
9n a"licaii &ra(ice (olosin- biblioteca +"en,>#
F)$ciile Ope$8L (e calc)l a il)mi$-rii
Biblioteca +"en,> i%"le%entea61 %o-elul P2on& -e re(le3ie i %o-elele -e
u%brire "oli&onal1 i u%brire ,ourau-#
Fn %o- i%"licit, siste%ul -e ilu%inare este inacti8at i "entru -esenarea
"ri%iti8elor &eo%etrice se (olosete culoarea curent1, s"eci(icat1 "rin (uncia
('&+'+:M()# Pentru 8ali-area ilu%in1rii obiectelor, se acti8ea61 siste%ul -e
ilu%inare +"en,> "rin a"elul (unciei ('4nab'e(B)9)@BH*@IB)#
Pentru calculul ilu%in1rii obiectelor trebuie s1 (ie -e(inite:
sursele -e lu%in1$
%aterialul su"ra(eelor$
%o-elul -e u%brire a su"ra(eelor#
6e(inirea !ur!elor de lumin#
Fn +"en,> se "ot -e(ini %ai %ulte surse -e lu%in1 "uncti(or%e# Nu%1rul -e
lu%ini a-%ise 8aria61 9n (uncie -e i%"le%entare, -ar cel "uin o"t lu%ini sunt
-is"onibile 9n orice bibliotec1 +"en,># Fiecare surs1 -e lu%in1 "oate (i 8ali-at1 "rin
a"elul (unciei ('4nab'e(B)9)@BH*i), un-e i este in-e3ul sursei -e lu%in1#
+ surs1 -e lu%in1 se caracteri6ea61 "rin intensitate i "o6iie 9n scen1#
Intensitatea unei surse -e lu%in1 se s"eci(ic1 "entru (iecare co%"onent1 -e ilu%inare
Ca%biental1, -e -i(u6ie i s"ecular1E "rintr=un 8ector 9n s"aiul culorilor 9n %o-elul
R,B4# Po6iia unei surse se s"eci(ic1 "rintr=un 8ector 9n coor-onate o%o&ene
cores"un61toare siste%ului -e re(erin1 uni8ersal#
Funcia -e -e(inire a unui "ara%etru al unei surse -e lu%in1 este (uncia
(')i(A!M(), care are %ai %ulte 8ariante 9n (uncie -e ti"ul ar&u%entelor# De
e3e%"lu:
8oi- &l>i&2t(8C,>enu% li&2t, ,>enu% "na%e,
const ,>(loat d"ara%sE$
8oi- &l>i&2ti8C,>enu% li&2t, ,>enu% "na%e,
const ,>int d"ara%sE$
4r&u%entul 'i(A! re"re6int1 in-e3ul sursei -e lu%in1 i "oate lua un nu%e
si%bolic -e (or%a B)9)@BH*0, B)9)@BH*1, T#B)9)@BH*i, un-e i _
B)95,%9)@BH*61 Nu%1rul %a3i% -e lu%ini -e"in-e -e i%"le%entarea bibliotecii#
4r&u%entul >name s"eci(ic1 un "ara%etru al sursei -e lu%in1# )unt acce"tate
%ai %ulte 8alori, -intre care unele se re(er1 la intensitate -e culoare iar altele la
"o6iia sursei#
:alorile B)9,5-@4I*, B)93@KKC64, B)96P4&C),G ale
ar&u%entului >name "er%it -e(inirea co%"onentelor intensit1ii culorii sursei -e
lu%in1# Fn aceast1 situaie, ar&u%entul >a:am/ re"re6int1 un "ointer la un 8ector -e
"atru 8alori C-e ti" 9ntre& sau 8ir&ul1 %obil1E care s"eci(ic1 intensit1ile R,B4 ale
co%"onentei -e ilu%inare a%biental1, -i(u61 i, res"ecti8, s"ecular1# :alorile i%"licite
ale intensit1ilor sunt C010,010,010,110E "entru co%"onenta a%biental1 i "entru
co%"onentele -i(u61 i s"ecular1 a oric1rei lu%ini cu e3ce"ia lu%inii cu in-e3 , care
au intensitatea -i(u61 i s"ecular1 i%"licit1 C110,110,110,110E#
Fn acest %o-el -e -e(inire a sursei -e lu%in1, co%"onenta a%biental1
CB)9,5-@4I*E se re(er1 la intensitatea R,B4 "e care o surs1 -e lu%in1 o a-au&1
ilu%in1rii &lobale a scenei# Co%"onenta -e ilu%inare -i(u61 CB)93@KKC64E este cel
%ai a"ro"iat %o- -e re"re6entare a ceea ce se consi-er1 culoarea sursei -e lu%in1#
Co%"onenta -e ilu%inare s"ecular1 CB)96P4&C),GE a(ectea61 culoarea 6onei
str1lucitoare ChightlightE a obiectelor lu%inate -e sursa -e lu%in1 res"ecti81# :aloarea
trans"arenei CalphaE surselor -e lu%in1 este i&norat1 -ac1 nu se 8ali-ea61 calculul
trans"arenei C$lendingE#
:aloare B)9PE6@*@EI a ar&u%entului >name "er%ite -e(inirea "o6iiei
sursei -e lu%in1# Fn aceast1 situaie, ar&u%entul >a:am/ este un "ointer la un 8ector
-e "atru nu%ere C9ntre&i sau 8ir&ul1 (lotant1E care re"re6int1 "o6iia 9n coor-onate
o%o&ene 9n siste%ul -e re(erin1 uni8ersal a sursei -e lu%in1# 4cest1 "o6iie este
trans(or%at1 "rin a"licarea 8alorii %atricii -e %o-elare=8i6uali6are -in %o%entul
a"elului (unciei (')i(A!, ast(el 9nc;t sursa -e lu%in1 8a a8ea coor-onatele
trans(or%ate 9n siste%ul -e re(erin1 -e obser8are, un-e se calculea61 intensitatea 9n
8;r(urile "ri%iti8elor &eo%etrice#
Dac1 co%"onenta " a "o6iiei este , atunci lu%ina este tratat1 ca o lu%in1
-irecional1 "lasat1 la in(init, 9n -irecia -e(init1 -e co%"onentele x,y,z i se
utili6ea61 aceast1 -irecie "entru calculul co%"onentelor -e re(le3ie -i(u61 i
s"ecular1#
Dac1 " 0, atunci sursa este o surs1 "o6iional1 i se (olosete locali6area
acesteia "entru calculul -ireciei -e ilu%inare a su"ra(eelor# Po6iia i%"licit1 a unei
surse este C0,0,1,0E, -eci sursa este "lasat1 la in(init "e a3a 6 i ea lu%inea61
obiectele 9n -irecia D 6#
)ec8ena -e instruciuni "entru -e(inirea intensit1ii i "o6iiei sursei -e
lu%in1 -e in-ice arat1 ast(el:
,>(loat li&2tba%bientRS Q U1#, #, #, #V$
,>(loat li&2tb-i((useRS Q U1#, #, #, #V$
,>(loat li&2tbs"ecularRS Q U1#, 1#, 1#, #V$
,>(loat li&2tb"ositionRS Q U1#, 1#, 1#, #V$
&l>i&2t(8C,>b>I,HT, ,>b40BIENT, li&2tba%bientE$
&l>i&2t(8C,>b>I,HT, ,>bDIFF?)E, li&2tb-i((useE$
&l>i&2t(8C,>b>I,HT, ,>b)PEC?>4R, li&2tbs"ecularE$
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N, li&2tb"ositionE$
Fn ilu%inarea real1, intensitatea lu%inii "ri%ite -e un obiect sca-e o-at1 cu
creterea -istanei acestuia (a1 -e sursa -e lu%in1# Dat (iin- c1 sursele -e lu%in1
-irecionale Ccare au " =0E se consi-er1 "lasate la in(init, nu are sens calculul
atenu1rii cu -istana, ast(el 9nc;t atenuarea este in8ali-at1 "entru ast(el -e surse#
Pentru sursele "o6iionale, se (olosete un (actor -e atenuare cu 8aloarea:
2
X l c
- @ P - @ P @
1
Q (
C7#1.E
un-e: d este -istana -intre sursa -e lu%in1 i 8;r(ul 9n care se calculea61 ilu%inarea
k
c
= B)9&EI6*,I*9,**4IC,*@EI
k
'
= B)9)@I4,G9,**4IC,*@EI
k
P
= B)9OC,3G,*@&9,**4IC,*@EI
I%"licit, aceti "ara%etri au 8alorile: k
c
=1, k
'
=0, k
P
=0, -ar ei "ot (i setai "rin
a"elul uneia -in (unciile (')i(A!f() sau (')i(A!i() ast(el:
&l>i&2t(C,>b>I,HT, ,>bC+N)T4NTb4TTEN?4TI+N, 2#E$
&l>i&2t(C,>b>I,HT, ,>b>INE4Rb4TTEN?4TI+N, 1#E$
&l>i&2t(C,>b>I,HT, ,>bO?4DR4TICb4TTEN?4TI+N, #/E$
Dac1 se (olosesc %ai %ulte surse -e lu%in1, "entru (iecare -intre ele se
-e(inesc co%"onentele intensit1ii, "o6iia i caracteristicile -e atenuare#
6e(inirea propriet#&ilor materialelor
Pentru calculul intensit1ii culorii unei su"ra(ee, trebuie s1 (ie -e(inite
"ro"riet1ile -e re(le3ie a lu%inii "entru co%"onentele -e re(le3ie a%biental1, -i(u61
i s"ecular1# 4ceste "ro"riet1i sunt consi-erate "ro"riet1i -e %aterial al su"ra(eei i
se s"eci(ic1 "rin a"elul uneia sau %ai %ultora -in cele "atru 8ariante ale (unciei
('5a!e:ia'M():
8oi- &l0aterialiC,>enu% (ace,,>enu% "na%e,,>int "ara%E$
8oi- &l0aterial(C,>enu% (ace,,>enu% "na%e,,>(loat "ara%E$
8oi- &l0ateriali8C,>enu% (ace,,>enu% "na%e,,>int d"ara%E$
8oi- &l0aterial(8C,>enu% (ace,,>enu% "na%e,
,>(loat d"ara%E$
Fn aceste (uncii, ar&u%entul face este nu%ele (eei i -e"in-e -e orientarea
acesteia$ "oate lua ca 8alori constantele si%bolice B)9KGEI*, B)9-,&L,
B)9KGEI*9,I39-,&L# 4r&u%entul >name s"eci(ic1 "ro"rietatea %aterialului care
se -e(inete "rin a"elul (unciei ('5a!e:ia'M()# 4cest ar&u%ent "oate lua una
8alorile -ate 9n tabelul -e %ai Bos#
*a3el)l 7./ Para%etrii -e -e(inire a %aterialelor
Ime >a:ame!: 7a'+a:e im>'ici!R 6emnificaSie
B)9,5-@4I* (012,012,012,110) Gef'ec!anSa (c+eficien! de
:ef'exie) ambien!a'R
B)93@KKC64 (01T,01T,01T,110) Gef'ec!anSa de difzie
B)9,5-@4I*9,I3
93@KKC64
Gef'ec!anSa ambien!a'R Qi
de difzie
B)96P4&C),G (010,010,010,110) Gef'ec!anSa />ec'a:R
B)945@66@EI (010,010,010,110) @n!en/i!a!ea 'minii emi/e
B)96H@I@I466 010 4x>+nen!' de
:ef'exie />ec'a:R
B)9&E)EG9@I34% (0,1,1) @ndicii c'+:i'+:
ambien!a'R, difzR Qi
/>ec'a:R a'e
ma!e:ia''i
Funciile ('5a!e:ia'i() i ('5a!e:ia'f() se (olosesc nu%ai "entru
setarea str1lucirii CB)96H@I@I466E la 8aloarea -at1 "rin ar&u%entul >a:am#
Funciile ('5a!e:ia'iv() i ('5a!e:ia'fv() se (olosesc "entru
s"eci(icarea celorlalte "ro"riet1i# Dac1 ar&u%entul >name este B)9&E)EG9@I34%,
atunci >a:am este un "ointer la un 8ector -e trei 8alori -e ti" 9ntre&, care conine
in-icii culorilor a%biental1, -e -i(u6ie i s"ecular1 ale %aterialului# Fn celelalte
situaii, >a:am este un "ointer la un 8ector -e "atru 8alori -e ti" 9ntre& sau (lotant,
care sunt co%"onentele rou, 8er-e, albastru i al"2a Ctrans"aren1E ale co%"onentei
-e re(le3ie s"eci(icat1 "rin "ara%etrul >name(a%biental1, -i(u61, s"ecular1,
e%isi8itateE# )e "oate obser8a (a"tul c1 %o-elul +"en,> -e re(le3ie "er%ite
a-1u&area unei co%"onente e%isi8e a lu%inii re(lectat1 -e o su"ra(a1#
#efle9ia (if)5- Boac1 cel %ai i%"ortant rol 9n culoarea "e care o "re6int1 o
su"ra(a1# Ea re"re6int1 culoarea "e care o are su"ra(aa lu%inat1 -irect i -e"in-e -e
co%"onenta -e -i(u6ie a lu%inii inci-ente, "ro8enit1 -e la una sau %ai %ulte surse -e
lu%in1, -e coe(icientul -e re(le3ie -e -i(u6ie Cre(lectana -e -i(u6ieE a %aterialului i
-e un&2iul -intre -irecia lu%inii i nor%ala la su"ra(a1# Po6iia -e obser8are nu
in(luienea61 co%"onenta -e -i(u6ie a lu%inii re(lectate#
#efle9ia am3ie$&al- a(ectea61 culoarea -e ansa%blu "e care o "re6int1 o
su"ra(a1 i ea -e8ine sesi6abil1 atunci c;n- su"ra(aa nu este lu%inat1 -irect# Ca i
re(le3ia -i(u61, aceast1 co%"onent1 nu -e"in-e -e "o6iia -e obser8are# Cele -ou1
co%"onente se s"eci(ic1 -e cele %ai %ulte ori cu aceeai culoare Caa cu% sunt
su"ra(eele realeE (olosin- "ara%etrul B)9,5-@4I*9,I393@KKC64 9n a"elul
(unciei ('5a!e:ia'M()#
#efle9ia .pec)lar- "ro-uce ilu%inarea %ai "uternic1 ChighlightE a unei 6one
a obiectului, 9n (uncie -e "o6iia -e obser8are# +"en,> "er%ite s"eci(icarea culorii
"ro-use -e re(le3ia s"ecular1 C"rin "ara%etrul B)96P4&C),G) i -i%ensiunea i
str1lucirea 6onei "rin "ara%etrul B)96H@I@I466#
Compo$e$&a (e emi.ie a unei su"ra(ee se s"eci(ic1 "rin "ara%etrul
B)945@66@EI# 4cest e(ect este (olosit "entru si%ularea l1%"ilor sau a altor surse -e
lu%in1 -in scen1#
Proprie&-ilor ma&erialelor. Funcia ('5a!e:ia'M() -e(inete
"ro"riet1ile %aterialului curent, care se a"lic1 tuturor 8;r(urilor intro-use -u"1
aceasta "rin (unciile ('7e:!exM() sau "rin -i(erite (uncii -e %o-elare -in
biblioteca B)C* C-e e3e%"lu, ('!6+'id6>Ae:e()E# Pro"riet1ile %aterialului
curent se %enin ";n1 la ur%1torul a"el al (unciei ('5a!e:ia'M()# Calculele -e
ilu%inare se "ot e3ecuta -i(erit "entru (eele orientate -irect CB)9KGEI*E i cele
orientate in8ers CB)9-,&LE#
?n e3e%"lu -e -e(inire a unui %aterial este -at "rin ur%1toarele instruciuni:
,>(loat %atba%bientRS Q U1#, #, #, 1#V$
,>(loat %atb-i((useRS Q U1#, #, #, 1#V$
,>(loat %atbs"ecularRS Q U1#, 1#, 1#, 1#V$
,>(loat %atbs2ininess Q /#$
&l0aterial(8C,>bFR+NT, ,>b40BIENT, %atba%bientE$
&l0aterial(8C,>bFR+NT, ,>bDIFF?)E, %atb-i((useE$
&l0aterial(8C,>bFR+NT, ,>b)PEC?>4R, %atbs"ecularE$
&l0aterial(C,>bFR+NT, ,>b)HININE)), %atbs2ininessE$
2o(el)l (e )m3rire se -e(inete "rin a"elul (unciei
('6Aade5+de'(B)enm m+de), un-e ar&u%entul %o-e "oate lua una -in
8alorile B)9K),*, "entru %o-elul -e u%brire "oli&onal1, sau B)965EE*H, "entru
%o-elul -e u%brire ,ourau-# :aloarea i%"licit1 este B)965EE*H#
Dac1 nu este 8ali-at siste%ul -e ilu%inare C"rin a"elul (unciei
('4nab'e(B)9)@BH*@IB)8) atunci culoarea care se atribuie 8;r(urilor
"ri%iti8elor &eo%etrice este culoarea curent1, setat1 "rin a"elul unei (uncii
('&+'+:M()# Dac1 s=a -e(init %o-elul -e u%brire "oli&onal1 CB)9K),*E,
"ri%iti8ele &eo%etrice se &enerea61 -e culoare constant1 Cculoarea curent1 9nt;lnit1 la
"ri%ul 8;r( intro-us "rin (uncia ('7e:!exM())# Dac1 s=a -e(init %o-elul -e
u%brire ,ourau- CB)965EE*HE, atunci culorile -e(inite 9n 8;r(uri se (olosesc "entru
calculul intensit1ii culorii "i3elilor "ri%iti8ei "rin inter"olarea biliniar1#
E9empl)l 7./
Fn Fi& 7#11 CaE s=a -e(init u%brirea ,ourau- CB)965EE*HE, iar 9n Fi& 7#11 CbE
s=a -e(init u%brirea "oli&onal1 CB)9K),*E, toate celelate (uncii (iin- aceleai#
&l)2a-e0o-elC,>bF>4TE$
&lBe&inC,>bP+>\,+NE$
&lColor!(C#/,#/,#/E$
&l:erte3!-C=1,=1,=5E$
&lColor!(C#1,#1,#1E$
&l:erte3!-C1,=1,=5E$
&lColor!(C#/,#/,#/E$
&l:erte3!-C1,1,=5E$
&lColor!(C#9,#9,#9E$
&l:erte3!-C=1,1,=5E$
&lEn-CE$
CbE
&l)2a-e0o-elC,>b)0++THE$
&lBe&inC,>bP+>\,+NE$
&lColor!(C#/,#/,#/E$
&l:erte3!-C=1,=1,=5E$
&lColor!(C#1,#1,#1E$
&l:erte3!-C1,=1,=5E$
&lColor!(C#/,#/,#/E$
&l:erte3!-C1,1,=5E$
&lColor!(C#9,#9,#9E$
&l:erte3!-C=1,1,=5E$
&lEn-CE$
CaE
E9empl)l 7.1
Pentru &enerarea i%a&inii -in Fi&# 7#5 -in seciunea "rece-ent1, s=a 8ali-at
siste%ul -e ilu%inare, s=a -e(init sursa -e lu%in1 B)9)@BH*0 i s=au -e(init
"ara%etrii %aterialului (eelor s(erei# Pro&ra%ul scris (olosin- siste%ul -e -e68oltare
B)C* este ur%1torul:
einclu-e _,>W&lut#2`
8oi- InitCEU
,>(loat li&2tba%bientRS Q U1#, 1#, 1#, 1#V$
,>(loat li&2tb-i((useRS Q U1#, 1#, 1#, 1#V$
,>(loat li&2tbs"ecularRS Q U1#, 1#, 1#, 1#V$
,>(loat %atba%bientRS Q U#1, #1, #1, 1#V$
,>(loat %atb-i((useRS Q U#9, #9, #9, 1#V$
,>(loat %atbs"ecularRS Q U1#, 1#, 1#, 1#V$
,>(loat %atbs2ininess Q /# $
&lClearColorC#,#,#,#E$
&lEnableC,>bDEPTHbTE)TE$
&lClearDe"t2C1#(E$ WW i%"licit
&lDe"t2FuncC,>b>E))E$ WW i%"licit
&lEnableC,>b>I,HTIN,E$
&lEnableC,>b>I,HTE$
&l>i&2t(8C,>b>I,HT, ,>b40BIENT, li&2tba%bientE$
&l>i&2t(8C,>b>I,HT, ,>bDIFF?)E, li&2tb-i((useE$
&l>i&2t(8C,>b>I,HT, ,>b)PEC?>4R, li&2tbs"ecularE$
&l0aterial(8C,>bFR+NT, ,>b40BIENT, %atba%bientE$
&l0aterial(8C,>bFR+NT, ,>bDIFF?)E, %atb-i((useE$
&l0aterial(8C,>bFR+NT, ,>b)PEC?>4R, %atbs"ecularE$
&l0aterial(C,>bFR+NT, ,>b)HININE)), %atbs2ininessE$
&l)2a-e0o-elC,>b)0++THE$ WW i%"licit
V
8oi- Dis"laAC8oi-EU
,>(loat li&2tb"ositionRS Q U1#, 1#, 1#, #V$
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N, li&2tb"ositionE$
&lPus20atri3CE$
&lTranslate(C=1#/,,=5E$ WWtrans(# %o-elare
&l)2a-e0o-elC,>bF>4TE$
&lut)oli-)"2ereC1,1.,1.E$
Fig. 7.// CaE Inter"olarea biliniar1 a culorilor -in 8;r(urile "ri%iti8ei#
CbE Colorare constant1 a "ri%iti8ei#
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate(C1#/,,=5E$ WW trans(# %o-elare
&l)2a-e0o-el C,>b)0++THE$
&lut)oli-)"2ereC1,1.,1.E$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
8oi- Res2a"eCint L, int 2EU
2 Q C2 QQ E ] 1 : 2$
&l:ieL"ortC, , L, 2E$
&l0atri30o-eC,>bPR+JECTI+NE$
&l>oa-I-entitACE$
&luPers"ecti8eC.#,C,>(loatELWC,>(loatE2, 1, '#E$
&l0atri30o-eC,>b0+DE>:IEKE$
&l>oa-I-entitACE$
V
int %ainCint ar&c, c2ardd ar&8EU
&lutInitCaar&c, ar&8E$
&lutInitDis"laA0o-eC,>?TbD+?B>E[,>?TbR,B[,>?TbDEPTH E$
&lutInitKin-oL)i6eC/,/E$
&lutInitKin-oLPositionC1,1E$
&lutCreateKin-oLCf>i&2tsfE$
InitCE$
&lutDis"laAFuncCDis"laAE$
&lutRes2a"eFuncCRes2a"eE$
&lut0ain>oo"CE$
return $
V
Funciile callbac@ 3i/>'ay() i Ge/Aa>e() au aceleeai se%i(icaie
care a (ost -escris1 9n "ro&ra%ele "rece-ente# )ursa -e lu%in1 -irecional1 C"lasat1 la
-istan1 in(init1E are culoarea alb1, iar %aterialul are co%"onenta s"ecular1 alb1, iar
co%"onentele -i(u61 i a%biental1 au nuane -e &ri# Pentru re-area "ri%ei s(ere s=a
setat u%brire "oli&onal1 CB)9K),*E, iar "entru cea -e=a -oua s(er1 u%brire ,ourau-
CB)965EE*HE# I%a&inea -in Fi&# 7#11 e8i-enia61 -i(erena -intre u%brirea
"oli&onal1 i u%brirea ,ourau-, "recu% i ilu%inarea accentuat1 C"ata lu%inoas1E
-atorat1 re(le3iei s"eculare#
Dac1 9n "ro&ra%ul -e %ai sus se 9nlocuiesc a"elurile (unciilor
('!6+'id6>Ae:e(1,1D,1D) cu a"elul (unciilor ('!6+'id*+:/(01U,
01V,T,1D) se obine i%a&inea -in Fi&# 7#12, 9n care este i %ai "re&nant1 -i(erena
-intre u%brirea "oli&onal1 i u%brirea ,ourau-#
Fig. 7./1 Tor cu u%brire "oli&onal1 i u%brire ,ourau-#

8ormalele 4n +<r(urile primiti+elor


geometri"e
Pentru calculul re(le3iei -i(u6e i s"eculare este necesar s1 (ie -e(inite
nor%alele 9n 8;r(urile "ri%iti8elor &eo%etrice# Nor%ala care se (olosete "entru
calculul re(le3iei 9ntr=un 8;r( este nor%ala curent1, care se setea61 "rin a"elul unei
8ariante a (unciei ('I+:ma'M() i se %e%orea61 9ntr=o 8ariabil1 -e stare a
bibliotecii, i-enti(icat1 "rin constanta si%bolic1 B)9&CGG4I*9IEG5,)# + "arte -in
"rototi"urile (unciilor ('I+:ma'M()-e(inite 9n (iierul 2ea-er ('1A sunt:
8oi- &lNor%al!-C,>-ouble n3, ,>-ouble nA, ,>-ouble n6E$
8oi- &lNor%al!(C,>(loat n3, ,>(loat nA, ,>(loat n6E$
8oi- &lNor%al!iC,>int n3, ,>int nA, ,>int n6E$
8oi- &lNor%al!b8Cconst ,>bAte d8E$
8oi- &lNor%al!-8Cconst ,>-ouble d8E$
8oi- &lNor%al!(8Cconst ,>(loat d8E$
Nor%ala se "oate s"eci(ica "rin co%"onentele nx, ny, nz, sau "rintr=un
"ointer la un 8ector care conine cele trei co%"onente, -e ti"ul cerut "rin nu%ele
(unciei ('I+:ma'M()#
Nor%alele se "oate -e(ini 9n orice loc 9n "ro&ra%, 9n e3teriorul sau 9n
interiorul unui bloc ('-e(in()-('4nd()# Dac1 nor%ala se -e(inete o sin&ur1
-at1 "entru o "ri%iti81 &eo%etric1, aceast1 8aloare este (olosit1 "entru calculul
intensit1ilor tuturor 8;r(urilor "ri%iti8ei &eo%etrice# Fn %o- nor%al 9ns1, "entru
calculul corect al intensit1ilor culorii 9n 8;r(uri, este necesar ca nor%ala s1 (ie -e(init1
"entru (iecare 8;r( al "ri%iti8ei &eo%etrice, -eci (unciile ('I+:ma'M() se a"elea61
alternant cu (unciile ('7e:!exM() 9n interiorul blocului ('-e(in()-('4nd()#
Fn e3e%"lul "rece-ent nu a (ost necesar1 -e(inirea nor%alelor, -eoarece
(uncia ('!6+'id6>Ae:e() le -e(inete 9n %o- auto%at, -ar, "entru calculul
ilu%in1rii unui obiect -e(init "rintr=o %uli%e -e "ri%iti8e -ate "rin 8;r(urile lor, este
nesesar s1 (ie -e(inite toate nor%alele 9n 8;r(uri#
Nor%alele se s"eci(ic1 9n aceelai siste% -e re(erin1 ca i 8;r(urile
"ri%iti8elor &eo%etrice, -eci 9n siste%ul -e re(erin1 -e %o-elare# 4cest %o- -e
calcul "er%ite ca nor%alele 9n 8;r(uri s1 (ie calculate o sin&ur1 -at1, la %o-elare, i
%e%orate ca "arte a %o-elului obiectului 9n ba6a -e -ate &ra(ic1# 4su"ra lor se a"lic1
9n %o- auto%at trans(or%area -e %o-elare=8i6uali6are (olosin- 8aloarea %atricei -in
8;r(ul sti8ei -e %o-elare=8i6uali6are, e3istent1 9n %o%entul a"elului (unciei
('I+:ma'M()# Fn (elul acesta, nor%alele sunt trans(or%ate 9n siste%ul -e re(erin1
-e obser8are, un-e se calculea61 intensit1ile co%"onentelor -e re(le3ie 9n 8;r(urile
"ri%iti8elor &eo%etrice#
E9empl)l 7.3
Fn acest e3e%"lu se e8i-enia61 necesitatea -e(inirii nor%alelor "entru
calculul ilu%in1rii# Fn "ro&ra% este 8ali-at siste%ul -e ilu%inare i este -e(init1 o
surs1 -e lu%in1 -irecional1 i %aterialul, cu co%"onente -e re(lectan1 -i(u61 i
a%biental1# Cubul -in Fi&# 7#1!CaE a (ost &enerat cu -e(inirea nor%alelor 9n (iecare
8;r( al (iec1rei su"ra(ee# Fn Fi&# 7#1! CbE, sin&ura -i(eren1 este absena nor%alelor 9n
8;r(uri$ se obser81 absena u%bririi obiectului#
Pro&ra%ul care "ro-uce aceste i%a&ini este (oarte ase%1n1tor cu "ro&ra%ul
-in E3e%"lul 7#2 "entru toate (unciile, %ai "uin (uncia callbac@ 3i/>'ay(), care
arat1 ast(el:
8oi- Dis"laACEU
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lEnable C,>bN+R04>I<EE$
&lPus20atri3CE$
&lTranslate-C=2,=2,=5E$ WW trans(# -e obser8are
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N, li&2tb"ositionE$
&lBe&inC,>bP+>\,+NE$
&lNor%al!-C=1,1, 1E$
&l:erte3!-C=1,1, 1E$
&lNor%al!-C 1,1, 1E$
&l:erte3!-C 1,1, 1E$
&lNor%al!-C 1,1,=1E$
&l:erte3!-C 1,1,=1E$
&lNor%al!-C=1,1,=1E$
&l:erte3!-C=1,1,=1E$
&lEn-CE$
&lBe&inC,>bP+>\,+NE$
&lNor%al!-C=1,=1,1E$
&l:erte3!-C=1,=1,1E$
&lNor%al!-C 1,=1,1E$
&l:erte3!-C 1,=1,1E$
&lNor%al!-C 1, 1,1E$
CaE
CbE
Fig. 7./3 CaE Calculul ilu%in1rii (olosin- nor%alele 9n 8;r(uri#
CbE I%a&inea obinut1 -ac1 nu sunt -e(inite nor%alele 9n 8;r(uri#
&l:erte3!-C 1, 1,1E$
&lNor%al!-C=1, 1,1E$
&l:erte3!-C=1, 1,1E$
&lEn-CE$
&lBe&inC,>bP+>\,+NE$
&lNor%al!-C1,=1, 1E$
&l:erte3!-C1,=1, 1E$
&lNor%al!-C1,=1,=1E$
&l:erte3!-C1,=1,=1E$
&lNor%al!-C1, 1,=1E$
&l:erte3!-C1, 1,=1E$
&lNor%al!-C1, 1, 1E$
&l:erte3!-C1, 1, 1E$
&lEn-CE$
TTTTTTTTTTTTTT
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
Fn (uncia 3i/>'ay() sunt intro-use nu%ai trei -in cele ase (ee ale cubului$
celelate trei se -e(inesc 9n %o- si%ilar# Funcia ('4nab'e(B)9IEG5,)@#4) are
ca e(ect scalarea la 8aloarea unitate a 8ectorilor nor%alelor intro-use "rin (unciile
('I+:ma'M()#
Dac1 se co%entea61 toate (unciile ('I+:ma'3d() -in "ro&ra%ul -e %ai sus, se
obine i%a&inea -in Fi&# 7#1!CbE, 9n care nu se obine u%brirea (eelor cubului#
Controlul pozi&iei @i al dire"&iei !ur!elor
de lumin#
+"en,> tratea61 "o6iia i -irecia surselor -e lu%in1 la (el cu% este tratat1
"o6iia "ri%iti8elor &eo%etrice, a-ic1 sursele -e lu%in1 sunt trans(or%ate cu aceleai
%atrici -e trans(or%are ca i "ri%iti8ele &eo%etrice# 4tunci c;n- este a"elat1 (uncia
(')i(A!M(B)9)@BH*i, B)9PE6@*@EI vec!) "entru s"eci(icarea "o6iiei
sau -ireciei unei surse -e lu%in1, "o6iia sau -irecia este trans(or%at1 -e %atricea -e
%o-elare=8i6uali6are curent1 i este %e%orat1 9n coor-onate 9n siste%ul -e re(erin1
-e obser8are# 4cest lucru 9nsea%n1 c1 se "oate %o-i(ica "o6iia sau -irecia unei surse
-e lu%in1 "rin %o-i(icarea cores"un61toare a %atricii -e %o-elare=8i6uali6are#
0atricea -e "roiecie nu %o-i(ic1 "o6iia surselor -e luni%1# )ursele -e lu%in1 "ot (i
tratate 9n trei %o-uri:
surse cu "o6iie (i31$
surse care se -e"lasea61 o-at1 cu "unctul -e obser8are$
surse care se -e"lasea61 9n scen1#
S)r.e (e l)mi$- c) po5iie fi9-# Funcia (')i(A!M() cu "ara%etrul
B)9PE6@*@EI -e(inete coor-onatele o%o&ene ale "o6iiei sursei# Dac1 aceast1
(uncie este a"elat1 9n %o%entul 9n care %atricea curent1 -in sti8a -e %o-elare=
8i6uali6are conine %atricea -e obser8are, atunci "o6iia sursei este trans(or%at1 9n
coor-onate -e obser8are# Po6iia 9n s"aiu a sursei r1%9ne (i31, iar "o6iia calculat1 i
utili6at1 9n calcule este "o6iia 9n coor-onate -e obser8are# Fn E3e%"lul 7#! sursa -e
lu%in1 este %eninut1 9n "o6iie (i31 9n scen1 "rin setarea "o6iiei ei 9n %o%entul 9n
care %atricea curent1 -e %o-elare=8i6uali6are conine %atricea -e trans(or%are -e
obser8are:
&lPus20atri3CE$
&lTranslate-C=2,=2,=5E$ WW trans(# -e obser8are
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N, li&2tb"ositionE$
WW Desenare obiect
&lPo"0atri3CE$
E9empl)l 7.
)e reia "ro&ra%ul -e -esenare a -ou1 s(ere lu%inate -in E3e%"lul 7#2#
Culoarea -e ter&ere este %o-i(icat1 Cculoare &ri -esc2is C#5, #5, #5EE "entru o %ai
bun1 e8i-eniere a u%bririi obiectelor# Trans(or%1rile -e instaniere se a"lic1 (iec1rui
obiect 9n "arte# Trans(or%area -e obser8are se a"lic1 tuturor obiectelor i -ireciei
sursei -e lu%in1# Fn continuare este "re6entat1 nu%ai (uncia 3i/>'ay(), "entru
e8i-enierea "o6iiei (i3e a sursei -e lu%in1, 9n con-iiile %o-i(ic1rii "unctului -e
obser8are C3
:
Q, A
:
Q, 6
:
Q5 i un&2iul 8aribilE#
8oi- Dis"laACEU
,>(loat li&2tb"ositionRS Q U1#, 1#, 1#, #V$
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lPus20atri3CE$
&lTranslate(C,,=5E$
&lRotate-C&a%%a,,1,E$ WW trans(# obser8are
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N, li&2tb"ositionE$
&lPus20atri3CE$
&lTranslate(C1#/,,E$ WW trans(# %o-elare
&lut)oli-)"2ereC1,1.,1.E$
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate(C=1#/,,E$ WW trans(# %o-elare
&lut)oli-)"2ereC1,1.,1.E$
&lPo"0atri3CE$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
CaE Q CbE Q'/
C(E Q22/
CeE Q15
Fig. 7./ )urs1 -e lu%in1 (i31 9n -irecia C1#, 1#, 1#, #E#
Prin %icarea -e rotaie a "unctului -e obser8are, s(erele sunt 816ute ilu%inate
9n -i(erite situaii: "entru Q'/ se "oate obser8a "artea cea %ai lu%inat1 a s(erelor$
"entru Q22/ se obser81 "artea cea %ai "uin lu%inat1 a s(erelor#
S)r.e (e l)mi$- care .e (epla.ea5- o (a&- c) p)$c&)l (e o3.er4are. Pentru
a crea surse -e lu%in1 care se %ic1 o-at1 cu "unctul -e obser8are, trebuie ca "o6iia
sursei s1 (ie setat1 9nainte -e trans(or%area -e obser8are# Po6iia sau -irecia sursei
-at1 "rin (uncia (')i(A!M() cu "ara%etrul B)9PE6@*@EI, este trans(or%at1 cu
%atricea curent1 -in sti8a -e %o-elare=8i6uali6are care conine %atricea i-entitate,
-eci locali6area sursei r1%;ne constant1 (a1 -e "unctul -e obser8are# 4cest %o- -e
control al sursei este (olosit 9n si%ulatoare -e antrena%ent, "entru a si%ula lu%ina
(arurilor 8i2iculului# Dac1 "o6iia sursei este C,,,1E, atunci sursa este "lasat1 c2iar
9n "unctul -e obser8are#
E9empl)l 7.!
)e reia "ro&ra%ul -e &enerare a i%a&inii obiectelor lu%inate -in e3e%"lul
"rece-ent, -ar sursa -e lu%in1 se setea61 cu o -irecie (i31 9n siste%ul -e re(erin1 -e
obser8are "rin setarea -ireciei sursei 9nainte -e trans(or%area -e obser8are# Fn
continuare sunt "re6entate (unciile callbac@ 3i/>'ay() i Leyb+a:d() ale
"ro&ra%ului, celelalte (uncii (iin- ne%o-i(icate Ccu e3ce"ia culorii -e ter&ere care
este &ri 9nc2is C#!, #!, #!, 1#E i a 9nre&istr1rii (unciei callbac@ Leyb+a:d()E#
static int &a%%a Q $
8oi- MeAboar-Cunsi&ne- c2ar @eA, int 3, int AEU
sLitc2 C@eAEU
case Y,Y:
&a%%a Q C&a%%aP!Eg!.$
&lutPostRe-is"laACE$
brea@$
case Y&Y:
&a%%a Q C&a%%a=!Eg!.$
&lutPostRe-is"laACE$
brea@$
V
V
8oi- Dis"laACEU
,>(loat li&2tb"ositionRS Q U1#, 1#, 1#, #V$
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N, li&2tb"ositionE$
&lPus20atri3CE$
&lTranslate(C,,=5E$
&lRotate-C&a%%a,,1,E$ WW trans(# obser8are
&lPus20atri3CE$
&lTranslate(C1#/,,E$ WW trans(# %o-elare
&lut)oli-Tea"otC1E$
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate(C=1#/,,E$ WW trans(# %o-elare
&lut)oli-Tea"otC1E$
&lPo"0atri3CE$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
)ursa -e lu%in1 -irecional1 are -irecia C1#, 1#, 1#, 1#E care, trans(or%at1
cu %atricea i-entitate, "1strea61 aceeai 8aloare 9n siste%ul -e re(erin1 -e obser8are#
De aceea, in-i(erent -e "o6iia i -irecia -e obser8are, obiectele sunt ilu%inate -intr=o
-irecie (i31 (a1 -e -irecia -e obser8are#
Fn Fi&# 7#1/ sunt re"re6entate %ai %ulte i%a&ini, "entru -irecii -e obser8are
-i(erite# ?n&2iul C&a%%a 9n "ro&ra%E -e rotaie (a1 -e a3a A se %o-i(ic1 "rin
co%en6i -e la tastatur1, "relucrate -e (uncia callbac@ Leyb+a:d()#
S)r.e (e l)mi$- care .e (epla.ea5- 0$ .ce$-. )e "ot -e(ini surse -e lu%in1
care se %ic1 in-e"en-ent 9n scena 8irtual1, "rin a"licarea unei trans(or%1ri -e
instaniere Ccare locali6ea61 sursa -e lu%in1 9n siste%ul -e re(erin1 uni8ersalE, ur%at1
-e trans(or%narea -e obser8are, "rin care se calculea61 "o6iia sau -irecia sursei 9n
siste%ul -e re(erin1 -e obser8are# >a (el ca i 9n ca6ul instanierii obiectelor 9n scen1,
se (olosete %atricea curent1 -in sti8a -e %o-elare=8i6uali6are#
E9empl)l 7.7
)e consi-er1 un "unct i o -irecie -e obser8are (i31, iar obiectele -in scen1
sunt lu%inate -e o surs1 -e lu%in1 -irecional1 care 9i %o-i(ic1 -irecia "rintr=o
co%an-1 -e la %ouse# Pro&ra%ul care i%"le%entea61 aceast1 (uncionare este si%ilar
celorlalte "ro&ra%e -e ilu%inare "re6entate 9n e3e%"lele "rece-ente, cu e3ce"ia
(unciei 3i/>'ay() i a (unciei callbac@ -e "relucrare a e8eni%entelor -e la %ouse,
care trebuie s1 (ie 9nre&istrat1 9n B)C*#
CaE Q
CbE Q !
CcE Q1/ CcE Q9
Fig. 7./! )urs1 -e lu%in1 care se -e"lasea61 o -at1 cu "unctul -e obser8are#
static int teta Q $
8oi- 0ouseCint button, int state, int 3, int AEU
sLitc2CbuttonEU
case ,>?Tb>EFTbB?TT+N:
i( Cstate QQ ,>?TbD+KNEU
teta Q CtetaP!Eg!.$
&lutPostRe-is"laACE$
V
V
V
8oi- Dis"laACEU
,>(loat li&2tb"ositionRS Q U, , 2, 1#V$
&lClear C,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lPus20atri3CE$
&lTranslate(C,,=5E$ WW trans(# obser8are
&lPus20atri3CE$
&lRotate-Cteta,1,,E$WW trans(# inst# sursa
&l>i&2t(8C,>b>I,HT, ,>bP+)ITI+N,
li&2tb"ositionE$
&lPo"0atri3CE$
&lut)oli-TorusC#!, #5, 5, 1.E$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
Iniial 8ariabila !e!a = 0 i sursa este "lasat1 "e a3a z la -istan1 e&al1 cu
2 (a1 -e centrul siste%ului -e re(erin1 uni8ersal# >a (iecare a"1sare a butonului
st;n&a al %ousului, 8ariabila !e!a este incre%entat1 C%o-ulo !.E cu !, i "o6iia
sursei este rotit1 cu un&2iul />in 9n ra"ort cu a3a 3# I%a&inile succesi8e CFi&# 7#1.E
in-ic1 %o-ul 9n care este ilu%inat un tor -e o surs1 -e lu%in1 care se rotete 9n Burul
a3ei x#

Com%inarea "ulorilor
0ai %ulte e(ecte 9n re-area obiectelor Ctrans"aren1, anti=aliasin&, cea1E se
obin "rin co%binarea culorilor la ni8el -e "i3el#
Pentru 8ali-area o"eraiei -e co%binare a culorilor la ni8el -e "i3el C$lendingE
se a"elea61 (uncia ('4nab'e(B)9-)4I3)# Fn cursul co%bin1rii, culoarea unui
Fig. 7./7 )urs1 -e lu%in1 care se -e"lasea61 9n scen1#
CaE Q
CbE Q . CcE Q 15
nou (ra&%ent CsursaE este co%binat1 cu culoarea %e%orat1 9ntr=o locaie
cores"un61toare -in bu((erul -e ca-ru, care este i -estinaia "entru 9nscrierea
re6ultatului co%bin1rii#
Pentru co%binarea culorilor se calculea61 (actorii -e co%binare ai sursei i ai
-estinaiei# 4ceti (actori sunt c8a-ru"lei R,B4 care se %ulti"lic1 cu co%"onentele
cores"un61toare R, ,, B i 4 ale sursei, res"ecti8 ale -estinaiei#
Fie (actorii -e co%binare ai sursei C)
r
, )
&
, )
b
, )
a
E i ai -estinaiei CD
r
, D
&
, D
b
,
D
a
E i co%"onentele culorii sursei CR
s
, ,
s
, B
s
, 4
s
E i ale -estinaiei CR
-
, ,
-
, B
-
, 4
-
E#
Culoarera re6ultat1 "rin co%binare, care se 9nscrie 9n locaia -e -estinaie are
co%"onentele CR
s
)
r
PR
-
D
r
, ,
s
)
&
P,
-
D
&
, B
s
)
b
P,
-
D
&
, 4
s
)
a
P4
-
D
a
E# Este "osibil ca (iecare
co%"onent1 a culorii re6ultate s1 (ie li%itat1 la inter8alul R,1S#
Factorii -e co%binare se "ot selecta -in %ai %ulte 8alori "osibile "rin
ar&u%entele trans%ise (unciei:
8oi- &lBlen-FuncC,>enu% s(actor, ,>enu% -(actorE$
Fn tabelul '#! sunt -ate 8alorile constantelor si%bolice "re-e(inite 9n +"en,>,
-in care se "ot selecta (actorii -e co%binre ai sursei i ai -estinaiei#
*a3el)l .3 Factorii -e co%binare ai sursei i ai -estinaiei
Co$.&a$&a S)r.--(e.&i$aie Fac&or)l (e com3i$are
,>b<ER+ surs1 sau -est C,,,E
,>b+NE surs1 sau -est C1,1,1,1E
,>bD)TbC+>+R surs1 CR-,,-,B-,4-E
,>b)RCbC+>+R -estinaie CRs,,s,Bs,4sE
,>b+NEb0IN?)bD)TbC+>+R surs1 C1,1,1,1E=CR-,,-,B-,4-E
,>b+NEb0IN?)b)RCbC+>+R -estinaie C1,1,1,1E=CRs,,s,Bs,4sE
,>b)RCb4>PH4 surs1 sau -est C4s,4s,4s,4sE
,>bD)Tb4>PH4 surs1 sau -est C4-,4-,4-,4-E
,>b+NEb0IN?)b)RCb4>PH4 surs1 sau -est C1,1,1,1E= C4s,4s,4s,4sE
,>b+NEb0IN?)bD)Tb4>PH4 surs1 sau -est C1,1,1,1E= C4-,4-,4-,4-E
,>b)RCb4>PH4b)4T?R4TE surs1 C(,(,(,1E$
(Q%inC4s,1=4-E
*ran!paren&a
Trans"arena su"ra(eelor se i%"le%entea61 (olosin- co%binarea cu (actorii
-e co%binare B)96G&9,)PH,, "entru surs1 i B)9EI495@IC696G&9,)PH,
"entru -estinaie#
E9empl)l 7.7
Fn "ro&ra%ul ur%1tor se su"ra"un "arial su"ra(ee trans"arente triun&2iulare -e
culoare &ri -esc2is C#5, #5, #5E "este un -re"tun&2i -e culoare &ri 9nc2is C#2, #2,
#2E# I%a&inea -in Fi&# 7#17 s=a obinut "entru 8alorile #2/, #/, #7/, 1# ale
co%"onentei 4
s
a triun&2iului# Co%binarea culorii unei noi su"ra(ee cu culoarea
e3istent1 9n bu((er "ro-uce as"ectul -e trans"aren1 a su"ra(eelor#

Fn continuare sunt "re6entate (unciile callbac@ @ni!() i 3i/>'ay() ale
"ro&ra%ului -e68oltat sub B)C*# Celelalte (uncii, main() i Ge/Aa>e() nu au
ni%ic s"ecial, (iin- ase%1n1toare cu cele -in "ro&ra%ele "rece-ente#
8oi- InitCEU
&lClearColorC1#,1#,1#,1#E$
&lBlen-Func C,>b)RCb4>PH4, ,>b+NEb0IN?)b)RCb4>PH4E$
V
8oi- Trian&leCE U
&lBe&inC,>bP+>\,+NE$
&l:erte3!-C=2,=2,E$
&l:erte3!-C 2,=2,E$
&l:erte3!-C , 2,E$
&lEn-CE$
V
8oi- Dis"laACEU
&lClearC,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lPus20atri3CE$
&lTranslate-C#,#,=2#E$WW trans(# -e obser8are
&lDisableC,>bB>ENDE$ WW in8ali-# co%b# culorilor
&lColor!-C#2,#2,#2E$
&lBe&inC,>bP+>\,+NE$ WW -esenare -re"tun&2i
&l:erte3!-C=5,,E$
&l:erte3!-C 5,,E$
&l:erte3!-C 5,',E$
&l:erte3!-C=5,',E$
&lEn-CE$
&lEnable C,>bB>ENDE$ WW 8ali-are co%b# culorilor
&lPus20atri3CE$
&lTranslate-C=.#,'#,#E$
&lColor'-C#5,#5,#5,#2/E$
Fig. 7./7 Co%binarea culorilor 9n calculul trans"arenei#
#9/ #9 #5/ #5
#!/ #/ #./ #5
#2
#9/ #9 #5/ #5
#!/ #/ #./ #5
#2
Trian&leCE$ WW al -oilea triun&2i
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate-C=2#,'#,#E$
&lColor'-C#5,#5,#5,#/E$
Trian&leCE$ WW al -oilea triun&2i
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate-C2#,'#,#E$
&lColor'-C#5,#5,#5,#7/E$
Trian&leCE$ WW al treilea triun&2i
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate-C.#,'#,#E$
&lColor'-C#5,#5,#5,1#E$
Trian&leCE$ WW al "atrulea triun&2i
&lPo"0atri3CE$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
Fn (uncia @ni!() se setea61 culoarea -e ter&ere alb1 C1#, 1#, 1#, 1#E a
bu((erului -e culoare i (actorii -e co%binare B)96G&9,)PH,, "entru surs1 i
B)9EI495@IC696G&9,)PH, "entru -estinaie#
Dre"tun&2iul se 9nscrie 9n bu((er cu culorea lui iniial1# Culoarea (iec1ruia -in
cele ' triun&2iuri care ur%ea61 C"oli&oane surs1E se co%bin1 la ni8el -e "i3el cu
culoarea e3istent1 9n bu((er Ccare "oate (i culoarea -e ter&ere sau culoarea
-re"tun&2iuluiE (olosin- "entru (actorii -e co%binare 8aloarea trans"arenei sale#
Pri%ele trei triun&2iuri sunt co%"use -in -ou1 culori: una re6ultat1 -in co%binarea
culorii "ro"rii cu culoarea -re"tun&2iului, cealalt1 re6ultat1 -in co%binarea culorii
"ro"rii cu culoarea -e ter&ere# De e3e%"lu, "entru "ri%ul triun&2i, 9n "artea -e Bos,
su"ra"us1 "este -re"tun&2i, (iecare co%"onent1 -e culoare R,,,B are intensitatea
#2/ d #5 P C1= #2/Ed#2 Q #!/$ 9n "artea -e sus, "rin co%binare cu culoarea -e
ter&ere, (iecare co%"onent1 -e culoare R,,,B re6ultat1 are intensitatea #2/ d #5 P
C1= #2/Ed1#5 Q #9/# Pentru al -oilea triun&2i co%"onentele -e culoare sunt #/ "entru
"artea -e Bos i #9 "entru "artea -e sus$ "entru al treilea triun&2i co%"onentele -e
culoare sunt #./ "entru "artea -e Bos i #5/ "entru "artea -e sus# ?lti%ul triun&2i, cu
4
s
Q 1, 9nlocuiete co%"let 8alorile e3istente 9n bu((er i este -esenat cu co%"onentele
-e culoare #5 9n a%bele "1ri -e su"ra"unere#
De re%arcat c1 9n acest "ro&ra% si%"lu nu este 8ali-at bu((erul -e a-;nci%e#
Fn %o- i%"licit, 9n +"en,> testul -e a-;nci%e este in8ali-at i, -eoarece nu se
8ali-ea61 nici la iniiali6are nici 9n alt1 "arte 9n "ro&ra%, testul -e a-;nci%e nu se
e(ectuea61 i "oli&oanele sunt 9nscrise 9n bu((erul -e i%a&ine 9n or-inea 9n care sunt
trans%ise, in-i(erent -e a-;nci%ea lor#
4cest lucru trebuie s1 (ie e8itat atunci c;n- sunt re"re6entate obiecte
tri-i%ensionale o"ace i trans"arente 9n scen1# Dat (iin- c1 obiectele tri-i%ensionale
se "ot ascun-e unele "e altele este necesar s1 se 8ali-e6e testul -e a-;nci%e "rin
a"elul (unciei ('4nab'e(B)934P*H9*46*)# +biectele o"ace se -esenea61 %ai
9nt;i i se e3ecut1 o"eraiile cu bu((erul -e a-;nci%e 9n %o- nor%al# Pentru -esenarea
obiectelor trans"arente, se setea61 con-iia -e acces nu%ai "entru citire a bu((erului -e
a-;nci%e Crea-=onlAE "rin a"elul (unciei ('3e>!A5a/k(B)9K,)64)# 4tunci c;n-
se -esenea61 obiecte trans"arente, a-;nci%ea lor se co%"ar1 cu a-;nci%ile %e%orate
9n <=bu((er, stabilite -e obiectele o"ace, ast(el c1 nu se -esenea61 "1rile ascunse
Ca(late 9n s"ateleE obiectelor o"ace# Dac1 sunt %ai a"roa"e -e "unctul -e obser8are, se
-esenea61 "rin co%binarea culorii, -ar nu se eli%in1 a-;nci%ea obiectele o"ace -in
bu((erul -e a-;nci%e, -eoarece acesta este rea-=onlA#
Anti2alia!ing
Biblioteca +"en,> "une la -is"o6iie -ou1 %o-alit1i -e re-are antialiasin&:
"rin co%binarea culorilor C$lendingE i "rin bu((er -e acu%ulare CA&$ufferE#
Re-area anti=aliasin& "rin co%binarea culorilor este o te2nic1 -e "re(iltrare a
i%a&inii i -1 re6ultate -e nete6ire nu%ai -ac1 se renun1 la %ecanis%ul -e <=bu((er
Cbu((er -e a-;nci%eE i se -esenea61 su"ra(eele 9n or-inea 9n care sunt trans%ise
bibliotecii# Fn aceast1 situaie, culoarea unui "i3el aco"erit "arial -e un "oli&on se
obine "rin co%binarea culorii "oli&onului cu culoarea "i3elului, a(lat1 9n bu((erul -e
culoare# Fn %o-ul R,B4, +"en,> %ulti"lic1 co%"onenta 4 a culorii "oli&onului cu
"on-erea -e aco"erire Cra"ortul -intre aria aco"erit1 -e (ra&%entul "oli&onului i aria
"i3eluluiE# 4ceast1 8aloare "oate (i (olosit1 "entru "on-erarea culorii 9n (iecare "i3el
"rin co%binare cu (actorul B)96G&9,)PH, "entru surs1 i (actorul
B)9EI495@IC696G&9,)PH, i "entru -estinaie# Pentru e(ectuarea acestor
calcule, %ai este nesesar1 8ali-area anti=aliasin&=ului "rin a"elul (unciei
('4nab'e() cu unul -in ar&u%entele B)9PE@I*965EE*H, B)9)@I4965EE*H,
B)9PE)$BEI965EE*H, "entru "uncte, linii i, res"ecti8, "oli&oane#
E9empl)l 7.6
Pro&ra%ul -in acest e3e%"lu este cel (olosit "entru &enerarea i%a&inilor a
-ou1 triun&2iuri cu i (1r1 antialiasin&# Funciile callbac@ @ni!() i 3i/>'ay() ale
"ro&ra%ului -e68oltat sub B)C* sunt ur%1toarele:
8oi- InitCEU
&lClearColorC1#,1#,1#,1#E$
&l>ineKi-t2 C1#/E$
&lBlen-Func C,>b)RCb4>PH4, ,>b+NEb0IN?)b)RCb4>PH4E$ V
8oi- Dis"laACEU
&lClearC,>bC+>+RbB?FFERbBIT [ ,>bDEPTHbB?FFERbBITE$
&lColor!(C#,#,#E$
&lPus20atri3CE$
&lTranslate-C#,#,=2/#E$
WW Triun&2iuri (1r1 antialiasin&
&lDisableC,>bB>ENDE$
&lDisableC,>b>INEb)0++THE$
&lDisableC,>bP+>\,+Nb)0++THE$
&lPus20atri3CE$
&lTranslate-C=5,,#E$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C=!,=!,E$
&l:erte3!-C !,=2,E$
&l:erte3!-C 2,!,E$
&lEn-CE$
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate-C=2,,#E$
&lBe&inC,>bP+>\,+NE$
&l:erte3!-C=!,=!,E$
&l:erte3!-C !,=2,E$
&l:erte3!-C 2,!,E$
&lEn-CE$
&lPo"0atri3CE$
WW Triun&2iuri cu antialiasin&
&lEnableC,>bB>ENDE$
&lEnableC,>b>INEb)0++THE$
&lEnableC,>bP+>\,+Nb)0++THE$
&lPus20atri3CE$
&lTranslate-C',,#E$
&lBe&inC,>b>INEb>++PE$
&l:erte3!-C=!,=!,E$
&l:erte3!-C !,=2,E$
&l:erte3!-C 2,!,E$
&lEn-CE$
&lPo"0atri3CE$
&lPus20atri3CE$
&lTranslate-C1,,#E$
&lBe&inC,>bP+>\,+NE$
&l:erte3!-C=!,=!,E$
&l:erte3!-C !,=2,E$
&l:erte3!-C 2,!,E$
&lEn-CE$
&lPo"0atri3CE$
&lPo"0atri3CE$
&lut)La"Bu((ersCE$
V
Deoarece anti=aliasin&=ul se reali6ea61 "rin co%binarea culorilor, este
necesar1 i 8ali-area co%bin1rii culorilor C('4nab'e(B)9-)4I3)E "entru
"oli&oanele cu antialiasin&# >a e3ecuia acestui "ro&ra% se obine i%a&inea -in
Fi&# 7# 15#
CaE CbE
Fig. 7./6 CaE Dou1 "oli&oane (1r1 anti=aliasin&
CbE 4celeai "oli&oane re"re6entate cu anti=aliasin&#
4cest %o- -e reali6are a (iltr1rii anti=aliasin& este (oarte si%"list i nu "oate (i
(olosit -ec;t "entru su"ra(ee sau linii care nu se su"ra"un i "ot (i re-ate (1r1
eli%inarea su"ra(eelor ascunse, aa cu% a (ost situaia -in acest e3e%"lu#
Dac1 se in8ali-ea61 bu((erul -e a-;nci%e, eli%inarea su"ra(eelor ascunse
trebuie s1 (ie asi&urat1 "rintr=un alt %ecanis%, -e e3e%"lu "rin or-onarea su"ra(eelor
-u"1 a-;nci%e Clista -e -is"laAE# Dar eli%inarea su"ra(eelor ascunse "rin or-onarea
su"ra(eelor -u"1 a-;nci%e este un "roce-eu costisitor i care nu "oate (i i%"le%entat
"entru scene co%"le3e, cu un nu%1r %are -e obiecte# )oluia acce"tabil1 ca
"er(or%ane i re6ultate "entru re-area anti=aliasin& a scenelor co%"le3e este (olosirea
unui bu((er -e acu%ulare C4=bu((erE# I%"le%entarea unui 4=bu((er "rin rutine
so(tLare este (oarte lent1 i -eci i%"racticabil1# )iste%ele &ra(ice "er(or%ante
i%"le%entea61 -i(erite te2nici -e anti=aliasin& 9n 2ar-Lare# 4ceste te2nici sunt
-e"en-ente -e i%"le%entarea 2ar-Lare i sunt %ai &reu -e -escris la %o-ul &eneral#
0
Crearea /i %i&uali&area scenelor %irtuale
0o-ul 9n care se creea61 i se utilitea61 %o-elele obiectelor tri-i%ensionale
8aria61 9n (uncie -e a"licaia &ra(ic1 c1reia 9i sunt -estinate#
Fn a"licaii -e "roiectare &ra(ic1 "entru -i(erite -o%enii -e acti8itate
C%ecanic1, ar2itectur1E, crearea i utili6area %o-elelor sunt tratate 9%"reun1, 9n ca-rul
unui siste% -e "roiectare, cu% este, -e e3e%"lu siste%ul 4utoCa-# +biectele create -e
"roiectant sunt re-ate "e -is"laA, %e%orate 9ntr=o re"re6entare s"eci(ic1 siste%ului i
e-itate sau %o-i(icate 9n continuare 9n cursul "roiect1rii#
0o-elele -in care este co%"us1 scena 9ntr=o a"licaie -e realitate 8irtual1 au
cerine -i(erite -e ti%" -e "relucrare 9n ti%"ul creerii scenei CmodelareE i a utili61rii
ei CredareE# Fn %o- obinuit cele -ou1 "rocese, -e %o-elare i -e re-are a %o-elelor se
-es(1oar1 se"arat#
%odelarea este un "roces o((=line "rin care se creea61 colecia -e %o-ele care
co%"un scena 8irtual1# Procesul -e %o-elare a obiectelor se -es(1oar1 asistat -e
calculator, 9n -i(erite siste%e -e "roiectare interacti81, care "un la -is"o6iia
"roiectantului (uncii -e creare a %o-elelor "ornin- -e la -i(erite -ate -e intrare#
Pentru a"licaiile -e realitate 8irtual1 "ot (i (olosite at;t siste%e -e "roiectare auto%at1
-e u6 &eneral, cu% sunt, -e e3e%"lu 4utoca- sau !D)tu-io, sau siste%e -e "roiectare
s"ecial conce"ute "entru crearea scenelor 8irtuale, nu%ite siste%e -e &enerare a
ba6elor -e -ate CDB,) D Data *ase Generation SstemsE# 4st(el -e siste%e, cu% sunt
siste%ul 0ulti&en, CorA"2eus, )ense5 i %ulte altele, o(er1 nu%eroase "osibilit1i -e
%o-elare a obiectelor tri-i%ensionale, a terenului, i a (eno%enelor at%os(erice Cnori,
cea1, etc#E# Re6ultatul o"eraiei -e %o-elare 9l re"re6int1 %o-ele ale obiectelor sau
colecii -e %o-ele care co%"un o scen1 8irtual1, i acestea sunt %e%orate sub (or%a
-e $a'e de date grafice, alc1tuite -intr=unul sau %ai %ulte (iiere#
Redarea i%a&inii obiectelor este un "roces care se -es(1oar1 interacti8, -e
cele %ai %ulte ori 9n ti%" real, 9n cursul -i(eritelor e3"eri%ente -e realitate 8irtual1
Csi%ulatoare -e antrena%ent, %u6ee 8irtuale, etc#E, 9ntr=un siste% &ra(ic nu%it
&enerator -e i%a&ine C7mage Generator DI,E# Fn &eneratorul -e i%a&ine se re=creea61
%o-elele obiectelor i al scenei 8irtuale, (olosin- ca -ate -e intrare (iiere -e ba6e -e
-ate# Pentru re-area e(icient1 a i%a&inii, scena 8irtual1 este or&ani6at1 ierar2ic, "e %ai
%ulte ni8ele -e ierar2ie, ceea ce "er%ite selectarea ra"i-1 a obiectelor, %oteniri -e
trans(or%1ri &eo%etrice i -e atribute, etc# 4ceast1 or&ani6are ierar2ic1 se
i%"le%entea61 "rintr=un &ra( aciclic -irecionat, nu%it graful scenei Cscene graphE#
No-urile &ra(ului conin %o-ele ale obiectelor sau in(or%aii -e re-are C&ru"area
obiectelor 9n structura ierar2ic1, "o6iia obiectelor, "ro"riet1i -e re-are, lu%ini, etc#E#
+r&ani6area ierar2ic1 a scenei 8irtuale 8a (i "re6entat1 %ai -etaliat 9n seciunea
ur%1toare#
*a'ele de date grafice sunt re"re6entarea "e su"ort -e %e%orie C(iiereE a
%o-elelor obiectelor scenei i trebuie s1 conin1 toate in(or%aiile necesare "entru
crearea &ra(ului scenei# E3ist1 un nu%1r %are -e (or%ate -e re"re6entare a ba6elor -e
-ate &ra(ice, %ai %ult sau %ai "uin co%"lete -in "unct -e 8e-ere al in(or%aiilor -e
construire a &ra(ului scenei 8irtuale# Proli(erearea (or%atelor ba6elor -e -ate
9n&reunea61 "ortabilitatea "ro&ra%elor -e a"licaii &ra(ice, care trebuie s1 "re8a-1
"osibilit1i -e inter"retare "entru c;t %ai %ulte (or%ate#
Fn orice &enerator -e i%a&ine, %o-elul scenei are o structur1 bine "reci6at1,
care -e"in-e -e sco"ul a"licaiei, iar -atele i%"ortate -in -i(erite (or%ate -e ba6e -e
-ate sunt con8ertite la (or%atul intern al scenei# ?n ti" -e (or%at -e ba61 -e -ate
re"re6int1 un anu%it %o- -e -escriere a entit1ilor co%"onente ale ba6ei -e -ate# Cele
%ai cunoscute -intre (or%atele -e ba6e -e -ate sunt -ate 9n Tabelul 5#1#
*a3el)l 6./ For%ate -e ba6e -e -ate#
,e$)mire ,e.criere
!-s For%at binar !D)tu-io, (ir%a 4utoDes@
-3( For%at 4)CII 4utoCa-, (ir%a 4utoDes@
obB For%at 4)CII, (ir%a Ka8e(ront Tec2nolo&ies
"2- For%at -e -escriere "olie-re, (ir%a )ilicon ,ra"2ics
i8 For%at 4)CII +"en In8entor, (ir%a )ilicon ,ra(ics
-Lb For%at binarW4)CII, (ir%a CorA"2eus
(lt1' For%at binar +"en Fli&2t, (ir%a 0ulti&en
For%atele 3d/ i dxf sunt (or%ate -e e3"ort ale siste%elor -e "roiectare -e
u6 &eneral !D)tu-io i 4utoCa- -e la (ir%a 4utoDes@# Ele nu au (ost conce"ute
s"ecial "entru "ro"iectarea ba6elor -e -ate &ra(ice, ast(el c1 nu "ot a8ea -ec;t o
utili6are li%itat1# De e3e%"lu, se "ot (olosi "entru "roiectarea -e obiecte in-i8i-uale,
care sunt a"oi 9n&lobate 9n scene -ecrise "rin (or%ate %ai co%"lete#
For%atul +bj este un (or%at si%"lu care "oate -escrie obiecte
tri-i%ensionale re"re6entate "rin reea -e "oli&oane# Fir%a Ka8e(ront Tec2nolo&A a
"lasat 9n -o%eniu "ublic un nu%1r -e %o-ele 9n (or%at +bj, care a -e8enit 9n (elul
acesta -estul -e cunoscut# + bo&at1 libr1rie -e %o-ele "ro-use -e (ir%a :ieL"oint
C"este !/ -e %o-ele tri-i%ensionale re"re6ent;n- a8ioane, %aini, ani%ale, or&ane
anato%ice, etc#E sunt -is"onibile 9n (or%ate dxf, +bj, f'!# 0o-elul a8ionului F=1.
-in Fi&# 2#1. este un %o-el 9n (or%atul +bj#
For%atele d"b i f'! sunt (or%ate s"eciale -e -escriere a ba6elor -e -ate
&ra(ice, -e68oltate 9%"reun1 cu siste%ele -e &enerare a ba6elor -e -ate -e co%"aniile
CorA"2eus i, res"ecti8, 0ulti&en# 4ceste (or%ate conin in(or%aii co%"lete "ri8in-
obiectele, a%"lasarea i &ru"area lor, %ateriale, lu%ini, -in care se "oate crea &ra(ul
scenei 9n &eneratorul -e i%a&ine#
For%atul iv C+"en In8entorE, -e68oltat -e (ir%a )ilicon ,ra"2ics, este un
su"erset al li%baBului -e %o-elare :R0> 1# CVirtual Realit %oddeling 5anguageE,
care 9n 1997 a -e8enit stan-ar- sub nu%ele -e :R0> 97# >i%baBul :R0> 97 "er%ite
crearea scenelor 8irtuale i accesarea lor "rin internet# + scen1 8irtual1 9n li%baBul
:R0> este un (or%at -e ba61 -e -ate, ase%1n1tor altor (or%ate -e ba6e -e -ate#
Denu%irea -e li%baB :R0> "ro8ine -in (a"tul c1 s"eci(icaiile :R0> conin re&uli
sintactice i se%antice "recise, care "er%it 8eri(icarea corectitu-inii construciilor
(olosite# 4cest li%baB este -escris 9n seciunea ur%1toare#
6./#epre5e$&area .ce$elor 4ir&)ale
+ scen1 8irtual1 Cvirtual sceneE este co%"us1 -intr=o colecie -e obiecte
tri-i%ensionale, s"eci(icate "rin (or%a i "o6iia lor, "rin as"ect Cculoare, %aterial,
etcE, i co%"ortare C-e"lasare 9n s"aiu, interaciuneE# Di(erite alte -enu%iri %ai sunt
utili6ate cu acelai 9neles: lu%e 8irtual1 8virtual worldE, %e-iu 8irtual Cvirtual
environmentE# Construirea ierar2ic1 a scenei "er%ite or&ani6area i "arcur&erea
e(icient1 a acesteia# )cena este co%"us1 -in no-uri conectate "rin arcuri -irecionate#
?n no- 9n scen1 -escrie o anu%it1 entitate: un obiect tri-i%ensional, o &ru"are -e
obiecte tri-i%ensionale, o trans(or%are &eo%etric1, o te3tur1, o surs1 -e lu%in1, etc#
?n arc al &ra(ului scenei intro-uce un -escen-ent C(iuE al unui no-, care %otenete
unele -in atributele no-ului "1rinte CFi&# 5#1E#
+
1
4 B C
,
1
T
11
T
12
+
2
D E F
,
22
T
21
T
22
R
T
2
T
1
,
21

Construirea ierar2ic1 a scenei "er%ite reutili6area obiectelor i a
trans(or%1rilor &eo%etrice# ?n obiect co%"le3 se co%"une -in &ru"area %ai %ultor
obiecte %ai si%"le, -intre care unele se re"et1, 9n "o6iii -e instaniere -i(erite# Fn (elul
acesta, un no- "oate a8ea %ai %ult -e un no- "1rinte#
No-urile &ra(ului sunt -e %ai %ulte ti"uri, -intre care cele %ai i%"ortante
sunt: no-urile -e -escriere &eo%etric1 C(or%aE a obiectelor tri-i%ensionale, no-uri -e
trans(or%are i no-uri -e &ru"are#
No-urile -e -escriere &eo%etric1 conin %o-ele ale unor obiecte ele%entare,
re"re6entate "oli&onal, "ara%etric sau "rin -escrierea %ate%atic1 9ntr=un siste% -e
re(erin1 local C-e %o-elareE# Fn Fi&#5#1 no-urile 4, B, C, D, E, F re"re6int1 obiecte
tri-i%ensionale# No-ul ,
1
&ru"ea61 %ai %ulte obiecte si%"le, (or%;n- un obiect
co%"us care, la r;n-ul lui este instaniat -e -ou1 ori, 9n "o6iii -e(inite "rin
inter%e-iul no-urilor -e trans(or%are T
1
i T
2
, re6ult;n- obiecul +
1
, s#a#%#-# No-ul R
este un no- &ru" i re"re6int1 r1-1cina &ra(ului scenei#
,ra(ul scenei -escrie relaiile -e %otenire 9ntre no-uri# 4tributele unui obiect
-escris -e un no- "ot (i cele %otenite -e la no-ul "1rinte, "ot (i co%"letate, sau
re-e(inite 9n no-ul (iu#
)cena 8irtual1 este -e(init1 9n siste%ul -e re(erin1 uni8ersal, 9n care se
"o6iionea61 i orientea61 "unctul -e obser8are 9n (iecare ca-ru al i%a&inii &enerate#
+biectele -in no-urile (run61 sunt re"re6entate 9ntr=un siste% -e re(erin1 local# ?n
no- -e trans(or%are conine o %atrice -e trans(or%are 2 care -e(inete "o6iia i
orientarea siste%ului -e re(erin1 al no-ului (iu 9n siste%ul -e re(erin1 al no-ului
"1rinte# Trans(or%area "rin a"licarea %atricei 2 "unctelor obiectelor -in no-ul (iu, le
trans(or%1 -in siste%ul -e re(erin1 al no-ului (iu 9n siste%ul -e re(erin1 al no-ului
"1rinte#
Re-area i%a&inii unei scene re"re6entat1 "rintr=un &ra( aciclic -irecionat se
obine "rin "arcur&erea CtraversareaE &ra(ului scenei# Tra8ersarea &ra(ului scenei este
o o"eraie -e "arcur&ere a &ra(ului 9n a-;nci%e C-e"t2 (irst searc2E, care 9nce"e cu
no-ul r1-1cin1 al &ra(ului i "arcur&e toate -ru%urile 9n &ra( ";n1 la (iecare no-
(run61# Fn acest (el, un no- "oate (i tra8ersat -e %ai %ulte ori, "e c1i -i(erite -e
"arcur&ere# De e3e%"lu, 9n &ra(ul -in Fi&# 5#1 no-ul 4 este instaniat -e -ou1 ori,
o-at1 "e calea RT
1
+
1
T
11
,
1
4 i a -oua oar1 "e calea RT
1
+
1
T
12
,
1
4$ la (el i no-urile B
i C#
Fn re"re6entarea ierar2ic1 a obiectelor i a scenei, un obiect tri-i%ensional
este instaniat C"lasat 9n siste%ul -e re(erin1 uni8ersalE "rin a"licarea unei sec8ene -e
trans(or%1ri -e instaniere, i anu%e toate trans(or%1rile -in no-urile -e trans(or%are
-e la r1-1cin1 ";n1 la no-ul (run61 "e una -in c1ile -e "arcur&ere a &ra(ului#
Co%binarea -intre o"eraia -e "arcur&ere 9n a-;nci%e a &ra(ului i o"eraiile -e
concatenare a %atricelor -e trans(or%are "rin inter%e-iul sti8elor -e trans(or%are
Fig. 6./,ra(ul unui scene 8irtuale re"re6entat "rintr=o ierar2ie -e no-uri#
C-e(inite 9n +"en,> sau -e "ro&ra%ul -e a"licaieE "er%ite reutili6area %atricelor
calculate "e "arcursul tra8ers1rii "rin sal8area lor 9n sti8ele -e trans(or%1ri i
restaurarea atunci c;n- sunt necesare#
4l&orit%ul -e tra8ersare a &ra(ului scenei -e %ai Bos C9n "seu-oco-
ase%1n1tor li%baBului CE s"eci(ic1 "arcur&erea 9n a-;nci%e a &ra(ului scenei i
o"eraiile care se e3ecut1 la 8i6itarea (iec1rui no-, 9n (uncie -e ti"ul acestuia# )e
consi-er1 un ti" -e -ate I+de, care "oate (i o clas1 -e obiecte C9n "ro&ra%area
orientat1 "e obiecteE sau o structur1 C9n abor-area "roce-ural1E i o sti81 -e %atrice -e
trans(or%are -e %o-elare, care a-%ite o"eraiile -e intro-ucere CP/A5a!:ix()E,
-e e3tra&ere CP+>5a!:ix()E i -e concatenare C"rin "ost%ulti"licare=
5'!5a!:ix()E a %atricei curente -e trans(or%are C cu o nou1 %atrice 2, cu
-e"unerea re6ultatului 9n %atricea curent1 CC Q C 2E# Fn %o- obinuit, aceasta este
sti8a +"en,> -e trans(or%are -e %o-elare=8i6uali6are Csti8a 5E34)7@4JE# Fn
aceast1 "re6entare se consi-er1 trei ti"uri -e no-uri: no-uri (run61 cu -escrierea
(or%ei unui obirect C6H,P4E, no-uri &ru" CBGCPE i no-uri -e trans(or%are
C*G,I6KEG5E#
8oi- Tra8ersal CNo-ed no-eEU
i( Cno-e=`tA"e QQ )H4PEEU
Re-are obiect (olosin- sti8a curenta C
V
else i( Cno-e=`tA"e QQ,R+?PEU
(or CiQ$i_ nC2il-s$ iPPEU
Pus20atri3CE$
Tra8ersalCno-e=`c2il-RiSE$
Po"0atri3CE$
V
V
else i( Cno-e=`tA"e QQ TR4N)F+R0EU
0ult0atri3C0E$
V
V
Notaiile care s=au (olosit 9n acest al&orit% sunt e8i-ente# Ti"ul no-ului
Cn+de-0!y>eE -eter%in1 %o-ul -e "relucrare a acestuia# ?n no- &ru" are
n&Ai'd/ no-uri (ii, nu%erotai cAi'd/;i<# ?n no- -e trans(or%are conine o
%atrice -e trans(or%are 2# Tra8esarea 9nce"e "rin iniiali6area %atricei curente -e
trans(or%are cu %atricea i-entitate CC Q IE i a"elul (unciei -e tra8ersare "entru no-ul
r1-1cin1 al scenei C*:ave:/a'(G)E#
0atricele -e instaniere se intro-uc 9n sti81 9n or-inea in8ers1 a"lic1rii lor
asu"ra obiectului, aa cu% este necesar 9n o"eraia -e acu%ulare "rin "ost%ulti"licare#
De e3e%"lu, "entru "ri%a instan1 a obiectului 4, se e3ecut1 o"eraiile:
C Q I
C Q C 2
/
Q 2
/
C Q C 2
/1
Q 2
/
2
/1
?n "unct oarecare P a obiectului 4 este instaniat "rin trans(or%area:
PD Q CP Q 2
/
2
/1
P
Pentru o alt1 instaniere a no-ului 4, %atricea inter%e-iar1 2
/
este sal8at1
9nainte -e "relucrarea (iec1ruia -in (iii no-ului +
1
# Poate este %ai "uin e8i-ent1
e(iciena %eto-ei 9n acest e3e%"lu (oarte %ic, -ar "entru scene co%"le3e, cu %ulte
trans(or%1ri succesi8e, econo%ia -e calcule -e "ro-use -e %atrice este consi-erabil1#
4cesta este %o-ul "rinci"ial -e or&ani6are i tra8ersare a &ra(ului unei scene
8irtuale# Construirea unui ast(el -e &ra( se "oate (ace (ie -irect, "rin "ro&ra% C"entru
%ici e3e%"le cu scene -e -i%ensiuni re-useE sau, 9n (or%a cea %ai &eneral1, "rin
"arcur&erea unei ba6e -e -ate -escrise 9ntr=un li%baB C(or%atE care s1 "er%it1
i-enti(icarea construciei ierar2ice a scenei: ti"uri -e no-uri, atributele acestora, etc#,
"entru construcia &ra(ului ec2i8alent# ?n ast(el -e li%baB este li%baBul :R0>#
6.1Lim3a:)l J#2L
>i%baBul VR%5 8Virtual Realit %odeling 5anguageE este un li%baB (olosit 9n
crearea scenelor 8irtuale tri-i%ensionale, cu "osibilitatea -e acces a acestora "rin
reeaua internet KKK CWorld Wide We$E# :ersiunea (olosit1 9n %o%entul -e (a1 este
:R0> 2# Cnu%it1 i :R0> 97, (iin- stan-ar- I)+ -in anul 1997E i este o re8i6uire
a 8ersiunii :R0> 1#, stabilit1 9n 199/# Nu%eroase in(or%aii re(eritoare la li%baBul
:R0> se "ot &1si 9n reeaua internet CA!!>N.."""1v:m'1+:(E#
Fn "ri%a 8ersiune, li%baBul :R0> 1# "er%itea crearea unei scene 8irtuale
co%"us1 -in obiecte tri-i%ensionale, -ar cu "osibilit1i li%itate -e interacti8itate "rin
reeaua internet# :R0> 1# s (ost -e68oltat "e ba6a (or%atului -e -escriere a ba6elor
-e -ate +"en In8entor, -e68oltat -e (ir%a )ilicon ,ra"2ics, care su"ort1 -escrierea
scenelor ierar2ice cu obiecte "oli&onale, lu%ini, %ateriale i e(ecte realiste# ?n subset
a (or%atului +"en In8entor, cu e3tensii "entru acces "rin reeaua internet, a constituit
ba6a -e "ornire "entru li%baBul -e -escriere a scenelor 8irtuale :R0># Fn %o%entul
-e (a1, nu%eroase titluri -e c1ri, articole, re8iste, -ocu%entaie, e3e%"le, a-rese -e
&ru"uri -e lucru, etc#, se &1sesc "e reea -es"re li%baBul :R0> i utili6area acestuia#
?n (iier :R0> este un (iier 4)CII care conine -escrierea unei scenei
8irtuale i a unor aciuni interacti8e, i "oate (i accesat "rin reea (olosin- "ro&ra%e -e
na8i&are CbroLsereE# Pentru a a(ia o scen1 :R0> -in reeaua internet sau -intr=un
(iier -e "e -isc Ccu e3tensia #8rlE este necesar un broLser :R0>, con(i&urat ca o
e3tensie C"lu&=inE al unui broLser Keb# Pentru broLserul Netsca"e Na8i&ator, e3ist1
broLserul Cos%o PlaAer C-e la co%"ania Platinu% Tec2nolo&AE "entru inter"retarea
(iierelor :R0># ?n broLser :R0> citete (iierul care conine -escrierea scenei
8irtuale, crea61 &ra(ul scenei i %e%orea61 -atele -e co%"ortare a obiectelor i -e
interaciuni cores"un61toare# +bser8area scenei 8irtuale i na8i&area 9n -irecia -orit1
se reali6ea61 "rin co%en6i ale broLserului# 4ceste co%en6i sunt (oarte si%"le i se
&1sesc 9n Hel"#
Dei utili6area cea %ai (rec8ent1 a li%baBului :R0> este 9n crearea i re-area
scenelor !D "rin reeaua LLL, un (iier :R0> "oate (i (olosit i ca -escriere a unei
scene 8irtuale "entru a"licaii -e realitate 8irtual1 care nu se -es(1oar1 9n reea# Fn
aceast1 situaie, "entru citirea (iierelor :R0> se (olosete un "ro&ra% -e inter"retare
a (iierelor :R0> C"arserE care creea61 &ra(ul scenei 9n concor-an1 cu structura
"ro&ra%ului -e a"licaie# Fn -o%eniul "ublic "e reeaua internet sunt -is"onibile un
%are nu%1r -e "arsere care "ot (i inte&rate 9ntr=o a"licaie# De e3e%"lu, e3ist1 :R0>
2# Parser -e la )ilicon ,ra"2ics CA!!>N..v:m'1/(i1c+m.E sau :i"er Parser C-e
la 17S9= 1ational 7nstitute of Standard and 9echnologE i%"le%entat 9n li%baBul Ja8a,
orientat "e obiecte#
Fn oricare situaie, (or%atul :R0> "er%ite construirea &ra(ului scenei,
(urni6;n- toate in(or%aiile -es"re obiectele tri-i%ensionale, ierar2ia acestora,
con-iii -e %e-iu a%biant, %ateriale, etc# ,ra(ul scenei, construit "rin citirea unuia
sau %ai %ultor (iiere :R0>, este a"oi tra8ersat "entru obinerea i%a&inii obiectelor
9n -i(erite situaii -e na8i&are a scenei# Re-area i%a&inii obiectelor "e -is"laA se
reali6ea61 "rin inter%e-iul bibliotecilor &ra(ice -e ni8el %ai sc16ut, cu% sunt +"en,>
sau Direct!D C-e la 0icroso(tE# 4ceste biblioteci asi&ur1 inter(aa cores"un61toare cu
acceleratorul &ra(ic al siste%ului#
)"eci(icaiile li%baBului :R0> 97 -escriu conce"tele -e reali6are a scenelor
8irtuale, -escrierea no-urilor, -escrierea c;%"urilor, a e8eni%etelor i interaciunea
9ntre no-uri# )i%ilar li%baBelor -e "ro&ra%are stan-ar-, s"eci(icaiile :R0> conin
re&uli sintactice i re&uli se%antice ale li%baBului#
?n (iier :R0> conine un 2ea-er Cacelai "entru I)+ :R0> 97 i :R0>
2#E, ur%at -e -escrierea no-urilor &ra(ului scenei, care s"eci(ic1 (or%ele &eo%etrice,
&ru"urile, trans(or%1rile i atributele %e-iului 8irtual care se contruiete i
8i6uali6ea61# )inta3a :R0> este si%"l1, cu cu8inte c2eie 9n li%ba En&le61 su&esti8e
"entru entitatea -e(init1# Hea-erul (iierului este:
e:R0> 2# ut(5
e 4lte co%entarii
un-e !fT este setul -e caractere (olosit# Este obli&atorie intro-ucerea 8ersiunii
7G5) 210 i%e-iat -u"1 caracterul e C(1r1 nici un s"aiu liberE#
?n no- este s"eci(icat "rin ti"ul no-ului, ur%at -e un bloc cu"rins 9ntre
acola-e# Blocul -in interiorul acola-elor conine 6ero sau %ai %ulte c;%"uri CfieldsE i
"entru (iecare c;%" se s"eci(ic1 8aloarea Csau 8alorileE acestuia Cfield valueE# Fiecare
c;%" al unui no- are un nu%e i a-%ite una sau %ai %ulte 8alori -e un ti" -e -ate
-eter%inat -e ti"ul "ara%etrului#
Fn :R0> este e3tins1 noiunea -e no- "entru orice entitate care &ru"ea61 %ai
%ulte in(or%aii# )e "oate obser8a -i(erena -intre noiunea -e nod VR%5 i noiunea
-e no- 9ntr=un &ra( al scenei# ?n no- 9ntr=un &ra( este o co%"onent1 a unei structuri
ierar2ice, (iecare no- a8;n- unul sau %ai %uli "1rini Ccu e3ce"ia no-ului r1-1cin1
care nu are nici un "1rinteE i unul sau %ai %uli (ii Ccu e3ce"ia no-urilor (run61 care
nu au (iiE# ?n no- :R0> "oate (i no- 9n &ra(ul scenei, sau "oate s1 (ie inclus Cca
8aloare a unui c;%"E 9ntr=un alt no-# 0o-ul cu% se construiete &ra(ul scenei "ornin-
-e la s"eci(icarea no-urilor :R0> -e"in-e -e "ro&ra%ul -e a"licaie#
)iste%ele -e coor-onate (olosite 9n :R0> sunt aceleai cu siste%le -e
coor-onate -in +"en,>: siste%ul -e re(erin1 uni8ersal este un siste% -re"t, siste%ul
-e re(erin1 obser8ator este -e ase%enea un siste% -e re(erin1 -re"t, -e(init ca
locali6are i orientare relati8 la siste%ul -e re(erin1 uni8ersal$ "roiecia "ers"ecti81 se
-e(inete "rintr=un "lan "er"en-icular "e a3a 6 a siste%ului -e re(erin1 -e obser8are,
cu -irecia -e obser8are s"re D6 #
Ti"urile -e no-uri :R0> sunt ur%1toarele:
For%e i -escrieri &eo%etrice CshapesE: -+x, &+ne, &++:dina!e,
&y'inde:, 4va'a!i+nB:id, 4x!:/i+n, @ndexedKace6e!,
@ndexed)ine6e!, I+:ma', P+in!6e!, 6Aa>e, 6>Ae:e, *ex!#
4s"ect CappearanceE: ,>>ea:ance, &+'+:, K+n!6!y'e,
@ma(e*ex!:e, 5a!e:ia', 5+vie*ex!:e, Pixe'*ex!:e,
*ex!:e-&++:dina!e, *ex!:e*:an/f+:m#
,ru"uri CgroupingE: ,ncA+:, -i''b+a:d, &+''i/i+n, B:+>,
@n'ine, )E3, 6"i!cA, *:an/f+:m#
0e-iu CenvironmentE: ,di+&'i>, -ack(:+nd, 3i:ec!i+na'-
)i(A!, K+(, P+in!)i(A!, 6+nd, 6>+!)i(A!#
:i6uali6are CviewingE: Iavi(a!i+n@nf+, 7ie">+in!#
4ni%aie CanimationE: &+'+:@n!e:>+'a!+:, &++:dina!e-
@n!e:>+'a!+:, I+:ma'@n!e:>+'a!+:, E:ien!a!i+n-
@n!e:>+'a!+:, P+/i!i+n@n!e:>+'a!+:, 6ca'a:@n!e:>+'a!+:,
*ime6en/+:1
Interaciuni CinteractionE: &y'inde:6en/+:, P'ane6en/+:,
P:+ximi!y6en/+:, 6>Ae:e6en/+:, *+cA6en/+:,
7i/ibi'i!y6en/+:#
4lte no-uri: 6c:i>!, J+:d@nf+#
Fn total sunt /' -e ti"uri -e no-uri, i (iecare ti" a-%ite unul sau %ai %ulte
ti"uri -e c;%"uri# Ti"urile -e -ate "rin care se s"eci(ic1 8aloarea unui c;%" "ot (i:
nu%ere 9ntre&i, nu%ere 9n 8ir&ul1 %obil1, 8alori boolene, iruri -e caractere, sau "ot (i
(olosite c2iar no-uri :R0># ?n e3e%"lu -e (iier :R0> (oarte si%"lu este -at 9n
continuare#
E9empl)l 6./
e:R0> 2# ut(5
e Construieste un cilin-ru !D
)2a"e U
a""earance 4""earance U
%aterial 0aterial U
-i((useColor #, #/, 1#
V
V
&eo%etrA CAlin-er U
2ei&2t 2#
ra-ius 1#/
V
V
No-ul -e ti"ul 6Aa>e intro-uce un obiect tri-i%ensional "entru care se
s"eci(ic1 c;%"urile cu nu%ele a>>ea:ance i (e+me!:y, "entru -e(inirea
as"ectului i a (or%ei# :aloarea c;%"ului a>>ea:ance este un no- -e ti"ul
,>>ea:ance, -e(init i%e-iat "rin blocul cores"un61tor 9ntre acola-e# No-ul
,>>e:ence are s"eci(icat c;%"ul ma!e:ia' a c1rui 8aloare este -at1 "rintr=un no-
-e ti"ul 5a!e:ia'# No-ul -e ti" 5a!e:ia' conine c;%"ul diff/e&+'+:,
"entru care se s"eci(ic1 8aloarea "rin trei nu%ere 9n 8ir&ul1 (lotant1, "entru
co%"onentele rou, 8er-e, albastru# :aloarea c;%"ului (e+me!:y este un no- -e
ti"ul &y'inde:, care este -e(init "rin c;%"urile Aei(!A i :adi/, cu 8alori
nu%ere 9n 8ir&ul1 %obil1#

?n (iier :R0> "oate conine %ii -e no-uri i (iecare no- conine un nu%1r
8ariabil -e c;%"uri, ti"ic -ou1=trei c;%"uri, -ar "ot (i i 6eci -e c;%"uri# Din (ericire,
toate c;%"urile no-urilor au "re816ute 8alori i%"licite re6onabile, ast(el c1 no-urile
"ot (i (olosite c2iar -ac1 nu se s"eci(ic1 8aloarea tuturor c;%"uri# De e3e%"lu,
8aloarea i%"licit1 a culorii -e ter&ere este ne&ru, i, -ac1 nu se s"eci(ic1 alt1 culoare
-e (un-al C"rintr=un no- -ack(:+ndE, atunci, la na8i&are "rin inter%e-iul
broLserelor (un-alul r1%;ne ne&ru# Po6iia iniial1 a "unctului -e obser8are este este
la C#, #, 1#E i, -ac1 nu se s"eci(ic1 alt1 "o6iie, C"rintr=un no- 7ie">+in!E,
atunci na8i&area 9nce"e cu aceast1 "o6iie#
)unt consi-erate co%entarii toate caracterele -u"1 caracterul e ";n1 la
s(;ritul liniei# No-urile, c;%"urile i 8alorile c;%"urilor "ot (i aranBate 9n oric;te
linii$ s"aiile, tab=urile, 8ir&ulele i caracterul -e linie nou1 sunt consi-erate s"aii albe
Cwhite spacesE i i&norate la citire# :R0> este case=sen6iti8e, a-ic1 -i(erenia61
literele %ici -e cele %ari#
7.2.1Con!truirea (ormelor geometri"e
+rice (or%1 &eo%etric1 se construiete (olosin- un no- -e ti"ul 6Aa>e, cu
c;%"urile a>>ea:ance i (e+me!:y "entru s"eci(icarea as"ectului i a (or%ei
&eo%etrice#
For%a &eo%etric1 se s"eci(ic1 "rin nu%ele unuia -in cor"urile &eo%etrice
ele%entare recunoscute -e :R0> C-+x, &y'inde:, &+ne, 6>Ae:eE, "rintr=o
&ril1 -e 8alori -e altitu-ini C4'eva!i+nB:idE, "rintr=un obiect obinut "rin
e3tru-are C4x!:/i+nE sau "rintr=o reea -e (ee "oli&onale C@ndexedKace6e!E,
linii C@ndexed)ine6e!E sau "uncte CP+in!6e!E#
Cea %ai "uternic1 i %ai (olosit1 %o-alitate -e re"re6entare a obiectelor este
re"re6entarea "oli&onal1 -escris1 -e no-ul @ndexedKace6e!# 4cest no- -e(inete
un obiect "rintr=o %uli%e -e 8;r(uri Ccoor-onate !DE i o %uli%e -e (ee, (iecare (a1
(iin- o list1 -e in-ici 9n 8ectorul -e 8;r(uri# )e "oate ur%1ri %ai si%"lu -e(iniia unui
ast(el -e no- 9n e3e%"lul ur%1tor#
E9empl)l 6.1
M7G5) 7210 !fT
M cb1":' - c+n/!:ieQ!e n cb >:in feSe indexa!e
6Aa>e {
a>>ea:ance ,>>ea:ance {
ma!e:ia' 5a!e:ia' { }
}
(e+me!:y @ndexedKace6e! {
c++:d &++:dina!e {
>+in! ;
M &++:d+na!e'e de dea/>:a a cb'i
-110 110 110,
110 110 110,
110 110 -110,
-110 110 -110,
M &++:d+na!e'e de j+/ a'e cb'i
-110 -110 110,
110 -110 110,
110 -110 -110,
-110 -110 -110
<
}
c++:d@ndex ;
0, 1, 2, 3, -1,
W, D, U, 4, -1,
0, 4, U, 1, -1,
1, U, D, 2, -1,
2, D, W, 3, -1,
3, W, 4, 0
<
}
}
4cest no- creea61 un cub i s"eci(ic1 (iecare (a1 "oli&onal1 "rintr=o list1 -e
in-ici 9n lista -e 8;r(uri i 9n lista -e culori# +rice 8ector C8ectorul >+in!, 8ectorul
c++:d@ndexE este 9nca-rat 9ntre "arante6e -re"te# Deli%itarea 9ntre in-ecii (eelor
se (ace "rin nu%1rul D1#
7.2.28oduri de grupare
No-urile -e &ru"are CB:+>, )E3, 6"i!cA, -i''b+a:d, @n'ine,
&+''i/i+n, ,ncA+:, *:an/f+:mE ale li%baBului :R0> sunt no-uri care au
unul sau %ai %ulte no-uri (ii#
No-ul B:+> colectea61 %ai %uli (ii, care "ot (i (or%e, lu%ini, sau alte
no-uri B:+># Fn e3e%"lul ur%1tor este creat un obiect co%"us -in trei
"araleli"i"e-e -re"tun&2ice Cse%nul G"lusH tri-i%ensionalE#
E9empl)l 6.3
M7G5) 7210 !fT
M /emn331":' /emn' X>'/Y !:idimen/i+na'
B:+> {
c2il-ren R
Bac@&roun- U
s@AColor 1# 1# 1#
V,
:ieL"oint U
"osition '#, 1#, '#
orientation # 1# # #75
V,
Directional>i&2t U
-irection # =1# =#2
intensitA 1#
a%bientIntensitA #2
color 1# 1# 1#
V,
)2a"e U
a""earance DEF K2ite 4""earance U
%aterial 0aterial U V
V
&eo%etrA Bo3 U
si6e 2/# 2# 2#
V
V,
6Aa>e {
a>>ea:ance C64 JAi!e
(e+me!:y -+x {
/ize 210 2U10 210
}
},
6Aa>e {
a>>ea:ance C64 JAi!e
(e+me!:y -+x {
/ize 210 210 2U10
}
}
<
}
I%a&inea care se obine la 8i6uali6area acestui (iier :R0> este -at1 9n Fi&#
5#2 # ,ru"ul conine ase no-uri (ii, trei no-uri -e -escriere a unei (or%e &eo%etrice
Cno-urile 6Aa>eE, un no- -e surs1 lu%in1 C3i:ec!i+na')i(A!E, un no- -e
-e(inire a culorii -e ter&ere C-ack(:+ndE i un no- -e "o6iionare a "unctului -e
obser8are C7ie">+in!E# >ista -e (ii este intro-us1 9ntre "arante6e -re"te "rece-ate
-e cu8;ntul c2eie cAi'd:en#
Fig. 6.1 I%a&inea a(iat1 -e broLserul Cos%o PlaAer
la 9nc1rcarea (iierului se%n!D#Lrl#
Fn acest e3e%"lu este (olosit1 etic2etarea no-urilor# +rice no- "oate "ri%i o
etic2et1 intro-us1 "rin cu8;ntul=c2eie 34K# ?n no- o-at1 etic2etat la -e(iniie, "oate (i
(olosit ca 8aloare a unui c;%" "rin si%"la intro-ucere a cu8;ntului=c2eie C64 ur%at
-e etic2eta no-ului# Fn e3e%"lul -e %ai sus, un no- -e as"ect a (ost etic2etat cu
nu%ele JAi!e C34K JAi!e ,>>ea:ance{TT}) i a"oi (olosit cu acest nu%e
ca 8aloare a unui c;%" Ca>>ea:ance C64 JAi!eE#
4ceast1 i%a&ine se obine (ie "rin inter%e-iul unui broLser CCos%o PlaAer
"entru Netsca"eE, (ie "rin inter"retare C"arsareaE (iierului, crearea &ra(ului scenei i
re-area i%a&inii acestuia#
Fn (iierul /emn331":' %ai este (olosit un no- "entru -e(inirea culorii -e
(un-al Cno-ul -ack(:+nd cu c;%"ul /ky&+'+:E, no-ul 7ie">+in! "entru
-e(inirea "o6iiei -e obser8are i no-ul 3i:ec!i+na')i(A! "entru -e(inirea unei
surse -e lu%in1 -irecional1# )e "ot re%arca unele -i(erene 9ntre con8eniile -e
-e(inire a unor -ate 9n :R0> i cele -in +"en,># De e3e%"lu, "entru rotaie se
s"eci(ic1 %ai 9nt;i co%"onentele a3ei -e rotaie, a"oi un&2iul -e rotaie 9n ra-iani C9n
+"en,> se -1 %ai 9nt;i 8aloarea un&2iului 9n &ra-e, a"oi co%"onentele a3ei -e
rotaieE#
No()l Switch conine o list1 or-onat1 -e no-uri (ii care conin re"re6ent1ri
8ariate ale aceluiai obiect# Fn cursul re-1rii, se selectea61 9n sec8en1 c;te unul -in (ii
la (iecare ca-ru -e i%a&ine, ceea ce creea61 i%"resia -e e8oluie C%o-i(icare
-ina%ic1E a obiectului# Fn acest (el sunt re-ate lu%inile -e se%nali6are Ccare 9i
sc2i%b1 culoarea sau intensitatea la inter8ale stabilite -e ti%"E sau (l1c1rile, (u%ul,
etc#
No()l LOD conine re"re6entarea unui obiect cu ni8ele -e -etaliu %ulti"le#
Fiecare no- (iu al no-ului )E3 este selectat 9ntr=un inter8al -e -istane s"eci(icat 9n
8ectorul -e -istane al no-ului )E3#
No()l Transform -e(inete trans(or%area -e coor-onate a tuturor no-urilor
(ii ai acestuia (a1 -e no-ul "1rinte# Prin a"licarea acestei trans(or%1ri, un no- (iu este
trans(or%at -in siste%ul -e re(erin1 "ro"riu 9n siste%ul -e re(erin1 al no-ului "1rinte#
)uccesiunea -e trans(or%1ri care se a"lic1 unui no- (run61 9l trans(or%1 -in siste%ul
-e re(erin1 local 9n siste%ul -e re(erin1 uni8ersal#
E9empl)l 6.
Fiierul c>+'a1v:' -e %ai Bos construiete o cu"ol1 -in -ou1 obiecte
"o6iionate (olosin- un no- *:an/f+:m:
M7G5) 7210 !fT
M c>+'a1":' - c+n/!:ieQ!e + c>+'R
,rou" U
c2il-ren R
Bac@&roun- U
s@AColor 1# 1# 1#
V,
Directional>i&2t U
-irection # =1# =1#
intensitA 1#
a%bientIntensitA #2
color 1# 1# 1#
V,
e Pereii cu"olei
)2a"e U
a""earance DEF BroLn 4""earance U
%aterial 0aterial U
-i((useColor #. #' #
V
V
&eo%etrA CAlin-er U
Aei(A! 210
:adi/ 210
}
},
M ,c+>e:iQ' c>+'ei
*:an/f+:m {
!:an/'a!i+n 010 210 010
cAi'd:en ;
6Aa>e {
a>>ea:ance C64 -:+"n
(e+me!:y &+ne {
Aei(A! 210
b+!!+mGadi/ 21U
}
}
<
}
<
}
Cu"ola este re"re6entat1 "rintr=un no- B:+> cu -oi (ii# Pri%ul (iu este un
cilin-ru, care re-1 "ereii cu"olei$ cel -e=al -oilea (iu este un con translatat cu 2 unit1i
(a1 -e no-ul "1rinte Cno-ul B:+>E i re"re6int1 aco"eriul# I%a&inea obinut1 "rin
9nc1rcarea (iierului c>+'a1":' este -at1 9n Fi&# 5#!# CaE#
E9empl)l 6.!
Fig. 6.3 CaE I%a&inea (iierului cu"ola#Lrl#
CbE I%a&inea (iierului asteri3#Lrl
e:R0> :2# ut(5
e asteri3#Lrl D construiete se%nul Gasteri3H !D
,rou" U
c2il-ren R
:ieL"oint U
"osition '#, 1#, '#
orientation # 1# # #75
V,
e Pri%ul bra
DEF 4r%1 )2a"e U
a""earance 4""earance U
%aterial 0aterial U V
V
&eo%etrA CAlin-er U
2ei&2t 1#
ra-ius #1
V
V,
e 4l -oilea bra
Trans(or% U
rotation 1# # # 1#'7
c2il-ren ?)E 4r%1
V,
e 4l treilea bra
Trans(or% U
rotation 1# # # 2#9'
c2il-ren ?)E 4r%1
V
S
V
Fiierul a/!e:ix1":' construiete un se%n asteri3 9n trei -i%ensiuni#
+biectul este re"re6entat "rintr=un no- B:+> cu "atru (ii# Pri%ul no- (iu
C7ie">+in!E "o6iionea61 "unctul i -irecia -e obser8are# Cel -e=al -oilea no- (iu
este un bra re"re6entat "rintr=un cilin-ru 8ertical$ cel -e=al treilea (iu al no-ului
B:+> re"re6int1 al -oilea bra i se obine "rintr=o rotaie cu . C1#'7 ra-ianiE a
"ri%ului bra relati8 la a3a 3$ cel -e=al "atrulea (iu al no-ului B:+> re"re6int1 al
treilia bra i se obine "rintr=o rotaie cu 12 C2#9' ra-ianiE a "ri%ului bra relati8
la a3a 3#
,ra(urile scenelor cores"un61toare (iierelor c>+'a1":' i
a/!e:ix1":' sunt -ate 9n Fi&# 5#'#
No()l Billboard -e(inete o trans(or%are a no-urilor (ii, -ar auto%at
a-au&1 la aceast1 trans(or%are o rotaie ast(el 9nc;t a3a 6 a siste%ului -e re(erin1 al
no-urilor (ii s1 (ie 9n "er%anen1 orientat1 c1tre "unctul -e obser8are# Fn acest %o-,
atunci c;n- obser8atorul se %ic1 9n scen1, el 8e-e 9ntot-eauna aceeai (a1 a
obiectului# No-ul -e ti" Billboar- se (olosete "entra re-area co"acilor 9n scenele
8irtuale# ?n co"ac se re"re6int1 "rintr=o sin&ur1 (a1 cu o te3tur1 care re"ro-uce
i%a&inea co"acului, i care se rotete ast(el 9nc;t obser8atorul 8e-e (aa te3turat1 i nu
%uc2iile acesteia#
No()l Inline este un no- -e &ru"are care "er%ite intro-ucerea unuia sau
%ai %ultor no-uri (ii -intr=un alt (iier :R0> e3tern s"eci(icat "rin co-ul CG)# Fn
acest (el, o scen1 8irtual1 se "oate co%"une -in %ai %ulte %o-ule C(iiereE e3istente#
7.2.3Anima&ia 4n 5RML
?na -in cele %ai i%"ortante caracteristici ale li%baBului :R0> este abilitatea
-e a -escrie ani%aia obiectelor 9n scena 8irtual1# 4ni%aia :R0> "oate %o-i(ica
"o6iia, orientarea, -i%ensiunea obiectelor$ culoarea, %aterialul, te3tura sau "ara%etrii
-e a%"lasare a te3turii "e (eele obiectelor$ culoarea, "o6iia sau -irecia lu%inilor$ i
9nc1 %ulte alte caracteristici ale scenei 8irtuale#
Fig. 6. CaE ,ra(ul scenei cu"ola#Lrl CbE ,ra(ul acenei asteri3#Lrl#
,rou"
Trans(or% )2a"e
)2a"e
,rou"
)2a"e
Trans(or% Trans(or%
:ieL"oint
CaE
CbE
Bi3liografie
R4ur91S F. A)re$Mammer, GVoronoi Diagrams& A Survei of :undamental Geometric Data StructureH,
4C0 Co%"utin& )ur8eA, :ol# 2! Nr# !, )e"t# 1991#
R46u97S #.* A5)ma, GA surve of Augnented RealitH, Presence: Teleo"erators an- :irtual
En8iron%ents, :ol# ., Nr# ', ""# !//=!5/, 4u&ust 1997#
RBaciu99S #o(ica Baci) i ,. Jolo4ici, Sisteme de prelucrare grafic, E-itura 4lbastr1, CluB=Na"oca,
1999#
RBur-92S 8. B)r(ea, N. @M)a$g, E. #o.;o., ,. Sil4er i N. La$gra$a, GA !orta$le De-trous %aster
with :orce :eed$ac3H, Presence= Teleo"erators an- :irtual En8iron%ents, :ol# 1, Nr# 1, ""
15W27, 0arc2 1992#
RBur-9!S 8. B)r(ea, GVirtual Realit Sstems and ApplicationsH, ElectroZ9! International Con(erence,
)2ort Course, E-ison, NJ, 4"ril 199!#
RBur-9'S 8. B)r(ea i P. Coiffe&, 5a Ralit Virtuelle, E-ition Her%es, Paris, 199'#
RBur-97S 8. B)r(ea, :orce and 9ouch :eed$ac3 for Virtual Realit, Jo2n KilleA a )ons, Inc#, NeL
\or@, 1997#
RDo&55S ,. ,ogar), ;lemente de grafic <D, E-# *tiini(ic1 i Enciclo"e-ic1, Bucureti, 1955#
RFan&9/S *.)$g-Pao Fa$g i Le. A. Piegl, GDelauna 9riangulation in 9hree DimensionsH, IEEE
Co%"uter ,ra"2ics an- 4""lications, :ol# 1/, Nr# /, )e"te%ber 199/, ""# .2=.9#
RFBall9!S Per-Olof F:all.&rom, G;valuation of a Delauna&$ased method for surface appro-imationH,
Co%"uter=4i-e- Desi&n, :ol# 2/, Nr# 11, No8e%ber 199!, ""# 711=719#
RFoleA9S N.,. FoleG i A. Ja$ ,am, Computer Graphics= !rinciples and !ractices, 2
n-
E-n, 4--ison=
KesleA, Rea-in&, 0assac2usetts, 199#
R,i&a9!S 2.A. 8iga$&e, GVirtual Realit= Definitions6 #istor and ApplicationsH, :irtual RealitA
)Aste%s, 4ca-e%ic Press, 199!#
R,our71S +. 8o)ra)(, Continous Shading of Curved Surfaces, IEE Trans# on Co%"uters, C=2C.E,
June 1971, ""# .2!=.29#
RIon99S Felicia Io$e.c), !rincipiile Calculului !aralel, E-itura Te2nic1, Bucureti 1999#
R0an9/S C. 2a$e&&a %i #. Bla(e, GGlossar of Virtual Realit 9erminologH, International Journal o(
:irtual RealitA, :ol#1, Nr# 2, 199/#
R0ol-9.S Florica 2ol(o4ea$), @oea #aco4i-, O. Pe&re.c), 8. +era i 2. @aMaria, Grafica pe
Calculator, E-itura Teora, 199.#
RNeL51S P.2. NeIma$ i #.F. Spro)ll, !rinciples of 7nteractive Computer Graphics, 0c,raL=Hill,
NeL <or@, 1951#
RPre"5/S F.P. Prepara&a i 2.I. SMamo., Computational Geometr= an 7ntroduction, )"rin&er=:erla&,
NeL=\or@, 195/#
RRour9!S No.epM OD#o)r;e, Computational Geometr in C, Ca%bri-&e ?ni8ersitA Press, Boston,
0assac2usetts, 199!#
R)2er92S B. SMerma$ %i P N)(;i$., Glimpses of #eaven6 Vision of #ell= Virtual Realit and its
implications, Ho--er an- )tou&2ton, >on-on, 1992#
R)ut27'S I.E. S)&Merla$( i 8.P +o(gma$, Reentrant !olgon Clipping, C4C0, JanuarA 197'#
RKatt9/S A. Pa&&, <D Computer Graphics, 4--ison=KesleA, Rea-in&, 0assac2usetts, 199/#
RKoo97S 2. Poo, Nac;ie Nei(er i *. ,a4i., 4penG5 !rogramming Guide, +"en,> 4rc2itecture
Re8ieL Boar-, 4--ison=Kesle6 De8elo"res Press, Rea-in&, 0assac2usetts, 1997#
R4%es97S A.L. Ame., ,.#. Na(ea), i N.L. 2orela$(, 9he VR%5 >.? Source$oo3, Jo2n KileA a )ons
Inc#, NeL \or@, 1997#

S-ar putea să vă placă și