[4] geom comp1
Post on 24-Sep-2015
95 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
Geometrie computationala I
Dorel Lucanu
Faculty of Computer ScienceAlexandru Ioan Cuza University, Iasi, Romania
dlucanu@info.uaic.ro
PA 2014/2015
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 1 / 46
-
Outline
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 2 / 46
-
Introducere
Plan
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 3 / 46
-
Introducere Motivatie
Plan
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 4 / 46
-
Introducere Motivatie
Ce este geometria computationala
Obiectele geometrice - punctele, liniile, poligoanele, etc. - constituie bazamultor aplicatii si conduc la multe probleme si algoritmi interesanti.Disciplina a fost numita n jurul anului 1975, cand teza de doctorat a luiShamos a atras atentia multor cercetatori.In centrul acestei discipline sta o serie de tehnici de proiectare si de analizaa algoritmilor. Acesti algoritmi opereaza cu sau sunt ghidati de o serie destructuri de date caracteristice geometriei computationale. Acestea includaranjamente de obiecte geometrice, localizari, nfasuratoarea convexa,diagrame Voronoi, triangularizari.Scopul urmatoarelor doua lectii este de a face o scurta introducere nalgoritmica din acest domeniu.Putem vedea aceste lectii ca un studiu de caz de algoritmica specifica unuidomeniu (Domain Specific Algorithms).Vom considera numai obiecte din geometria plana.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 5 / 46
-
Introducere Motivatie
Aplicatii
grafica (computer vision, reconstruirea de imagini)
robotica (miscare n plan, vizibilitate)
proiectare aistata de calculator (CAD)
siteme informatice geografice (GIS)
statistica
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 6 / 46
-
Introducere Cunoasterea domeniului problemei
Plan
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 7 / 46
-
Introducere Cunoasterea domeniului problemei
Puncte
Un punct p poate fi reprezentat prin coordonate carteziene, P = (x , y), saucoordonate polare, P = (, ).
p=(x,y) y
x
p=(, )
Conversii (partial):(x , y) 7 (
x2 + y2, atan(y/x)) (x 6= 0)
(, ) 7 ( cos(), sin())
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 8 / 46
TeaHighlight
-
Introducere Cunoasterea domeniului problemei
Tipuri de date pentru puncte
structuri
Coordonate carteziene:
P |-> {x |-> 4, y |-> 3}
P 7 vP , vP CPointCPoint = Strx : Float, y : Float = {{x 7 vx y 7 vy} | vx , vy Float}}
Coordonate polare:
P |-> {rho |-> 5, theta |-> 0.643501109}
P 7 vP , vP PPointPPoint = Strrho : Float, theta : Float = {{rho 7 theta 7 } |, Float}}
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 9 / 46
-
Introducere Cunoasterea domeniului problemei
Segmente
Un segment este reprezentat de o pereche de puncte:{A |-> {x |-> 1, y |-> 2} B |-> {x |-> 4, y |-> 3}}
Accesarea coordonatelor: A.x A.y B.x B.y . . .
1 4
2 3
Nu considera (nca) o structura de date distincta pentru segmente.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 10 / 46
-
Introducere Cunoasterea domeniului problemei
Linii poligonale
Structura de date: lista liniare de punctePot fi:
simple
nchise/deschise
linie poligonala simpla
linie poligonala simpla inchisa
linie poligonala inchisa
linie poligonala
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 11 / 46
-
Introducere Cunoasterea domeniului problemei
Structuri de date pentru linii poligonale
liste liniare
PoligLine = LLinCPoint sau PoligLine = LLinPPointCrearea unei liste cu punctele:
A = { x |-> 3 y |-> 5 };
B = { x |-> 2 y |-> 1 };
C = { x |-> 0 y |-> 0 };
se poate face prinL = empty();
L.insert(0, A);
L.insert(1, B);
L.insert(2, C);
sau
L = empty();
L[0] = A;
L[1] = B;
L[2] = C;
Reamintim ca pentru listele liniare L[i] este aceeasi cu L.lookup(i) si
L[i] = x este aceeasi cu L.insert(i , x)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 12 / 46
-
Introducere Cunoasterea domeniului problemei
Dreapta
O dreapta este reprezentata printr-o ecuatie liniara: a x + b y + c = 0
Structura de date: structuraLine = Stra : Float, b : Float, c : Float
Exemplu: dreapta 3x + 4y + 2 = 0 este reprezentata de structurad |-> {a |-> 3 b |-> 4 c |-> 2}
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 13 / 46
-
Introducere Cunoasterea domeniului problemei
Dreapta care trece prin doua puncte distincte P si Q
Se rezolva sistemul:
{d.a P.x + d.b P.y + d.c = 0d.a Q.x + d.b Q.y + d.c = 0
Exercitiu: Sa se scrie un algoritm care determina dreapta ce trece prindoua puncte distincte P si Q. Dovediti corectitudinea algoritmului.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 14 / 46
-
Introducere Operatii primitive
Plan
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 15 / 46
-
Introducere Operatii primitive
Pozitionarea unui punct fata de o dreapta
Fie P un punct si d o dreapta. Relativ la d , P se poate afla:
ntr-un semiplan: d.a * P.x + d.b * P.y + c > 0
pe dreapta: d.a * P.x + d.b * P.y + c = 0
pe celalalt semiplan: d.a * P.x + d.b * P.y + c < 0
Notam cu (d ,P) semiplanul determinat de dreapta d si punctul P.
Pozitionarea fata de un segment AB:
se determina dreapta suport
daca se afla pe dreapta, se verifica daca este ntre A si B
Se poate testa si n ordine inversa.
Timp uniform: O(1)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 16 / 46
-
Introducere Operatii primitive
Intersectia a doua drepte (cand exista){a1 x + b1 y + c1 = 0a2 x + b2 y + c2 = 0
d =
a1 b1a2 b2 dx = c1 b1c2 b2
dy = a1 c1a2 c2
d = 0, drepte paralele
d 6= 0, sistemul are solutie unica: x = dxd, y =
dyd
In notatia structurilor de date pentru drepte:
d =
d1.a d1.bd2.a d2.b = d1.a d2.b d1.b d2.a
Timp uniform: O(1)
Exercitiu: Sa se scrie n Alk un algoritm care are la intrare doua drepte sifurnizeaza la iesire punctul de interesectie al dreptelor (cand exista).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 17 / 46
-
Introducere Operatii primitive
Intersectia a doua segmente (cand exista)
Solutia 1:
se determina punctul P de intersectie a dreptelor suport
se verifica daca P apartine segmentelor
Solutia 2 (sweep line):
se baleiaza (matura) planul cu o dreapta orizontala (sau verticala) sise analizeaza pozitiile punctelor eveniment (detalii pe tabla)
un punct eveniment este dat de intersectia dintre dreapta care maturaplanul si un capat al unui segment
Timp uniform: O(1)Exercitiu: Sa se scrie algoritmi care stermina interesectia a doua segmente(cand exista) prin cele doua metode. Sa se arate corectitudinea fiecaruialgoritm.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 18 / 46
-
Introducere Operatii primitive
Orientarea a trei puncte (primitiva ccw)
CCW = Counter-Clock-Wise (sensul invers arcelor de ceasornic)
Fie A,B,C trei puncte.
ccw(A, B, C) =
A.x A.y 1B.x B.y 1C.x C.y 1
ccw(A, B, C) > 0 : A, B, C formeaza un ciclu n sens invers arcelor deceasornic
ccw(A, B, C) < 0 : A, B, C formeaza un ciclu n sensul arcelor deceasornic
ccw(A, B, C) = 0 : A, B, C sunt coliniare
Timp uniform: O(1)
Exercitiu: Sa se scrie un algoritm n Alk care calculeaza ccw(A, B, C).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 19 / 46
-
Introducere Operatii primitive
Localizarea unui punct fata de un triunghi
C
A B P
ccw(A, P, B), ccw(B, P, C) si ccw(C, P, A) au toate acelasi semn.
C
A B
P
ccw(A, P, B), ccw(B, P, C) si ccw(C, P, A) NU au toate acelasisemn.
Timp uniform: O(1)D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 20 / 46
-
Introducere Operatii primitive
Unghiul format de trei puncte
C
A B
- distanta dintre doua puncte:dist(P, Q) =
(Q.x P.x) (Q.x P.x) + (Q.y P.y) (Q.y P.y)
- se aplica teorema cosinusului
a = dist(C, B);
b = dist(C, A);
c = dist(A,B);
theta = acos((a*a + b*b - c*c)/ 2*a*b);
Timp uniform: O(1) (Care e timpul pentru operatiile si acos()?)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 21 / 46
-
Introducere Operatii primitive
Localizarea unui punct fata de o linie poligonala simplanchisa
Theorem (Jordan)
Orice curba simpla nchisa mparte planul n doua regini distincte:interiorul liniei (marginita) si exteriorul (nemarginita).
Instance: O linie poligonala simpla nchisa L si un punct P.Question: Apartine P interiorului lui L?
P
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 22 / 46
-
Introducere Operatii primitive
Localizarea unui punct fata de o linie poligonala simplanchisa
Theorem (Jordan)
Orice curba simpla nchisa mparte planul n doua regini distincte:interiorul liniei (marginita) si exteriorul (nemarginita).
Instance: O linie poligonala simpla nchisa L si un punct P.Question: Apartine P interiorului lui L?
P
numar de intesectii impar interior,numar de intesectii parexterior
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 22 / 46
-
Introducere Operatii primitive
Localizarea unui punct fata de o linie poligonala simplanchisaNumaratul intersectiilor trebuie facut cu atentie deoarece sunt cazuri deexceptie:
P nu se numara
nu se numara
se numara o singura data
Calculul unei intersectii: O(1)Determinarea numarului de intersectii: O(n), n numarul de segmente aleliniei LExercitiu: Sa se scrie n Alk algoritmul care determina localizarea unui punct fatade o linie poligonala simpla nchisa. Sa se arate ca algoritmul este corect si sa severifice ca timpul de executie este O(n).
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 23 / 46
-
Structura DCEL
Plan
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 24 / 46
-
Structura DCEL
Planar Straight Line Graph (PSLG)
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 25 / 46
-
Structura DCEL
Planar Straight Line Graph (PSLG)
un graf planar este un graf care poate fi scufundat n plan astfel ncatvarfurile sunt puncte din plan iar muchiile sun curbe n plan care nuse intersecteaza
orice graf planar admite o scufundare n plan n care muchiile suntsegmente (Fary, 1948)
un PSLG este graf conex planar scufundat n plan, n care muchiilesunt segmente
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 26 / 46
-
Structura DCEL
Structura DCEL: ideea
P4
P3
P2
F4
F3
P0
G = o lista de structuri; fiecare element a tabloului descrie o muchie
G[i1] == { V1 |-> 2 V2 |-> 4 F1 |-> 3 F2 |-> 4 Ptr1 |-> i2 Ptr2 |-> i3 }...G[i2] == { V1 |-> 3 V2 |-> 2 F1 |-> 3 F2 |-> ... Ptr1 |-> ... Ptr2 |-> ... }...G[i3] == { V1 |-> 4 V2 |-> 0 F1 |-> ... F2 |-> 4 Ptr1 |-> ... Ptr2 |-> ... }
Echivalent: G[i1].V1 == 2, G[i1].V2 == 4, G[i1].F1 == 3, G[i1].F2 == 4 . . .
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 27 / 46
-
Structura DCEL
Structura DCEL: descriere
DCEL = Double Connected Edge List
fiecare nod al structurii DCEL este memorat ntr-o componenta atabloului
exista o corespondenta 1-1 ntre muchiile PSLGului si elementele listei
V1 - primul varf al muchiei, V2 al doilea varf al muchiei
F1 - regiunea din stanga muchiei, F2 regiunea din dreapta muchiei
Ptr1 - adresa primului nod (muchie) ntalnit mergand n sensul CCWdin V1,
Ptr2 - adresa primului nod (muchie) ntalnit mergand n sensul CCWdin V2 (n ambele cazuri se pleaca de pe muchia curenta V1 V2 de laV1 la V2)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 28 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni
Data o regiune F , sa se descrie care parcurge muchiile care marginesc F .
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 29 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
Cazul particular pentru F = F5:
1 se determina o muchie i1 care este pe frontiera lui F5, sa zicem P5P6(G [i1].V 1 == 5,G [i1].V 2 == 6,G [i1].F1 == 5)
2 urmatoarea muchie i2 a lui F5 este va gasita parcurgand muchiile din P5CCW, plecand de pe P5P6, adica i2 = G [i1].Ptr1
3 avem G [i2].V 1 == 5,G [i2].V 2 == 0,G [i2].F1 == 5 (P5P0)
4 procedam n acelasi modi3 = G [i2].Ptr1; avem G [i3].V 1 == 0,G [i3].V 2 == 8,G [i3].F1 == 5 (P0P8)i4 = G [i3].Ptr1; avem G [i4].V 1 == 8,G [i4].V 2 == 6,G [i1].F1 == 5 (P8P6)
5 pana cand ntalnim din nou i1, adica G [i4].Ptr1 == i1
6 cele 4 muchii sunt date de elementele de pe pozitiile i1, i2, i3, i4
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 30 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
Gasirea unei muchii de pe frontiera regiunii Ff :
i = 0;
while (G[i].F1 != f and G[i].F2 != f)
i = i + 1;
Daca f este valida, atunci bucla while se termina. Dupa executia luiwhile, are loc G[i].F1 == f sau G[i].F2 == f.Are importanta pe ce parte se afla regunea f ?Raspuns: Da. (De ce?)
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 31 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
f
f
stanga dreapta
Tot timpul trebuie ramas n regiunea f .
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 32 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
Gasirea clorlalte muchii de pe frontiera regiunii Ff (le memoram n tablouledgesOf [f ]):
j = -1; i1 = i;
do {
j = j + 1;
edgesOf[f][j] = i;
if (G[i].F1 == f) // stanga
i = G[i].Ptr1;
else // dreapta
i = G[i].Ptr2
} until (terminat )
// j == numarul de muchii de pe frontiera lui f
Care e conditia de terminare?
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 33 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
Un posibil candidat pentru terminare: i == i1 (s-a ajuns n muchia dincare s-a plecat)
E corect? Exista cazuri cand prima muchie poate fi vizitata de doua ori?
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 34 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
f
f i1
f este regiunea exterioara.
Conditia de terminare corecta: s-a ajuns n muchia din care s-a plecat princapatul opus.leaveI1 = capatul prin care se pleaca din i1reachI = capatul prin care se ajunge n iConditia de terminare: i == i1 and reachI != leaveI1
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 35 / 46
-
Structura DCEL
Structura DCEL: parcurgerea frontierei unei regiuni (cont.)
j = -1; i1 = i;
do {
j = j + 1;
edgesOf[f][j] = i;
iprec = i;
if (G[i].F1 == f) { // stanga
i = G[i].Ptr1;
if (iprec == i1) leaveI1 = 1; // nu e foarte efficient!
}
else { // dreapta
i = G[i].Ptr2
if (iprec == i1) leaveI1 = 2;
}
if (G[i].V1 == G[iprec].V1 || G[i].V1 == G[iprec].V2) reachI = 1;
else reachI = 2;
} until (i == i1 and reachI != leaveI1)
Timpul n cazul cel mai nefavorabil: O(n), unde n este numarul de muchii.D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 36 / 46
-
Structura DCEL
Structura DCEL: parcurgerea tuturor regiunilor
Se utilizeaza o coada toBeVisisted, initial vida.Se pleaca dintr-o muchie de pe frontiera PSGului (una din fete esteregiunea nemarginita). Presupunem ca aceasta este P7P8. Se viziteazafata marginita, F6 si se parcurge frontiera sa pentru a adauga fetele vecineneprocesate n toBeVisisted (care devine egala cu [F5]).
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
in coada
vizitat
F6
F5
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 37 / 46
-
Structura DCEL
Structura DCEL: parcurgerea tuturor regiunilor (cont.)
Se continua pe frontiera regiunii nemarginite pana se ntalneste o regiunenevizitata sau care nu e n toBeVisisted, F0. Se viziteaza fata marginita,F0, apoi se parcurge frontiera sa pentru a adauga fetele vecine neprocesaten toBeVisisted (care devine egala cu [F5,F4]).
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
in coada
vizitat
F6
F5
F0
F4
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 38 / 46
-
Structura DCEL
Structura DCEL: parcurgerea tuturor regiunilor (cont.)
Se continua pe frontiera regiunii nemarginite pana se ntalneste o regiunenevizitata sau care nu e n toBeVisisted, F3. Se viziteaza fata marginita,F3, apoi se parcurge frontiera sa pentru a adauga fetele vecine neprocesaten toBeVisisted (deoarece nu exista astfel de rgiuni, toBeVisistedramane neschimbata, [F5,F4]).
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
in coada
vizitat
F6
F5
F0
F4
F3
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 39 / 46
-
Structura DCEL
Structura DCEL: parcurgerea tuturor regiunilor (cont.)
Se continua pe frontiera regiunii nemarginite pana se ntalneste o regiunenevizitata sau care nu e n toBeVisisted, F2. Se viziteaza fata marginita,F0 si se parcurge frontiera sa pentru a adauga fetele vecine neprocesate ntoBeVisisted (care devine egala cu [F5,F4,F2]).
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
in coada
vizitat
F6
F5
F0
F4
F3 F2
F1
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 40 / 46
-
Structura DCEL
Structura DCEL: parcurgerea tuturor regiunilor (cont.)
Se continua pe frontiera regiunii nemarginite pana se ntalneste o regiunenevizitata sau care nu e n toBeVisisted. Deoarece nu mai exista, seconitinua cu vizitarea fetelor din toBeVisisted (egala cu [F5,F4,F2]).Pentru fiecare fata vizitata, se parcurge frontiera sa pentru a adauga fetelevecine neprocesate n toBeVisisted (daca e cazul).
P1
P0
P8
P7
P6 P5 P4
P3
P2
F1
F2 F4
F3
F0 F6
F5
in coada
vizitat
F6
F5
F0
F4
F3 F2
F1
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 41 / 46
-
Structura DCEL
Structura DCEL: parcurgerea tuturor regiunilor (cont.)
Sa se descrie algoritmul de parcurgere a tuturor regiunilor n limbajalgoritmic. Sa se arate ca este corect si ca are timpul de executie O(n),unde n este timpul de executie.
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 42 / 46
-
Localizarea unui punct
Plan
1 IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
2 Structura DCEL
3 Localizarea unui punct
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 43 / 46
-
Localizarea unui punct
Localizarea unui punct fata de un PSLG
Input: Un PSLG G si un punct P.Output: Regiunea la care apartine P.
P
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 44 / 46
-
Localizarea unui punct
Localizarea unui punct fata de un PSLG
banda (slab) P
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 45 / 46
-
Localizarea unui punct
Localizarea unui punct fata de un PSLG
1 Preprocesare1 sorteaza benzile n ordine crescatoare dupa y2 sorteaza segmentele de pe o banda n ordine crescatoare dupa x
Observatie: trapezele de pe o banda pot degenera si n triunghiuri
2 Procesare1 cauta binar banda pe care apare P2 cauta binar trapezul la care partine P pe banda gasita la punctul
anterior.
Timp:preprocesare: O(n2 log n) (pot fi n2 segmente pe o banda n cazul cel mainefavorabil - exemplu pe tabla)procesare: O(log n)Preprocesarea se poate reduce la O(n2) printr-o tehnica de sweep plane.Exercitiu: scrierea n limbajul Alk al algoritmului
D. Lucanu (FII - UAIC) Geometrie computationala PA 2014/2015 46 / 46
IntroducereMotivatieCunoasterea domeniului problemeiOperatii primitive
Structura DCELLocalizarea unui punct
top related