Professional Documents
Culture Documents
s la 400
0
C, determinnd apariia unei bule de gaz care se
destinde, produce o suprapresiune i preseaz o pictur minuscul de cerneal prin duz spre
exterior. Bula de gaz se formeaz din nou: n capul de imprimare apare o depresiune care asigur
transferul cernelei din cartu. Cerneala care intr n cap rcete elementul de nclzire. Aceste faze se
repet pentru fiecare punct de tiprit. Aceast tehnologie prezint ca dezavantaj faptul c, dup o
utilizare ndelungat, pe elementul de nclzire se formeaz un strat subire de resturi de cerneal
care mpiedic lucrul la parametri normali. Bulele de gaz devin mai mici i picturile de cerneal mai
slabe. Pentru evitarea acestui comportament trebuie nlocuit nu numai cartuul ci i capul de
imprimare (aceasta se ntmpl n medie dup 10 reumpleri cu cerneal).
Imprimarea piezoelectric cu cerneal (Epson) nlocuiete bula de gaz cu un element format din
cristale piezoelectrice (figura 1-14a). Cnd elementul se ncarc electric, cristalele se lungesc n 5
s. Dup 5
u u n B P u p
n
i
i i
unde Pi sunt punctele de control iar
( )
( ) i n u u
i n i
n
n B
i i i
1 * *
! !
!
,
cu 0!=1.
Pentru n=3 (patru puncte de control) obinem ecuaia segmentului de curba Bezier cubica:
3 3 2 2 1 0
1 3 2 1 3 3 1 P u -u)P ( u P -u) u( P -u) ( p(u) + + +
sau
41
3 3 3 2 3 2 1 3 1 0 3 0
(u)*P B (u)*P B (u)*P B (u)*P B p(u)
, , , ,
+ + +
unde B
0,3
, B
1,3
, B
2,3
, B
3,3
sunt funciile de amestec pentru curbele Bezier cubice.
Proprieti ale curbelor Bezier
Curba i are extremitile n primul i n ultimul punct de control.
1. Tangentele n punctele extreme ale curbei sunt chiar primul i ultimul segment al poligonului de
control (Obs: se numete poligon de control polilinia care unete punctele de control).
2. Curba este cuprinsa n ntregime n figura convexa formata de punctele de control ("convex
hull").
Dezavantaje
4. Gradul polinomului prin care se reprezint curba creste odat cu numrul punctelor de control.
5. Nu poseda proprietatea de control local: deplasarea unui punct de control afecteaz toate punctele
de pe curba.
Trasarea curbelor definite parametric
Pentru trasarea unui segment de curba definit prin ecuaii parametrice se calculeaz diferite
puncte de pe curba folosind ecuaiile parametrice x(u), y(u), z(u), specifice fiecrui tip de curba,
pentru u
min
<= u <=u
max
. Funcia curba prezentata n continuare poate fi folosita pentru trasarea mai
multor tipuri de curbe plane. Astfel, pentru calculul punctului de pe curba corespunztor unei valori
particulare a variabilei u, n funcia curba se apeleaz o funcie specificata n lista de parametri.
Aceasta difer de la un tip de curba la altul.
Trasarea curbelor Bezier
Pentru trasarea unei curbe Bezier am definit funcia Bezier. Ea calculeaz punctul de pe curba
corespunztor unei valori u a variabilei parametrice, folosind ecuaiile parametrice x(u), y(u), care
pentru o curba Bezier definita prin 4 puncte de control (n=3) sunt:
3 3 3 2 3 2 1 3 1 0 3 0
3 3 3 2 3 2 1 3 1 0 3 0
3 3 3 2 3 2 1 3 1 0 3 0
(u)*z B (u)*z B (u)*z B (u)*z B z(u)
(u)*y B (u)*y B (u)*y B (u)*y B y(u)
(u)*x B (u)*x B (u)*x B (u)*x B x(u)
, , , ,
, , , ,
, , , ,
+ + +
+ + +
+ + +
Pentru reducerea timpului de calcul al punctelor de pe curba, mai ales atunci cnd n este
mare, se poate folosi relaia de recurenta:
( )
u
u
i
i n
u n B n B
i i i
1
*
1
* , ,
1
Funcia Bezier prezentata mai jos poate fi folosita pentru calculul punctelor de pe o curba
Bezier, oricare ar fi numrul de puncte de control (n>=3). Punctele de control sunt memorate n
vectorul P (deci, datorita declaraiei sale, n<=20). tiind ca p(0)=Pt0s i p(1)=Ptns, pentru a evita
calculele inutile am tratat separat aceste cazuri. Punctele de control se considera a fi definite n
spaiul ecran.
7.2. Curbe B-spline
Acestea sunt, ca i curbele Bezier, curbe de aproximare definite prin puncte de control, dar spre
deosebire de curbele Bezier, ele sunt descrise prin funcii polinomiale definite pe poriuni, ceea ce le
42
confer proprietatea de control local. Segmentele de curba B-spline sunt descrise prin polinoame de
grad doi sau trei, gradul fiind independent de numrul punctelor de control.
O curba B-spline uniforma periodica de grad 2, data prin n+1 puncte de control este descrisa de
urmtoarea ecuaie matriciala:
( ) 1 1
1
1
0 . . . . . . . 1 . . . . . . . . 1
0 . . . . . . . . 2 . . . . 2
1 . . . . . . 2 . . . . . . 1
1 5 . 0
2
,
`
.
|
+
,
`
.
|
n i
P
P
P
s u t u u p
i
i
i
i
Forma similara pentru curbele B-spline uniforme periodice de grad 3 este:
( ) 1 0 , 2 1
2
1
1
0 . . . 1 . . . . . . . 4 . . . . . . 1
0 . . . 3 . . . . . . 0 . . . 3
0 . . . 3 . . . . . . 6 . . . 3
1 . . . 3 . . . 3 . . . . 1
1
6
1
2 3
<
,
`
.
|
,
`
.
|
u n i
P
P
P
P
s u u t u u p
i
i
i
i
i
Proprieti ale curbelor B-spline
4. Puncte de control multiple. O curba B-spline de grad m trece ntotdeauna printr-un punct de
control de multiplicitate m. Deci, se poate fora trecerea unei curbe B-spline printr-un punct de
control introducnd punctul respectiv n vectorul punctelor de control pe mai multe poziii
succesive.
5. Puncte de control coliniare. Daca m+1 puncte de control succesive sunt situate pe o dreapta,
atunci curba B-spline de grad m este situata parial pe dreapta respectiva. Astfel, daca punctele
Pi-1, Pi, Pi+1 sunt coliniare, segmentul pi de curba B-spline de grad 2 se confunda parial cu
segmentul Pi-1-Pi.
6. Curbe nchise. Pentru a obine o curba B-spline de grad m nchis este suficient ca primele m
puncte de control sa fie identice cu ultimele m.
7. Proprietatea de "nchidere" convexa (convex hull) Orice curba B-spline este complet inclusa n
poligonul convex format prin unirea punctelor de control.
8. Invarianta afina Pentru a transforma o curba B-spline este suficient sa se aplice transformarea
(afina) punctelor de control i apoi sa se regenereze curba. Aceasta proprietate o au i curbele
Bezier.
Trasarea curbelor B-spline
Se poate trasa o curba B-spline apelnd funcia curba pentru fiecare segment de curba. n acest scop
trebuie sa definim o funcie care ntoarce punctul de pe curba corespunztor numrului segmentului
de curba (reprezentat n programul de mai jos prin variabila globala i) i valorii variabilei u.
8. TRANSFORMRI GEOMETRICE 2D
43
Introducere
Operaiuni de transformri geometrice snt frecvent utilizate n sinteza imaginilor pentru
reprezentarea lor n forma necesar (scar, poziie .a.). Transformarea geometric a imaginii (TGI)
const n transformarea coordonatelor ale fiecrui pixel al imaginii iniiale. n mod general, TGI se
descrie ca:
P(x,y) P(x,y),
unde x F
1
(x,y), y F
2
(x,y).
8.1. Transformri geometrice elementare
8.1.1. Translaia
Translaia este transformarea prin care un obiect este deplasat din poziia sa, cu o distan dat,
dup o direcie dat. Matematic, translaia este descris n modul urmtor:
x =x+t
x
y =y+t
y
unde t
x
, t
y
parametrii de translaie.
8.1.2. Scalare
Scalare este transformarea prin care un obiect este mrit sau micorat. Transformarea dat este
specificat prin dou numere, numite factorul de scalare pe axa x i factorul de scalare pe axa y. Un
factor de scalare supraunitar specific o mrire, iar unul subunitar o micorare.
Vor fi examinate dou tipuri de operaiuni de scalare: scalare fa de origine i scalare fa de un
punct oarecare din plan.
Scalare fa de origine
Scalare imaginii P(x,y) fa de origine se descrie n mod urmtor:
x =x*s
x
y =y*s
y
unde s
x
, s
y
sunt factori de scalare.
Dac s
x
=s
y
scalare este uniform; ea nu produce deformarea obiectului transformat. n caz contrar
scalare este numit neuniform.
44
Scalare fa de un punct oarecare din plan
Fie F(x
f
,y
f
) este un punct din plan fa de care este scalat imaginea P(x,y). Punctul F este numit
punctul fix al transformrii deoarece nu se modific prin aplicarea transformrii. Scalarea funciei
P(x,y) fa de F(x
f
,y
f
) cu factorii s
x
, s
y
se descrie ca:
x = (x- x
f
)s
x
+ x
f
y = (y y
f
)s
y
+ y
f
n caz dac x
f
=0 i y
f
=0 se obine formula scalrii fa de origine.
8.1.3. Rotaia
Rotaia fa de origine
Aceast transformare este specificat printr-un unghi; dac unghiul este pozitiv, atunci rotaia este
efectuat n sensul trigonometric, altfel n sensul micrii acelor de ceas. Fie P(x,y) un punct i
u unghiul de rotaie. Calculul punctului P(x ,y ), obinut prin rotaia punctului P(x,y) se
efectueaz n mod urmtor:
x =x*cos(u)-y*sin(u)
y =x*sin(u)+y*cos(u)
Rotaia fa de un punct oarecare din plan
Fie P(x,y) este un punct din plan care se rotete n jurul unui punct F(x
f
,y
f
). Coordonatele
punctului P(x ,y ), rezultat din rotaia punctului P(x,y) n jurul punctului F(x
f
,y
f
) cu un unghi u
vor fi urmtoarele:
x = (x-x
f
)cos(u)-(yy
f
)sin(u)+x
f
y = (x-x
f
)sin(u)-(yy
f
)cos(u)+y
f
8.2. Compunerea transformrilor
n cele mai multe cazuri, transformarea care trebuie s fie aplicat unui obiect la un moment dat este
compus din mai multe transformri elementare. Se poate obine formula oricrei transformri
compuse pe baza expresiilor matriciale ale transformrilor elementare. Astfel, rotaia fa de
origine a unui punct P(x,y) se poate exprima matricial astfel:
|cos(u) sin(u)|
[x y] = [x y] |-sin(u) cos(u)|
O scalare fa de origine se exprim astfel:
45
|s
x
0 |
[x y] = [x y] |0 s
y
|
O scalare fa de origine urmat de o rotaie fa de origine se exprim astfel:
|sx 0 ||cos(u) sin(u)|
[x y] = [x y] |0 sy||sin(u) cos(u)|
Din nmulirea celor dou matrici rezult:
|s
x
*cos(u) s
x
*sin(u)|
[SR]=|s
y
*sin(u) s
y
*cos(u)|
Deci, formula transformrii compuse este:
x =x*s
x
*cos(u)-y*s
y
*sin(u)
y =x*s
x
*sin(u)+y*s
y
*cos(u)
8.3. Trasnsformri n coordonate omogene
Transformrile 2D analizate se exprim matricial, n coordonate carteziene, prin matrici de
dou linii i dou coloane. Nu exist o asemenea matrice pentru translaie. Din acest motiv,
transformrile grafice se exprim n coordonate omogene. Un punct din plan, (x y), se reprezint n
coordonate omogene printr-un vector [x
a
y
a
a], unde x
a
=x*a i y
a
=y*a, iar a este un numr real
oarecare.
Cele trei transformri elementare examinate mai nainte se exprim n coordonate omogene astfel:
Translaia
|1 0 0 |
[x y 1] = [x y 1] |0 1 0 |
|t
x
t
y
1 |
Scalarea fa de origine
|s
x
0 0 |
[x y 1] = [x y 1] |0 s
y
0 |
|0 0 1 |
Rotaia fa de origine
|cos(u) sin(u) 0 |
[x y 1] = [x y 1] |-sin(u) cos(u) 0 |
| 0 0 1|
46
8.4. Transformri geometrice inverse
Fiecare dintre transformrile geometrice elementare are o invers, adic o transformare care
exprim operaia opus aceleia corespunztoare transformrii.
Fie: [T(t
x
,t
y
)] matricea translaiei, [R(u)] matricea rotaiei fa de origine cu unghiul u i [S(s
x
,s
y
)]
matricea scalarii fa de origine cu factorii de scalare s
x
, s
y
.
Transformri geometrice inverse snt:
[T(t
x
,t
y
)]
1
= [T(-t
x
,-t
y
)]
[S(s
x
,s
y
)]
1
= [S(1/s
x
,1/s
y
)]
[R(u)]
1
= [R(-u)].
8.5. Transformri geometrice fa de un punct oarecare din plan
Expresiile matematice ale scalrii i rotaiei fa de un punct oarecare din plan se pot obine prin
compunerea urmtoarelor transformri:
1) Translaia prin care punctul fix al transformrii ajunge n origine;
2) Scalarea/rotaia fa de origine;
3) Translaia invers celei de la punctul 1.
Fie F(x
f
,y
f
) este un punct fix al transformrii, u unghiul de rotaie i s
x
, s
y
factorii de scalare.
Compunerea celor trei transformri conform etapizrii de mai sus se exprim astfel:
Scalarea fa de punctul F
[x y 1] = [x y 1] [T ][ S][ T
1
]
|1 0 0||s
x
0 0||1 0 0|
= [x y 1] |0 1 0||0 s
y
0||0 1 0|
|-x
f
-y
f
1||0 0 1||x
f
y
f
1|
Rotaia fa de punctul F
[x y 1] = [x y 1] [T ][R][T
1
]
|1 0 0||cos(u) sin(u) 0||1 0 0|
= [x y 1] |0 1 0||-sin(u) cos(u) 0||0 1 0|
|-x
f
-y
f
1|| 0 0 1||x
f
y
f
1|
8.6. Transformare de oglindire
Transformarea dat fa de axa x se descrie n mod urmtor:
47
x = x
y =-y
sau
|1 0 0|
[x y 1] = [x y 1]|0 -1 0|
|0 0 1|
Fa de axa y:
x =-x
y = y
sau
|-1 0 0|
[x y 1] = [x y 1]|0 1 0|
|0 0 1|
Fa de origine:
x =-x
y =-y
sau
|-1 0 0|
[x y 1] = [x y 1]|0 -1 0|
|0 0 1|
Fa de dreapta x=y:
x =y
y =x
sau
|0 1 0|
[x y 1] = [x y 1]|1 0 0|
|0 0 1|
Oglindirea fa de o dreapt oarecare
Se poate exprima ca o transformare compus din urmtoarele transformri elementare:
1) O translaie, astfel nct dreapta s treac prin origine;
48
2) O rotaie fa de origine astfel nct dreapta s se suprapun peste una dintre axele principale;
3) Oglindirea fa de axa principal peste care a fost suprapus dreapta;
4) Rotaia invers celei de la punctul 2;
5) Translaia invers celei de la punctul 1.
n notaie matricial, secvena de mai sus se exprim astfel:
[M] = [T][R][O][R]
1
[T]
1
unde [T] este matricea de translaie;
[R] este matricea de rotaie fa de origine;
[O] este matricea de oglindire fa de axa principal.
8.7. Transformare de forfecare a imaginilor
Transformare de tipul dat reprezint o transformare care produce distorsionarea obiectului
transformat. De exemplu, un ptrat se transform ntrun paralelogram. Transformarea se
specific prin dou numere F
x
, F
y
reale, numite factorii de forfecare pe axa x, respectiv factorul de
forfecare pe axa y.
Forfecarea pe axa x:
x = x + F
x
*y
y = y
sau
|1 0 0|
[x y 1] = [x y 1]|F
x
1 0|
|0 0 1|
Forfecarea pe axa y:
x = x
y = y + F
y
*x
sau
|1 F
y
0|
[x y 1] = [x y 1]|0 1 0|
|0 0 1|
Cazul general:
x = x + F
x
*y
y = y + F
y
*x
49
sau
|1 F
y
0|
[x y 1] = [x y 1]|F
x
1 0|
|0 0 1|
8.8. Transformri ale sistemului de coordonate
Considerm dou sisteme de coordonate n plan. Unul cu originea n O i axele x,y, cellalt cu originea
n O i axele x ,y . Fiecrui punct din plan, P, i corespund dou reprezentri: (x,y) - n sistemul xOy i
(x ,y ) - n sistemul x O y . Sistemul x O y se poate obine prin transformarea sistemului xOy;
transformarea se poate defini prin relaia dintre cele dou reprezentri ale aceluiai punct P, (x,y) i
(x ,y ).
Translaia
Dac sistemul x O y s-a obinut prin translaia sistemului xOy, atunci relaia dintre coordonatele lui P n
cele dou sisteme de coordonate este :
x = x - t
x
y = y - t
y
Rotaia fa de origine
Fie sistemul de coordonate x O y , obinut prin rotaia axelor sistemului xOy cu unghiul u.
Punctul P, va avea n sistemul x O y coordonatele:
x = x*cos(u) + y*sin(u)
y = -x*sin(u) + y*cos(u)
Scalare fa de origine
Presupunem c formm un nou sistem de coordonate cu aceeai origine i orientare a axelor, dar
caracterizat printr-o alt unitate de msur de-a lungul axelor x si y. Dac noile uniti de msur se obin
prin scalarea vechilor uniti cu factorii sx, respectiv sy, atunci relaia dintre coordonatele (x,y) i (x,y) ale
aceluiai punct n cele dou sisteme este:
x =x/s
x
y =y/s
y
Oglindire fa de o ax
Dac sistemul x O y s-a obinut prin oglindirea sistemului xOy fa de axa Ox sau axa Oy, atunci
relaia dintre coordonatele aceluiai punct n cele dou sisteme de coordonate este:
50
x = x
y =-y, n cazul oglindirii fa de axa x,
x =-x
y = y, n cazul oglindirii fa de axa y x
Se observ c aceast transformare schimb orientarea axelor sistemului de coordonate.
9. Transformri grafice tridimensionale
Introducere
Transformarea geometric 3D a imaginii se descrie ca:
P(x,y,z) P(x,y,z),
unde x F
1
(x,y,z), y F
2
(x,y,z), z F
3
(x,y,z)
Transformrile geometrice tridimensionale cuprind translaia, scalare, rotaia, oglindirea forfecarea
i proiecia obiectelor 3D.
n coordonate omogene, un punct din spaiu (x, y, z) se reprezint prin vectorul [ x
w
y
w
z
w
w ],
unde w este parametru real, iar x = x
w
/w, y = y
w
/w, z
= z
w
/w, w0.
9. 1. Matrici de transformare
Matricea de transformare generalizat 4x4 pentru coordonate omogene 3D are urmtoarea form:
| a b c p |
| M| | d e f q |
| l m n s |
Aceast matrice poate fi mprit n patru, astfel:
| | 3 |
| 3x3 | x |
| | 1 |
|
| 1x3 | 1x1 |
unde:
51
- matricea 3x3 include transformri de scalare local, forfecare, oglindire i rotaie;
- matricea 1x3 reprezint transformarea de translaie;
- matricea 3x1 reprezint transformarea de proiectare perspectiv;
- matricea 1x1 reprezint transformarea de scalare general
.
Transformarea geometric 3D a imaginii n forma matricial se descrie n mod urmtor:
[xyz1] [x y z 1][ M]
9. 2. Translaia
Dac (x, y, z) sunt coordonatele unui punct P din spaiu, prin translaie el este dus n punctul de coordonate (x', y',
z'), unde:
x' = x + t
x
y y + t
y
z' = z + t
z
sau, n form matriceal:
[xy z 1] [x y z 1] [T]
Matricea de translaie 3D este:
| 1 0 0 0 |
| T| | 0 1 0 0 |
| 0 0 1 0 |
| t
x
t
y
t
z
1 |
9. 3. Scalare
Dac (x, y, z) sunt coordonatele unui punct P din spaiu, prin scalare fa de origine, el este transformat
n punctul de coordonate (x
1 0 0 0
0 cos sin 0
0 sin cos 0
0 0 0 1
x
R
ntr-o manier asemntoare matricea de rotaie n jurul axei y cu unghiul este:
[ ]
]
]
]
]
]
]
1 0 0 0
0 cos 0 sin
0 0 1 0
0 sin 0 cos
y
R
Matricea de rotaie n jurul axei z cu unghiul este:
[ ]
]
]
]
]
]
]
1 0 0 0
0 1 0 0
0 0 cos sin
0 0 sin cos
z
R
9. 5. Transformri inverse
Toate matricele de transformare au inverse:
[T(t
x
,
t
y
,
t
z
) ]
-1
= [T(-t
x
, -t
y
, -t
z
)]
[S(s
x
, s
y
, s
z
) ]
-1
= [S( 1/s
x
, 1/s
y
, 1/s
z
)]
[R
x
( ) ]
-1
= [R
x
(- ) ]
[R
y
( ) ]
-1
= [R
y
(- )]
[R
z
( ) ]
-1
= [R
z
(- ) ]
6. Forfecarea
Dac (x, y, z) sunt coordonatele unui punct P din spaiu, prin forfecare el este transformat n punctul
de coordonate (x', y', z'), unde:
x = x + y*d + z*g
y = x*b + y + z * i
z = x * c + y * f + z
sau, n form matriceal:
[ x y' z 1'] = [ x y z 1] [F]
Matricea de forfecare este:
[ ]
]
]
]
]
]
]
1 0 0 0
0 1
0 1
0 1
i g
f d
c b
F
9. 7. Oglindirea fa de un pian al sistemului de coordonate
n cazul oglindirii faa de pianul xy, se inverseaz doar coordonata z, coordonatele x i y
rmnnd neschimbate. Astfel, matricea transformrii de oglindire fa de planul xy este:
Matricea oglindirii fa de planul yz este:
Matricea oglindirii fa de planul xz este:
9. 8. Compunerea transformrilor tridimensionale
Matricea corespunztoare transformrii compuse se obine prin nmulirea matricelor transformrilor
elementare. Deoarece nmulirea matricelor nu este comutativ, este important ordinea n care se aplic aceste
transformri. Matricea de transformare cea mai apropiat vectorului linie corespunde primei transformri care
se aplic n timp ce matricea de transformare cea mai deprtat este ultima care se aplic. Matematic aceasta
se exprim prin:
[V] [M] =[V] [M1] [M2] [M3]....[Mn]
unde [ Mi ] poate i orice matrice de transformare elementar: scalare, forfecare, translaie, rotire, oglindire,
proiecie.
55
[ ]
]
]
]
]
]
]
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
xy
O
[ ]
]
]
]
]
]
1 0 0 0
0 1 0 0
0 0
-1
0
0 0 0 1
yz
O
[ ]
]
]
]
]
]
]
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
yz
O
9. 9. Rotaia n jurul unei axe oarecare
Axa oarecare de rotaie (d) se specific printr-un punct A(x
o
,y
o
,z
o
) i un vector direcie C=c
x
i+c
y
j+c
z
k,
unde c
x
, c
y
, c
z
sunt cosinuii directori. Transformarea de rotaie cu un unghi n jurul axei (d) se
compune din:
1. Translaie, altfel nct punctul A s ajung n originea sistemului de coordonate.
2. Alinierea vectorului C cu una din axele sistemului de coordonate.
3. Rotaia cu unghiul n jurul axei la care s-a fcut alinierea.
4. Inversa transformrii de la pasul (2)
5. Translaia invers n punctul 1.
9. 10. Oglindirea fa de un plan oarecare
Considerm planul de oglindire specificat prinr-un punct, P(X
0
,Y
0
,Z
0
) i vectorul normal la plan, N. O
procedura de obinere a transformrii de oglindire fa de planul dat este urmtoarea:
1.Translaie astfel nct punctul P(X
0
,Y
0
,Z
0
) din plan s ajung n originea sistemului de coordonate.
2.Alinierea vectorului normal la plan, N, la axa z pozitiv. Planul de oglindire devine astfel planul z=0.
3.Oglindirea fa de planul z=0.
4.Transformarea invers alinierii de la pasul (2).
5.Translaia invers celei de la pasul (1).
Matricea transformrii de oglindire fa de un plan oarecare se compune din produsul urmtoarelor
matrice:
[M] = [T] [A
N, Z
] [O
z
] [A
N,
z]
-1
[T]
-1
unde
[ T ] - reprezint matricea de translaie;
[ A
N, z
] - reprezint matricea de aliniere a vectorului normal N cu axa z pozitiv;
[ O
z
] - reprezint matricea de oglindire fa de planul z=0;
[ A
N, Z
]
1
- reprezint matricea de aliniere invers;
[T]
-1
- reprezint translaia invers.
10. Vizualizarea scenelor
10.1.Transformarea de vizualizare 2D
Adesea, desenele produse cu ajutorul calculatorului sunt descrise ntr-un sistem de coordonate
diferit de acela la care sunt raportate pe suprafaa de afiare. De exemplu, graficul unei funcii, planul
unei case, desenul unei piese, etc. Vom numi sistemul de coordonate logice ( sau sistemul de
coordonate universale sau sistemul de coordonate utilizator), sistemul n care sunt descrise desenele
i sistemul de coordonate fizice,
(sau sistemul de coordonate dispozitiv) sistemul ataat suprafeei de afiare. Unitile de msur ale
sistemului de coordonate logice difer de acelea ale sistemului de coordonate fizice. Ele pot reprezenta
timpul, temperatura, distana, etc.
56
S considerm graficul funciei sinus. Pentru x cuprins ntre 0 i 6.28 y ia valori ntre -1 i +1.
Aadar, coordonatele (x,y) ale punctelor de pe grafic nu pot fi transmise direct funciilor de afiare ale
sistemului grafic utilizat, care opereaz n spaiul dispozitiv, cum ar fi moveto, lineto i altele din
bibliotecile Turbo C, BorlandC sau Turbo Pascal . Asupra lor trebuie s fie efectuat transormarea de
vizualizare
2D. Multe sisteme grafice permit definirea desenelor ntr-un sistem de coordonate logice, deci asigur
efectuarea transformrii de vizualizare 2D asupra coordonatelor. Astfel, funciile de afiare ale unui
sistem grafic GKS sau PHIGS opereaz n sistemul coordonatelor logice (numit world coordinate
system n terminologia standardelor respective). Deasemenea,
funciile modulului GDI (Graphical Device Interface) al sistemului Windows, permit definirea desenelor
n mai multe tipuri de sisteme de coordonate logice, asigurnd transformarea automat a coordonatelor
n sistemul coordonatelor fizice. Chiar i lucrnd cu astfel de sisteme, este necesar pentru programator s
neleag n ce const transformarea de vizualizare 2D.
Transformarea de vizualizare 2D este deci o aplicaie dintr-un sistem de coordonate n altul, care
trebuie s pun n coresponden fiecrui punct din descrierea unui desen un punct al suprafeei de
afiare. Mulimea punctelor adresabile ale suprafeei de afiare este finit, n timp ce mulimea punctelor
spaiului 2D n care este definit desenul este infinit. Pentru a fi posibil formularea matematic a
transformrii de vizualizare
2D este necesar s se limiteze mulimea punctelor spaiului logic, care se pun n coresponden
punctelor suprafeei de afiare. n acest scop se specific un dreptunghi cu laturile paralele cu axele
sistemului de coordonate logice, numit fereastr. Fiecrui punct din fereastr i se pune n coresponden
prin transformarea de vizualizare 2D un punct al suprafeei de afiare sau al unei zone dreptunghiulare
din suprafaa de afiare, numit poart de afiare sau pe scurt poart. Deaceea, transformarea de
vizualizare 2D se mai numete i transformarea fereastr-poart. Considerm pentru nceput o
aceeai0 orientare a axelor celor dou sisteme de coordonate. Fie F(xf,yf) un punct din fereastr i
P(xp,yp) punctul corespunztor lui n poart. Transformarea fereastr- poart este definit astfel nct
poziia relativ a punctului P n poart s fie aceeai cu poziia relativ a punctului F n fereastr.
Condiia se formuleaz matematic astfel:
xp-xpmin xf-xfmin
----------- = ------------ (2.18.)
xpmax-xpmin xfmax-xfmin
yp-ypmin yf-yfmin
----------- = ------------ (2.19.)
ypmax-ypmin yfmax-yfmin
unde (xfmin,yfmin), (xfmax,yfmax), (xpmin,ypmin) i (xpmax,ypmax) reprezint colurile de xminim-
yminim i xmaxim-ymaxim ale ferestrei, respectiv ale porii (figura 2.11.).
Figura 2.11.
Notm cu:
xpmax-xpmin ypmax-ypmin
sx = ----------- sy = -----------
xfmax-xfmin yfmax-yfmin
57
i tx = xpmin - sx*xfmin ty = ypmin - sy*yfmin
Din (2.18. i 2.19.) rezult:
xp = xf*sx + tx
yp = yf*sy + ty (2.20.)
care reprezint formularea matematic a transformrii fereastr-poart. Numerele sx i sy constituie
factorii de scalare ai transformrii iar tx i ty componentele vectorului de translaie. Aceast formulare a
transformrii fereastr-poart corespunde unei transformri geometrice compuse ce se aplic punctului F
pentru a obine punctul P. Transformarea poate fi formulat i ca o transformare a sistemului de
coordonate logice prin care se obine sistemul de coordonate fizice. Transformarea fereastr-poart
poate fi definit i ca transformarea care aplic dreptunghiul fereastr n dreptunghiul poart. Folosindu-
ne de aceast ultim interpretare s examinm cteva cazuri particulare, din care vom desprinde unele
caracteristici i utilizri ale transformrii de vizualizare 2D.
Fie fereastra din figura 2.12.a., cu xfmim=0, yfmin=0, xfmax=1, yfmax=1 i poarta avnd
xpmin=0, ypmin=0, xpmax=400, ypmax=200. Rezult: sx=400/1=400; sy=200/1=200; tx=0-sx*0=0;
ty=0-sy*0=0. Scalarea pe axa ox fiind de dou ori mai mare dect aceea pe axa oy, orice desen definit n
fereastr va fi deformat (lit). Dac acest efect este nedorit, atunci trebuie ales ca factor de scalare al
transformrii s=sx=sy=min(sx,sy). Procednd n acest fel n exemplul ales, vom constata c desenul din
fereastr este afiat n jumtatea stng a porii (figura 2.12.b). Pentru ca desenul s apar centrat n
poart este necesar s se efectueze o translaie suplimentar, egal cu 100 n cazul de fa (figura
2.12.c.).
----------------------------------------
-----------------------------------------
Figura 2.12.
n general, translaia suplimentar se calculeaz astfel:
tsx = (xpmax-xpmin-sx*(xfmax-xfmin))/2
tsy = (ypmax-ypmin-sy*(yfmax-yfmin))/2
adic, diferena dintre latura porii i latura ferestrei scalat, mprit la doi. Dac xfmin # 0 sau yfim #
0 i xpmin=0, ypmin=0, atunci tx=-sx*xfmin, ty=-sy*yfmin. Invers, dac xfmin=yfmin=0, iar xpmin #
0 sau ypmin # 0 atunci tx=xpmin, ty=ypmin.
Fie funcia fereastra, pe care o putem apela pentru a specifica coordonatele ferestrei i funcia
poarta, pe care o vom apela pentru a specifica coordonatele porii de afiare. Atunci, o secven de
forma:
fereastra(F1);
poarta(P1);
execut_desen;
terge_ecran ;
poarta(P2);
execut_desen;
terge_ecran;
poarta(P3);
execut_desen;
...............
58
va avea ca efect afiarea unui desen din ce n ce mai mare dac
P1 < P2 < P3 , respectiv din ce n ce mai mic dac P1 > P2 > P3.
10.2. Decuparea 2D
Efectul de mrire sau de micorare se poate obine i prin modificarea ferestrei. Dac fereastra
este mai mic dect desenul, atunci elementele desenului care ies din fereastr nu trebuie s apar n
poart. Operaia de ndeprtare a elementelor unui desen, care nu sunt coninute n fereastr se numete
decupare. Ea este efectuat, n general, de sistemele grafice care permit definirea desenelor ntr-un
sistem de coordonate
logice.
S vedem acum, concret, ce transformare trebuie s aplicm punctelor dintr-un desen definit
ntr-un sistem de coordonate logice, nainte de a le transmite funciilor de afiare din biblioteca grafic a
sistemului Borland C++ pentru DOS. Dup cum se tie, ecranul este adresat ntr-un sistem de
coordonate cu originea n colul stnga-sus, sensul cresctor al axei x fiind spre dreapta, iar al axei y n
jos. Aplicnd asupra coordonatelor formulele (2.20.), desenul definit n fereastr va fi afiat
rsturnat. Deaceea, calculul coordonatei y se modific astfel:
yp = ypmin+ypmax-(yf*sy+ty)
Pentru aceia care au utilizat biblioteca grafic a unuia dintre Turbo Pascal, Turbo C sau Borland C++,
este cunoscut funcia setviewport, apelat astfel:
setviewport(xpmin,ypmin,xpmax,ypmax,dec);
unde primii patru parametri sunt unui dreptunghi din spaiul ecran iar ultimul parametru poate avea
valoarea 1 sau zero, indicndu-se c se dorete (1) nu se dorete (0) decuparea elementelor grafice
definite n continuare n program, la marginile dreptunghiului respectiv. Putem s ne folosim de aceast
funcie pentru a aduga la transformarea fereastr-poart operaia de decupare. Aceasta impune ns o
modificare a formulelor transformrii, deoarece dup apelul funciei setviewport originea sistemului de
coordonate al ecranului este considerat a fi punctul (xpmin,ypmin). n consecin, pentru transformarea
fereastr-poart nsoit de decupare la marginile porii se va apela funcia setviewport ca mai sus, apoi
se vor calcula coordonatele n spaiul ecran astfel:
xp = xf*sx + tx - xpmin
yp = ypmax + ypmin- (yf*sy + ty) - ypmin
unde
tx = xpmin - sx*xfmin + tsx
ty = ypmin - sy*yfmin + tsy
sau,
xp = xf*sx + txd
yp = ypmax - (yf*sy +tyd)
unde
txd = -sx*xfmin + tsx
tyd = ypmin - sx*yfmin + tsy
Se pot defini cteva subprograme utilizabile n orice program scris n limbajul C sau n limbajul
Pascal, pentru efectuarea tansformrii fereastr-poart. Pentru evitarea recompilrii lor odat cu
59
programul C n care sunt apelate, subprogramele vor fi grupate ntr-un fiier separat ce se va include n
fisierul proiect(.PRJ) al programului; astfel, ele vor
fi compilate o singur dat. n cazul implementrii n limbajul Pascal, ele vor constitui o unitate (unit);
este suficient apoi s se declare utilizarea unitii (uses nume_unitate) n programul care le apeleaz.
Pachetul ar trebui s conin cel puin urmtoarele subprograme:
-fereastra, prin care se transmit coordonatele ferestrei;
-poarta, prin care se transmit coordonatele porii;
-tiptran, prin care programatorul va specifica dac dorete ca transformarea s nu produc deformarea
desenului definit n fereastr (scalare uniform);
-Xdisp i Ydisp care efectueaz transformarea fereastr-poart asupra punctelor din descrierea
desenului;
-Vect_disp, care primete coordonatele logice ale capetelor unui vector i calculeaz lungimea
vectorului pe suprafaa de afiare;
-decupare, prin care programatorul poate specifica dac dorete ca transformarea s fie nsoit de
decupare.
Prezentm n ontinuare pachetul de subprograme implementat n limbajul C. El conine trei
funcii suplimentare:
-init_mod_grafic, care iniializeaz modul grafic i stabilete ca poart de afiare curent ntregul ecran.
Aceast funcie este necesar pentru definirea valorilor iniiale ale variabilor folosite n fiierul
Vizual.C. De aceea, apelul su n programul care folosete funciile din acest fiier este obligatorie;
-cadru_fer, care traseaz marginea ferestrei;
-cadru_poarta, care traseaz cadrul porii;
Exemplificm utilizarea funciilor din fiierul "Vizual.C" n programul urmtor, care afieaz graficele
mai multor funcii, n patru zone distincte ale ecranului. Pentru fiecare grafic este afiat sub form de
text expresia matematic a funciei (figura 2.13.). Textul este centrat pe axa x ,sub dreptunghiul de
ncadrare al graficului. n acest scop s-a folosit funcia settextjustfy.
--------------------------------------
--------------------------------------
Figura 2.13.
Impunnd scalare uniform, factorii de scalare pe ambele axe vor fi egali cu 1 i deaceea, toate cercurile
fiind incluse n fereastr vor fi incluse i n poart (figura 2.14.b.).
---------------------------------
---------------------------------
Figura 2.14.
10.4. Proiecii
60
Proieciile sunt aplicaii care transforma puncte dintr-un sistem de coordonate n-dimensional
intr-un sistem k-dimensional, unde k<n. Proiecia unui obiect 3D intr-un plan de proiecie 2D este
determinata de mulimea punctelor de intersecie ale planului cu dreptele care pornesc dintr-un punct,
numit centru de proiecie, fiecare trecnd printr-un punct ale obiectului. Aceste drepte se numesc
proiectori.
n funcie de poziia centrului de proiecie, proieciile se clasifica n:
- proiecii perspectiva - centrul de proiecie este la distanta finita de planul de proiecie.
- proiecii paralele - centrul de proiecie este la infinit.
Proiectorii sunt linii paralele care trec prin punctele ce definesc obiectul 3D. Direcia
proiectorilor se numete direcia de proiecie.
Proiecia perspectiva ofer o imagine plana a scenei 3D asemntoare cu imaginea obinut cu
ajutorul unui aparat de fotografiat. Se caracterizeaz prin:
- efectul de micorare a obiectului proiectat, proporional cu distanta de la obiect la centrul de
proiecie. Mrimea proieciei unui obiect este invers proporional cu distanta de la obiect la
centrul de proiecie.
- nu pstreaz proprietatea de paralelism pentru liniile care nu sunt paralele cu planul de
proiecie.
Proiecia unui set de linii paralele care nu sunt paralele cu planul de proiecie este un set de linii
convergente ctre un punct din planul de proiecie, numit punct de convergenta.
Proiecia paralela conserva proprietatea de paralelism. De asemenea, fetele obiectului care sunt
paralele cu planul de proiecie i pstreaz forma i dimensiunea n urma proieciei. Dup direcia
proiectorilor fata de planul de proiecie, proieciile paralele se clasifica n:
- proiecii ortografice - proiectorii sunt perpendiculari pe planul de proiecie;
- proiecii oblice - proiectorii nu sunt perpendiculari pe planul de proiecie.
Proiecii n planul XOY
Fie P un punct din spaiu, de coordonate (x,y,z), care se proiecteaz n punctul P'(x',y') din planul
de proiecie. Coordonatele punctului P' se determina cu urmtoarele relaii:
(a) Pentru proiecie paralela, dup direcia de proiecie Dta b cs
c ) * z y - ( b / y'
c ) * z x - ( a / x'
Pentru o proiecie ortografica n planul XOY, direcia de proiecie este Dt0 0 1s.
(b) Pentru proiecie perspectiva, din centrul de proiecie CP(a,b,c)
( z - c ) c * y ) / ( b * z - y'
( z - c ) c * x ) / ( a * z - x'
Proiecii axonometrice
O proiecie axonometrica este o proiecie ortografica intr-un plan care nu este paralel cu nici
unul dintre planele principale. Imaginea obinuta printr-o proiecie axonometrica este echivalenta cu una
obinuta printr-o proiecie ortografica n planul XOY, efectuata dup ce obiectului proiectat i s-a aplicat
o transformare geometrica:
) (u )*R (u R PA
x x y y
unde R
y
(u
y
) i R
x
(u
x
) sunt matricile de rotaie n jurul axei y, cu un unghi u
y
, respectiv n jurul axei x, cu
un unghi u
x
.
Alegnd corespunztor unghiurile u
y
i u
x
, obinem cele dou cazuri particulare de proiecie
axonometrica:
61
- Proiecia izometric, pentru
grade 45
grade 26 35
/- u
. /- u
y
x
+
+
- Proiecia simetric, pentru
grade 208 22
grade 705 20
. /- u
. /- u
y
x
+
+
11. Determinarea vizibilitii obiectelor la afiarea scenelor 3D
11.1. Clasificarea algoritmilor de determinare a laturilor i a feelor vizibile ale obiectului.
Vizualizarea unei scene 3D presupune determinarea feelor i laturilor vizibile ale obiectelor ce
compun scena. Procesul de determinare a feelor i laturilor vizibile dintr-un centru de proiecie sau
dup o direcie de proie-cie (corespunztor proieciei perspectiv, respectiv paralel) are ca efect
eliminarea total sau parial a laturilor i feelor obturate. n general, implementarea unor astfel de
algoritmi necesit multe prelucrri i deci implicit, mult timp de calcul. Pentru rezolvarea eficient a
problemei eliminrii laturilor i feelor nevizibile au fost dezvoltai diferii algoritmi, precum i
arhitecturi speciale de procesoare.
Algoritmii de determinare a feelor vizibile se mpart n dou categorii:
a) algoritmi n spaiul imagine - care determin obiectul scenei vizibil n fiecare pixel ecran.
b) algoritmi n spaiul obiect - care compar obiectele ntre ele, eliminnd parial sau total acele obiecte
care nu sunt vizibile.
Algoritmii n spaiul imagine determin obiectul cel mai apropiat de observator de-a lungul
proiectorului ce trece prin fiecare pixel. Afiarea unei scene 3D pe baza acestor algoritmi poate fi
descris astfel:
pentru fiecare pixel ecran, P,
execut
* determin obiectul O cel mai apropiat de observator
de-a lungul proiectorului ce trece prin pixelul P;
* afieaza pixelul P n culoarea obiectului O;
Efortul de calcul este proporional cu (n*p), unde n este numarul de obiecte ale scenei, iar p
reprezinta rezoluia ecranului.
Algoritmii n spaiul obiect au urmtoare form:
pentru fiecare obiect O al scenei
execut
* determin prile vizibile ale obiectului O (prile
care nu sunt obturate de alte pri ale sale sau de
alte obiecte);
afieaz prile vizibile ale obiectului O;
62
Efortul de calcul n acest caz este proporional cu (n*n), n fiind numrul de obiecte ale scenei
3D. Algoritmii n spaiul obiect sunt mai leni (cu toate c, de regul, n<p) i mai dificil de implementat,
fiecare pas al algoritmului fiind mai complex.
Algoritmii n spaiul imagine determin vizibilitatea n fiecare pixel ecran. Modificarea rezoluiei
sau a ferestrei ecran implic reluarea calculelor n ntregime. Algoritmii n spaiul obiect determin
vizibilitatea fiecrui obiect al scenei, calculele efectundu-se independent de rezoluia ecranului. De
aceea este necesar o operaie suplimentar de afiare a obiectelor vizibile, la dimensiunea ecran dorit.
n cazul n care se schimb rezoluia ecranului sau dimensiunea ferestrei ecran, este suficient s se
execute doar aceast operaie, deoarece geometria proieciilor obiectelor vizibile nu se modific n baza
de date.
Precizia algoritmilor n spaiul imagine este determinat de rezoluia ecranului. Pentru algoritmii
n spaiul obiect, precizia imaginii este determinat de precizia definirii obiectelor.
Primii algoritmi care s-au dezvoltat au fost algoritmii n spaiul obiect, acetia fiind adecvai
echipamentelor grafice vectoriale. Astfel sunt algoritmii de eliminare a muchiilor ascunse (hidden line
removal), care consider obiectele descrise prin laturi. Pornind de la aceste date de intrare, se elimin
muchiile total obturate, iar cele parial obturate sunt nlocuite cu unul sau mau multe segmente vizibile.
Odat cu rspndirea echipamentelor de tip raster au fost dezvoltai diferii algoritmi n spaiul imagine,
calculele de vizibilitate efectundu-se iniial pentru un numr relativ mic de pixeli. Ulterior s-au
dezvoltat algoritmi care combin cele dou metode, urmrindu-se obinerea unei precizii bune a imaginii
i o vitez sporit de execuie.
Transformarea de proiecie
Determinarea feelor vizibile pentru o scen compus din mai multe obiecte se realizeaz n
spaiul 3D, nainte de proiecia n plan, care distruge informaia de adncime. Pe baza acestei informaii
se face testul de vizibilitate, ideea de baz fiind de a determina dac un punct A(x1,y1,z1) obtureaz sau
nu un punct B(x2,y2,z2). Punctul A poate obtura punctul B numai dac cele dou puncte sunt pe acelai
proiector, indiferent de tipul de
proiecie (paralel sau perspectiv).
B
/ Dac A i B sunt pe acelai
/ proiector, atunci se compar
/ coordonatele z1 i z2 pentru a
A proiector determina punctul din fa (mai
apropiat de observator).
Comparaia n adncime se efectueaz de regul dup transformarea de normalizare, Npar sau
Nper (vezi paragraful 3.2.2.3). Testul de adncime pentru a determina dac punctele A i B sunt pe
acelai proiector, se reduce la comparaiile:
x1 = x2 i y1 = y2 - pentru proiecia paralel,
x1/z1=x2/z2 i y1/z1 = y2/z2 - pentru proiecia perspectiv.
Cele patru operaii de mprire necesare n cazul proieciei perspectiv se efectueaz ori de cte
ori se compar dou puncte care pot fi sau nu pe acelai proiector. Aceste calcule se elimin dac se
63
aplic o transformare de proiecie asupra obiectului astfel nct proiecia paralel a obiectului
transformat s fie acceai cu proiecia perspectiv a obiectului netransformat. Transformarea de
proiecie distorsioneaz obiectul i deplaseaz centrul de proiecie din origine la infinit, de-a lungul axei
z pozitive. Ea are ca efect transformarea volumului de vizualizare canonic corespunztor proieciei
perspective n volumul canonic corespunztor proieciei paralele (figura 8.1).
Figura 8.1
Forma matriceal a transformrii de proiecie este dat de relaia (8.1).
M =
]
]
]
]
]
]
+ +
0 1 0 0
) 1 /( ) 1 /( 1 0 0
0 0 1 0
0 0 0 1
min min min
z z z
(8.1)
unde z
min
reprezint coordonata planului din fa al volumului de vizualizare trunchi de piramid.
Transformarea de proiecie se aplic numai n cazul proieciei perspectiv, tuturor punctelor care
definesc obiectele scenei 3D.
n continuare, testul de comparaie n adncime se efectueaz ca pentru proiecia paralel.
Aceast transformare conserv informaia de adncime relativ. Ea se poate aplica nainte sau dup
operaia de decupare 3D la limitele volumului de vizualizare canonic. Dac se aplic nainte de
decupare, matricea de transformare M poate fi inclus n matricea de transformare de normalizare Nper.
Urmeaz decuparea n coordonate omogene la limitele volumului definit prin:
-W X W-W Y W-W Z 0 pentru W>0
Dup decupare se efectueaz operaia de mprire la W pentru a obine coordonate carteziene
(x=X/W, y=Y/W, z=Z/W) n volumul de vizualizare canonic corespunztor proieciei paralele:
-1 x 1, -1 y 1, -1 z 0
Acest paralelipiped este situat n semispaiul z negativ, iar observatorul este considerat de-a
lungul axei z pozitive. Ordonarea descresctoare a valorilor z negative indic de fapt, creterea distanei
fa de observator. Sistemele grafice transform, n general, sistemul de coordonate 3D utilizator
dreapta n sistem de coordonate de vizualizare stnga. n acest caz, cu ct valorile z pozitive sunt mai
mari, crete distana fa de observator. n prezentarea algoritmilor de vizibilitate considerm
urmtoarea convenie: ordonarea descresctoare a valorilor z pozitive indic o cretere a distanei fa de
observator.
ncadrarea obiectelor
64
O metod de a micora numrul de operaii ntre diferitele obiecte ale scenei sau ntre proieciile
lor, este de a le include n extensii care s le ncadreze. Aceste extensii de ncadrare sunt volume -
pentru obiecte, respectiv dreptunghiuri cu laturile paralele cu axele sistemului de coordonate - pentru
proieciile lor.
Considernd determinate dreptunghiurile extensie a dou obiecte proiectate, testul de intersecie
al obiectelor se face doar dac extensiile lor se suprapun. n acest caz este posibil ca proieciile celor
dou obiecte s se suprapun sau nu (vezi figura 8.2).
Figura 8.2.
Volumele extensie pot fi paralelipipede dreptunghice, sfere sau volume infinite ce ncadreaz o
singur dimensiune a obiectului. n figura 8.3 sunt prezentate volume infinite care ncadreaz obiectele
pe axa z. Se determin astfel, dac obiectele se suprapun sau nu n adncime.
Figura 8.3.
Cele dou obiecte nu se suprapun pe z dac :
z
max
1 < z
min
2 sau z
max
2 < z
min
1
Pentru a efectua testul de suprapunere este necesar s se determine valorile z extreme ale
obiectelor. Trebuie deci iterate toate punctele ce definesc obiectele, ceea ce implic de regul, consum
mare de timp.
Costul total al testului de intersecie pentru un obiect, utiliznd extensiile de ncadrare, poate fi
exprimat astfel :
T = n*T1 + m*T2
unde n = numrul de teste de suprapunere pentru extensia obiectului;
T1 = costul unui test de suprapunere;
m = numrul de teste de intersecie dac extensiile se
suprapun;
T2 = costul unui test de intersecie a obiectului cu alt
obiect.
Se observ c n i T2 sunt constante pentru un obiect, iar m n. Componentele T1 i m sunt
determinate de forma i mrimea extensiei de ncadrare. Pentru un volum de ncadrare ct mai strns de
obiect, valoarea lui m scade dar crete n schimb valoarea lui T1. Forma volumului de ncadrare poate fi
diferit pentru dou obiecte identice, n funcie de orientarea lor.
Partiionarea spaiului
65
Partiionarea spaiului sau subdivizarea spaial reprezint o tehnic ce permite divizarea unei
probleme n probleme mai simple. Ideea de baz este de a atribui obiectele scenei sau proieciile lor,
unor grupuri coerente spaial.
Planul de proiecie poate fi divizat n dreptunghiuri egale, stabilindu-se n faza de preprocesare
n ce dreptunghiuri se afl proiecia fiecrui obiect n parte. Testul de intersecie se face numai pentru
acele obiecte pentru care proieciile lor se afl n acelai dreptunghi.
In spaiul 3D partiionarea se face n cuburi de aceeai dimensiune. Testul de intersecie a unui
proiector cu obiectele din scen se simplific mult deoarece se determin mai nti cuburile ce pot fi
intersectate de proiector; n continuare se testeaz doar obiectele care sunt n aceste cuburi. n general,
obiectele scenei nu sunt distibuite uniform n spaiu. De aceea este mult mai eficient ca partiionarea s
se efectueze adaptiv, partiiile avnd dimensiuni diferite. Subdivizarea spaiului se face n acest caz
recursiv. Criteriul de terminare a recursivitii poate fi, de exemplu, numrul de obiecte dintr-o partiie.
Ierarhizarea obiectelor
Numrul de teste de intersecie necesare ntr-un algoritm de eliminare a feelor nevizibile poate fi
redus construind o ierarhie de obiecte, pe baza proprietilor de structur ale acestora. Un obiect de pe
un anumit nivel poate constitui o extensie pentru obiectele de pe nivelele inferioare (descendenii si),
dac acestea sunt incluse n el. Dac dou obiecte de pe un nivel ierarhic nu se intersecteaz, atunci nici
descendenii lor nu se intersecteaz. Similar, pentru un proiector care intersecteaz un obiect al ierarhiei,
trebuie fcut testul de intersecie cu toate obiectele descendente ale sale.
11.2. Determinarea laturilor vizibile ale unui poliedru
Algoritmii de eliminare a laturilor nevizibile sunt algoritmi n spaiul obiect, care furnizeaz o
list de segmente vizibile ce pot fi apoi afiate. Ei se folosesc atunci cnd obiectele (poliedre convexe
sau concave, cu sau fr treceri) se afieaz prin contur.
Pentru stabilirea laturilor vizibile ale unui poliedru convex sau concav sunt prezentate dou
metode simple, dar care necesit calcule pentru a determina intersecia dintre dou segmente, intersecia
ntre o dreapt i un plan, dac un punct este sau nu interior unui poligon. Cele dou metode furnizeaz
laturile vizibile - pentru poliedrele convexe, respectiv laturile i segmentele vizibile - pentru poliedrele
concave, ce pot fi apoi afiate. Obiectul este asftel reprezentat prin contur i nu pot fi efectuate operaii
de umplere sau umbrire.
a) Metoda prezentat n continuare, consider poliedrul reprezentat printr-o tabel a feelor sale.
Feele sunt poligoane descrise prin vrfuri i nu sunt orientate.
Laturile vizibile ale unui poligon convex se determin pe baza vizibilitii vrfurilor sale astfel:
1. Se proiecteaz feele poliedrului n planul de proiecie (de regul planul (xy)).
2. Se determin ecuaia planului fiecrei fee a poliedrului.
3. Se determin vrfurile vizibile ale poliedrului. Pentru fiecare vrf V se calculeaz punctul de
intersecie I, ntre proiectorul OV i planul fiecrei fee, exceptnd feele crora le aparine V. Dac
punctul de intersecie I aparine segmentului OV i proiecia sa este n interiorul proieciei feei (n
planul de proiecie), atunci V este nevizibil. Altfel V este vizibil. n figura 8.7, vrful A este nevizibil.
66
4. Dac vrful V este nevizibil, atunci toate laturile care pleac din V sun nevizibile. Astfel, laturile AB,
AD, AA din figura 8.7 sunt nevizibile. Laturile nevizibile se elimin din lista muchiilor poliedrului.
Restul laturilor sunt vizibile i se afieaz.
Dac poliedrul este concav, atunci sunt necesare calcule suplimentare pentru a determina
laturile sau segmentele de laturi vizibile. Paii algoritmului sunt :
1. Se determin vrfurile nevizibile ale poliedrului ca pentru poliedre convexe. Laturile care pleac dintr-
un vrf nevizibil sunt potenial nevizibile. Astfel, de exemplu, n figura 8.8 vrfurile 8, 9 i 10 sunt
nevizibile, iar laturile 8-7, 8-9, 8-2, 9-10, 9-3, 10-4, 10-11 sunt potenial nevizibile. Celelalte laturi
sunt vizibile.
2. Se proiecteaz poliedrul i pentru fiecare latur potenial nevizibil se calculeaz punctele de
intersecie cu celelalte laturi. Laturile potenialnevizibile care nu se intersecteaz cu alte laturi sunt
eliminate, fiind nevizibile. Pentru poliedrul din figura 8.8, punctul de intersecie al laturilor potenial
nevizibile cu celelalte laturi sunt A, B, C, D, E, F. Laturile 8-7, 10-11, 10-9 se elimin. Celelalte laturi
potenial nevizibile conin puncte de intersecie cu alte laturi.
3. Se determin segmentele vizibile ale laturilor potenial nevizibile rmase. Se observ c vizibilitatea
unei laturi se poate schimba doar la intersecia cu alt latur. Pentru a determina un segment vizibil
dintr-o latur se poate testa
vizibilitatea mijlocului segmentului, la fel ca pentru vrfurile poliedrului. Pentru exemplul considerat,
latura 3-9 conine punctele de intersecie D i E. Segmentul 3E este vizibil,iar segmentele DE i E9 sunt
nevizibile.
(a) Punct interior unui poligon
Pentru a determina dac un punct este n interiorul unui poligon se pot folosi mai multe metode.
O metod se bazeaz pe testul ca punctul considerat i unul din vrfurile poligonului s fie de
aceeai parte a oricrei laturi a poligonului. Ecuaia dreptei ce trece prin dou puncte date
(x1,y1), (x2,y2) este:
(x - x1)(y2 -y1) - (x2 - x1)(y - y1) = 0 (8.3)
Pentru punctele care nu aparin dreptei, membrul stng al ecuaiei (8.3) este pozitiv sau negativ
dup cum punctul este situat de-o parte sau de alta a dreptei. Punctul P este interior unui poligon dac
pentru fiecare latur l, P este de aceeai parte ca i unul din vrfurile poligonului ce nu aparine acelei
laturi. n pseudocodul urmtor este definit funcia InPoligon ce ntoarce valoarea 1 dac punctul A este
n interiorul poligonului P i 0 altfel. Funcia Calcul apelat ntoarce valoarea membrului stng al
ecuaiei (8.3), pentru un punct dat ca argument.
funcia InPoligon ( Poligon P, Pct A )
l = 0;
repet
fie V un vrf al poligonului P, ce nu aparine laturii l
dac ( Calcul(A) * Calcul(V) < 0 ) atunci
67
return ( 0 );
l = l + 1;
ct timp l < nrLaturi;
return (1)
O alt metod de a determina dac un punct este sau nu interior unui poligon se bazeaz pe
calculul numrului de intersecii al semidreptei ce pleac din acel punct, cu laturile poligonului. Dac
numrul de intersecii este impar, atunci punctul este n interiorul poligonului, altfel este n exterior. n
figura 8.9 s-a considerat semidreapta (d) ca fiind paralel cu semiaxa x pozitiv.
Metoda este eficient deoarece testul de intersecie nu se face pentru toate laturile poligonului.
Se exclud laturile care sunt deasupra sau sub semidreapta (d), precum i cele care sunt la stnga
punctului considerat. Astfel, n figura 8.9 laturile care se exclud sunt AB, EF, FG i GA. Fie P un
poligonul cu n vrfuri, de coordonate (x
i
, y
i
,z
i
), 0 i < n i un punct Q(x,y,z)
care se testeaz.
Paii algoritmului sunt :
1. Se proiecteaz poligonul n planul de coordonate corespunztor coordonatelor celor mai mari. Rezult
vrfurile proiectate (ui,vi), cu 0i<n.
2. Se translateaz poligonul proiectat astfel nct punctul testat Q s fie n origine. Rezult vrfurile (u
i
,
v
i
).
3. Se stabilete valoarea semn n funcie de valoarea v
0
, astfel:
semn(v
0
) = -1 , dac v
0
< 0
1 , dac v
0
* 0
4. Se iniializeaz contorul nrIntersecii la 0.
5. pentru fiecare latur delimitat de (u
a
,v
a
) i (u
b
,v
b
) execut
* determin semn(v
b
);
dac semn(v
0
) <> semn(v
b
) atunci
dac (u
a
> 0) i ( u
b
> 0 ) atunci
// linia trebuie s intersecteze axa u
+
nrIntersecii = nrIntersecii + 1;
altfel dac (u
a
> 0) sau ( u
b
> 0 ) atunci
// linia intersecteaz axa u
+
dac (u
a
- v
a
(u
b
- u
a
)/(v
b
v
a
) > 0) atunci
nrIntersecii = nrIntersecii + 1;
dac (nrIntersecii este impar)atunci Q este interior
altfel Q este exterior.
68
Punctele testate aflate pe o latur sunt arbitrar determinate ca fiind interioare sau exterioare
poligonului.
(b) Intersecia unui proiector cu un plan
Pentru a determina dac un proiector OV intersecteaz planul feei F se pot folosi dou metode.
O metod pornete de la ecuaiile parametrice ale proiectorului OV:
x = x
O
+ t(x
V
- x
O
)
y = y
O
+ t(y
V
- y
O
)
x = z
O
+ t(z
V
- z
O
)
t (0,1) pentru (x,y,z) aparinnd segmentului OV.
Dac proiectorul intersecteaz planul feei, punctul de intersecie (x
i
,y
i
,z
i
) verific ecuaia
planului, deci
Ax
O
+ By
O
+ Cz
O
+ D
t
i
= -------------------------------------- (8.4)
A(x
V
- x
O
) + B(y
V
- y
O
) + C(z
V
- z
O
)
Dac t
i
(0,1), atunci proiectorul OV intersecteaz planul feei n puncul I de coordonate
(x
i
,y
i
,z
i
), unde
x
i
= x
O
+ t
i
(x
V
- x
O
)
y
i
= y
O
+ t
i
(y
V
- y
O
)
x
i
= z
O
+ t
i
(z
V
- z
O
)
O alt metod de a stabili dac un proiector OV intersecteaz planul feei F folosete ecuaia
planului feei:
Ax + By + Cz + D = 0
Fie f(x,y,z)= Ax+By+Cz+D. Punctele O(x
O
,y
O
,z
O
) i V(x
V
,y
V
,z
V
) sunt de acceai parte a planului feei F
dac :
f(x
O
,y
O
,z
O
) x f(x
V
,y
V
,z
V
) > 0
n continuare se poate aplica una din metodele prezentate anterior pentru a stabili dac punctul
de intersecie este sau nu interior poligonului.
11.3. Determinarea feelor vizibile ale obiectului.
69
11.3.1. Algoritmul Galimberti-Montanari
Algoritmul presupune orientarea feelor poliedrului. Fiecare fa este astfel definit nct normala
sa s fie orientat spre exteriorul obiectului. Aceasta implic o parcurgere a vrfurilor feelor n sens
trigonometric, ca n figura 8.10. Fiecare latur aparine la dou fee ale poiedrului , fiind parcurs n
sensuri diferite pentru cele dou fee.
Normala la o fa se calculeaz ca produs vectorial a dou laturi adiacente.
Figura 8.10.
Paii algoritmului sunt:
1. Se proiecteaz poliedrul n planul de proiecie, considernd o proiecie perspectiv. Pentru fiecare fa
proiectat se determin vizibilitatea sa, calculnd componenta z a produsului vectorial a dou laturi
adiacente. Astfel, dac V
0
(x0,y0), V
1
(x1,y1) i V
2
(x2,y2) sunt proieciile a trei vrfuri ce definesc dou
laturi adiacente, atunci produsul vectorial al lor se definete ca fiind:
Figura 8.10 Orientarea feelor unui poliedru
i j k
V
0
V
1
x V
1
V
2
= x1-x0 y1-y0 0
x2-x1 y2-y1 0
iar componenta z a normalei este:
Nz = (x1-x0)(y2-y1) - (x2-x1)(y1-y0) (8.5)
Faa este potenial vizibil dac valoarea calculat Nz este pozitiv i este nevizibil dac Nz
este negativ. Dac Nz este 0, atunci cele dou laturi sunt colineare i se recalculeaz pentru alt pereche
de laturi adiacente ale feei.
Dac poliedrul este convex, atunci se afieaz feele potenial vizibile i algoritmul s-a terminat. Dac
poliedrul este concav sau cu treceri, atunci se elimin din lista laturilor, muchiile nevizibile.
Laturile invizibile sunt laturile care aparin la dou fee invizibile.
Fie de exemplu, poliedrul din figura 8.11 (a). Feele potenial vizibile ale sale sunt reprezentate
n figura 8.11 (b), dup ce s-au eliminat laturile nevizibile.
a) b)
Figura 8.11
2. Se studiaz vizibilitatea fiecrei laturi n raport cu feele potenial vizibile. Poziiile unei laturi AB n
raport cu o faa F sunt reprezentate n figura 8.12 (a). Se disting urmtoarele cazuri:
(a) Ambii proiectori nu intersecteaz planul feei. Latura AB este de aceeai parte a planului feei ca i
observatorul. n acest caz, latura AB este vizibil n raport cu faa F.
(b) Unul din cei doi proiectori intersecteaz planul feei iar cellalt nu.
70
(b1) Dac punctul de intersecie aparine feei (proiectorul intersecteaz faa), atunci un vrf al laturii
este vizibil iar cellalt este obturat de faa F. Segmentul vizibil este cuprins ntre vrful vizibil i punctul
de intersecie al laturii cu faa.
(b2) Dac punctul de intersecie nu aparine feei (proiectorul nu intersecteaz faa), atunci segmentul
sau segmentele vizibile ale laturii n raport cu faa F se determin ca n cazul (c).
(c) Ambii proiectori intersecteaz planul feei. n acest caz se studiaz vizibilitatea laturii folosind
proiecia perspectiv a feei i a laturii n planul de proiecie. Considernd faa poligon convex, se disting
patru cazuri, reprezentate n figura 8.12 (b):
(c1) Ambele vrfuri ale laturii sunt n interiorul feei, deci latura este nevizibil.
Figura 8.12
(c2) Un vrf al laturii este n interiorul feei iar cellalt n exterior. Segmentul vizibil este
determinat de vrful exterior i punctul de intersecie al laturii cu una din laturile feei.
(c3) Ambele vrfuri ale laturii sunt n exteriorul feei i latura intersecteaz faa. Se obin dou
segmente vizibile determinate de vrfurile laturii i punctele de intersecie ale laturii cu laturile feei.
(c4) Ambele vrfuri ale laturii sunt n exteriorul feei i latura nu intersecteaz faa. Latura este
vizibil n raport cu faa.
11.3.2. Algoritmul Z-buffer
Algoritmul Z-buffer este considerat cel mai simplu algoritm de afiare a scenelor 3D numai prin
prile vizibile. Acest algoritm nu necesita comparaii intre obiecte sau calcule de intersecie i de aceea
este simplu de implementat. Necesita insa ca structura de date un buffer (tablou bidimensional), avnd
un numr de elemente egal cu rezoluia ecranului. Fiecare element din buffer memoreaz informaia de
adncime (coordonata z) corespunztoare unui pixel (x,y). De aceea, structura de date folosita i
algoritmul se numesc Z-buffer.
Algoritmul, pe care-l schim n continuare, se executa asupra unei scene 3D, dup ce asupra
scenei s-a efectuat transformarea de proiecie. De asemenea, pentru reducerea
numrului de poligoane tratate n cadrul algoritmului, se recomanda ca mai nti sa se determine fetele
auto-obturate ale fiecrui obiect. Metoda "backface culling" reduce, n medie, la
jumtate numrul fetelor care urmeaz sa fie procesate n continuare de algoritmul folosit pentru
vizualizarea scenei 3D.
Paii algoritmului sunt:
1. Se iniializeaz memoria ecran n culoarea fondului i Z-buffer-ul cu valoarea ce corespunde
planului din spate al volumului de vizualizare canonic (unu). Valoarea minima din Z- buffer (zero)
corespunde coordonatei z a planului din fata al volumului (se considera sistemul de coordonate
carteziene 3D stnga, observatorul fiind situat la infinit ).
2. Se proceseaz poligoanele prin care sunt reprezentate obiectele scenei 3D, intr-o ordine arbitrara.
Pentru fiecare pixel (x,y) ce aparine proieciei unui poligon, se calculeaz coordonata z a punctului
poligonului care se proiecteaz n acel pixel. Fie (x,y,z1) punctul poligonului care se proiecteaz n
pixelul (x,y). Fie z0 valoarea din Z-buffer corespunztoare pixelului (x,y). Daca z1<z0 atunci
punctul (x,y,z1) este mai apropiat de observator dect punctul pentru care exista memorata
71
informaia de adncime n Z-buffer. Fiind mai aproape de observator, este vizibil i deci se nscrie
culoarea sa n memoria ecran iar informaia de adncime n Z-buffer.
Algoritmul presupune calculul coordonatei z pentru puncte aparinnd proieciei unui poligon.
Pentru generarea punct cu punct a poligonului n memoria ecran, este necesara o funcie de haurare
('fill') poligon n spaiul ecran t1s.
Coordonata z a fiecrui punct se poate obine printr-o metoda incrementala. Fie
0 D Cz By Ax + + +
ecuaia planului poligonului care se proceseaz, din care rezulta coordonata z:
C
-Ax -By -D
z
Fie z(x,y
h
) coordonata z a punctului (x,y
h
) ce aparine liniei de haurare y
h
. Conform relaiei (1),
coordonata z a punctului (x+1,yh) este:
C z(x,yh)-A/
C
A
-Ax-Byh-D
C
)-Byh-D -A(x
,yh) z(x
+
+
1
1
Cum A/C este o constanta pentru un poligon, rezulta:
1 1 ct z(x,yh) - ,yh) z(x +
(2)
Deci, coordonata z a unui punct (x,y
h
) aparinnd liniei de haurare y
h
se obine scznd din
coordonata z a punctului anterior o constanta.
O relaie similara se deduce i pentru coordonata z a primului punct de pe fiecare linie de
haurare:
)-B/C z(x,y
C
B
-D -Ax-By
C
-D y -Ax-B
) z(x,y
h
h h
h
+
+
) 1 (
1
2
1 ) - ct z(x,y ) z(x,y
h h
+
(3)
Relaiile (2) i (3) pot fi utilizate pentru poligoane plane, atunci cnd se cunoate ecuaia
planului.
O alta soluie de a calcula coordonata z este interpolarea lineara. Cunoscnd coordonatele z ale
vrfurilor poligonului se calculeaz z(x,y) de-a lungul laturilor poligonului i apoi de-a lungul liniei de
haurare astfel:
2 1
1
2 1 1
-y y
-y y
) -z -(z z z
h
a
4 1
1
4 1 1
-y y
-y y
) -z -(z z z
h
b
a b
c b
a b b c
-x x
-x x
) -z -(z z z
Ca i n cazul anterior, se pot determina relaii incrementale att pentru punctele de pe linia de
haurare ct i pentru linii de haurare consecutive. Astfel, pentru doua puncte consecutive (x,y
h
) i
(x+1,yh) ale liniei y
h
avem:
a b
b
a b b h
-x x
-x x
) -z -(z z y x z ) , (
a b
a b
h
a b
b
a b b h
x x
z z
y x z
-x x
x - x
) -z -(z z y x z
+
+
+ ) , (
) 1 (
) , 1 (
Fie (zb-za)/(xb-xa)=incH - valoare constanta pentru o linie de haurare y
h
. Rezulta:
incH ) z(x,y ) ,y z(x
s s
+ +1
(4)
Analog, pentru doua linii de hasurare consecutive avem:
72
2 1
h 1
2 1 1 h
y - y
y - y
) z - (z - z ) y z(x,
2 1
2 1
2 1
1
2 1 1
) , (
) 1 (
) 1 , (
y y
z z
y x z
-y y
y - y
) -z -(z z y x z
h
s
h
+
+
+
Fie (z1 - z2)/(y1-y2)=incV - valoare constanta de-a lungul unei laturi a poligonului, delimitata de
vrfurile (x1,y1,z1) i (x2,y2,z2). Rezulta:
incV ) z(x,y ) z(x,y
s s
+ +1
(5)
O posibila implementare a algoritmului Z-buffer este redata n urmtorul pseudocod:
pentru fiecare pixel (x,y) execut
ScriePixel( x, y, culoare_fond);
zBuffertx,ys = 1;
pentru fiecare poligon P (fata a unui obiect) executa
* calculeaz constantele ct1=A/C i ct2=B/C, necesare n calculul coordonatelor z prin interpolare;
* construiete lista laturilor poligonului, ordonata cresctor dup y
min
latura;
pentru y
h
de la y
min
-poligon la y
max
-poligon executa
* determina setul laturilor active (laturile intersectate de linia y=y
h
);
* calculeaz incremental punctele de intersecie (x
i
,y
h
,z
i
), dintre linia y=y
h
i laturile active;
* ordoneaz cresctor dup abscisa punctele de intersecie;
pentru fiecare segment delimitat de doua puncte de intersecie consecutive,
(x
ik
, y
h
, z
ik
)-(x
ik+1
, y
h
, z
ik+1
) executa pentru x de la x
ik
la x
ik+1
executa
* calculeaz incremental z(x, y
h
);
daca ( z < Z-Buffertx,y
hs
) atunci
Z-Buffertx,y
hs
= z;
ScriePixel( x, y
h
, culoare_poligon_P);
n cazul n care se specifica un model de iluminare (vezi tema 3) i se cunosc intensitile
luminoase, I, n vrfurile reelei poligonale prin care este reprezentat un obiect, calculul intensitii
fiecrui pixel se face prin interpolare liniara, odat cu calculul valorilor z. Principalul dezavantaj al
algoritmului l constituie calculul intensitii luminoase I, pentru pixeli care sunt apoi obturai de alte
poligoane mai apropiate de observator i care se proceseaz ulterior. De aceea algoritmul se poate
extinde cu o funcie care sa sorteze poligoanele dup extensia pe z, determinnd astfel o ordine de
procesare a lor. Poligoanele vor fi procesate ncepnd cu cel mai apropiat de observator.
Dimensiunea buffer-ului pentru memorarea valorilor z este determinata de dimensiunea porii de
afiare n spaiul ecran. Aceasta dimensiune este insa limitata de memoria disponibila. Din considerente
de eficienta privind memoria utilizata precum i viteza de execuie, valorile z memorate pot fi ntregi
reprezentai pe 8 sau 16 bii, n funcie de complexitatea scenei i de detaliile de reprezentare.
Implementrile hardware ale acestui algoritm folosesc valori z ntregi reprezentate pe 20-32 bii i o
memorie speciala pentru pstrarea valorilor z. Scena 3D se scaleaz astfel incit valorile z sa aparin
acestui domeniu fix. Daca numrul de bii este mai mic, din cauza erorilor de reprezentare poate apare
efectul de "aliasing" de-a lungul muchiilor comune a doua fete sau pentru obiecte deprtate care se
suprapun.
73
Viteza de execuie poate fi mbuntita daca scrierea pixelilor n memoria ecran se face prin
acces direct la aceasta i nu prin apel de funcii BIOS sau din biblioteca grafica (vezi tema 9, adaptorul
VGA).
11.3.3. Algoritmul Appel
Algoritmul Appel determin vizibilitatea laturilor unor poligoane ce descriu o scen format din
poliedre care se pot suprapune dar nu intersecta. Deci, ca restricie, nu sunt admise intersecii ale
laturilor unui poligon cu feele altor poliedre. Poliedrele pot fi convexe, concave sau cu treceri, deci
corespunztor poligoanele sunt convexe, concave sau cu goluri interioare. Algoritmul consider ca date
de intrare feele vizibile (feele din fa) ale poliedrelor, care se pot determina pe baza componentei z
a normalei la faa proiectat. De asemenea este necesar ca aceste fee s fie orientate n acelai sens.
Folosind convenia ca normala la o fa vizibil s fie ndreptat spre observator, atunci sensul de
parcurgere al conturului este sensul trigonometric. Golurile interioare unei fee vor fi parcurse n sens
antitrigonometric.
Se definesc urmtoarele concepte:
- gradul de nevizibilitate al unui punct sau segment indic numrul de poligoane ce obtureaz (acoper)
punctul, respectiv segmentul. Un segment este vizibil doar dac gradul su de nevizibilitate este 0.
Gradul de nevizibilitate al unei laturi ce trece prin spatele unei fee se incrementeaz, respectiv se
decrementeaz atunci cnd latura iese din spatele unei fee vizibile.
- linia contur este o latur comun unei fee vizibile i unei fee nevizibile, sau o latur a unei fee
vizibile care nu aparine unui poliedru nchis. Gradul de nevizibilitate al unei laturi se modific doar
cnd trece prin spatele unei linii contur. n figura 8.13 laturile AB, CD, DF sunt linii contur. Pe latura
AB s-a marcat gradul de nevizibiliate al fiecrui segment.
Figura 8.13
Algoritmul calculeaz gradul de nevizibilitate al fiecrei laturi n raport cu toate liniile contur
care nu aparin poligonului din care face parte acea latur.
O linie contur trece prin faa unei laturi, modificndu-i gradul de nevizibilitate doar dac linia
contur intersecteaz triunghiul format din vrfurile laturii i observator. n figura 8.14 sunt reprezentate
liniile contur care modific gradul de nevizibilitate al laturii AB.
------------------------------------------
Figura 8.14
------------------------------------------
Proiecia unei astfel de linii contur pe latur determin un punct de intersecie n care se modific
gradul de nevizibilitate al laturii cu +1 sau -1. Semnul incrementului (+ sau -) este determinat de sensul
produsului vectorial al laturii cu linia contur. De aceea este necesar ca toate poligoanele s respecte
aceeai convenie de parcurgere a contururilor. n figura 8.14 s-a marcat prin simbolurile (x), (*)
vectorul care intr, respectiv care iese din planul determinat de latur i linia contur. Considernd
poligoanele parcurse n sens trigonometric, atunci gardul de nevizibilitate al unei laturi se modific cu
+1 dac semnul componentei z a produsului vectorial este pozitiv; altfel se modific cu -1. n exemplul
considerat, proieciile liniilor contur pe latura AB dau punctele de intersecie R, T, S, U, V i X. Gradul
74
de nevizibilitate al segmentelor determinate de aceste puncte pe latura AB sunt 0, 1, 2, 1, 0, 1, respectiv
0.
Algoritmul ncepe prin a calcula gradul de nevizibilitate al unui vrf oarecare V
1
, determinnd
numrul de fee vizibile care l obtureaz. Pentru aceasta, se calculeaz intersecia proiectorului OV1 cu
toate poligoanele scenei 3D. Poligoanele care l obtureaz intersecteaz proiectoruln puncte ce aparin
segmentului OV
1
. Fie k gradul de nevizibilitate al vrfului V
1
. innd cont de coerena laturii, algoritmul
propag aceast valoare de-a lungul unei laturi ce pleac din V
1
. Gradul de nevizibilitate al laturii V
1
V
2
se incrementeaz cu +1 sau -1 n punctul n care latura trece prin spatele unei linii contur. Segmentele
vizibile ale laturii sunt segmentele pentru care gradul de nevizibilitate este 0. Gradul de nevizibilitate al
ultimului segment al laturii devine valoare iniial pentru urmtoarea latur. Similar se proceseaz
fiecare latur, determinnd segmentele vizibile n raport cu toate feele vizibile ale scenei.
Gradul de nevizibilitate nu se propag ntotdeauna corect de-a lungul laturilor contur care pleac
dintr-un vrf. De exemplu n figura 8.13, prin vrful G trec laturile GH, GI i GN, care au grade de
nevizibilitate diferite. Dac se proceseaz laturile poligonului NGHP ncepnd cu latura NG, atunci
gradul de nevizibilitate al vrfului G este 0. Aceast valoare nu se propag corect pentru latura GH (care
este o linie contur i are gradul de nevizibilitate 1). Valoarea iniial a gradului de nevizibilitate a unei
linii contur ce pleac din vrful V se calculeaz testnd vizibilitatea ei fa de poligoanele crora
aparine acel vrf.
12. Redarea luminii si a umbrelor n imagini
Imaginile sintetizate cu ajutorul calculatorului trebuie s fie ct mai apropiate de acelea care ar fi
percepute de ochiul uman dac scenele reprezentate n imagini ar exista n realitate. Deaceea, eliminarea
prilor nevizibile este doar primul pas n sinteza imaginilor realiste. Urmtorul pas const n redarea
luminii i a umbrelor, lund n considerare sursele de lumin, caracteristicile suprafeelor obiectelor,
poziia i orientarealor.
n acest capitol vom prezenta modelele de iluminare folosite frecvent n sinteza imaginilor. Ele
permit calculul intensitii luminii reflectate spre ochiul unui observator de diferite puncte ale suprafeei
unui obiect. Sunt dou clase de modele de iluminare: modele locale i modele globale. n modelele
locale, intensitatea luminii se determin innd cont numai de lumina incident care provine de la una
sau mai multe surse de lumin, de orientarea i caracteristicele fizice ale suprafeei. ntr-un model global
se ine cont n plus de lumina reflectat i transmis de celelalte obiecte ale scenei sintetizate. Dintre
modelele globale, cel mai cunoscut este cel folosit n metoda ray-tracing, pe care o prezentm n
paragraful 9.7. n paragrafele 9.2 i 9.3 sunt prezentate modele locale pentru calculul intensitii luminii
ntr-un punct al unei suprafee iar n 9.4, modelele utilizate n practic pentru redarea suprafeelor
iluminate. Unele aspecte legate de modelarea transmisiei luminii sunt referite n paragraful 9.5. Redarea
n imagine a umbrelor produse de obiectele dintr-o scen 3D luminat de una sau mai multe surse
confer un grad inalt de realism imaginii. n paragraful 9.6 sunt prezentate mai multe metode de
generare a umbrelor, corelate cu diferii algoritmi de eliminare a prilor nevizibile n care iluminarea
este determinat prin modele locale.
n primul paragraf al acestui capitol reamintim pe scurt proprietile luminii apoi prezentm
cteva dintre modelele folosite pentru reprezentarea culorilor n sistemele de sintez a imaginilor.
75
12.1. Proprietile luminii.
Lumina este energie electromagnetic. Ea reprezint zona din spectrul electromagnetic cuprins
ntre lungimile de und de 380 i 780 nanometrii. Limita inferioar a zonei corespunde culorii violet iar
cea superioar culorii rou. ntre cele dou limite ochiul poate distinge circa 350000 de culori.
Atunci cnd energia luminoas cade pe suprafaa unui obiect, ea poate fi absorbit, reflectat sau
transmis. Deci, lumina perceput de ochi provine fie direct de la o surs, fie indirect, datorit reflexiei
i a transmisiei sale de ctre obiectele din mediul nconjurtor.
Lumina care conine toate lungimile de und din spectrul vizibil n proporii aproximativ egale
se numete acromatic. Lumina acromatic provenit de la o surs este perceput ca alb. Lumina
acromatic provenit de la un obiect este perceput ca alb, neagr sau ca o nuan de gri n funcie de
proprietile fizice ale suprafeei obiectului. Obiectele care reflect acromatic mai mult de 80% din
lumina incident alb apar ca albe. Cele care reflect acromatic mai puin de 3% din lumina incident
apar ca negre.
Lumina care conine mai multe lungimi de und n proporii inegale se numete cromatic.
Astfel, dac predomin lungimile de und de la limita superioar a spectrului vizibil, lumina perceput
este roie sau rocat. Culoarea unui obiect depinde att de distribuia lungimilor de und n lumina care
cade pe obiect ct i de caracteristicile fizice ale obiectului. Dac obiectul reflect sau transmite numai o
band ngust de lungimi de und, celelalte fiind absorbite, obiectul apare colorat. Lungimile de und
din lumina reflectat sau transmis determin culoarea obiectului. De fapt, energia electromagnetic nu
are culoare. Culoarea este rezultatul unui proces psiho-fiziologic. n particular, este posibil ca o aceeai
culoare s nu fie perceput la fel de doi indivizi.
Definiia psiho-fiziologic a unei culori cuprinde:
-Nuana, care caracterizeaz culoarea (rou, galben, verde, etc); ea este determinat de lungimea de und
dominant a distribuiei spectrale a culorii.
-Saturaia sau puritatea, care este o msur a amestecului de alb ntr-o culoare pur; aceast noiune
permite s se fac distincie ntre rou i roz, ntre albastru i bleu, etc. O culoare pur are saturaia
100%. Lumina acromatic are saturaia 0%.
-Luminozitatea sau strlucirea, care reprezint intensitatea luminii. Luminozitatea este o caracteristic a
unui obiect emitor de lumin n timp ce strlucirea caracterizeaz un obiect neemitor, care reflect
lumina.
n figura 9.1.a este redat distribuia energiei luminii albe iar n figura 9.1.b distribuia energiei
cu o lungime de und dominant, care este perceput de ochi ca o culoare. Cu ct diferena Ed-Ew este
mai mare cu att culoarea este mai pur. Dac Ew =0 , culoarea are puritatea 100% iar lumina cu un
astfel de spectru este numit monocromatic. Prin definiie, lumina monocromatic are un spectru cu o
lrgime de band de un nanometru.
Figura 9.1.
Culorile percepute de ochi sunt n general amestecuri de culori pure. Cea mai cunoscut dintre
teoriile privind formarea culorilor n sistemul ochi-creier este aceea conform creia n retina ochiului
76
uman exist trei tipuri de conuri, fiecare tip fiind sensibil la una dintre culorile rou, verde i albastru. n
figura 9.2 sunt redate rezultatele obinute pe cale experimental
Figura 9.2. Figura 9.3.
De exemplu, la lumina corespunztoare lungimii de und de 550 nanometrii, receptorii de
albastru au o senzitivitate de 0%, cei de verde de circa 55% iar cei de rou de circa 45%. Curbele arat
c receptorii de albastru sunt mult mai puin sensibili dect cei de rou i de verde. Suma celor trei curbe
de rspuns, redat n figura 9.3, este numit curba de luminozitate. Ea ilustreaz rspunsul ochiului la
lumin de luminozitate constant atunci cnd variaz lungimea de und dominant; senzitivitatea
maxim corespunde luminii cu lungimea de und n jur de 550 nm, perceput ca galben-verde. Culorile
rou, verde i albastru se numesc culori primare. Prin amestecul lor n proporii egale se obine alb.
Dou culori care prin amestec produc lumin alb se numesc complementare. Amestecnd dou culori
primare se obine culoarea complementar celei de a treia. De exemplu, albastru+verde=cian,
rou+verde=galben, rou+albastru=magenta. Culorile rou, verde i albastru se numesc i primitive
aditive deoarece ele permit formarea de nuane prin adunarea lor n diferite proporii. Acest mod de
definire a culorilor corespunde echipamentelor emitoare de lumin (dispozitive de vizualizare cu
ecran). Culorile complementare primitivelor aditive sunt cian, magenta i galben. Astfel, alb-rou=cian,
alb-verde=magenta, alb- albastru=galben. Ele permit specificarea de nuane prin extragerea lor n
diferite proporii din alb. Deaceea, se numesc primitive extractive. Sczndu-le n proporii egale din alb
se obin diferite nuane de gri. Primitivele extractive se folosesc pentru a defini culorile reflectate de un
document imprimat.Pigmenii existeni n cernelurile tipografice absorb culorile complementare acelora
ale pigmenilor. De exemplu, pigmentul de culoare magenta absoarbe din lumina incident
componentele corespunztoare luminii verde, iar cel de culoare galben, componentele corespunztoare
luminii albastre. Deaceea, o suprafa care conine pigmeni magenta i galben va reflecta (sau
transmite) lumin roie. Dac lumina roie este incident pe o suprafa de culoare cian suprafaa va fi
vzut neagr, deoarece toate componentele luminii incidente au fost extrase.
12.2. Modele de culoare
Exist mai multe modele folosite pentru reprezentarea culorilor n sistemele de sintez i de
analiz a imaginilor. Unele dintre ele sunt orientate ctre echipamente, adic se bazeaz pe culorile
primare folosite de echipamente pentru redarea culorilor; n aceast categorie sunt: RGB, CMY i YIQ.
Alte modele se bazeaz pe proprietile psiho-fiziologice ale culorilor. Deaceea se spune c sunt
orientate ctre utilizator; astfel sunt modelele HSV i HLS.
Un model de culoare specific un sistem de coordonate 3D i un subspaiu al culorilor n
sistemul de coordonate respectiv. Fiecare culoare se reprezint printr-un punct n subspaiul culorilor.
Modelul RGB (Red, Green, Blue)
A fost propus de NTSC (National Television Standards Commitee) ca model de reprezentare a
culorilor pentru echipamentele de afiare cu tub catodic.
Subspaiul culorilor este cubul unitate, definit n sistemul de coordonate carteziene 3D (figura
9.4). Fiecare ax corespunde unei culori primare: rou, verde i albastru. O culoare se specific prin trei
77
valori reale cuprinse ntre 0 i 1, reprezentnd contribuiile celor trei culori primare la formarea culorii.
Nuanele de gri sunt reprezentate prin punctele diagonalei principale. Ele corespund amestecului n
proporii egale a celor trei culori primare.
Figura 9.4.
Modelul CMY (Cyan, Magenta, Yellow)
Este utilizat pentru specificarea culorilor la dispozitivele de imprimare. Folosete acelai sistem
de coordonate i acelai subspaiu al culorilor ca i modelul RGB cu deosebirea c originea corespunde
culorii alb, vrful (1,1,1) culorii negru iar culorile primare sunt cian, magenta i galben (figura 9.5.). n
acest model o culoare se specific prin trei valori cuprinse ntre 0 i 1, reprezentnd proporiile n care
trebuie s fie amestecai cei trei pigmeni ce extrag componentele luminii albe. Culoarea negru se obine
amestecnd n proporii maxime culorile primare. n general ns, datorit imperfeciunilor cernelurilor,
prin amestecul n proporii maxime al celor trei pigmeni nu se obine negru. De aceea, n loc de CMY
se utilizeaz sistemul CMYK:
K = min(C,M,Y)
C = C - K
M = M - K
Y = Y - K Figura 9.5.
Conversia unei culori din modelul RGB n modelul CMY i invers este foarte simpl. Ea poate
fi exprimat astfel:
[C M Y] = [1 1 1] [R G B]
respectiv
[R G B] = [1 1 1] [C M Y]
Modelul YIQ
Acest model este o recodificare a modelului RGB, stabilit n 1953 de ctre NTSC, prin care s-a
urmrit compatibilizarea transmisiei imaginilor color cu a celor alb-negru.
Subspaiul culorilor n acest model este un poliedru convex raportat la sistemul cartezian 3D,
care se aplic n cubul RGB prin inversa transformrii:
]
]
]
]
]
]
]
]
]
]
]
]
]
]
]
B
G
R
Q
I
Y
312 . 0 523 . 0 211 . 0
322 . 0 274 . 0 596 . 0
114 . 0 587 . 0 229 . 0
Prin specificarea culorilor n modelul YIQ se evit o problem TV important: dou culori
diferite n modelul RGB se pot afia la fel pe un ecran alb-negru. Problema este evitat asigurndu-se c
dou culori ntre care ochiul face distincie vor avea valori distincte ale luminozitii, reprezentat prin
78
componenta Y, i deci pe un ecran alb-negru vor fi afiate cu intensiti diferite. Modelul se bazeaz pe
faptul c sistemul vizual este mai sensibil la schimbri ale luminozitii dect la schimbri ale nuanei
sau ale saturaiei ( care sunt reprezentate n acest model prin componentele I i Q). Deaceea, semnalului
Y i s-a alocat cea mai mare parte a lrgimii de band disponibile. Proporiile culorilor primare n
sistemul NTSC au fost determinate astfel inct s se obin curba standard de luminozitate. Deoarece
informaia de luminozitate este coninut n componenta Y, televizoarele alb-negru folosesc numai acest
semnal.
Modelul HSV (Hue, Saturation, Value)
Specificarea culorilor n modelele RGB i CMY poate fi dificil pentru utilizatorii unui sistem
grafic. Artitii specific culorile prin tente, nuane i tonuri. Pornind de la un pigment pur, un artist
adaug alb pentru a obine o tent, negru pentru a obine o nuan, alb i negru pentru a obine o
tonalitate a culorii. Aceasta corespunde reprezentrii triunghiulare din figura 9.6.
Figura 9.6.
Aeznd triunghiurile corespunztoare culorilor pure n jurul unei axe centrale alb-negru, se
obine reprezentarea tri- dimensional de forma unui hexacon, redat n figura 9.7.
Figura 9.7.
Modelul HSV, creat de Smith [SMIT78], folosete noiunile de nuan (hue), saturaie
(saturation) i luminozitate (value). Baza hexaconului corespunde culorilor de intensitate maxim
(V=1). Nuana este definit prin unghiul de rotaie n jurul axei verticale, unghiul zero corespunznd
culorii rou. Culorile complementare sunt situate la 180 de grade una fa de alta pe baza hexaconului.
Saturaia este definit prin distana de la axa hexaconului la marginile hexaconului, pentru toate valorile
lui V. Ea variaz de la zero, pe ax, la 1, pe feele laterale ale hexaconului. O combinaie de numai dou
culori primare d o culoare cu saturaie maxim, dar un amestec n care toate cele trei culori primare
sunt diferite de zero nu poate produce o culoare cu saturaia maxim. Combinaia (S=0,V=1) corespunde
culorii alb iar prin (S=0, 0<=V<=1) se reprezint nivelele de gri. Pentru S=0 valoarea lui H este
nesemnificativ. Culorile pure sunt reprezentate prin V=1 i S=1. H, S, i V corespund elementelor din
sistemul de culori al unui arist. Astfel, selectarea pigmentului pur cu care se ncepe nseamn alegerea
lui H. Adugarea de alb nseamn micorarea lui S. Adugarea de negru nseamn micorarea lui V. Se
obin diferite tonuri micornd att pe V ct i pe S. Baza hexaconului corespunde suprafeei vzute
atunci cnd se privete cubul RGB dinspre vrful (1,1,1) de-a lungul diagonalei principale (figura 9.8).
Figura 9.8.
Fiecare plan de V constant din spaiul HSV corespunde vederii unui subcub din cubul RGB. Diagonala
principal a cubului RGB devine axa principal n spaiul HSV. Aceast interpretare conduce la
urmtorii doi algoritmi de conversie ntre modelele RGB i HSV:
79
Modelul HLS (Hue, Lightness, Saturation)
Modelul este utilizat de firma Tektronix. Subspaiul culorilor are forma unui dublu hexacon
(figura 9.9.). Componentele H i S sunt definite la fel ca n modelul HSV. n acest model culorile
primare cu saturaie maxim i complementarele lor sunt reprezentate prin S=1, L=0.5. Conversia RGB-
HLS i invers este efectuat pe baza unor algoritmi asemntori acelora de conversie RGB-HSV i
HSV-RGB.
Interpolarea in spaiul culorilor
Exist mai multe metode folosite n iluminarea scenelor 3D care se bazeaz pe interpolarea
culorilor. De exemplu, calculul intensitii n modelul Gouraud, calculul iluminrii ntr-un punct al unei
suprafee transparente i altele. Rezultatul interpolrii a dou culori depinde de modelul de culoare n
care sunt specificate. Astfel, rezultatul interpolrii n oricare dintre modelele RGB, CMY i YIQ va fi
acelai, deoarece conversiile ntre aceste modele sunt transformri afine. n schimb rezultatul interpolrii
n HSV sau n HLS va fi diferit de acela al interpolrii n RGB.
Fie dou culori specificate n modelul RGB, C1=(1,0,0) i C2=(0,1,0). Le interpolm cu ponderi
egale n modelele RGB i HSV:
(a) n modelul RGB:
C=t*C2 + (1-t)*C1 unde t=0.5, se obine
C=(0.5, 0.5, 0), care convertit n HSV ne d (60, 1, 0.5)
(b) in modelul HSV:
C1 se reprezint n HSV prin (0, 1, 1) iar
C2 prin (120, 1, 1)
C= 0.5*(0,1,1)+ 0.5*(120,1,1) = (60, 1, 1)
Deci, culorile obinute n cele dou cazuri sunt diferite.
Alegerea modelului n care se efectueaz interpolarea depinde de rezultatul dorit. De exemplu,
dac se dorete interpolarea a dou culori cu o anumit nuan (sau saturaie), meninndu-se aceei
nuan (saturaie) pentru toate culorile interpolate, se va alege modelul HSV sau HLS.
12.3. Modele de reflexie a luminii
Caracteristicile luminii reflectate de suprafaa unui obiect depind de lungimile de und coninute
n lumina incident, direcia i geometria sursei luminoase, de orientarea suprafeei i de proprietile
materialului din care este construit suprafaa. Lumina reflectat de o suprafa real (care nu este
difuzor perfect sau reflector perfect) este considerat ca avnd o component difuz i una specular.
Expresia care modeleaz intensitatea luminii reflectate intr-un punct al unei suprafee este
definit pentru o suprafaa necolorat i o lumin incident monocromatic, deci caracterizat printr-o
anumit lungime de und . n cazul general, lumina reflectat nu este monocromatic, deaceea pentru
calculul su expresia ar trebui s fie evaluat continuu pe intregul domeniu al spectrului de modelat. n
practic, expresia se evalueaz pentru cele trei componente ale modelului de culoare folosit. Aceast
simplificare, dei nu corespunde realitii, este uor de implementat i conduce la rezultate acceptabile.
80
12.3.1. Reflexia difuz
Lumina reflectat difuz de o suprafa este dispersat regulat n toate direciile. Deci, intensitatea
sa este considerat a fi aceeai, din oricare poziie ar privi observatorul. Legea lui Lambert definete
reflexia luminii provenite de la o surs punctiform, de ctre un difuzor perfect. Conform acestei legi,
intensitatea luminii reflectate de un difuzor perfect, ntr-un punct P, este proporional cu cosinusul
unghiului dintre direcia luminii incidente i normala la suprafa n punctul P (figura 9.10.):
I
d
=I
l
* K
d
* cos(i) 0 i /2 (9.1.)
unde
I
l
este intensitatea luminii incidente iar
K
d
este coeficientul de difuzie a luminii incidente, 0 k
d
1.
Figura 9.10.
Dac i este mai mare ca /2, suprafaa nu primete lumin de la surs (sursa de lumin se afl n
spatele suprafeei). Coeficientul de difuzie depinde de materialul din care este construit suprafaa
obiectului i de lungimea de und a luminii incidente. n modelele elementare de iluminare el este
considerat constant pentru o suprafa dat.
Obiectele dintr-o scen real primesc nu numai lumina emis de sursele de lumin ci i lumina
reflectat sau transmis de celelalte obiecte ale scenei. n modelele de iluminare local, lumina reflectat
sau transmis de celelalte obiecte ale scenei este numit lumin ambiant i se reprezint ca o surs de
lumin distribuit uniform n spaiu. Adugnd termenul de difuzie a luminii ambiante, modelul de
iluminare devine:
I
d
= I
a
* K
a
+ I
l
* K
d
* cos(i) 0 i /2 (9.2.)
unde I
a
este intensitatea luminii ambiante iar K
a
( 0 K
a
1) este coeficientul de difuzie a luminii
ambiante, dependent de material. Atunci cnd sursa de lumin punctiform este suficient de ndeprtat
de obiectele scenei vizualizate, vectorul L este acelai n orice punct. Sursa de lumin este numit n
acest caz direcional. Aplicnd modelul (9.2.) pentru vizualizarea a dou suprafee paralele construite
din acelai material, se va obine o aceeai intensitate (unghiul dintre L i normal este acelai pentru
cele dou suprafee). Dac proieciile suprafeelor se suprapun n imagine, atunci ele nu se vor distinge.
Aceasta deoarece n model nu se ine cont de faptul c intensitatea luminii descrete proporional cu
inversul ptratului distanei de la sursa de lumin la obiect. Deci, obiectele mai ndeprtate de surs sunt
mai slab luminate. O posibil corecie a modelului ar putea fi:
I
d
= I
a
* K
a
+ f
at
* I
l
* K
d
* cos(i) (9.3.)
unde f
at
= 1/d
2
este o funcie de atenuare; d este distana de la surs la punctul de pe suprafa considerat.
Corecia nu satisface cazul n care sursa este foarte ndeprtat; deasemenea, dac sursa este la distan
foarte mic de scen, intensitile obinute pentru dou suprafee cu acelai unghi i, ntre L i N, vor fi
mult diferite. O aproximare mai bun este urmtoarea:
f
at
= min(1/(c1 + c2*d + c3*d
2
), 1) (9.4.)
81
unde c1, c2 i c3 sunt trei constante care se asociaz sursei de lumin. Constanta c1 se alege astfel nct
numitorul s nu devin prea mic atunci cnd sursa este foarte apropiat. Valoarea funciei este limitat la
1 pentru a se asigura atenuarea.
n general, lumina incident nu este monocromatic iar suprafaa pe care cade poate fi colorat.
Deaceea, pentru calculul luminii reflectate ecuaia (9.3.) se scrie separat pentru cele trei componente ale
modelului de culoare folosit. De exemplu, dac se folosete modelul RGB, atunci ecuaia
corespunztoare componentei "Red" a culorii luminii reflectate este:
I
dR
= I
aR
*K
aR
+ f
at
*I
lR
*K
dR
*cos(i)
unde
K
ar
i K
dr
sunt coeficienii de difuzie ai culorii rou, specifici materialului suprafeei.
O alt expresie folosit n acelai scop [FOLE92] este:
I
dR
= I
aR
*K
a
*O
dR
+ f
at
*I
lR
*K
d
*O
dR
*cos(i)
unde O
dR
este o constant specific materialului din care este construit suprafaa.
Pentru a nu restrnge modelul de iluminare la un anumit model de culoare, Foley [FOLE92]
propune o notaie n care se asociaz indicele tuturor termenilor care sunt dependeni de lungimea de
und:
I
d
= I
a
k
a
*
Od
+ f
at
*I
l
K
d
*O
d
cos(i) (9.5.)
12.3.2. Reflexia specular
Un reflector perfect, de exemplu o oglind, reflecta lumina numai ntr-o singura directie, R, care
este simetric cu L fa de normala la suprafa (figura 9.11.). Deci, numai un observator situat exact pe
directia respectiva va percepe raza reflectat. -
Figura 9.11.
Pentru materialele imperfect reflectante cantitatea de lumina care ajunge la observator depinde
de distribuia spaial a luminii reflectate specular. La suprafetele netede distribuia este dreapt i
focalizat; la suprafetele cu rugoziti ea este dispersat. n general, lumina reflectata specular are
caracteristicile luminii incidente. De exemplu, suprafaa unui mr rou iluminat cu o lumin alb
intens produce o lumin intens de culoare alb ntr-o zon foarte restrns, datorit reflexiei speculare.
Restul suprafetei mrului apare ca roie i mult mai slab luminat, datorit reflexiei difuze.
Bui-Tuong Phong [PHON75] a dezvoltat un odel de iluminare empiric pentru calculul reflexiei
speculare a reflectorilor imperfecti. El aproximeaz scderea rapid a intensitatii luminii reflectate atunci
cnd crete (figura 9.11.), prin cos( )
n
, unde n este exponentul de reflexie speculara al materialului.
Astfel, n modelul Phong, intensitatea luminii speculare este definit astfel:
I
s
= I
l
* W(i, ) * cos( )
n
(9.6.)
82
Unde W(i, ) este functia de reflectan, i- unghiul de incidenta iar lungimea de unda a luminii
incidente. Valoarea lui n se alege n functie de tipul materialului. Figura 9.12. red variatia lui cos( )
n
pentru diferite valori ale lui n. Valorile mari ale lui n corespund distributiilor spatiale concentrate,
caracteristice metalelor i altor suprafete stralucitoare, n timp ce valorile mici dau rezultate dispersate,
caracteristice suprafetelor nemetalice, de exemplu hrtia.
Figura 9.12.
Dup cum rezult din (9.6), intensitatea luminii reflectate specular depinde de unghiul de
inciden. Astfel, dac lumina incident cade perpendicular pe o suprafa, lumina reflectat specular
poate reprezenta doar un procent din lumina incident. Restul energiei luminoase este fie absorbit fie
difuzat, proportiile fiind dependente de caracteristicile materialului i de lungimea de und. Pentru
materiale nemetalice reflectanta poate fi de numai 4%, n timp ce la materialele metalice depaete
80%. Dac unghiul de inciden este de 90 de grade, ntreaga lumin incident este reflectat
(reflectanta este de 100%). Deoarece functia de reflectan este complex, n practic ea este nlocuit
cu o constant determinat experimental, numit coeficientul de reflexie specular al materialului.
Culoarea componentei speculare din modelul lui Phong nu depinde de proprietile materialului.
Reflexia specular este afectat de proprietatile suprafetei nsei i de caracteristicile luminii incidente;
n general, culoarea luminii speculare poate fi diferit de aceea a luminii difuze. Pentru a pune n
eviden dependena culorii luminii speculare de lungimea de und a luminii incidente, n modelul de
iluminare se nlocuiete functia W(i, ) cu produsul K
s
*O
s
unde K
s
este coeficientul de reflexie
specular iar O
s
este culoarea speculara a obiectului.
Combinnd rezultatele, obinem urmtorul model de iluminare pentru suprafete reale:
I
=I
a
*K
a
*O
d
+ f
at
*I
l
(K
d
*O
d
cos(i)+K
s
*O
s
cos( )
n
)
tiind c
cos(i)=L N/([L] [N])=L
u
N
u
i
cos( )=R V/([R] [V])=R
u
V
u
rezult:
I
=I
a
*K
a
*O
d
+ f
at
*I
l
[K
d
*O
d
*(L
u
N
u
)+K
s
*O
s
*(R
u
V
u
)
n
] (9.7.)
Atunci cnd sursa de lumin este la infinit, produsul scalar (L
u
N
u
) este constant pentru un
poligon dat, n timp ce (R
u
V
u
) variaz de la un punct la altul. Pentru suprafee curbe, variaz att (N
u
L
u
)
ct i (R
u
V
u
).
Daca scena 3D este luminat de m surse de lumin, intensitatea luminii reflectate de un punct se
obine nsumnd contribuiile celor m surse:
I
= I
a
*K
a
*O
d
+ f
ati
*I
l i
[K
d
*O
d
*(L
ui
N
u
)+K
s
*O
s
*(R
ui
V
u
)
n
] (9.8.)
1 =i =m
Calculul directiei luminii speculare
83
Vectorul R este simetricul vectorului L fata de N. Deci, proiectia lui Lu pe N este egala cu Nu
cos(i) (figura 9.13.).
Figura 9.13.
Atunci:
R = Nu cos(i) + S
S = Nu cos(i) - Lu
Deci:
R = 2Nu cos(i) - Lu = 2Nu (Lu Nu) Lu (9.9)
O alt formulare a modelului Phong se bazeaz pe vectorul median, notat cu H n figura 9.14.
El face unghiuri egale cu L i cu V. Dac suprafata ar fi orientat astfel nct normala sa s aib directia
lui H, atunci observatorul ar percepe lumina specular maxim (deoarece ar fi pe directia razei reflectate
specular).
Figura 9.14.
Termenul care exprim reflexia specular este n acest caz (Nu Hu)
n
, unde Hu=(Lu+Vu)/
[(Lu+Vu)]
Atunci cnd sursa de lumin i observatorul sunt la infinit, utilizarea termenului Nu*Hu este
avantajoas deoarece Hu este constant.
12.4. Redarea suprafeelor iluminate
n paragrafele precedente s-au prezentat modele care permit calculul luminii ntr-un punct al
unei suprafee. Modelele prezentate n continuare se refer la modul de calcul al luminii n toate
punctele unei suprafee.
Suprafaa se presupune a fi compus din faete poligonale. Ea poate fi reprezentarea exact a
unui corp poliedral sau reprezentarea aproximativ a unei suprafee curbe.
12.4.1. Modelul LAMBERT
Pentru fiecare faet se calculeaz o singur intensitate, cu formula:
I
d
= k * (N
u
L
u
) (9.12.)
unde
Nu este vectorul unitate normal la suprafa iar
Lu este versorul direciei sursei de lumin,
k este o constant.
Modelul se bazeaz pe urmtoarele presupuneri:
- sursa de lumin este la infinit (produsul scalar (Nu *Lu) este atunci constant pe ntreaga suprafa a
poligonului);
- - observatorul este la infinit (Nu Vu este constant pe suprafaa
poligonului);
84
- poligonul face parte din suprafaa de vizualizat i nu este o aproximare a unui petic de suprafa
curb.
`Dac primele dou cerine nu sunt satisfcute, se poate adopta o convenie de calcul al vectorilor L i
V pentru un ntreg poligon. De exemplu cei doi vectori pot fi calculai n centrul poligonului.
Dac ultima cerin nu este ndeplinit, intensitile calculate pentru faete vecine cu orientare
diferit vor fi diferite, evideniindu-se aproximarea suprafeei curbe prin reeaua de faete poligonale.
Soluia simpl, de a diviza mai fin suprafaa curb nu rezolv problema, deoarece percepia diferenei de
intensitate dintre faetele adiacente este accentuat de efectul de band Mach (descoperit de Mach n
1865). Efectul Mach este cauzat de inhibiia lateral a receptorilor din ochi. Cu ct un receptor primete
mai mult lumin cu att mai mult receptorul va inhiba rspunsul receptorilor adiaceni lui. Efectul Mach
se produce atunci cnd panta curbei de intensitate a luminii variaz brusc. n acel loc suprafaa pare mai
luminoas sau mai ntunecat. Deci, efectul de band Mach mrete percepia schimbrii de intensitate
pe laturile faetelor adiacente. Pentru afiarea cu efecte de lumin a suprafeelor curbe aproximate prin
reea poligonal se recomand modelele Gouraud i Phong, n care intensitatea de afiare a unei faete se
determin inndu-se cont de orientarea faetelor vecine.
12.4.2. Modelul GOURAUD
n modelul Gouraud [GOUR71] se calculeaz o intensitate n fiecare vrf al suprafeei de
vizualizat pe baza unui model de iluminare local. Intensitile n toate celelalte puncte ale suprafeei sunt
obinute prin interpolarea liniar a intensitilor din vrfuri, pe parcursul generrii interiorului
poligonului linie cu linie.
Astfel, procesul de redare a unei suprafee iluminate dup modelul Gouraud este alctuit din
urmtoarele etape:
1. Se calculeaz o normal n fiecare vrf al reelei poligonale. Normala se poate obine direct din
descrierea analitic a suprafeei (par.7.3.). Pentru cazurile n care reprezentarea reelei nu conine
normalele n vrfuri, Gouraud sugereaz aproximarea normalei ntr-un vrf prin media normalelor la
aetele adiacente n vrful respectiv.
2. Se calculeaz o intensitate n fiecare vrf al reelei, folosind oricare dintre modelele de iluminare
prezentate n paragrafele precedente (considerndu-se ca normal la suprafa, normala vrfului).
3. Se afieaz suprafaa calculnd intensitatea ntr-un punct al unui poligon:
(a) prin interpolarea liniar a intensitilor vrfurilor, pentru punctele de pe laturi;
(b) prin interpolare liniar ntre intensitile de pe laturi, pentru punctele interioare de pe fiecare linie
de haurare (Observaie: punctele suprafeei unui poligon se calculeaz ca n algoritmul Z-Buffer).
n calculul intensitilor se poate folosi o metod incremental, similar cu aceea folosit pentru
obinerea coordonatei z a fiecrui punct dintr-un poligon. Astfel, dac IP este intensitatea punctului de
pe latura 1-2 i linia y=y
S
+1, se poate deduce, nlocuind n expresia lui IP pe y
S
cu y
S
+1, c:
I
P
=I
P
+ (I
1
-I
2
)/(y
1
-y
2
)= I
P
+ c1
unde c1 este un termen constant pentru latura 1-2, reprezentnd schimbarea de intensitate la o modificare
cu 1 a lui y. Analog se poate deduce c intensitatea IM , a punctului de coordonate x=x
M
+1, y=y
S
este:
I
M
=I
M
+ (I
Q
-I
P
)/(x
Q
-x
P
)= I
M
+ c2
85
Modelul Gouraud se poate integra foarte uor n algoritmii de generare a scenelor 3D, de
exemplu, Z-Buffer sau scan-line. Astfel, la reprezentarea fiecrei laturi a unui poligon se adaug
intensitatea de pornire i constanta c1, separat pentru cele trei componente de culoare.
n modelul Gouraud se opereaz numai cu componenta difuz a luminii. Modelul nu permite
calculul luminii reflectate specular n puncte interioare unui poligon. Practic, intensitile punctelor
interioare nu pot fi mai mari dect acelea ale vrfurilor, prin a cror interpolare se obin. Totodat,
modelul nu elimin complet efectul de band Mach. Utilizarea normalelor n vrfuri asigur
continuitatea numeric a valorilor intensitilor la traversarea laturilor poligoanelor adiacente, dar nu i
continuitatea derivatelor. Din aceast cauz efectul de band Mach poate fi observat n vecintatea
siluetei suprafeei i a zonelor de curbur mare.
12.4.3. Modelul PHONG
n acest model [PHON75] se calculeaz prin interpolare normal n fiecare punct al suprafeei de
vizualizat. Pentru afiarea suprafeei se parcurg urmtoarele etape:
(1) Se determin o normal n fiecare vrf al suprafeei, ca i n modelul Gouraud;
(2) Se afieaz suprafaa calculnd n fiecare punct vizibil mai nti normala apoi intensitatea luminoas
folosind unul dintre modelele prezentate n paragraful 9.2. Calculul normalelor prininterpolare este
similar calculului intensitilor n modelul Gouraud. Astfel, normala ntr-un punct de pe o latur se
obine prin interpolarea normalelor din extremitile laturii iar ntr- un punct de pe un segment
(orizontal) interior poligonului prin interpolarea normalelor din extremitile segmentului.
Componentele Nx, Ny, Nz se pot obine printr-un calcul incremental dar, pentru folosirea n calculul
intensitii, normala trebuie s fie normalizat.
Modelul Phong permite nglobarea componentei speculare n calculul intensitii tuturor
punctelor suprafeei. Chiar i dac n calculul luminii se ine cont numai de componenta difuz,
iluminarea cu modelul Phong conduce la rezultate mai bune, deoarece intensitatea este calculat n
fiecare punct folosind oaproximare a normalei. Prin aceasta este redus mult efectul de band Mach, dar
volumul de calcule este mult mai mare dect n modelul Gouraud, tiind c normalele obinute prin
interpolare trebuie s fie normalizate pentru a fi folosite n calculul intensitii.
Modelul Gouraud se folosete n aplicaiile n care viteza de generare a imaginii este important.
De exemplu, n simulatoarele de zbor i n sistemele de proiectare asistat de calculator interactive. El
este programat hardware la multe dintre staiile grafice moderne.
Modelele Gouraud i Phong sunt incluse n standardele GKS3D i PHIGS.
12.5. Transparena
Unele obiecte ale scenei sintetizate pot fi construite din materiale transparente sau translucide.
Transmisia luminii prin obiectele transparente este specular, n timp ce prin cele translucide este difuz.
Atunci cnd lumina trece dintr-un mediu ntr-altul (de exemplu, din aer n ap), direcia sa se
modific datorit refraciei. Relaia dintre unghiul razei incidente, i, i cel al razei refractate,r, (figura
9.17.) este dat de legea lui Snell:
sin(i)/sin(r) = n1/n2 (9.13.)
unde
86
n1 i n2 sunt indicii de refracie ai celor dou medii (materiale) traversate de lumin. Indicele de
refracie al unui material este dependent de lungimea de und a luminii incidente i chiar de
temperatur, dar n modelele de iluminare el este considerat constant.
Figura 9.17.
Unele efecte ale refraciei sunt ilustrate n figura 9.18. Obiectele 3 i 4 sunt opace iar 1 i 2 sunt
transparente, cu acelai indice de refracie, mai mare dect al mediului nconjurtor. Dac nu se ine
cont de refracie, raza luminoas a ntlnete obiectul 3, dup cum indic linia punctat. n realitate,
datorit refraciei, raza a ntlnete obiectul 4 i deci acesta va fi obiectul luminat. Deasemenea, neinnd
cont de refracie, raza b va ntlni obiectul 4 n loc de 3.
Figura 9.18.
Refracia produce deasemenea o distorsionare a obiectelor, asemntoare cu aceea produs de o
proiecie perspectiv. Deci, dac se dorete obinerea de imagini realiste trebuie s se in cont de
refracie.
Multe metode practice de modelare a transparenei ignor refracia, astfel nct obiectele vizibile
printr-o suprafaa transparent sunt cele aflate pe direcia razei incidente. Motivul ignorrii nu este
intotdeauna cel al reducerii volumului de calcule. Sunt multe cazuri n care nu se urmrete obinerea
realismului fotografic n totalitate. De exemplu, neinnd cont de refracie, obiectele vzute prin cele
transparente nu sunt derfomate.
Atunci cnd suprafaa vizibil ntr-un pixel este transparent, culoarea n care va fi afiat pixelul
se poate obine combinnd culoarea suprafaei vizibile cu aceea suprafeei aflat imediat n spatele su,
folosind urmtoarea formul de interpolare:
I = (1-k
t1
)*I
1
+ k
t1
*I
1
(9.14.)
unde
coeficientul de transmisie k
t1
msoar ransparena suprafeei vizibile n pixel, 0 k
t1
1. Atunci cnd
k
t1
este egal cu 0, suprafaa vizibil este opac i deci pixelul va fi afiat n culoarea sa, I
1
cnd k
t1
este
egal cu 1, suprafaa vizibila este perfect transparenta i nu contribuie la culoarea pixelului. Cnd k
t1
=1 i
suprafaa din spatele celei vizibile este la rndul su transparent, metoda de calcul se aplica recursiv,
pna cnd se ntlnete o suprafata opac sau fondul.
Aproximarea liniara din modelul (9.14.) nu d rezultate bune pentru suprafeele curbe. Aceasta
deoarece n apropierea laturilor siluetei unei suprafete curbe (de exemplu, un vas sau o sticl) grosimea
materialului reduce transparena. Pentru a reprezenta acest efect, Kay [KAY79] a propus o aproximare
neliniar simpl pentru calculul coeficientului de transmisie, bazat pe componenta Nz a normalei la
suprafa, dup transformarea perspectiv:
k
t
= k
tmin
+(k
tmax
- k
tmin
)(1-(1-N
z
)m) (9.15.)
unde
k
tmin
i k
tmax
reprezint transparena minimi cea maxim a unui obiect, Nz este componenta z a
normalei normalizate la suprafa n punctul pentru care se calculeaz k
t
iar m este un exponent ce
caracterizeaz transparena;valorile uzuale pentru m sunt 2 i 3.
O alt metod de modelare a transparenei trateaz fiecare suprafaa ca un filtru transparent, care
las s treac n mod selectiv diferite lungimi de und. Culoarea unui pixel este dat de formula:
I
= I
1
+ k
t1
*O
1
I
2
(9.16.)
87
unde
O
t
este culoarea de transparen a suprafeei 1, vizibil n pixelul considerat.
Majoritatea algoritmilor de determinare a vizibilitii la afiarea scenelor 3D pot fi adaptai cu
uurin pentru a ngloba transparena. Astfel, n algoritmii bazai pe list de prioriti, poligoanele sunt
nscrise n memoria imagine n ordinea ndeprtrii lor de observator (primul nscris este cel mai
ndeprtat). I
1
din modelele (9.14.) i (9.16.) corespunde n acest caz poligonului care se genereaz la
un moment dat iar I
2
este valoarea existent n memoria imagine pentru pixelul considerat. Adugarea
efectului de transparen n algoritmul Z-Buffer este mai dificil deoarece poligoanele sunt generate n
ordinea n care sunt ntlnite, neinndu-se cont nici de apropierea lor de observator i nici de
transparen. ncorporarea transparenei n algoritmul Z-Buffer presupune folosirea mai multor memorii
buffer i generarea imaginii n mai multe etape. Imaginea final se obine combinnd imaginea
determinat de poligoanele opace din scen cu imaginea determinat de poligoanele transparente.
12.6. Umbrirea
Atunci cnd un observator privete o scen 3D iluminat de o surs de lumin dintr-o poziie
diferit de aceea a sursei de lumin, va vedea umbrele produse de obiectele scenei. Umbrele au o
contribuie nsemnat la realismul imaginii, mbuntind percepia profunzimii.
O zon de umbr se compune n realitate din dou pri: umbra pur i penumbra. Umbra pur
este dens, neagr i are un contur bine delimitat. Penumbra nconjoar umbra pur. Zona aflat n
penumbr primete o parte din lumin de la surs. Sursele punctiforme considerate n majoritatea
modelelor de iluminare produc numai umbr pur (figura 9.19.). Sursele reale, cu o dimensiune finit,
produc i penumbr.
Figura 9.19.
n general, datorit volumului mare de calcule presupus, se consider numai umbra pur.
Volumul de calcule depinde i depoziia sursei de lumin. Dac sursa este la infinit calculele sunt mai
simple. n cazul unei surse situate la distan finit dar n afara cmpului vizual este necesar o proiecie
perspectiv din poziia sursei. Cazul cel mai dificil este acela n care sursa este situat n cmpul vizual.
Problema determinrii umbrelor este similar aceleia de determinare a vizibilitii obiectelor:
suprafeele care nu sunt vizibile din poziia sursei de lumin sunt n umbr. Deaceea, crearea unei
imagini cu umbre presupune rezolvarea de dou ori a problemei suprafeelor nevizibile: o dat privind
scena din poziia fiecrei surse de lumin, a doua oar privind-o din poziia observatorului.
Sunt dou tipuri de umbre: umbre proprii i umbre purtate. Umbrele proprii sunt generate de
obiectul nsui, care mpiedic lumina s ajung la unele dintre feele sale (figura 9.20.). Feele umbrite
de umbra proprie sunt fee auto-obturate atunci cnd scena este vzut din poziia sursei de lumin.
Figura 9.20.
Umbra purtat este umbra pe care un obiect o produce pe alte pri ale scenei, la care lumina nu
ajunge din cauza obiectului. Umbrele purtate se pot determina proiectnd n scen, din poziia sursei,
toate suprafeele neumbrite de umbra proprie. Rezult un set de poligoane de umbr care se adaug la
reprezentarea scenei. Ele se folosesc ca poligoane-detaliu la redarea scenei 3D. Numrul de poligoane
de umbr este mai mic dac n loc s se proiecteze fiecare fa luminat de surs se proiecteaz silueta
fiecrui obiect (vzut din poziia sursei de lumin). Dup adugarea poligoanelor de umbr la
88
reprezentarea scenei, se genereaz imaginea vzut din poziia observatorului. Pot fi generate mai multe
vederi fr a recalcula umbrele, deoarece umbrele depind numai de poziia sursei (surselor) de lumin.
Un punct al unei suprafee care este vizibil din poziia observatorului dar nu i din poziia unei surse se
afieaz cu intensitatea de umbrire sau cu o intensitate care rezult din iluminarea sa de ctre alte surse
existente n scen. Modelul de calcul al luminii ntr-un punct p al unei suprafee se poate modifica astfel:
I
=I
a
*k
a
*O
d
+ Si
fati
*I
l
[kd*O
d
* (L
ui
N
u
)+k
s
*O
s
*(R
ui
V
u
)
n
(9.17.)
1<=i<=m
unde
Si= 0 daca lumina de la sursa i nu ajunge n punctul p;
= 1 daca lumina de la sursa i ajunge n punctul p.
Calculul umbrelor dintr-o scena poate fi integrat ntr-un algoritm de determinare a prilor
nevizibile sau poate fi efectuat ntr-o etap separat care precede generarea imaginii.
n continuare prezentm civa dintre algoritmii de umbrire folosii n prezent.
12.6.1. Generarea umbrelor ntr-un algoritm scan-line
ntroducerea umbrelor ntr-un algoritm de eliminare a prilor nevizibile a fost propus pentru
prima dat de Appel [APPE68]. Soluia lui Appel privind modificarea unui algoritm scan-line pentru
includerea umbririi a fost mbuntit de Bouknight i Kelley [BOUK70], [KELL70]. Concret,
generarea unei imagini cu umbre printr-un algoritm scan-line se efectueaz n dou etape:
(1) Se determin umbrele proprii i apoi umbrele proiectate de fiecare poligon n scen. Pentru
fiecare poligon se construiete o structur de date suplimentar care indic poligoanele de umbr ce pot
umbri poligonul. Eficiena acestei etape este foarte important, deoarece ntr-o scen cu n poligoane
exista potential n(n-1) umbre purtate. O soluie inteligent este oferita de Bouknight i Kelley
[BOUK70]. Ei proiecteaz toate poligoanele scenei pe o sfer care nconjoar sursa de lumina, folosind
ca centru de proiecie pozitia sursei. Poligoanele care interacioneaz n producerea umbrelor sunt acelea
ale cror proiecii pe suprafaa sferei se suprapun. n continuare se lucreaz numai cu acestea,
calculndu-se proiecia fiecarui poligon din poziia sursei n planul fiecaruia dintre poligoanele cu care el
interacioneaza n producerea umbrelor.
(2) Se execut algoritmul scan-line, modificat astfel:
- Se determin segmentele vizibile pe o linie a imaginii;
- Pentru fiecare segment vizibil se determin daca poligonul PS, din care face parte este umbrit (de
ctre unul sau mai multe poligoane de umbr). Dac poligonul PS nu este umbrit, segmentul este afiat
normal. Altfel, sunt posibile urmatoarele cazuri:
(a) Unul sau mai multe poligoane de umbr acoper parial poligonul PS dar nu i segmentul vizibil;
segmentul este afiat normal.
(b) Segmentul vizibil este acoperit in intregime de unul au mai multe poligoane de umbr; se
calculeaz intensitatea segmentului vizibil in functie de aceea a poligoanelor de umbr.
(c) Segmentul vizibil este acoperit partial de unul sau mai multe poligoane de umbra; se divizeaz
segmentul vizibil intersectndu-l cu fiecare poligon de umbr i se aplic algoritmul recursiv pentru
fiecare segment rezultat din divizare pana cnd este satisfacut una dintre condiiile (a) sau (b).
n mediul real, intensitatea umbrei depinde de intensitatea sursei luminoase i de distana de la planul
care determin umbra la cel umbrit. Aceasta deoarece zona umbrit primete lumina ambiant iar sursa
de lumina are dimensiuni finite. n modelele de iluminare, pentru simplitate, se ine cont fie numai de
89
lumina ambiant (modelul 9.17.), fie i de intensitatea sursei luminoase, caz n care intensitatea umbrei
este proporional cu intensitatea sursei.
12.6.2. Metoda Atherton-Weiler
Metoda a fost dezvoltat de Atherton, Weiler i Greenberg [ATHE78]. Generarea imaginii unei
scene are loc prelucrnd de doua ori descrierea scenei pe baza aceluiai algoritm: mai nti privind scena
din pozitia sursei de lumina i apoi din pozitia observatorului.
n prima etap se determin suprafeele care sunt vizibile din poziia sursei aplicndu-se
algoritmul Weiler-Atherton (par. 8). Pentru aceasta se aplic scenei o transformare de vizualizare cu
centrul vederii n poziia sursei. Rezult lista de poligoane, P, asupra carora se aplic algoritmul Weiler-
Atherton. Rezultatul algoritmului este o lista de poligoane, PL, (complete sau obinute prin decupare),
carora li se asociaz identitatea poligoanelor 3D din care provin. Acestea sunt poligoanele luminate.
Toate obiectele scenei trebuie sa fie incluse n volumul vizual al sursei. Dac aceast conditie nu este
satisfacut (sursa de lumina este n interiorul scenei), se construiesc mai multe volume vizuale cu vrful
n pozitia sursei; metoda este numit "sectorizare".
Att poligoanelor din lista P ct i celor din lista PL li se aplic transformarea invers, obinndu-
se reprezentrile lor n sistemul de coordonate n care este descris scena. Cele dou liste se combin,
rezultatul fiind o lista LV, careia i se aplic transformarea de vizualizare cu centrul vizual n poziia
observatorului. Poligoanele din LV care provin din lista PL sunt marcate ca poligoane-detaliu
(par.9.4.4.). Pentru determinarea suprafeelor vizibile se aplic tot algoritmul Weiler-Atherton
(neglijndu-se poligoanele marcate ca poligoane-detaliu). Rezult o list de poligoane, LI, din care este
compus imaginea. La generarea poligoanelor din aceast list se folosesc poligoanele- detaliu. Astfel,
prile din suprafeele vizibile acoperite de poligoane-detaliu sunt generate ca luminate, restul ca
umbrite. n calculul umbrelor pot fi incluse mai multe surse de lumin. Lista LV se obine prin
combinarea rezultatelor vizualizrii scenei din poziia fiecarei surse de lumin.
12.6.3. Volume de umbr
Metoda la care ne referim n continuare a fost descris de Crow [CROW77]. Sursa de lumin
este considerat punctiform iar obiectele ca avnd faete poligonale. Cu toate c este una dintre cele mai
practice metode de generare a umbrelor, ea prezint dezavantajul de a nu putea fi extins n mod natural
pentru alte clase de obiecte, de exemplu suprafee parametrice.
Un volum de umbr este definit de o surs de lumin i un poligon luminat (vizibil din poziia
sursei de lumin) (figura 9.21), pe care-l vom numi poligonul generator. Fiecare fa lateral a
volumului este numit poligon de umbr. Ea este determinat de o latur a poligonului generator i de
cele dou drepte care pleac din sursa de lumin, fiecare trecnd printr-un vrf al laturii. Normalele la
fetele laterale puncteaza nspre exteriorul volumului. Volumul infinit determinat de o surs i un poligon
generator este delimitat de o fa care reprezint poligonul generator scalat. Aceast fa este situat la o
distan fa de sursa dincolo de care intensitatea luminii sursei este neglijabil, deci orice punct aflat
dincolo de aceast limit este umbrit. Volumul de umbr poate fi decupat la limitele volumului vizual.
Figura 9.21.
Poligoanele de umbr se folosesc pentru determinarea umbririi produse de poligonul generator n
scen. Notm cu PUV poligoanele de umbr care sunt vizibile din poziia observatorului (A i B n
90
figura 9.21.) i cu PUN poligoanele de umbr care nu sunt vizibile din poziia observatorului (de
exemplu, poligonul C). Fie un punct P al unui obiect i VP vectorul din poziia observatorului (V) n
punctul respectiv. Atunci, punctul P este umbrit dac numrul de poligoane de tip PUV intersectate de
vectorul VP este mai mare dect numrul de poligoane de tip PUN intersectate de vector. Acesta este
singurul caz, atunci cnd punctul V nu este n umbr. n general, pentru a determina dac un punct este
n umbr se poate folosi un contor n care iniial se memoreaz numrul de volume de umbr care conin
poziia observatorului. Se asociaz poligoanelor de tip PUV valoarea +1 iar celor de tip PUN valoarea
-1. Atunci cnd vectorul VP traverseaz un poligon de umbr se adun la contor valoarea asociat
poligonului. Punctul P este umbrit dac valoarea contorului este pozitiv n P.
Volumul de calcul presupus de acest algoritm poate fi redus dac n loc s se calculeze volumul
de umbr pentru fiecare poligon vizibil din poziia sursei se calculeaz un singur volum de umbr pentru
o suprafa poligonal. n acest scop, se determin poligoanele de umbr numai pentru laturile care fac
parte din silueta suprafeei, vazut din poziia sursei. Silueta unei suprafete, corespunzatoare unui punct
de observare, este un set conectat de laturi care apartin poligoanelor vizibile din punctul de observare.
O latur de silueta este fie o latur de margine a unei suprafee deschise, fie o latur care separa un
poligon vizibil de unul nevizibil. Pentru determinarea laturilor de siluet este necesar s se foloseasc o
structur de date care reflect adiacenta poligoanelor. Cunoscndu-se poligonul adiacent pe fiecare latur
a fiecarui poligon vizibil din poziia observatorului se pot determina rapid laturile de siluet.
12.6.4. Determinarea umbrelor n algoritmul Z-Buffer
Williams [WILL78] a propus o metod de generare a umbrelor bazat pe execuia de dou ori a
algoritmului Z-Buffer. Astfel, n prima etap se construiete buffer-ul Z al imaginii vzute din poziia
sursei. Vom nota acest buffer cu ZS. n etapa a doua se construiete imaginea vazut din poziia
observatorului, astfel:
Pentru fiecare poligon al scenei
Pentru fiecare punct (x,y,z) al unui poligon
Dac z < Z-Buffer [x] [] atunci
/*punctul este vizibil n pixelul (x,y) */
(a) Z-Buffer [x ]= z
(b) Se calculeaz punctul (x ,y ,z ) corespunztor
punctului (x,y,z) n vederea obinut din poziia
sursei;
Dac ZS[x < z atunci
punctul (x,y,z) este n umbr i pixelul (x,y) se
afieaz n intensitatea corespunztoare umbrei
altfel
pixelul (x,y) se afieaz luminat
n cazul mai multor surse de lumin se utilizeaz cte un buffer ZS pentru fiecare surs.
Plecnd de la observaia c informaia de umbrire este calculat i pentru punctele care nu sunt
vizibile din poziia observatorului, Williams a sugerat o variant n care adugarea umbrelor are loc
printr-o postprocesare a imaginii obinute executnd algoritmului Z-Buffer. Astfel, n prima etap se
execut algoritmul Z-Buffer pentru scena vzut din poziia observatorului, obinndu-se imaginea fr
umbre i buffer-ul Z. Intensitatea fiecrui pixel este calculat folosind un model de iluminare local.
n etapa a doua se execut urmtorul algoritm:
Pentru x de la 0 la xmax
91
Pentru y de la 0 la ymax
Se calculeaz punctul (x ,y ,z ), corespunztor
punctului (x,y,Z[x] [y]) n vederea obinut din poziia
sursei;
Se determin coordonata ZS a punctului vzut din poziia
sursei n pixelul (x ,y );
Dac ZS < z atunci
Se micoreaz intensitatea pixelului (x,y);
Cu toate c este mai eficient, aceast variant conduce la rezultate mai slabe dect varianta
anterioar. Astfel, imaginea determinat n prima etap poate conine zone cu reflexii speculare. Dac
un punct dintr-o astfel de zon este umbrit, intensitatea sa va fi micorat, dar prin aceasta reflexiile
speculare nu dispar din imagine. n realitate, un obiect care nu primete lumin de la o surs nu poate
avea reflexii speculare. Totodat, coordonata z care se obine prin transformarea valorii din buferr-ul Z
este mai puin exact dect n prima variant, datorit preciziei mai sczute a reprezentrii valorilor din
buffer (n comparaie cu precizia reprezentrii coordonatelor din spaiul obiect).
13. Suprafee
13.1. Suprafee de rotaie
Sfera
Sfera este un corp de rotaie care poate fi considerat o suprafaa 3D nchis sau un poliedru
convex. Ca suprafaa 3D poate fi afiata prin doua familii de curbe (meridiane i paralele), iar ca
poliedru, prin fete poligonale plane (peticele). n cel de-al doilea caz, se considera peticelele ca fiind
patrulatere plane (cele patru vrfuri ale patrulaterului se considera situate n acelai plan, cu o precizie
dat).
Afiarea sferei ca poliedru delimitat de fete poligonale plane implica determinarea fetelor
vizibile. Metoda cea mai simpla este 'backface culling', care permite determinarea fetelor auto-obturate
ale unui poliedru, adic a acelor fete obturate de alte fete ale poliedrului. Fetele auto-obturate sunt fetele
care nu sunt orientate spre observator. Aceasta metoda se poate aplica poliedrelor convexe. Vizibilitatea
fiecrei fete se determina pe baza unghiului dintre normala la fa i vectorul orientat de la fa spre
observator (direcie de proiecie, n cazul proieciei paralele). Normala la o fa se calculeaz ca produs
vectorial al doua laturi adiacente intr-un vrf, astfel incit sa fie orientata spre exteriorul poliedrului.
Pentru aceasta, se considera orientarea trigonometrica a conturului fiecrei fee.
Fie N normala la o fa calculata intr-un vrf al sau i V vectorul din acelai vrf spre observator.
Produsul scalar V*N se definete ca fiind:
z z y y x x
*N V *N V *N V () * N * V V*N + + cos
Daca V*N>0 atunci fata este vizibila; altfel nu e vizibila i deci nu se afieaz.
Pentru afiarea unei sfere trebuie sa se calculeze un set de puncte de pe suprafaa sa. n acest
scop se folosesc ecuaiile parametrice. Sfera se poate obine prin rotaia cu 2*PI a unui semicerc n jurul
unei axe care trece prin capetele sale.
Fie semicercul definit de ecuaiile parametrice:
0
2 2 sin
cos
z(t)
/ t / (t) - r* y(t)
(t) r* x(t)
< <
92
Prin rotaia sa n jurul axei OY cu 2* se obine sfera definita de urmtoarea ecuaie
parametrica:
* u
/ t -
(u) -x(t)* (u) y(t) x(t)* S(t,u)
2 0
2 2
sin cos
< <
< <
Torul
Torul este un corp care se poate obine prin rotaia unui cerc n jurul unei axe situate n acelai plan cu
cercul, care nu intersecteaz suprafaa cercului. Considerat ca poliedru reprezentat prin fee poligonale
plane nu mai poate fi afiat prin metoda 'backface culling', deoarece este un poliedru concav. Pentru
afiare cu eliminarea prilor auto-obturate se va folosi algoritmul de sortare n adncime (algoritmul
pictorului). Peticelele sunt sortate dup coordonata z
min
, iar afiarea se face n ordinea de la cel mai
ndeprtat de observator la cel mai apropiat.
Pentru afiarea prin peticele a torului se considera proiectia ortografica.
13.2. Suprafee de forma libera
Suprafee Bezier
O suprafaa Bezier poate fi descrisa printr-o funcie biparametric cubica. Un punct al suprafeei
este definit n spaiul parametric (u,v) prin:
( ) ( ) ( ) v B u B P v u P
j i
i j
ij 3 , 3 ,
3
0
3
0
* * ,
0 <= u, v <= 1
unde P este matricea punctelor de control,
MB este matricea de baza Bezier,
,
`
.
|
0 . . . 0 . . . . . . 0 . . . . 1
0 . . . 0 . . . . . . 3 . 3
0 . . . . 3 . . . . . 6 . 3
1 . . . . 3 . 3 . . 1
M B
p(u,v) este un punct de pe suprafaa, care se reprezint n coordonate carteziene prin:
(u,v) ) y(u,v) z ( x(u,v) p(u,v)
93
Compunerea suprafeelor Bezier
Compunerea (alipirea) a doua suprafee Bezier, Q(u,v) i R(u,v), implica unele constrngeri:
ndeplinirea condiiilor de continuitate de ordin 0 i 1. Astfel, daca suprafaa R se alipete la dreapta lui
Q, constrngerile sunt:
(a)
,v) R( ,v) Q( 0 1
pentru 0 <= v <= 1
sau
,i ,i
R Q
0 3
i = 0, 1, 2, 3
(b)
) - R k ( R - Q Q
,i ,i ,i ,i 0 1 2 3
i = 0, 1, 2, 3
Divizarea suprafeelor Bezier
Metoda de divizare a unei suprafee Bezier este o extensie a metodei de divizare a curbelor
Bezier. Astfel, pentru aproximarea unei curbe Bezier prin segmente de dreapta se poate diviza recursiv
curba, pn cnd este ndeplinit condiia de linearitate a segmentelor de curba obinute. Fie Pi punctele
de control ce definesc curba. Relaiile de subdivizare n doua curbe definite de punctele Qi i Ri, cu i=0-
3, sunt:
2 / ) R (Q Q
2 / 2) / ) P (P (Q Q
2 / ) P (P Q
P Q
1 2 3
2 1 1 2
1 0 1
0 0
+
+ +
+
3 3
3 2 2
2 2 1 1
3 0
P R
2 / ) P (P R
2 / ) R 2 / ) P ((P R
Q R
+
+ +
unde
,
`
.
|
8 1 . . 8 3 . . 8 3 . . 8 1
0 . . . . 4 1 . . 4 2 . . 4 1
0 . . . . 0 . . . . . 2 1 . . 2 1
0 . . . . 0 . . . . . 0 . . . . . 1 . .
1
H
94
,
`
.
|
1 . . . . . 0 . . . . . 0 . . . . . 0 . .
2 1 . . 2 1 . . 0 . . . . . 0 . .
4 1 . . 4 2 . . 4 1 . . 0 . .
8 1 . . 8 3 . . 8 3 . . 8 1
2
H
Afiarea suprafeelor Bezier
O suprafa Bezier poate fi afiat n doua moduri:
- prin doua familii de curbe (curbele de u constant i curbele de v constant);
- ca o suprafa opac, caz n care suprafaa trebuie sa fie divizata n peticele plane dup metoda de mai
sus.
Pentru afiarea suprafeei divizata n peticele plane se pot folosi algoritmii de tip scan-line
propui de Lane-Carpenter i Clark. Algoritmii difer prin testul de planeitate i prin funciile folosite
pentru a obine ecuaii difereniale de subdivizare a peticelelor suprafeei.
Algoritmul Lane-Carpenter efectueaz divizarea unui peticel atunci cnd este intersectat de linia
de imagine curenta. Algoritmul Clark realizeaz subdivizarea tuturor peticelelor suprafeei intr-o etapa
de preprocesare.
Algoritmul Lane-Carpenter este prezentat n urmtorul pseudocod:
* construiete lista de peticele, LP;
iniializeaz lista peticelelor active, LPA;
pentru fiecare linie de imagine executa
* actualizeaza lista LPA;
pentru fiecare peticssel, Pi, din LPA executa
dac (Pi poate fi aproximat printr-un patrulater plan)
atunci
* insereaz patrulaterul n lista de poligoane, LPg
altfel
* divide Pi n 4 peticele mai mici, Pij;
pentru fiecare peticel Pij executa
daca (Pij intersecteaza linia imagine) atunci
* adaug Pij la lista LPA;
altfel
* adaug Pij la lista LP;
* proceseaz lista LPg pentru linia de imagine curenta;
Un peticel este adugat la lista LPA daca valoarea y a liniei de imagine este egala cu valoarea y
minima a punctelor de control ce definesc peticelul. Prin subdivizarea diferita a peticelelor adiacente pot
s apar discontinuiti (rupturi) n aproximarea suprafeei. Pentru a evita acest efect, algoritmul trebuie
95
sa modifice patrulaterele de aproximare adiacente, care provin din peticele diferite. Nu apar
discontinuiti dac fiecare peticel se divide de un numr fix de ori (divizare uniforma), sau daca
divizarea este mai fina (precizia pentru testul de planeitate este mai mica). n ambele cazuri insa, se
efectueaz divizri care nu sunt neaprat necesare.
Peticelele plane obinute n urma subdivizrii pot fi tratate ca poligoane plane care pot fi afiate
folosind un model de iluminare.
14. Aplicarea unei texturi pe o suprafa
n cadrul acestei teme se cere afiarea unui cub pe feele cruia s-a aplicat o "textura". Textura ce
se aplica pe o suprafa neteda se considera definita intr-un sistem de coordonate ortogonal (u,v). Pentru
determinarea intensitii unui pixel ecran se va folosi metoda "transformrii inverse": din spaiul ecran
n spaiul obiect i apoi din spaiul obiect n spaiul texturii.
Textura va fi definita printr-o matrice de 64x64 puncte. Punctele imaginii textura se numesc
texeli.
Cubul se considera definit astfel incit feele sale sa fie paralele cu planele principale ale
sistemului de coordonate carteziene 3D. Se va afia ntr-o proiecie izometrica, echivalent cu
transformarea:
x ica o_ortograf * o) . Rx( * o) Ry(- o_izo Pr 26 35 45 Pr
Dup aceasta transformare, testul de vizibilitate a unei fee se reduce la condiia Nz>0, Nz fiind
componenta z a normalei la fata.
Se va utiliza modelul de iluminare LAMBERT.
Zona din fereastra 2D corespunztoare suprafeei unui pixel se determina aplicnd transformarea
de vizualizare 2D inversa (poarta de afiare -> fereastra reala) celor patru puncte ce definesc suprafaa
pixelului: (px, py), (px+1, py), (px+1, py+1), (px, py+1). Rezulta patru puncte (x
i
, y
i
) n fereastr.
Din puncte 2D aparinnd proieciei unei fee n fereastra se pot obine puncte 3D aparinnd
fetei cubului prin doua metode:
- pornind de la ecuaia planului fetei
C
D By Ax
- z D Cz By Ax
+ +
> + + + 0
- prin calcul incremental, ca n algoritmul Z-buffer.
Prezentam n continuare algoritmul de aplicare a unei texturi pe fetele unui cub:
* se aplica transformarea Pro_izo, vrfurilor cubului;
* se determina parametrii transformrii de vizualizare 2D (transformarea "fereatr-poart"); pentru
fiecare fata, F, a cubului executa
daca ( F este vizibila ) atunci
* determina intensitatea If, folosind modelul LAMBERT;
* aplica transformarea de vizualizare 2D vrfurilor
fetei; se obine un patrulater, Fe, n spaiul ecran;
pentru fiecare pixel (px, py) aparinnd patrulaterului Fe
* determina zona Z din fereastra 2D, ce corespunde
suprafeei pixelului (px,py); se obin 4 puncte
(x
i
,y
i
);
pentru fiecare (x
i
,y
i
) executa
* calculeaz coordonata zi a punctului (x
i
,y
i
) din planul
96
fetei F; se obine punctul (x
i
,y
i
,z
i
);
* aplica transformarea inversa, T
inv
= Pro_izo-1, pentru a
obine punctul de pe cubul iniial; se obine punctul
(x
i
',y
i
',z
i
');
* calculeaza (ui,vi), din spatiul parametric al
texturii, pentru punctul (xi',yi',zi');
* calculeaza indicii (i,ti) n matricea textura,
corespunzatori punctului (ui,vi); indicii (i,ti)
corespunzatori celor patru colturi ale unui pixel
determina o zona ZT n matricea textura
* calculeaza factorul de scalare:
fscal = nr_texeli_aprinsi_din_ZT/nr_total_texeli_din_ZT
* afiseaza pixelul (px, py) cu intensitatea If * fscal;
Punctele 3D apartinind unei fee a cubului se pot reprezenta parametric astfel:
- pentru fee paralele cu planul (xOy)
0 3 0
0 1 0
) - y ) / (y (y - y v
) - x ) / (x (x - x u
, unde
sin
=
2
sin
, aici
1 i
2
coeficienii de refracie a mediilor,
unghiul incident,