Sunteți pe pagina 1din 28

Tehnici de programare

a aplicaţiilor grafice

Mihai-Sorin Stupariu

Semestrul al II-lea, 2018-2019


Cuprins

0 Motivaţie 3
0.1 Cum reprezentăm? . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.2 Cum putem crea efecte realiste? . . . . . . . . . . . . . . . . . . . 4
0.3 Ce reprezentăm? . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1 Reprezentarea unor cazuri particulare de curbe şi suprafeţe 5


1.1 Conice şi cuadrice - breviar teoretic . . . . . . . . . . . . . . . . . 5
1.2 Curbe şi suprafeţe Bézier . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Grafică rasterială - procesarea imaginilor 10


2.1 Motivaţie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Transformarea semnalelor - Produsul de convoluţie . . . . . . . . 11
2.2.1 Cazul 1D . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Cazul 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.3 Utilizarea produsului de convoluţie ı̂n grafică . . . . . . . 15
2.3 Transformata Fourier . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Transformate wavelet (Undine) . . . . . . . . . . . . . . . . . . . 17
2.5 Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3 Tehnica Ray Tracing 19


3.1 Principii de bază . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.1 Reprezentarea razelor şi formalizare . . . . . . . . . . . . 20
3.1.2 Intersecţii . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Efecte vizuale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

4 Modelare geometrică 3D aplicată ı̂n grafică - teme de interes şi


repere bibliografice 24
4.1 Reconstructie (3D reconstruction) . . . . . . . . . . . . . . . . . 24
4.2 Simplificare (Simplification of 3D meshes) . . . . . . . . . . . . . 24
4.3 Suprafeţe de subdivizare (Subdivision surfaces) . . . . . . . . . . 25
4.4 Tehnici de netezire (Smoothing techniques) . . . . . . . . . . . . 25
4.5 Curburi discrete . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1
Bibliografie 27

2
Capitolul 0

Motivaţie

0.1 Cum reprezentăm?

'$

}

&%

Figura 1: Grafică vectorială şi grafică rasterială

Comentarii:
(i) Fonturile sunt de fapt elemente grafice.
(ii) În proiectare este nevoie de forme cât mai variate, fie la nivel de schiţă,
fie ı̂ntr-un stadiu mai avansat de proiectare.
Scop: Cum generăm elementele de grafică vectorială? (Curbe Bézier).
Cum putem manevra grafica rasterială? (Tehnici de procesare a imaginilor)

3
0.2 Cum putem crea efecte realiste?
Tehnica Ray Tracing

0.3 Ce reprezentăm?
Obiectele utilizate ı̂n grafica 3D sunt bazate pe reţele de poligoane şi triun-
ghiuri (polygon / triangle meshes)

4
Capitolul 1

Reprezentarea unor cazuri


particulare de curbe şi
suprafeţe

1.1 Conice şi cuadrice - breviar teoretic


Din motive de simetrie, vom nota coordonatele din plan cu x1 , x2 , iar pe cele
din spaţiul tridimensional cu x1 , x2 , x3 . Descriem mai ı̂ntâi conicele - locuri
geometrice din plan, apoi, prin analogie, sunt introduse cuadricele.
Definiţii.
O conică (ı̂n planul R2 ) este o mulţime de puncte ale căror coordonate
(x1 , x2 ) verifică o ecuaţie de forma

a11 x21 + 2a12 x1 x2 + a22 x22 + 2a13 x1 + 2a23 x2 + a33 = 0, (1.1)

unde (aij )i,j sunt coeficienţi reali astfel ca (a11 , a12 , a22 ) 6= (0, 0, 0).
Pentru conica descrisă de ecuaţia (1.1) vom nota
 
  a11 a12 a13
a11 a12
a= , A =  a12 a22 a23  .
a12 a22
a13 a23 a33

Matricea a se numeşte matricea conicei, iar matricea A se numeşte matricea


extinsă a conicei. Vom folosi, de asemenea, următoarele notaţii:

δ := det a, ∆ := det A, r := rang a, R := rang A.

Exemple.
x2 x2 1 1
(i) 1 + 2 − 1 = 0. Avem δ = ,∆=− , r = 2, R = 3.
9 25 225 225

5
(ii) 2x21 + 8x1 x2 + 10x22 − 2x1 + 2x2 − 5 = 0. Avem δ = 12, ∆ = −140, r = 2,
R = 3.
(iii) x21 − 2x1 x2 − x22 + 4x1 − 4 = 0. Avem δ = −2, ∆ = 12, r = 2, R = 3.
(iv) x22 − 6x1 = 0. Avem δ = 0, ∆ = −9, r = 1, R = 3.
(v) x21 + 2x1 x2 + x22 − 4 = 0. Avem δ = 0, ∆ = 0, r = 1, R = 2.
Definiţii.
O conică se numeşte nedegenerată dacă ∆ 6= 0. În cazul ı̂n care ∆ = 0,
conica se numeşte degenerată.
Un punct P0 ∈ R2 se numeşte centru al unei conice dacă simetria de centru
P0 invariază conica.
Un punct PO = (x10 , x20 ) este centru al conicei dacă şi numai dacă perechea
(x10 , x20 ) este soluţie a sistemului

a11 x10 + a12 x20 + a13 = 0
a21 x10 + a22 x20 + a23 = 0.

Rezultate:
(i) Mulţimea centrelor unei conice formează o varietate liniară (mulţimea
vidă, un punct sau o dreaptă).
(ii) O conică are centru unic dacă şi numai dacă δ 6= 0.

