Upload
adrian-radulescu
View
235
Download
0
Embed Size (px)
Citation preview
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 1/91
Eliminarea
suprafeţelor ascunse
(Ascunderea
suprafeţelor)
•determinarea suprafeţelor vizibile sau a liniilor vizibilesau
•eliminarea
suprafeţelor ascunse sau a liniilor ascunse
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 2/91
Clasificarea
algoritmilor •
metode
ale spaţ iului
obiect
complexitatea
O(n2)
(n obiecte)
•
metode
ale spaţ iului
imagine
complexitatea O(n.p) (n obiecte, p pixeli)
pentru fiecare pixel din imagine execută
− determină obiectul cel mai apropiat de punctul de vizualizare, str ă bătut de proiector
− desenează pixelul
pentru fiecare obiect din spaţiul 3D execută
− determină pentru fiecare obiect păr ţile care nu
sunt obstrucţionate de alte păr ţi ale celorlalte obiecte;
− desenează acele păr ţi în culoarea respectivă;
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 3/91
Tehnici pentru creşterea eficienţei algoritmilor
de determinare a suprafeţelor vizibile
•
Algoritmi
eficienţi de soratare
•
Tehnici de coerenţă
•
Eliminarea
suprafeţelor
“spate”
•
Teste utilizând dreptunghiuri sauparalelipipede circumscrise
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 4/91
Algoritmi
eficienţi de soratare
•
Sortarea
este
utilizată
pentru
a facilita
comparaţiile
de adâncime
prin
ordonarea liniilor, suprafeţelor
şi
a obiectelor
în
funcţie
de distanţa
acestora
faţă
de planul de vizualizare.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 5/91
Tehnici de coerenţă
•
Coerenţa
presupune
a se ţine
cont în
scrierea
algoritmilor
de avantajele
pe
carele ofer ă
similitudinile
diverselor
păr ţi componente
ale obiectelor
şi
ale imaginilor
de reprezentat.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 6/91
Tehnici de coerenţă
•
Coerenţ a
obiectelor
•
Coerenţ a feţ elor
•
Coerenţ a
laturilor
•
Coerenţ a
liniilor
de scanare
•
Coerenţ a cadrelor
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 7/91
Eliminarea
suprafeţelor
“spate”
H
G
F E D
C
B
A
I
x
z
V(x ,y ,z )v v v
0<+++ DCz By Ax vvv
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 8/91
Eliminarea
suprafeţelor
“spate”
-
continuare
zv
yz
xv
direcţia devizualizare punctul de
vizualizare
N(A, B, C)
Sistem dreapta
z v
yz
xv
direcţia de vizualizare punctul de
vizualizare
N(A, B, C)
Sistem stân a
C < 0 C > 0
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 9/91
Teste
utilizând
dreptunghiuri
sau
paralelipipede
circumscrise
zv
yz
xv
y
x
y
x
Testul
“bounding box”
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 10/91
Teste
utilizând
dreptunghiuri
sau
paralelipipede
circumscrise
Testul
“bounding volumes”
zmin1
zmax1
zmin2
zmax2
z
x0
1
2zmax2 < zmin1sau
zmax1 < zmin2
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 11/91
Transformarea
perspectivă
•
fiind date două puncte P1 (x1, y1, z1) şiP2 (x2, y2, z2) se ascund unul pe cel ălalt?
care este echivalentă cu următoarea întrebare:
•
se afl ă punctele P1 şi P2 pe acelaşi proiector?
2
2
1
1
z
x
z
x=
2
2
1
1
z
y
z
y=şi
Proiectori
P3
P2(x2,y2,z2)
P1(x1,y1,z1)
Centrul proiecţiei
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 12/91
Algoritmi
pentru
determinarea
liniilor
vizibile
•
algoritmi
ai
spaţiului
obiect•
algoritmi
pentru
determinarea
liniilor
vizibile
=>
listă
a segmentelor
de linii vizibile
•
algoritmii
pentru
determinarea
suprafeţelor vizibile
pot fi
utilizaţi
şi
pentru determinarea
liniilor
vizibile
=>nu
la o listă
de laturi
vizibile
ci
la o matrice
de pixeli vizibili
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 13/91
Algoritmi
pentru
determinarea
liniilor
vizibile
•
Algoritmul
Roberts
•
Algoritmul
Appel
•
Linii
cu halo
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 14/91
Algoritmul
Roberts
•
Se aplică muchiilor
apar ţinând poliedrelorconvexe.1.
Aplicarea unei tehnici de ştergerea
suprafeţelor “spate”
care va elimina toatemuchiile care sunt comune la două poligoane “spate” ale unui poliedru.
2.
Compararea fiecăreia dintre laturiler ămase cu fiecare dintre poliedrele care o
pot obstrucţiona.3.
Fiecare din por ţiunile r ămase din muchie
vor fi comparate în continuare cuurmătorul poliedru.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 15/91
2. Compararea fiecăreia dintre laturile r ămase cu fiecaredintre poliedrele care o pot obstrucţiona -
optimizare
•
Multe din poliedre pot fi excluse din comparaţiepe baza testelor utilizând extensiile: extensiileproiecţiilor lor pot să nu se suprapună pe axele xsau y sau extensia unui obiect poate fi maideparte, în z, decât a celuilalt.
•
Deoarece algoritmul se restrânge la poliedreleconvexe există cel mult o mulţime continuă depuncte, apar ţinând unei linii, care poate fiobstrucţionată de un poligon. Deci fiecarepoliedru fie obstrucţionează total o linie fie lasă vizibile una sau două por ţiuni din linie.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 16/91
Algoritmul
Appel•
determinarea
laturilor
vizibile
apar ţ inând
poligoanelor •
vor
fi
luate
în
considerare
doar
laturile
care
apar ţin
feţelor
“faţă”
Mă i i ă “i i ibilit t
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 17/91
Mărimea
numită
“invizibilitatea cantitativ ă”
a unui
punct
de pe
o latur ă
•
numărul
poligoanelor
“faţă”
care
obstrucţionează
punctul
respectiv
faţă de poziţia de vizualizare
IC=IC-1 IC=IC+1
Linie
vizibilă
=> IC=0
EXEMPLU
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 18/91
EXEMPLU
J
R
Q
PO
N
ML
K
F
E
D
C
B A
2
1 11 0 020
S
Li ii t
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 19/91
Linii
contur •
Pentru
poligoanele
care fac
parte
dintr-un
poliedru
închis:
O “linie
contur”
este
o linie
care apar ţine
unui
poligon
“faţă”
şi
unui
poligon
“spate”.•
Pentru
poligoane
carenu
fac
parte
dintr-unpoliedru
închis:O “linie
contur”
este
o
linie
care apar ţine
doar
unui
poligon “faţă”.
J
R
Q
PO
N
ML
K
F
E
D
C
B A
2
1 11 0 020
S
“linii
contur”: AB, CD, DF, RS, KL
nu
sunt
“linii
contur”:
CE, EF,JK,QP
“li ii ” l l ă i i d i ă
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 20/91
“linii
contur”
relevante
pentru
latura
căreia
i se determină
“invizibilitatea
cantitativ ă”
linia
de contur
trebuie
să
str ăpungă
triunghiul
format dinpunctul
de vizualizare
şi
cele
două
extremităţi
ale laturii
pentru
care se determină
invizibilitatea
cantitativă
J
R
Q
POM
L
K
F
E
D
C
B A
2
1 11 0 020
S
RS
şi DF nu sunt liniide contur relevante
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 21/91
“Regula
parităţii
impare”
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 22/91
Determinarea
punctelor
de pe
latur ă
în
care are
loc modificarea
invizibilităţii
cantitative•
proiecţia
liniilor
contur
pe
latura căreia i se
determină invizibilitatea cantitativă
J
R
Q
PO
N
ML
K
F
E
D
C
B A
2
1 11 0 020
S
D t i d l i d i ţi ( ăt d ăt ) l
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 23/91
Determinarea
modului
de variaţie
(crescător, descrescător) al
invizibilităţii
cantitative
pentru
fiecare
punct
“interesant”
de pe
latur ă
•
se atribuie
în
mod consecvent
o direcţie
fiecăreilaturi
a fiecărui
poligon
•
semnul produsului vectorial dintre latur ă şi liniacontur determină dacă se face o incrementaresau decrementare a invizibilităţii cantitative
•
valoarea
cu care se iniţializează
invizibilitatea
cantitativă
se determină
plecând
de la
“invizibilitatea cantitativă”
a unui
vârf sămânţă
numă
rul
poligoanelor
“faţă
”
care se află
între
punctul
de vizualizare
şi
vârful
de pornire
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 24/91
Linii
cu halo
(Courtesy of Arthur Appel, IBM T.J. Watson Research Center)
a) reprezentare f ăr ă eliminarea liniilor ascunse
b) reprezentareascunse
cu haloua liniilor
c) reprezentare cueliminarea liniilor ascunse
Algoritmi de determinare a
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 25/91
Algoritmi de determinare a
suprafeţelor vizibile
1.
Metoda
buffer-ului
de adâncime
2.
Metoda
scan-line
3.
Metoda
sortării
în
adâncime
4.
Metoda
subdivizării
ariilor
5.
Algoritmul
Ray Tracing (Ray Casting)
6.
Metodele
OCTREE
7.
Algoritmi pentru suprafeţe curbe
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 26/91
Metoda
buffer-ului
de adâncime
zv
z
xv
punctul devizualizare
(x, y)S3
S2S1
Metoda buffer ului de adâncime continuare
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 27/91
Se folosesc
coordonate
normalizate
(0 ÷
1)
buffer-ul de adâncime buffer-ul de reîmprospătare
y
x
refresh(x, y)
x
ydepth
(x, y)
Metoda
buffer-ului
de adâncime
-
continuare
Metoda buffer ului de adâncime continuare
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 28/91
pentru
toate poziţiile coordonatelor (x, y): depth(x, y)=1
refresh(x, y)=backgroundpentru
fiecare suprafaţă
pentru
fiecare poziţie (x, y) din suprafaţă se calculează valoarea z
dacă z < depth(x, y) atuncidepth(x, y) = z
refresh(x, y)=RGB
Metoda
buffer-ului
de adâncime
-
continuare
C l l l ii d t i t iţi ( )
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 29/91
Calcularea
valorii
coordonatei
z pentru
o poziţie
(x, y)
x
y
x+1
y+1
C D By Ax z
−−−=
C D By x A z −−+−= )1('
z z AC
' = −
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 30/91
C
D y B Ax z
−−−−=
)1("
C
B z z +="
C
B
C
A z −+
z(x, y)
C
B z − C
B
C
A z −−
C
A z +
C
A z −
C
B
C
A z ++
C
B z +
C
B
C
A z +−
Metoda buffer-ului de adâncime - continuare
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 31/91
Avantaje:•
metodă
simplă şi uşor
de implementat
•
nu
necesită
sortarea
suprafeţelor
dintr-o scenă
Dezavantaje:•
necesitatea
unei
memorii
suficient
de mari
pentru
rulare
Soluţie: procesarea
pe
secţiuni
Metoda
buffer-ului
de adâncime
-
continuare
Metoda scan line
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 32/91
Metoda
scan-line•
metodă
a spaţiului
imagine
•
extensie
a algoritmului
scan-line pentru
umplerea
suprafeţelor
poligonale•
se aplică pentru modelarea poligonală
y
y+1
y+2
y
y+1
y+2
Informaţii necesare algoritmului
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 33/91
Informaţii necesare algoritmului(incluse
în modelarea poligonală)
•
Tabloul laturilor:
–
coordonatele punctelor extreme pentru fiecare latur ă –
inversul pantei pentru fiecare latur ă –
pointeri spre tabloul poligoanelor pentru identificareasuprafeţelor mărginite de fiecare linie
•
Tabloul poligoanelor: –
conţine coeficienţi ai ecuaţiei planelor pentru fiecaresuprafaţă
–
informaţii pentru intensitatea afişării pentru fiecaresuprafaţă
–
eventual pointeri spre tabloul laturilor.
Determinarea suprafeţelor care
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 34/91
Determinarea
suprafeţelor
care
intersectează
o anumită
linie
de scanare
•
se setează o listă a laturilor active
ale poligoanelor,utilizând informaţiile din tabloul laturilor. Lista activă va
conţine doar laturile care intersectează linia de scanarecurentă, sortată în ordinea crescătoare a valorii x.•
se defineşte un semafor
pentru fiecare suprafaţă
•
semaforul este activ sau inactiv pentru a indica dacă opoziţie de-a lungul liniei de scanare se află în interiorulsau în exteriorul suprafeţei.
•
liniile de scanare sunt procesate de la stânga spredreapta. Semaforul este activat la latura cea mai dinstânga a unei suprafeţe, şi pentru marginea cea mai dindreapta semaforul este dezactivat.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 35/91
Exemplu
linia de scanare 2
linia de scanare 3
linia de scanare 1
S 2S 1
H
G
F
E
D
C
B
A
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 36/91
Observaţii:
•
Valoarea
intensităţii
background-ului
se încărcă
în
bufferul
de reîmprospătare
printr-o
rutină
de iniţializare.•
Se pot folosi
avantajele
coerenţei
liniilor
descanare.
•
Pot fi
prelucrate
un număr
oricât
de marede suprafeţe
poligonale
care se suprapun.
•
În
unele
cazuri, este
posibil
ca suprafeţele
să
se acopere
una
pe
cealaltă
în
modalternativ.
Suprafeţele se acoperă una pe
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 37/91
Suprafeţele
se acoper ă
una
pe cealaltă
în
mod alternativ.
H G
F E
D
D
C
C
B BA A
Metoda sortării în adâncime
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 38/91
•
utilizează
atât
metode
ale spaţiului
imagine cât
şi
metode
ale spaţiului
obiect
Suprafeţele sunt sortate în ordineadescrescătoare a adâncimii (spaţiul obiect)
Suprafeţele sunt scanate în ordine, începând cusuprafaţa aflată la cea mai mare adâncime(spaţiul imagine)
Metoda
sortării
în
adâncime (“algoritmul
pictorului”)
M t d tă ii î dâ i ti
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 39/91
suprafeţele sunt ordonate în funcţie de valoarea maximă alui z
suprafaţa cu adâncimea maximă (o notăm cu S) este apoi
comparată cu celelalte suprafeţe din listă pentru adetermina dacă există suprapuneri în adâncime dacă nu apar suprapuneri în adâncime se realizează
“scan-converting” pentru suprafaţa S procesul este repetat pentru următoarele suprafeţe din
listă dacă se detectează o suprapunere în adâncime la oricare
suprafaţă din listă, este nevoie să se facă unele comparaţiisuplimentare pentru a se determina dacă suprafaţa trebuiereordonată
Metoda
sortării
în
adâncime
-
continuare
Suprapunere în adâncime
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 40/91
z'min z'min
z'max
z'maxzmin
zmin
zmax zmaxS S
S' S'
z z
x xO O
a) b)
Suprapunere
în adâncime
Exemplu de suprapunere în adâncime
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 41/91
Exemplu de suprapunere în adâncime în care se impune reordonarea
z'min
z'max
zmin
zmax
SS'
z
xO
Comparaţii suplimentare (în caz de suprapunere în
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 42/91
Comparaţii suplimentare (în caz de suprapunere înadâncime) pentru a se determina dacă suprafaţa S
trebuie reordonatăDacă oricare din aceste teste este adevărat nueste nevoie să se mai facă reordonări pentru acea
suprafaţă (Testele sunt listate în ordineacrescătoare a dificultăţii).1.
Marginile dreptunghiurilor suprafeţei S şi S’, în
planul xOy, nu se suprapun.2.
Suprafaţa S se află în semiplanul exteriorsuprafeţei S’
faţă de care se face testul, relativ la
planul de vizualizare.3.
Suprafaţa S’
este în interiorul suprafeţei S relativde planul de vizualizare.
4.
Proiecţiile celor două suprafeţe pe planul devizualizare nu se suprapun.
Testul1: Marginile dreptunghiurilor suprafeţei
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 43/91
Testul1: Marginile dreptunghiurilor suprafeţeiS şi S’, în planul xOy, nu se suprapun.
x'min x'maxxmin xmax
SS'
z
xO
Observaţie: Deşi există suprapunere înadâncime nu este nevoie de reordonare.
Testul2: Suprafaţa S se află în semiplanul exterior
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 44/91
Testul2: Suprafaţa S se află în semiplanul exteriorsuprafeţei S’
relativ la planul de vizualizare.
Observaţii: Există suprapunere în adâncime
Nu trece testul 1.Trece Testul 2 deci nu este nevoie de reordonare
S
S'
z
x
O
0''' >+++ D zC y B x A
Pentru oricare vârf (x, y, z)al suprafeţei S
Testul3: Suprafaţa S’ este în interiorul
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 45/91
Testul3:
Suprafaţa S
este în interiorulsuprafeţei S relativ de planul de vizualizare
S
S'
z
xO
Observaţii: Există suprapunere în adâncime
Nu trece testul 1.
Nu
trece
testul
2Trece Testul 3 deci nu este nevoie de reordonare
0''' <+++ DCz By Ax
Pentru oricare vârf (x’, y’, z’)al suprafeţei S’
Testul 4: Proiecţiile celor două suprafeţe pe
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 46/91
Testul
4:
Proiecţiile celor două suprafeţe peplanul de vizualizare nu se suprapun.
y
x
y
x
Trece
testul4 Nu trece
testul
4
Exemplu pentru două suprafeţe
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 47/91
Exemplu
pentru
două
suprafeţe care vor
fi
reordonate
• S şi S’ nu trec testele 1-4 => reordonarea în listă
SS'
z
xO
Exemplu dez
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 48/91
Exemplu de
aplicare aalgoritmului
•
Ordinea iniţială
a acestor trei suprafeţe este: S, S’, S”.
După aplicarea testelor:
•
Compararea lui S cu S’
şi S”:
suprapunere în adâncime între Sşi S’
dar trec testul 1, suprapunere în adâncime între S şi S”
şinu trec nici un test ⇒ S”, S’, S;
•
Compararea lui S”
cu S şi S’:
suprapunere în adâncime între S”şi S’ şi nu trec nici un test ⇒ S’, S”, S este ordinea finală.
S
S" S'
xO
Dacă se încearcă a doua oară bascularea între două
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 49/91
Dacă
se încearcă
a doua
oar ă
bascularea
între
douăsuprafeţe
care au fost
reordonate, se va
împăr ţi
suprafaţa
semnalizată
(la prima basculare) în
două
după
linia
deintersecţie
dintre
cele
două
plane care se compar ă.
H G
F E
D
D
C
C
B BA A
Metoda subdivizării ariilor
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 50/91
•
este în principal o metodă a spaţiului imagine
•
se folosesc
şi operaţii ale spaţiului obiect pentrurealizarea ordonării în adâncime a suprafeţelor
•
utilizează avantajele coerenţei suprafeţelor într-
o scenă prin localizarea acelor arii de vizualizatcare reprezintă păr ţi ale unei singure suprafeţe.
Metoda
subdivizării
ariilor
Al it l
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 51/91
Algoritmul
•
divizarea succesivă a ariei totale de vizualizare îndreptunghiuri din ce în ce mai mici până cândfiecare mic
ă arie este proiec
ţia unei p
ăr ţi a unei
singure suprafeţe vizibile sau a nici uneisuprafeţe.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 52/91
Cât se continuă subdivizarea?
•
testele
care pot identifica
în
mod rapid
aria ca parte
a unei
singure
suprafeţe sau ne
pot spune
că
aria este
prea
complexă pentru
a fi
uşor
analizată.
•
O arie de vizualizare având rezoluţia de1024x1024 poate fi subdivizată de 10 ori
în acest fel înainte ca subdiviziunea să sereducă la un pixel.
Există patru posibile relaţii pe care le poate avea o
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 53/91
p
p
ţ
p
p
suprafaţă
cu laturile
unei
arii
specificate:
a)
O suprafaţă înconjur ătoare
este una care cuprindecomplet aria.b)
O suprafaţă suprapusă este cea care se află
par ţial în interiorul ariei şi par ţial în exteriorul ariei.c)
O suprafaţă interioar ă este una aflată complet îninteriorul ariei.
d)
O suprafaţă
exterioar ă
este
una
aflată
complet
în
exteriorul
ariei.
a b c d
Teste
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 54/91
Teste
Nu sunt necesare subdivizări suplimentareale ariei specificate dacă este adevărată una din următoarele condiţii (teste):
1.
Toate suprafeţele sunt în exteriorul ariei.
2.
În arie este doar o suprafaţă interioar ă,sau de suprapunere sau înconjur ătoare.
3.
O suprafaţă înconjur ătoare obturează toate celelalte suprafeţe din interiorul
limitelor ariei.
1 T t f ţ l t î
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 55/91
1. Toate suprafeţele sunt în
exteriorul ariei.•
verificarea
laturilor
dreptunghiurilor
care
circumscriu
suprafeţele
faţă
de laturile
ariei.
2. În arie este doar o (unică) suprafaţă
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 56/91
2. În arie este doar o
(unică) suprafaţă interioar ă, sau de suprapunere sau
înconjur ătoare.•
Testul
2 poate
folosi
de asemenea
laturile
dreptunghiurilor
din planul
xy
pentru
a identifica
o suprafaţă
interioar ă. Pentru
celelalte
tipuri
desuprafeţe
(de suprapunere sau înconjur ătoare), laturile
dreptunghiurilor
pot fi
utilizate
ca o verificare
iniţială. Dacă
o singur ă
latur ă
a dreptunghiului
intersectează
suprafaţa
într-un fel, sunt
utilizate
verificări
suplimentare
pentru
a determina
dacă
suprafaţa este
înconjur ătoare, suprapusă, sau
exterioar ă. Odată
ce
a fost
identificată
o unică
suprafaţă
interioar ă, suprapusă
sau
înconjur ătoare
intensitatea
pixelilor
săi
este
transferată
în
aria corespunzătoare
dinmemoria
de ecran.
3. O suprafaţă înconjurătoare obturează toate
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 57/91
3. O suprafaţă înconjur ătoare obturează toatecelelalte suprafeţe din interiorul limitelor ariei.
•
Metoda 1:Se ordonează suprafeţele în
funcţie de adâncimea lor
minimă. Pentru fiecaresuprafaţă înconjur ătoare, secalculează valoarea maximă alui z din interiorul arieiconsiderate. Dacă valoareamaximă a uneia din acestesuprafeţe înconjur ătoare estemai mică decât valoareaminimă z a tuturor celorlalte
suprafeţe din arie atunci testul3 este trecut.
zmax<z’min, zmax<z”min
S“
S'
S
zv
xvOAria
suprafaţaînconjur ătoare
zmax
z'min
z"min
Metoda 2: Se utilizează ecuaţiile planelor pentru calculareal il î l t â f i l i i t t t f ţ l
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 58/91
valorilor z în cele patru vârfuri ale ariei pentru toate suprafeţele înconjur ătoare, suprapuse şi interioare. Dacă valorile z
calculate pentru suprafeţele înconjur ătoare sunt mai mici decâtvalorile z calculate pentru toate celelalte suprafeţe, testul 3 esteadevărat. Apoi aria poate fi umplută cu valorile intensităţilorsuprafeţei înconjur ătoare.
S“S'
S
zv
xvOAria
suprafaţaînconjur ătoare
zmax
z'min
z"min
Observaţii:
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 59/91
Observaţii:•
Pentru unele situaţii ambele metode de implementare a testului
3 vor da erori la identificarea în mod corect a suprafeţei înconjur ătoare care obstrucţionează toate celelalte suprafeţe. Alte teste vor putea fi realizate pentru identificarea uneisuprafeţe unice care acoper ă aria, dar este mai rapid asubdivide aria decât a continua cu teste din ce în ce maicomplexe.
•
Odată ce au fost identificate suprafeţele exterioare şi înconjur ătoare pentru o arie, ele vor r ămâne suprafeţe
exterioare şi înconjur ătoare pentru toate subdiviziunile unei arii.•
În continuare, este de aşteptat ca unele suprafeţe interioare şisuprapuse să fie eliminate dacă procesul subdiviziunii continuă,astfel încât ariile devin mai uşor de analizat.
•
În situaţiile limită când o subdiviziune are dimensiunea unuipixel, se calculează simplu adâncimea fiecărei suprafeţerelevante a acelui punct şi se transfer ă în memoria de ecranintensitatea suprafeţei celei mai apropiate.
Variaţie a procesului subdiviziunii de bază
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 60/91
Variaţie
a procesului
subdiviziunii
de bază
zv
yz
xv
punctul devizualizare
S1 A1A2
Aria A
Dacă
suprafeţele
au fost
sortate
în
funcţie
de adâncimea
minimă, se poate
utiliza
suprafaţa
cu cel
mai
mic
z pentru
a subdivide o arie
dată.Exemplu:
Proiecţia
laturilor
suprafeţei
S este
utilizată
pentru
partiţionarea
ariei
originale însuprafeţele
A1 şi
A2. Suprafaţa
S este
apoi
suprafaţă
înconjur ătoare
pentru
A1
şi
testele
de vizibilitate
2 şi
3 pot fi
aplicate
pentru
a determina
dacă
este
necesar ă
o subdivizare
suplimentar ă.
Ascunderea în cazul modelării
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 61/91
Ascunderea
în cazul modelării
octree•
proiectarea nodurilor “octree”
pe suprafaţa devizualizare într-o ordine fa
ţă-spate.
7
65
4
32
1
0 23
10
Parcurgerea arborelui octree pentru
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 62/91
Parcurgerea arborelui
octree
pentru
eliminarea suprafeţelor spate•
Ordinea de procesare:
0, 1, 2, 3, 4, 5, 6, 7.
•
Parcurgerea octanţilor continuă în această ordinepentru fiecare subdiviziune a unui octant.
7
654
32
1
0direcţia devizualizare
Procesarea octanţilor parcurşi
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 63/91
Procesarea
octanţilor
parcur şi
•
Atunci când se întâlneşte o valoare corespunzătoareunei culori într-un nod al unui octant, zona pixelului dinmemoria de ecran corespunzătoare acestui nod estememorat
ă cu aceast
ă culoare doar dac
ă nici o alt
ă
valoare nu a fost memorată anterior în această zonă. În felul acesta doar culorile corespunzătoaresuprafeţelor din faţă sunt încărcate în memoria ecran.
•
Dacă un octant nu conţine nimic
(nici
o intensitate),zona corespunzătoare din memorie va fi lăsată liber ă (deci va putea fi eventual ocupată cu intensităţile
octanţilor aflaţi în spate).•
Orice nod găsit a fi complet obturat (există dejamemorat ceva pentru proiecţia lui)
este eliminat şipentru procesările ulterioare astfel încât subarborii săinu vor fi accesaţi deloc.
Altă t dă
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 64/91
Altă metodă
•
se mapează arborele de octanţi
într-un
arbore de quadranţi
prin traversareanodurilor arborelui de octanţi din faţă spre
spate utilizând o procedur ă recursivă.•
se încarcă memoria de ecran pe bazaarborelui de quadran
ţi
OCTREE QUADTREE
Procedura de conversie a arborelui
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 65/91
Procedura
de conversie
a arborelui de octanti
in arbore
de quadranti
typedef struct oct{int omogen;int color;
struct tabo* child;} OCT;
typedef struct tabo{OCT t[8]; } TABO;
typedef tabo * POINO;
typedef struct quad{int omogen;int color;
struct tabq* child;} QUAD;
typedef struct tabq{QUAD t[4]; } TABQ;
typedef tabq * POINQ;
POINQ newquadtree;int backcolor;
voi d conver t _oct _t o_quad ( TABO oct r ee, POI NQ quadt r ee){i nt i , n;
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 66/91
n = si zeof ( TABQ) ;f or ( i =0; i <=3; i ++)
{quadt r ee- >t [ i ] . omogen = 1;i f ( oct r ee. t [ i ] . omogen == 1) / / daca est e omogen oct ant ul f at a
i f ( oct r ee. t [ i ] . col or > - 1) / / si daca ar e cul oar equadt r ee- >t [ i ] . col or = oct r ee. t [ i ] . col or ;
el se / / nu ar e cul oar e
i f ( oct r ee. t [ i +4] . omogen == 1) / / dar est e omogen oct ant ul spati f ( oct r ee. t [ i +4] . col or > - 1) / / si ar e cul oar e
quadt r ee- >t [ i ] . col or = oct r ee. t [ i +4] . col or ;el se / / si nu ar e cul oar e
quadt r ee- >t [ i ] . col or = backcol or ;
el se / / nu est e omogen oct ant ul di n spat e{quadt r ee- >t [ i ] . omogen = 0;newquadt r ee = ( POI NQ) mal l oc( n) ;quadt r ee- >t [ i ] . chi l d = newquadt r ee;conver t _oct _t o_quad( *( oct r ee. t [ i +4] . chi l d) , newquadt r ee) ;
el se / / nu est e omogen oct ant ul di n f at a{quadt r ee- >t [ i ] . omogen = 0;newquadt r ee = ( POI NQ) mal l oc( n) ;quadt r ee- >t [ i ] . chi l d = newquadt r ee;
conver t _oct _t o_quad( *( oct r ee. t [ i +4] . chi l d) , newquadt r ee) ;conver t _oct _t o_quad( *( oct r ee. t [ i ] . chi l d) , newquadt r ee) ; }
}/ / f or
Algoritmi pentru suprafeţe curbe
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 67/91
go t
pe t u
sup a eţe
cu be
•
reprezentarea “octree”
-
nu sunt necesareconsideraţii speciale pentru suprafeţele curbe;•
aproximarea
ca un set de suprafeţe
poligonale plane (suprafeţele parametrice ->reprezentări poligonale);
•
algoritmi
care lucrează cu reprezentărilecvadrice;•
algoritmi specifici
pentru determinarea
suprafeţelor vizibile în cazul suprafeţelorparametrice bicubice: algoritmul Catmull şialgoritmul Lane-Carpenter;
Algoritmul Catmull
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 68/91
g
•
Algoritmul Catmull va diviza, în mod recursiv,
un“petec”
de suprafaţă până când proiecţiaacestuia pe planul de vizualizare este doar unpixel.
•
Un algoritm z-buffer va determina dacă pentrupixelul respectiv, peticul este suprafaţa cea maiapropiată de planul de vizualizare.
•
În cazul în care peticul este vizibil se vadetermina intensitatea de afişare care va fiutilizată pentru memorarea pixelului respectiv înmemoria de ecran.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 69/91
pentru fiecare petic execută
push stiva ← petic
atâta timp cât stiva nu este goală execută
pop stivă → petic
dacă petic ≤ 1 pixel
atunci dacă pentru pixel peticul este cel mai apropiat
atunci
determină intensitatea luminoasă şi memorează
pixelul
altfel
- împarte petic în 4 petice
- push stiva ← 4 petice
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 70/91
Observaţie
•
Deoarece determinarea dimensiunii
fiecărui petic este o operaţieconsumatoare de timp este mai uşor să seaproximeze un petic prin patrulaterul
format de vârfurile peticelor.
Algoritmul Lane-Carpenter
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 71/91
g
p•
Se bazeazăpe metoda de reprezentare a suprafeţelor bicubiceprin divizarea acestora, în mod recursiv, în suprafeţe mai mici,până când acestea pot fi aproximate, în limitele unor toleranţeadmise, prin patrulatere
având vârfurile în vârfurile suprafeţelorcurbe.
•
Toleranţa admisă este în funcţie de rezoluţia afişării dar şi deorientarea suprafeţei faţă de planul de proiecţie.
•
Nu este necesar a se face de fiecare dată divizarea după două
direcţii. În situaţia în care după o direcţie, peticul este apropiatde plan se va face divizarea doar după cealaltă direcţie.•
După ce s-a realizat o divizare suficientă, un petic de suprafaţă va putea fi tratat ca un patrulater. Micile suprafeţe poligonale
vor putea fi procesate de un algoritm scan-line.•
Algoritmul Lane-Carpenter realizează subdivizarea doar atâtcât este necesar pentru linia de scanare curentă. Peticele carerezultă în urma subdivizării şi care nu sunt intersectate de linia
de scanare curentă vor fi memorate pentru o subdivizareulterioar ă.
Procedur ă recursivă (echivalentul algoritmului de înjumătăţireaintervalelor )
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 72/91
intervalelor
)
procedura Deseneaza_Suprafaţa ( suprafata, e)
dacă test (suprafata, e) atunci
desenează _patrulater (suprafata)
altfel divide_suprafata_in_patru_suprafeţe (suprafata, supf_st_st,
supf_st_dr, supf_dr_st, supf_dr_dr,)
Deseneaza_Suprafaţa (supf_st_st, e)
Deseneaza_Suprafaţa (supf_st_dr, e) Deseneaza_Suprafaţa (supf_dr_st, e)
Deseneaza_Suprafaţa (supf_dr_dr, e)
Test (suprafata, e) <=> este suprafata aproximativ plană şimarginile ei aproximativ drepte?
Stabilirea suprafeţelor de reprezentat în varianta recursivă
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 73/91
st_dr
dr_dr
st_st
dr_st
s
uu=0,5
s = 0,5
(1, 0)
(1, 1)(0, 1)
(s, u)=(0, 0)
ţ
Observaţii
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 74/91
•
Algoritmul consider ă că un petic poate fi
aproximat printr-un poligon dacă este suficient deplan şi laturile sale sunt suficient de drepte. Seconstată că în cazul în care un petic satisface
testul de planeitate dar peticul vecin nu satisfaceacest test se poate ajunge în situaţia apariţieiunor spărturi în reprezentare.
Spărtur ă
a) b)
Soluţii
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 75/91
•
O soluţie
este de a se continua
descompunerea chiar în situaţia în care unpetic satisface testul de planeitate.
•
O altă soluţie
este algoritmul Clark
care sedeosebeşte de algoritmul Lane-Carpenterprin testul de planeitate
şi prin faptul c
ă
realizează un pas de preprocesare pentrudivizarea în subpetice.
Algoritmul Ray Tracing (Ray Casting)
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 76/91
g
y g ( y g)
•
Acest
algoritm
face parte
din categoria
metodelor
spaţiului
imagine.
•
Algoritmul
consider ă
fereastra
de proiecţie
divizată
de o reţea
dreptunghiular ă
ale cărei
elemente
corespund
unui
pixel.•
Se transmit raze imaginare
din centrul
deproiecţie
spre
fiecare
pixel.
•
Se va
memora
pentru
fiecare
pixel intensitatea
primului
punct
din scenă
(cel
mai
apropiat)intersectat
de rază.
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 77/91
centrul
proiecţiei
y
z
x
fereastra de proiecţie
raza
selectează centrul de proiecţie şi fereastra din planul de proiecţie
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 78/91
selectează centrul de proiecţie şi fereastra din planul de proiecţie
pentru fiecare linie de scanare din imagine execută
pentru fiecare pixel din lina de scanare execută
determină raza de la centrul de proiecţie caretrece prin pixelul curent
pentru fiecare obiect din scenă execută
dacă obiectul este intersectat de rază şi este
mai apropiat decât obiectele intersectate anterioratunci
înregistrează intersecţia şi numele obiectului
setează culoarea pixelului la cea a celui mai apropiatobiect intersectat de rază
Determinarea intersecţiilor
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 79/91
Determinarea
intersecţiilor
•
Centrul
oricărui
algoritm
ray tracing este
determinarea
intersecţiei
razei
cu unobiect. Pentru
fiecare
tip de obiect intersectat
mai
trebuie
adăugată
o
procedur ă
de determinarea
intersecţiei.
Intersec ţ ia razei cu o sfer ă
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 80/91
P0
(x0 , y0 , z0)
P1(x1 , y1 , z1)
C(a, b, c)
)()( 010 PPuPuP −+=
)()()()(
)()(
010
010
010
z zu zu z y yu yu y
x xu xu x
−+=
−+=
−+=
sau explicit:
01
01
01
z z z
y y y
x x x
−=Δ
−=Δ
−=Δ
2222 )()()( r c zb ya x =−+−+−
2222222 222 rcczzbbyyaaxx =+++++
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 81/91
222 r ccz zbby yaax x =+−++−++−
220
20
20
20
20
20
)(2)()(2
)()(2)(
r c zu zc zu zb yu yb
yu ya xu xa xu x
=+Δ+−Δ+++Δ+−
−Δ+++Δ+−Δ+
0)()()(
)]()()([2)(
220
20
20
0002222
=−−+−+−+
+−Δ+−Δ+−Δ+Δ+Δ+Δ
r c zb ya x
c z zb y ya x xuu z y x
•ecuaţia
nu
are soluţii
reale:
raza
şi
sfera
nu
se intersectează
•ecuaţia
are o singur ă
soluţie:
raza
trece
tangent la sfer ă
•ecuaţia
are două
soluţii
reale:
există
intersecţie
între
rază şi
sfer ă şi va fi luată
în
considerare
soluţia
cu u de valoarea
ce
mai
mică
(cea
mai
aproape
de punctul
de vizualizare).
Determinarea intersec ţ iei
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 82/91
unei
raze cu un poligon
•
se va
determina
mai
întâi
intersecţia
razei
cu planul din care face parte poligonul
•
iar
apoi
se va
determina
poziţia
punctului de intersecţie
faţă
de poligon
(interior sau
exterior).
Ax By Cz D+ + + = 0Determinareaintersecţiei
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 83/91
)()(
)()()()(
010
010
010
z zu zu z
y yu yu y x xu xu x
−+=
−+=
−+=
Ax By Cz D+ + + = 0
01
01
01
z z z
y y y
x x x
−=Δ
−=Δ
−=Δ
0)()()(000
=+Δ++Δ++Δ+ D zu zC yu y B xu x A
0)()( 000 =++++Δ+Δ+Δ DCz By Ax zC y B x Au
)()( 000
zC y B x A DCz By Axu
Δ+Δ+Δ
+++−=
Dacă
numitorul
din ecuaţia
este
0, planul
şi
raza
sunt
paraleledeci nu există punct de intersecţie.
intersecţiei
Punctul de intersecţie este interior
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 84/91
Punctul de intersecţie este interior
sau exterior poligonului?•
O modalitate uşoar ă de a se afla dacă punctul deintersecţie se află în interiorul poligonului este de a se
realiza proiecţia ortogonală a poligonului şi a punctuluide intersecţie pe unul din planele xOy, yOz, zOx şi apoia se utiliza “regula parităţii impare”.
•
Dintre cele trei plane pe care se poate face proiecţiaortogonală se va alege cel pentru care proiecţiapoligonului are dimensiunea cea mai mare.
•
Acest plan corespunde celui perpendicular pe axa pentru
care ecuaţia planului (din care face parte poligonul) arecoeficientul cel mai mare.•
Proiecţia ortografică se obţine prin eliminareacoordonatelor corespunz
ătoare axei respective din
vârfurile poligonului şi ale punctului deintersecţie.
Alegerea planului pe care se face proiecţia poligonului sit l i d i t ţi
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 85/91
a punctului de intersecţie
z
y
x
punctul devizualizare
Operaţii booleene utilizândl it l R T i
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 86/91
algoritmul Ray Tracing
•
Utilizarea
metodei
ray tracing permite
o abordare
maisimplă
a problemei
operaţiilor booleene, în
dimensiunea
1D.•
Intersecţia
fiecărei
raze cu un obiect
este, în
final, unset de valori
ale parametrului
u. Pentru
fiecare
dintre
aceste
valori
u, raza
intr ă
sau
iese
dintr-un obiect.Valorile
calculate pentru
parametrul
u, în
punctele
deintersecţie, nu
sunt
decât
puncte
care segmentează
raza
în
por ţiuni
aflate
în
interiorul
sau
în
exteriorul
corpului
3D.•
În
situaţia
în
care raza
trece
doar
tangentă
la obiect
(într-un punct) nu
se poate
spune
că
are un segmentinterior obiectului.
Al it l t ţii b l
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 87/91
Algoritmul pentru operaţii booleene
•
se vor
calcula, pentru
fiecare
rază,punctele
de intersecţie
cu cele
două obiecte.
•
operaţiile
booleene
3D se descompun
într- un set
(egal
cu numărul
razelor) de
operaţii
booleene
(1D) cu segmentele
unei raze pentru
cele
două
corpuri.
Exemplu
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 88/91
Exemplu
b)
a)obiectul din nodul stâng obiectul din nodul drept
intersecţii_st intersecţii_dr ⎯
intersecţii_st intersecţii_dr ∩
intersecţii_st intersecţii_dr ∪
intersecţii_dr
intersecţii_st
Procedura recursivă CSG intersec ţ ie
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 89/91
_ ţ
tipul LISTA_INTERSECTII care este o listă cu înregistr ăride puncte de intersecţie
tipul
P_RAZA care este pointer spre înregistrarea cu informaţiiledespre o rază (punctele P1, P2 sau coeficienţii ecuaţiei parametrice)
tipul
P_NOD care este
pointer spre
nodul
arborelui
CSG care conţineoperaţia
booleeană
(op) şi
pointerii
(nod_st, nod_dr) spre
nodurile
cuinformaţii
despre
cele
două
obiecte
(ecuaţia
cvadricei, tablouripoligonale, suprafeţe parametrice depinde de forma utilizată pentrureprezentarea corpurilor)
LISTA_INTERSECŢII CSG_intersecţii (P_RAZA raza, P_NOD CSG_nod)
LISTA INTERSECŢII i ii d i ii
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 90/91
LISTA_INTERSECŢII intersecţii_dr, intersecţii_st, rez;
dacă nod_compus
atunci // are operaţie booleeană
atribuie intersecţii_st ← CSG_intersecţii (raza, CSG_nod -> nod_st)
dacã ( (intersecţii_st = NUL) şi (CSG_nod -> op != reuniune) )
atunci
atribuie rez ← NUL;return rez;
altfel
atribuie
intersecţii_dr ← CSG_intersecţii (raza, CSG_nod -> nod_dr);atribuierez ← CSG_combină (CSG_nod.op, intersecţii_st, intersecţii_dr );
return rez;
altfel // nod f ăr ă operaţie booleeană între două noduri descendente
atribuie rez ← intersecţiile obiectului cu raza;
return rez;
Procedura CSG intersec ţ ie apelează procedura
8/19/2019 Ascunderea suprafetelor
http://slidepdf.com/reader/full/ascunderea-suprafetelor 91/91
Clasificarea punctelor pentru obiectele combinate pe
baza setului de opera ţ ii booleene
Stânga Dreapta ∪
-
interior interior interior interior exterior
interior exterior interior exterior interior
exterior interior interior exterior exterior
exterior exterior exterior exterior exterior
_ ţ p pCSG_combină care, pe baza celor două liste de înregistr ări şi
a tabloului următor, determină lista de înregistr ări careconţine punctele de intersecţie ale razei cu obiectul combinat.