Propoziţia 1.1 (Clasificarea afină a conicelor)


(i) Numerele δ, ∆, r şi R asociate unei ecuaţii de forma (1.1) nu se modifică
ı̂n urma unei schimbări afine de coordonate.
(ii) Printr-o schimbare de coordonate convenabil aleasă şi ı̂nmulţind, even-
tual, ecuaţia obţinută cu o constantă, orice ecuaţie de forma (1.1) poate fi adusă
la una din formele de mai jos:

R r Forma canonică afină a conicei Denumire


3 2 x21 + x22 − 1 = 0 Elipsă
x21 − x22 − 1 = 0 Hiperbolă
−x21 − x22 − 1 = 0 Elipsă vidă
3 1 x21 − 2x2 = 0 Parabolă
2 2 x21 + x22 = 0 Punct dublu
x21 − x22 = 0 Pereche de drepte secante
2 1 x21 − 1 = 0 Pereche de drepte paralele
−x21 − 1 = 0 Pereche de drepte vidă
1 1 x21 = 0 Dreaptă dublă

Definiţie. O cuadrică este un loc geometric din spaţiul R3 dat prin anu-
larea unui polinom de gradul II, adică printr-o ecuaţie analoagă lui (1.1), ı̂n
care apar coordonatele x1 , x2 , x3 . În mod similar se construiesc matricele a, A
şi definesc numerele r şi R, fiind aplicate considerente şi raţionamente analoage

6
celor din cazul conicelor. Mai jos sunt câteva exemple de cuadrice scrise sub
forma canonică.
R r Forma canonică afină a cuadricei Denumire
4 3 x21 + x22 + x23 − 1 = 0 Elipsoid
x21 + x22 − x23 − 1 = 0 Hiperboloid cu o pânză
x21 − x22 − x23 − 1 = 0 Hiperboloid cu două pânze
4 2 x21 − x32 − 2x3 = 0 Paraboloid hiperbolic
3 3 x21 + x22 − x23 = 0 Con
3 2 x21 + x22 − 1 = 0 Cilindru eliptic
x21 − x22 − 1 = 0 Cilindru hiperbolic
3 1 x21 − 2x2 = 0 Cilindru parabolic
2 2 x21 + x22 = 0 Dreaptă dublă
x21 − x22 = 0 Pereche de plane secante
2 1 x21 − 1 = 0 Pereche de plane paralele
1 1 x21 = 0 Plan dublu

1.2 Curbe şi suprafeţe Bézier


Definiţii.
Pentru n ∈ N fixat, polinoamele Bernstein de grad n sunt definite prin

Bin (t) = Cni ti (1 − t)n−i , i ∈ {0, . . . , n},


n!
unde Cni = i!(n−i)! . Prin convenţie, definim Bin (t) = 0, dacă i 6∈ {0, . . . , n}.
Fie (b0 , . . . , bn ) o mulţime ordonată de puncte din Rm , numită poligon
de control. Curba Bézier b : [0, 1] → Rm definită de poligonul de control
(b0 , . . . , bn ) este dată de formula
n
X
b(t) := Bin (t)bi . (1.2)
i=0

Exemplu Considerăm poligonul de control

b0 = (1, 0), b1 = (1, 1), b2 = (0, 2).

Curba Bézier asociată b : [0, 1] → R2 se scrie sub forma Bernstein


2
X
b(t) = Bi2 (t)bi = (1 − t)2 (1, 0) + 2t(1 − t)(1, 1) + t2 (0, 2) =
i=0

(1 − 2t + t2 + 2t − 2t2 , 2t − 2t2 + 2t2 ) = (1 − t2 , 2t).


Avem, de exemplu, b( 31 ) = ( 98 , 23 ), b( 41 ) = ( 15 1
16 , 2 ), etc.

Algoritmul de Casteljau

7
Fie b0 , b1 , . . . , bn ∈ Rm . Pentru t ∈ [0, 1] se notează b0i (t) := bi (i =
0, . . . , n) şi se definesc inductiv punctele de Casteljau

r r−1 r−1 r = 1, . . . , n
bi (t) := (1 − t)bi (t) + tbi+1 (t), (1.3)
i = 0, . . . , n − r

Teoremă. Punctul bn0 (t) descrie, când t variază, curba Bézier asociată poligo-
nului de control (b0 , . . . , bn ) dată de ecuaţia (1.2).
Proprietăţi elementare
Fie (b0 , . . . , bn ) un poligon de control din Rm . Curba Bézier asociată b :
[0, 1] → Rm are următoarele proprietăţi:
(i) b este o curbă polinomială, având gradul mai mic sau egal cu n;
(ii) curba b interpolează extremităţile poligonului de control, i.e. b(0) = b0 ,
b(1) = bn ; ı̂n particular, dacă poligonul de control este ı̂nchis, curba Bézier
asociată este ı̂nchisă;
(iii) proprietatea acoperirii convexe: punctele curbei Bézier b se află ı̂n
acoperirea convexă a punctelor de control;
(iv) invarianţa la schimbări afine de parametru: dacă ϕ : [0, 1] →
[α, β], ϕ(t) = α + t(β − α) este o schimbare afină de parametru şi dacă b[α,β]
este curba Bézier asociată poligonului de control (b0 , . . . , bn ), dar definită pe
intervalul [α, β], atunci b = b[α,β] ◦ ϕ;
(v) invarianţă afină: dacă τ : Rm → Rm este o aplicaţie afină, atunci
curba Bézier asociată poligonului de control date de (τ (b0 ), . . . , τ (bn )) este
curba τ (bn );
(vi) (Invarianţa la combinaţii baricentrice): fie (b0 , . . . , bn ), respectiv
(b0 , . . . , b
e e n ) două poligoane de control şi b, respectiv b e curbele Bézier cores-
punzătoare. Pentru orice α ∈ R, curba Bézier asociată poligonului de control
((1 − α)b0 + αb e 0 , . . . , (1 − α)bn + b
e n ) este curba (1 − α)b + αb.
e
(vii) dacă b e : [0, 1] → Rm este curba Bézier asociată poligonului de control
(bn , . . . , b0 ), atunci b(t)
e = b(1 − t), ı̂n particular, cele două curbe au aceeaşi
imagine geometrică.

Suprafeţe Fie m, n ∈ N∗ două numere naturale nenule şi


 
b00 b01 . . . b0n
 b10 b11 . . . b1n 
 
 ... ... ... ... 
bm0 bm1 . . . bmn

o matrice ale cărei elemente sunt puncte din R3 , numită reţea Bézier (po-
liedru de control). Suprafaţa Bézier de tip produs tensorial asociată
acestor date este dată de formula:
m X
X n
3
: [0, 1] × [0, 1] → R , ( u, v) = Bim (u)Bjn (v)bij .
i=0 j=0

8
Proprietăţi elementare
(i) Prin analogie cu curbele Bézier, suprafaţa de tip produs tensorial are
următoarele proprietăţi:
- interpolarea punctelor b00 =( 0, 0), b0n =( 0, 1), bm0 =( 1, 0), bmn =( 1, 1);
- imaginea suprafeţei este inclusă ı̂n acoperirea convexă a punctelor polie-
drului de control;
- invarianţă la transformări afine.
(ii) Curbele frontieră, i.e. curbele de coordonate ( 0, ·), ( 1, ·), ( ·, 0) şi ( ·, 1) sunt
curbe Bézier având poligoane de control respectiv (b00 , b01 , . . . , b0n ),
(bm0 , bm1 , . . . , bmn ), (b00 , b10 , . . . , bm0 ), (b0n , b1n , . . . , bmn ). Restul curbelor
de coordonate sunt, la rândul lor, curbe Bézier. Totuşi, acestea din urmă nu au
drept puncte de control linii sau coloane din matricea (bij )i,j .
Exemplu. Dacă m = n = 1 avem
1 X
1   
X b00 b01 1−v
( u, v) = Bi1 (u)Bj1 (v)bij = (1 − u u) .
b10 b11 v
i=0 j=0

De exemplu, dacă
b00 = (0, 0, 0), b01 = (1, 0, 0), b10 = (0, 1, 0), b11 = (1, 1, 1),
un calcul direct arată că ( u, v) = (v, u, uv).

1.3 Exerciţii
Exerciţiul 1.2 Considerăm poligonul de control (b0 , b1 , b2 , b3 ), unde
b0 = (2, 3), b1 = (4, 3), b2 = (4, 5), b3 = (−2, 9).
Scrieţi schema de Casteljau corespunzătoare acestui poligon de control şi valorii
t = 21 a parametrului.

Exerciţiul 1.3 Scrieţi forma Bernstein a curbei Bézier asociate poligonului de


control b0 = (−2, 1), b1 = (1, 5), b2 = (3, 0).

Exerciţiul 1.4 În R2 considerăm poligoanele de control P = (b0 , b1 , b2 ) res-


pectiv Pe = (b2 , b3 , b4 ), unde
b0 = (−6, −4), b1 = (3, 3), b2 = (λ − 1, 3), b3 = (7, µ + 1), b4 = (−3, −1).
Fie b : [2, 5] → R2 , respectiv b e : [5, 8] → R2 curbele Bézier asociate lui P ,
e au un racord de clasă GC 1 sau C 1 ı̂n b2 .
respectiv P . Discutaţi dacă b şi b
e

Exerciţiul 1.5 Considerăm poligonul de control


b0 = (1, 1), b2 = (2, 0), b3 = (0, 0)
şi fie b : [0, 1] → R curba Bézier asociată. Calculaţi b( 31 ) şi stabiliţi dacă
2

punctul (1, 31 ) aparţine imaginii lui b.

9
Capitolul 2

Grafică rasterială -
procesarea imaginilor

2.1 Motivaţie
Sunt considerate trei imagini digitale (Fig. 2.2), una este originalul, (149604
bytes - Image B); a doua şi a treia utilizează tehnici de compresie şi contin
12253 bytes (Image C), respectiv 4452 bytes (Image A) (8%, respectiv 3% din
original). Deşi dimensiunea imaginilor este diferită, diferenţele sunt greu de
sesizat. Scopul capitolului este de a detalia, pe scurt, tehnicile folosite pentru
compresia imaginilor.

Figura 2.1: O imagine digitală şi două variante obţinute folosind tehnici de com-
presie. Sursa: C. Bénéteau, C. Haddad, D. Ruch, P. Van Fleet, Why Wavelets?,
IMA Wavelet Workshop, 2011

10
Sunt două principii ce trebuie avute ı̂n vedere:
a) O imagine este un semnal digital discret, ce poate fi modelat cu ajutorul
matricelor. Cu aceste matrice pot fi efectuate diferite operaţii. De exemplu,
dacă c = 0.5 şi A este semnalul iniţial, atunci c × A este o imagine cu un
contrast mai redus; dacă T este matricea care are toate elementele 255 / 1
(valoarea maximă admisă), atunci T − A este negativul imaginii iniţiale A, etc.
b) În loc de a transmite semnalul ı̂n forma sa originală, transmitem o medie
semnalului şi anumite diferenţe, adică semnalul modificat.

2.2 Transformarea semnalelor - Produsul de con-


voluţie
Despre semnale. O imagine digitală este privită ca un semnal (adică o funcţie
s : A → B). Semnalele pot fi clasificate ca fiind:

• discrete / continue (depinzând de domeniul A)

• 1D / 2D / .... (depinzând de domeniul A)


• scalare / vectoriale (depinzând de codomeniul B)

O imagine este un semnal digital discret, ce poate fi modelat cu ajutorul


matricelor. Cu aceste matrice pot fi efectuate diferite operaţii. De exemplu,
dacă c = 0.5 şi A este semnalul iniţial, atunci c × A este o imagine cu un
contrast mai redus; dacă T este matricea care are toate elementele 255 / 1
(valoarea maximă admisă), atunci T − A este negativul imaginii iniţiale A, etc.

Figura 2.2: Semnalul A şi semnalul c · A (c = 0.5). Semnalul A şi semnalul


T − A, unde T este matricea care are toate elementele 255 / 1 (valoarea maximă
admisă). Semnalul A şi semnalul V · A · W , cu V, W convenabil alese. Sursa:
C. Bénéteau, C. Haddad, D. Ruch, P. Van Fleet, Why Wavelets?, IMA Wavelet
Workshop, 2011

Observaţie. Este necesară / utilă tranziţia

discret ←−→ continuu (←− eşantionare / sampling; −→ reconstrucţie)

Manevrarea / procesarea semnalelor se realizează cu ajutorul unei operaţii


numite produs de convoluţie.

11
2.2.1 Cazul 1D
a) Notaţii. Semnale discrete şi continue
Semnal continuu:

f : R → R (cu suport compact); x 7→ f (x)

Semnal discret:
a : Z → R; i 7→ a[i]

b) Convoluţie 1D − cazul discret


Definiţie. Fie a, b : Z → R semnale discrete. Convoluţia (produsul de
convoluţie) este semnalul a ? b : Z → R dat de formula
X
(a ? b)[i] = a[j]b[i − j].
j∈Z

Exemplu. Filtrul constant (box filter).


Proprietăţi ale produsului de convoluţie − cazul discret: asociativitate,
comutativitate, element neutru (semnalul δ), distributivitate faţă de adunarea
funcţiilor.
c) Convoluţie 1D − cazul continuu
Definiţie. Fie f, g : R → R semnale continue. Convoluţia (produsul de
convoluţie) este semnalul f ? g : R → R dat de formula
Z ∞
(f ? g)(x) = f (t)g(x − t)dt.
−∞

Aplicabilitatea lucrului cu funcţii continue: sursă de exemple.


Filtrul constant.
1 x ∈ − 21 , 21
  
fconst : R → R; fconst (x) =
0 ı̂n rest
R∞
Observaţii. (i) Are loc relaţia ∞ fconst (x)dx = 1. (ii) Cum ar putea fi definit
filtrul constant pe intervalul [−r, r), cu r > 0?

Figura 2.3: Filtrul constant

12
Filtrul liniar.

1 − |x| x ∈ [−1, 1)
flin : R → R; flin (x) =
0 ı̂n rest

Figura 2.4: Filtrul liniar

Pentru r > 0 filtrul liniar cu suport [−r, r] este definit prin

flin ( xr )
flin,r : R → R; flin,r (x) = .
r

Filtrul Gaussian.
1 x2
fG : R → R; fG (x) = √ e− 2 .

Pentru σ > 0 se defineşte
1 x2
fG,σ : R → R; fG,σ (x) = √ e− 2σ2 .
σ 2π

Figura 2.5: Filtrul Gaussian (σ = 0.5; σ = 2.0)

13
Filtrul Ricker (Mexican Hat).
Pentru σ > 0 se defineşte

x2
 
2 x2
ψσ : R → R; ψσ (x) = √ √ 1− 2 e− 2σ2 .
3σ 4 π σ

Figura 2.6: Filtrul Ricker (σ = 0.5; σ = 2.0)

Observaţie. Dezavantaje ale ultimelor două filtre: nu au suport compact,


costisitoare.
d) Convoluţia discret-continuu
Definiţie. Fie a : Z → R un semnal discret (semnal de intrare) şi f : R → R un
filtru continuu (cu suport compact). Convoluţia (produsul de convoluţie)
este semnalul a ? f : R → R dat de formula
X
(a ? f )(x) = a[j]f (x − j).
j∈Z

2.2.2 Cazul 2D
a) Convoluţie 2D − cazul discret
Definiţie. Fie a, b : Z2 → R semnale discrete (cu suport finit). Convoluţia
a ? b este semnalul a ? b : Z2 → R dat de formula
X
(a ? b)[i, j] = a[i0 , j 0 ]b[i − i0 , j − j 0 ],
i0 ,j 0

unde b poate fi privit ca semnal de intrare, iar a ca filtru (mască, nucleu, ...).
Exemplu pentru convoluţia 2D.

b) Filtre de convoluţie continue − cazul 2D


Filtre separabile. Dat un filtru 1D continuu, f (1) : R → R, acesta poate fi
folosit pentru a construi un filtru 2D, f (2) : R2 → R, dat de formula

f (2) (x, y) = f (1) (x) · f (1) (y).

14
2D Mexican Hat (dilation factor equal to 6)

0.6

0.4

0.2

-0.2
40
30 40
20 30
20
10
10
0 0

Figura 2.7: Filtre 2D separabile generate din filtre 1D.

2.2.3 Utilizarea produsului de convoluţie ı̂n grafică


Exemplul 1. Obţinerea “soft drop shadows”.
Exemplul 2. Redimensionarea unui semnal discret.
Exemplul 3. Detectarea contururilor / muchiilor.
Exemplul 4. Ilustrări ale aplicării produsului de convoluţie ı̂n grafică.
Exemplul 5. Există implementări bazate pe OpenGL / GLSL.

2.3 Transformata Fourier


• Se doreşte transmiterea unui semnal. Cum se poate face aceasta cât mai
eficient? Ce ı̂nseamnă compresia imaginilor? Există tehnici de compresie
cu sau fără pierdere de informaţii (”lossy” sau ”lossless”).
150 15

100 10

50 5

0 0

−50 −5

−100 −10

−150 −15
0 5 10 15 20 25 30 0 5 10 15 20 25 30

Figura 2.8: Graficele unor semnalelor periodice 3 sin(2x) + 100 sin(4x) −


2 sin(300x), respectiv 3 sin(2x) + 8 sin(4x) − 2 sin(300x).

• Cele două semnale din Fig. 2.9: ”componente de frecvenţă”: 2, 4, 300 de


ori pe [0, 2π]
• Pentru componenta de frecvenţă π2 : coeficientul din primul semnal ”do-
mină” coeficientul celui de-al doilea semnal
• Compresia datelor: eliminarea coeficienţilor ”mai puţin relevanţi”, eli-
minarea zgomotelor (frecvenţe mari).

15
Transformata Fourier continuă
• Fapt: orice semnal periodic f : R → R poate fi scris ca

X
f (x) = a0 + [ak cos(kx) + bk sin(kx)]
k=1

– Semnificaţie:
– Este indicată o bază B a unui spaţiu vectorial (infinit dimensional)
de funcţii (1, cos(n·), sin(n·))
– Semnalul este ”descompus” ı̂n raport cu această bază:
– a da un semnal este echivalent cu a da coeficienţii a0 , a1 , a2 , . . . ; b0 , b1 , b2 , . . ..
– Pentru a ”comprima” / aproxima semnalul este suficient să fie indicaţi
un număr finit de coeficienţi!
• Exemplu: Pentru funcţiile periodice pe [−π, π] au loc relaţiile
Z π Z π
1 1
an = f (x) cos(nx)dx, n ≥ 0; bn = f (x) sin(nx)dx, n ≥ 1.
π −π π −π

Relaţii fundamentale
• Au loc egalităţile:

Z π  0, m 6= n
cos(mx) cos(nx)dx = 2π, m = n = 0
−π 
π, m = n 6= 0
Z π 
0, m 6= n
sin(mx) sin(nx)dx =
−π π, m=n
Z π
cos(mx) sin(nx)dx = 0
−π

• Semnificaţie:
• Baza B este o bază ortogonală a spaţiului de funcţii considerat! (produsul
scalar este dat de integrare)
Aplicare
• Semnalul: transformat, coeficienţii Fourier ai frecvenţelor ı̂nalte: eliminaţi.
• Fast Fourier Transform (FFT) eficientizează algoritmul (O(n log n) ı̂n loc
de O(n2 ))
• Discrete Cosine Transform (DCT): ”partea reală”
• Implementare: formatul JPEG
• Exemplu
• Dezavantaje:
– Nu orice semnal este periodic.
– Unele semnale sunt ”localizate”

16
2.4 Transformate wavelet (Undine)
(i) Semnal discret 2D
(ii) Semnal discret 1D
Şir de numere reale x = (x1 , x2 , . . . , xN ) cu N par. Trebuie transmisă o
aproximare s a acestor date.
• Pentru a reduce timpul de transfer, lungimea aproximării trebuie să fie
N/2. Cum se procedează?
• Este posibil să fie trimis şi un set de date adiţionale. De exemplu, poate fi
trimisă o a doua listă d. Ce listă ar putea fi trimisă aşa ı̂ncât lista iniţială
x să poată fi recuperată din s şi d?
sk = (x2k+1 + x2k+2 )/2; sk = (−x2k+1 + x2k+2 )/2.
Transformarea x 7→ (s|d) se numeşte transformarea Haar discretă (Discrete
Haar Wavelet Transform).
• Intuitiv: Baza de funcţii periodice de la transformata Fourier este ı̂nlocuită
cu altă bază (alte baze)
• Mecansimul de generare: prin divizare
• Esenţiale: ϕ (”scaling function”), ψ (”wavelet”) cu ajutorul acestora este
construită baza spaţiului de funcţii
• Diverse alegeri pentru ϕ&ψ (Haar, Daubechies, Meyer, ”mexican hat”) şi
aplicaţii ı̂n domenii variate.
• Avantaje:
– Utilizarea ı̂n analize multi-rezoluţie, datorită percepţiei ”multi-scale”
– Pot fi utilizate şi pentru semnale cu discontinuităţi / care nu sunt
periodice.

2.5 Exerciţii
Exerciţiul 2.1 Fie f filtrul continuu constant nenul pe (−2, 2). Determinaţi
intervalul pe care va fi nenulă convoluţia f ? f .

Exerciţiul 2.2 Fie a un semnal discret şi f un filtru continuu de rază 2.


Explicaţi cum se calculează (a ? f )(6.2).
2 2
Exerciţiul 2.3 P∞Considerăm funcţia periodică f (x) = 2 cos x − sin x şi fie
f (x) = a0 + k=1 [ak cos(kx) + bk sin(kx)] dezvoltarea ı̂n serie Fourier a lui f .
Stabiliţi câţi dintre coeficienţii (ai )i şi (bi )i sunt nenuli.

Exerciţiul 2.4 Fie f = 2φ20 + 3φ21 + 3φ22 + 5φ23 ı̂n spaţiul V 2 . Determinaţi
f ( 81 ) + f ( 38 ) + f ( 58 ) + f ( 78 ).

17
Figura 2.9: Analiză multirezoluţie - exemplu. Sursa: Institute of Mathematics
and Its Applications, University of Minnesota, IMA Special Workshop Wavelets
and Applications: Project Building Workshop http://www.ima.umn.edu/2010-
2011/SWb7.13-16.11/

18
Capitolul 3

Tehnica Ray Tracing

3.1 Principii de bază


Ray Tracing este o tehnică legată de detectarea suprafeţelor vizibile. În general,
această problemă poate fi abordată folosind:
• metode ale spaţiului obiectelor;
• metode ale spaţiului imagine.
Tehnica Ray Tracing combină cele două abordări, ”aducând” pixelii ı̂n spaţiul
obiectelor şi operând pixel cu pixel.
Se consideră reperul de vizualizare, având originea ı̂n punctul P0 (poziţia
observatorului) şi versorii (u, v, n) (orizontala şi verticala din planul de vizu-
alizare, respectiv normala pe planul de vizualizare). În continuare, prin abuz
de notatţie, vom folosi aceleaşi litere pentru a nota coordonatele ı̂n raport cu
reperul de vizualizare, ca şi pentru versorii care le determină, i.e. (u, v, n). În
particular, planul de vizualizare are o ecuaţie de forma n = ν(const.). În planul
de vizualizare se consideră un ”ecran virtual’, delimitat de dreptele de ecuaţii
u = l, n = ν; u = r, n = ν; v = b, n = ν; v = t, n = ν.
Fie P centru al unui pixel virtual. Determinăm ı̂n continuare forma coordo-
natelor sale. Fie nx numărul de coloane şi ny numărul de linii din structura de
pixeli; un pixel real s este dat de o pereche (i, j) ∈ N×N, cu i = 0, . . . , nx −1, j =
0, . . . , ny − 1, iar pixelul virtual asociat are coordonatele
(r − l)

 us = l +
 (i + 0.5)


 nx
(t − b) (3.1)
vs = b + (j + 0.5)
n



 y

ns = ν
Acestea pot fi transferate ulterior ı̂n coordonate de modelare, folosind matricea
de trecere de la reperul de modelare la reperul de vizualizare.
Paşii algoritmului Ray Tracing fundamental (basic Ray Tracing) sunt următorii:

19
• se duce o rază prin punctul P0 care uneşte acest punct cu centrul unui
pixel virtual;
• se găseşte primul obiect intersectat (eventual se găsesc toate obiectele
intersectate) de rază;

• pentru pixelul real proprietăţile sunt determinate pe baza valorilor obţinute


pentru intersecţie (culoare, material, normale, coeficient α, etc.).

Implementarea are doi paşi, aplicaţi pentru fiecare pixel virtual: (i) repre-
zentarea razelor şi (ii) determinarea intersecţiilor.

3.1.1 Reprezentarea razelor şi formalizare


Fie P0 observatorul şi P un punct de pe ecranul virtual (coordonatele sale sunt
obţinute din ecuaţia (3.1), transferate ı̂n reperul de modelare. Raza dusă prin
P0 care trece prin P are reprezentarea (ca dreaptă)

r(t) = P0 + t(P − P0 ) = (1 − t)P0 + tP, t ∈ R. (3.2)

Vom nota cu d = P − P0 . Valorile lui t au diferite semnificaţii geometrice


referitoare la poziţia punctului r(t), de exemplu:

(i) Pentru t < 0 punctul curent r(t) se află ”ı̂n spatele” observatorului;
(ii) Pentru 0 < t1 < t2 punctul r(t1 ) este mai aproape de observator decât
punctul r(t2 ), etc.

Principiul fundamental este: Găsirea punctului de interseţie de pe dreaptă


este echivalentă cu determinarea parametrului t corespunzător. Din punct de
vedere formal, Ray Tracing poate fi privit ca o procedură

RT(vec3 P0 , vec3 d, real t0 , real t1 ).

Datele de intrare sunt: punctul P0 (poziţia observatorului), direcţia d a


razei, numerele reale t0 , t1 ; [t0 , t1 ] fiind intervalul ı̂n care se caută soluţia t - de
obicei este ales [0, ∞).
Datele de ieşire sunt date de o mulţime care poate fi: (i) ∅ (dacă raza nu
intersectează niciun obiect); (ii) {t} (dacă raza intersectează un obiect, acesta
este parametrul t corespunzător punctului de intersecţie). De asemenea, se
poate considera procedura rayColor(P ), al cărei efect este determinarea culorii
pixelului real corespunzător pixelului virtual P .

3.1.2 Intersecţii
Interecţii cu sfere. Fie S o sferă de centru C ∈ R3 şi rază R > 0. Datorită
invarianţei ecuaţiei sferei la izometrii, se poate lucra direct ı̂n coordonate de

20
vizualizare, fiind necesară cel mult o translaţie. Fie X = (uX , vX , nX ) un
punct; atunci el aparţine sferei dacă şi numai dacă

(X − C) · (X − C) − R2 = 0.

raza r dată de (3.2) intersectează sfera dacă şi numai dacă există t ∈ R astfel
ı̂ncât
(r(t) − C) · (r(t) − C) − R2 = 0.
Notând d = P − P0 , ecuaţia de mai sus este echivalentă cu

((P0 + td) − C) · ((P0 + td) − C) − R2 = 0,

iar acestă ecuaţie revine la

(d · d)t2 + 2d · (P0 − C)t + (P0 − C) · (P0 − C) − R2 = 0,

adică la o ecuaţie de gradul II ı̂n t. Pentru aceasta este verificată mai ı̂ntâi
condiţia de existenţă a soluţiilor reale (∆ ≥ 0), apoi, dacă admite soluţii se
găseşte cea mai mică soluţie pozitivă, etc.

Intersecţii cu triunghiuri. Fie a, b, c vârfurile triunghiului considerat. Un


punct din planul triunghiului poate fi reprezentat sub formă de combinaţie afină
/ baricentrică a punctelor a, b, c

(1 − β − γ)a + βb + γc, β, γ ∈ R,

iar un punct situat pe laturile triunghiului sau ı̂n interiorul său poate fi repre-
zentat sub formă de combinaţie convexă

(1 − β − γ)a + βb + γc, β, γ ∈ [0, 1].

A determina (posibila) intersecţie dintre rază şi triunghi revine la a găsi t, ∈


R, β, γ ∈ [0, 1] astfel ca

P0 + td = (1 − β − γ)a + βb + γc. (3.3)

În coordonate, ecuaţia (3.3) reprezintă un sistem de trei ecuaţii cu trei necu-
noscute. Compatibilitatea sa şi natura soluţiilor (dacă există) dau informaţii
despre intersecţia dintre rază şi triunghi:

• dacă β, γ ∈ [0, 1] şi t ∈ R există, atunci raza intersectează triunghiul sau


interiorul său;
• dacă β 6∈ [0, 1] sau γ 6∈ [0, 1] (dar există ı̂n R), atunci raza intersectează
planul, ı̂nsă ı̂n afara triunghiului;

• dacă β, γ nu există, dreapta este paralelă cu planul sau triunghiul este


degenerat, etc.

21
Intersecţii cu poligoane convexe. Fie P1 P2 . . . Pm un poligon convex; fie
p normala la planul triunghiului (este bine definită, deoarece poligonul este
convex!). Un punct arbitrar X aparţine planului poligonului dacă şi numai dacă
vectorul format de X şi unul dintre vârfuri (de exemplu P1 ) este perpendicular
pe p, deci
(X − P1 ) · p = 0.
Intersecţia dintre raza r şi plan este dată de condiţia

(r(t) − P1 ) · p = 0,

care este o ecuaţie ı̂n t. Soluţia (dacă există) poate fi scrisă sub forma
P1 − P0 ) · p
t0 = .
d·p
Pasul următor este de a stabili dacă, pentru t0 astfel determinat, punctul r(t0 )
este pe laturile sau ı̂n interiorul poligonului, ceea ce revine la a stabili dacă
r(t0 ) poate fi exprimat sub formă de combinaţie convexă a trei dintre vârfurile
poligonului. Din punct de vedere practic, dat fiind faptul că poligonul este
convex, el poate fi triangulat folosind un evantai de triunghiuri având un vârf
comun (de exemplu P1 ), fiind suficiente m − 2 teste.

3.2 Efecte vizuale


Umbre. Se presupune că scena reprezentată are o sursă de lumină (direcţională,
cu direcţia de propagare l); tehnica Ray Tracing poate fi aplicată pentru deter-
minarea umbrelor obiectelor din scenă.

• Aplicarea Ray Tracing se face la nivel de pixel, pentru obiectele ce sunt


reprezentate.
• Fie M un punct analizat (de exemplu centrul unui pixel virtual), aparţinând
unui obiect ce trebuie reprezentat şi a cărui umbră trebuie calculată.
• Se aplică RT(M, −l, ε, ∞) pentru a determina posibilele obiecte situate ı̂n
umbră (primul parametru este ε > 0 şi nu exact 0, pentru a nu interpreta
obiectul căruia ı̂n aparţine punctul M ca fiind interpus ı̂n tre M şi sursa
de lumină).
• Dacă RT(M, −l, ε, ∞) returnează mulţimea vidă ∅ (i.e. nu există obiect
de intersecţie), se calculează culoarea pixelului cu formula modelului de
iluminare, iar ı̂n caz contrar se utilizează culoarea umbrei.

Reflexie. Fie s normala la o suprafaţă S ı̂ntr-un punct P al acesteia, δ direcţia


de propagare a luminii. Un observator poate detecta ceea ce se reflectă ı̂n
direcţia ρ = ρ(s, δ) dată de egalitatea

ρ − δ = w = 2(−δ · s)s,

22
unde (−δ · s)s este proiecţia ortogonală a lui δ pe dreapta direcţionată de s.
Aşadar, direcţia de reflexie este

ρ = δ − 2(δ · s)s.

Aplicând Ray Tracing sub forma RT(P, ρ, ε, ∞), se poate stabili ce obiecte ı̂ntâlneşte
raza reflectată.

Refracţie. Fie δ direcţia razei incidente dintr-un mediu cu indicele de refracţie


ν şi % direcţia urmată după trecerea ı̂ntr-un mediu cu un indice de refracţie mai
mare, ν 0 (a cărui frontieră este o suprafaţă S). Notând cu θ şi ϕ unghiurile
formate de vectorii −delta şi −% cu normala s la suprafaţa S. Legea lui Snell
stabileşte relaţia ı̂ntre aceste elemente

ν sin θ = ν 0 sin ϕ.

Considerând ca date de intrare δ, indicii ν, ν 0 , normala s şi punctul P , se poate


calcula vectorul %, care indică direcţia razei refractate
"r #
ν ν 2 (1 − (δ · s)2 ) ν
% = 0δ + 1− − 0 (δ · s) s.
ν ν 02 ν

Aplicând Ray Tracing sub forma RT(P, %, ε, ∞), se poate stabili ce obiecte ı̂ntâlneşte
raza refractată.

3.3 Exerciţii
Exerciţiul 3.1 Fie P0 = (0, 2, 1) şi punctele a = (−1, 1, −1), b = (4, 0, −1), c =
(−1, 4, −1). Daţi exemplu de vector r astfel ca raza dusă prin P0 având direcţia
dată de r să intersecteazeinteriorul triunghiului abc.

Exerciţiul 3.2 O rază este incidentă la o suprafaţă reflectantă după direcţia


(1, 2 − 1). Determinaţi care este direcţia √
razei

reflectate, dacă normala la
2 2
suprafaţă ı̂n punctul de incidenţă este ( 2 , − 2 , 0).

23
Capitolul 4

Modelare geometrică 3D
aplicată ı̂n grafică - teme de
interes şi repere
bibliografice

Utilizarea reţelelor de poligoane şi de triunghiuri (Polygon meshes and triangle


meshes) (de exemplu [Botsch et al., 2006]; [Bischoff, Kobbelt, 2004]; Curs Prin-
ceton: Advanced Topics in Computer Science: Geometric Modeling for Com-
puter Graphics, Curs Berkeley: Mesh Generation and Geometry Processing in
Graphics, Engineering, and Modeling).

4.1 Reconstructie (3D reconstruction)


Obiecte 3D: disponibile in format ”triangle mesh” sau ”polygonal mesh” - di-
verse formate de date (.OBJ, .PLY)

• The Stanford 3D Scanning Repository


• Large Geometric Models Archive - Georgia Institute of Technology
• A Benchmark for 3D Mesh Watermarking

Reconstrucţia poate porni de la nori de puncte [Hoppe et al., 1992], [Pauly


et al., 2002] sau de la imagini nestructurate 2D sau 3D (cum sunt de exemplu
cele din imagistica medicală [Lorensen şi Cline, 1997].

4.2 Simplificare (Simplification of 3D meshes)


• Mesh optimization [Hoppe et al., 1993]

24
• Progressive meshes [Hoppe, 1996]
• Quadric error metric [Garland & Heckbert, 1997]

4.3 Suprafeţe de subdivizare (Subdivision sur-


faces)
• [Zorin et al. , 2000]

4.4 Tehnici de netezire (Smoothing techniques)


• Robust statistics [Jones et al., 2003]

• Laplacian [Nealen et al., 2005], [Wardetzky et al., 2007]


• Survey [Belyaev & Ohtake, 2003]

4.5 Curburi discrete


• Dezvoltate diverse abordări [Magid et al., 2007]
• Pe lângă caracterul teoretic, aplicabilitate: optimizarea triangulărilor [Dyn
et al., 2001], detectarea trăsăturilor proeminente [Watanabe, Belyave,
2001]; eliminarea zgomotului [Hildebrandtm Polthier, 2004]; [Meyer et
al., 2002]

25
v

ni
ni−1
θi

ηi
vi−2

vi+2
vi−1
αi
βi vi+1

vi

Figura 4.1: Fundament geometric - 1-inelul

26
Bibliografie

[1] G. Albeanu, Grafica pe calculator. Algoritmi fundamentali, Editura Uni-


versităţii din Bucureşti, 2001.
[2] R. Baciu, Programarea aplicaţiilor grafice 3D cu OpenGL, Editura Al-
bastră, 2005.
[3] L. Bădescu, Lecţii de Geometrie, Editura Universităţii Bucureşti, 2000.
[4] W. Boehm şi H. Prautzsch, Geometric Concepts for Geometric Design,
AK Peters, Wellesley, 1994.
[5] G. Farin, Curves and Surfaces for CAGD - A practical guide, Academic
Press, 2002.
http://www.farinhansford.com/books/cagd/materials.html
http://www.vis.uni-stuttgart.de/ kraus/LiveGraphics3D/cagd/
[6] J. Foley, A. van Dam, S. Feiner şi J. Hughes, Computer Graphics: Prin-
ciples and Practice (2nd edition in C), Addison Wesley, 1995.
[7] D. Hearn şi M. Baker, Computer Graphics with OpenGL, 2003.
[8] L. Ornea şi A. Turtoi, O introducere ı̂n geometrie, Editura Theta, Bu-
cureşti, 2000.
[9] H. Prautzsch, W. Boehm şi M. Paluszny, Bézier and B-Spline Techni-
ques, Springer, 2002.
http://i33www.ira.uka.de/applets/mocca/html/noplugin/inhalt.html
[10] P. Schneider şi D. Eberly, Geometric Tools for Computer Graphics, Mor-
gan Kaufmann, 2003.
[11] P. Shirley, M. Ashikhmin, M. Gleicher, S. Marschner, E. Reinhard, K.
Sung, W. Thompson şi P. Willemsen, Fundamentals of Computer Gra-
phics (2nd edition), AK Peters, Wellesley, 2005.
[12] D. Shreiner, M. Woo, J. Neider şi T. Davis. OpenGL Programming Guide
(6th edition), Addison Wesley, 2008.
http://www.opengl-redbook.com

27

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