Sunteți pe pagina 1din 23

Geometrie computational

a
Mihai-Sorin Stupariu
Sem. I, 2014-2015

Cuprins
1 Preliminarii
1.1 Concepte de algebr
a liniara, geometrie afina
1.2 Raportul a trei puncte coliniare . . . . . . .
1.3 Coordonate carteziene si coordonate polare
1.4 Testul de orientare . . . . . . . . . . . . . .
1.5 Exercitii, probleme, aplicatii . . . . . . . . .

si euclidiana
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

2
2
2
4
4
5

2 Acoperiri convexe
2.1 Generalit
ati . . . . . . . . .
2.2 Algoritmi lenti (naivi) . . .
2.3 Algoritmi clasici . . . . .
2.4 Exercitii, probleme, aplicatii

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

7
7
8
10
11

3 Triangul
ari
3.1 Triangularea poligoanelor. Problema galeriei de
3.2 Triangularea unei multimi arbitrare de puncte .
3.3 Triangul
ari Delaunay . . . . . . . . . . . . . . .
3.4 Exercitii, probleme, aplicatii . . . . . . . . . . .

arta
. . .
. . .
. . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

12
12
14
15
16

4 Diagrame Voronoi
4.1 Generalit
ati . . . . . . . . . . .
4.2 Propriet
ati . . . . . . . . . . .
4.3 Diagrame Voronoi si triangulari
4.4 Un algoritm eficient . . . . . .
4.5 Exercitii, probleme, aplicatii . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

17
17
17
18
18
19

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

. . . . . .
. . . . . .
Delaunay
. . . . . .
. . . . . .

.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.

.
.
.
.
.

Bibliografie

20

A Proiecte

21

Capitolul 1

Preliminarii
1.1

Concepte de algebr
a liniar
a, geometrie afin
a
si euclidian
a

Notiuni de algebr
a liniar
a: spatiu vectorial, vector, combinatie liniara, liniar
(in)dependent
a, sistem de generatori, baza, reper, dimensiune a unui spatiu vectorial, componentele unui vector ntr-un reper, matrice de trecere ntre repere,
repere orientate la fel (opus), reper drept (stramb), produs scalar, norma unui
vector, versorul unui vector nenul, spatiu vectorial euclidian, vectori ortogonali,
baz
a ortonormat
a, reper ortonormat.
Notiuni de geometrie afin
a: vectorul determinat de doua puncte, combinatie
afin
a, afin (in)dependent
a, acoperirea afina a unei multimi de puncte, dreapta
determinat
a de dou
a puncte distincte, reper cartezian, coordonatele unui punct
ntr-un reper cartezian, sistem de axe asociat unui reper cartezian din Rn , raportul a trei puncte coliniare (detalii n sectiunea 1.2), segmentul determinat
de dou
a puncte, multime convexa, nchiderea (nfasuratoarea) convexa a unei
multimi, aplicatie afin
a (exemple: translatie, omotetie, proiectie, simetrie).
Notiuni de geometrie euclidian
a: distanta dintre doua puncte, reper cartezian ortonormat, izometrie, proiectie centrala.
Detalii pot fi g
asite n [5], [7], [12] [13].

1.2

Raportul a trei puncte coliniare

Lema 1.1 Fie A si B dou


a puncte distincte n Rn . Pentru orice punct P AB,

P 6= B exist
a un unic scalar r R\{1} astfel ca AP = r P B. Reciproc, fiecarui
scalar r R \ {1}, i corespunde un unic punct P AB.
Definitia 1.2 Scalarul r definit n lema 1.1 se numeste raportul punctelor
A, B, P (sau raportul n care punctul P mparte segmentul [AB]) si este
notat cu r(A, P, B).
Observatia 1.3 In calcularea raportului, ordinea punctelor este esentiala. Modul n care este definit
a aceasta notiune (mai precis ordinea n care sunt considerate punctele) difer
a de la autor la autor.

v+w
v
A
w

1
2A

+ 12 B

B
x

Combinatii liniare
v + w (, R)

Combinatii afine
A + B (, R si + = 1)

Figura 1.1: Vectori si puncte: combinatii liniare si combinatii afine


Exemplul 1.4 (i) In R3 consideram punctele A = (1, 2, 3), B = (2, 1, 1),
C = (0, 3, 7). Atunci punctele A, B, C sunt coliniare si avem r(A, C, B) = 21 ,
r(B, C, A) = 2, r(C, A, B) = 1, r(C, B, A) = 2.
(ii) Fie A, B dou
a puncte din Rn si M = 12 A + 12 B. Atunci r(A, M, B) = 1,
1
r(M, A, B) = 2 .
Propozitia 1.5 Fie A, B, P trei puncte coliniare, cu P 6= B. Atunci:
(i) P =

1
r+1 A

r
r+1 B,

unde r = r(A, P, B);

(ii) P = (1 )A + B daca si numai daca r(A, P, B) =


(iii) P =

+ A

+ B

daca si numai daca r(A, P, B) =

Observatia 1.6 Fie P AB \ {A, B}. Atunci:


(i) r(A, P, B) > 0 dac
a si numai daca P (AB);
1
(ii) r(B, P, A) = r(A,P,B) .

1 ;

1.3

Coordonate carteziene si coordonate polare

Coordonate carteziene (x, y) si coordonate polare (, ) (pentru puncte din planul R2 pentru care relatiile au sens), Figura 1.2:
p


x = cos
= x2 + y 2
y = sin
= arctg xy
y

P (x, y)

Figura 1.2: Punctul P are coordonatele carteziene (x, y) si coordonatele polare


(, ).

1.4

Testul de orientare

Fie vectorii v = (v1 , v2 , v3 ), w = (w1 , w2 , w3 ) R3 .


Produsul vectorial v w se calculeaza dezvoltand determinantul formal


v1 w1 e1


v w = v2 w2 e2
v3 w3 e3
Notatie Fie P = (p1 , p2 ), Q = (q1 , q2 ) doua puncte distincte din planul
R2 , fie R = (r1 , r2 ) un punct arbitrar. Notam


1 1 1


(P, Q, R) = p1 q1 r1 .
p2 q2 r2
Lem
a. Fie P, Q, R puncte din R2 ' {x R3 |x3 = 0}. Atunci

P Q P R= (0, 0, (P, Q, R)).

Propozitia 1.7 Fie P = (p1 , p2 ), Q = (q1 , q2 ) dou


a
R2 , fie R = (r1 , r2 ) un punct arbitrar si

1 1 1

(P, Q, R) = p1 q1 r1
p2 q2 r2
4

puncte distincte din planul





.

R1
Q

P
R2
x

Figura 1.3: Pozitia relativ


a a doua puncte fata de un vector / o muchie orientata
Atunci R este situat:
(i) pe dreapta P Q (P, Q, R) = 0 (ecuatia dreptei);

(ii) n dreapta segmentului orientat P Q (P, Q, R) < 0;

(iii) n st
anga segmentului orientat P Q (P, Q, R) > 0.
Observatia 1.8 Testul de orientare se bazeaza pe calculul unui polinom de
gradul II ((P, Q, R)).
Aplicatii.
dac
a un punct este n dreapta / stanga unei muchii orientate;
natura unui viraj n parcurgerea unei linii poligonale (la dreapta / la
st
anga);
natura unui poligon (convex / concav);
dac
a dou
a puncte sunt de o parte si de alta a unui segment / a unei drepte.

1.5

Exercitii, probleme, aplicatii

Exercitiul 1.9 Calculati rapoartele r(A, P, B), r(B, P, A), r(P, A, B) (stabiliti
mai nt
ai dac
a punctele sunt coliniare), pentru: (i) A = (3, 3), B = (2, 4), C =
(5, 1); (ii) A = (1, 4, 2), P = (2, 3, 1), B = (4, 1, 1).
Exercitiul 1.10 Determinati , astfel ca punctele A, P, B din planul R2 , cu
A = (6, 2), P = (, ), B = (2, 2), sa fie coliniare si r(A, P, B) = 2.
Exercitiul 1.11 Determinati coordonatele carteziene ale punctului M de coordonate polare = 6; = 6 , respectiv cooronatele polare ale punctului N (4, 4).
Exercitiul 1.12 Ordonati punctele A = (2, 0), B = (3, 2), C = (4, 2), D =
(0, 4), E = (3, 1), F = (0, 5), G = (1, 1), H = (0, 4) (i) folosind coordonate carteziene; (ii) folosind coordonate polare.
Exercitiul 1.13 Calculati produsul vectorial vw pentru vectorii v = (1, 1, 0),
w = (2, 1, 3).

Exercitiul 1.14 Fie v, w R3 doi vectori necoliniari. Folosind produsul vectorial, construiti o baz
a ortonormata {b1 , b2 } a planului generat de vectorii v
si w, astfel ca b1 s
a fie coliniar cu v.
Exercitiul 1.15 Fie P = (2, 2), Q = (4, 4). Stabiliti, folosind testul de orientare, pozitia relativ
a a punctelor R1 = (8, 8), R2 = (6, 0), R3 = (2, 1) fata

de muchia orientat
a P Q. Care este pozitia acelorasi puncte fata de muchia

orientat
a QP ?
Exercitiul 1.16 Dati exemplu de puncte coplanare P, Q, R1 , R2 din R3 , nesituate ntr-un plan de coordonate, astfel ca R1 si R2 sa fie de o parte si de alta
a segmentului [P Q].

Capitolul 2

Acoperiri convexe
2.1

Generalit
ati

Conceptul de multime convex


a:
Definitia 2.1 (i) Pentru P, Q Rm , segmentul [P Q] este multimea combinatiilor
convexe dintre P si Q:
[P Q] = {(1 t)P + tQ|t [0, 1]} = {P + Q|, [0, 1], + = 1}.
(ii) O multime M Rm este convex
a dac
a oricare ar fi P, Q M, segmentul [P Q] este inclus n M.
Problematizare:
Multimile finite cu cel putin doua elemente nu sunt convexe necesara acoperirea convex
a.
Acoperire convex
a a unei multimi finite P: caracteriz
ari echivalente
Cea mai mic
a (n sensul incluziunii) multime convexa care contine P.
Intersectia tuturor multimilor convexe care contin P.
Multimea tuturor combinatiilor convexe ale punctelor din P. O combinatie
convex
a a punctelor P1 , P2 , . . . , Pn este un punct P de forma
P = 1 P1 + . . . + n Pn ,

1 , . . . , n [0, 1], 1 + . . . + n = 1.

Acoperire convex
a a unei multimi finite P: problematizare
Dac
a P este finit
a, acoperirea sa convexa, Conv(P) este un politop convex.
Cazuri particulare: m = 1 (segment); m = 2 (poligon); m = 3 (poliedru).
Cazul m = 1: acoperirea convexa este un segment; algoritmic: parcurgere
a punctelor (complexitate O(n)).

In continuare: m = 2.
Problem
a: Cum determinam, algoritmic, varfurile acoperirii convexe (ca
multime, ca list
a)?
7

2.2

Algoritmi lenti (naivi)

Determinarea punctelor extreme si ordonarea lor


Definitia 2.2 Un punct M al unei multimi convexe S este punct extrem al
a A, B S astfel ca M [AB].
lui S dac
a nu exist
Propozitia 2.3 (Caracterizarea punctelor extreme). Fie P o multime
finit
a si Conv(P) acoperirea sa convex
a. Un punct M P nu este punct extrem
este situat ntr-un triunghi av
and v
arfurile n P (sau n interiorul acestui
triunghi), dar nu este, el nsusi, v
arf al triunghiului.
Propozitia 2.4 (Ordonarea punctelor extreme). Fie P o multime finit
a
si Conv(P) acoperirea sa convex
a. Ordon
and punctele extreme ale lui Conv(P)
dup
a unghiul polar (format ntr-un sistem de coordonate polare av
and originea
ntr-un punct interior al lui Conv(P)), se obtin v
arfurile consecutive ale lui
Conv(P).
Comentarii
Cum se stabileste dac
a un punct P apartine unui triunghi ABC sau interiorului acestuia? (folosind arii, verificand daca P situat pe laturi sau situat
de aceeasi parte a fiec
arei laturi ca si varful opus Testul de orientare,
etc.)
Coordonate carteziene (x, y) si coordonate polare (, ) (pentru puncte
pentru care relatiile au sens):
p


x = cos
= x2 + y 2
y = sin
= arctg xy
Pentru a ordona / sorta punctele nu este nevoie ca unghiurile polare sa
fie calculate explicit! Are loc relatia (Q) > (P ) Q este n stanga

muchiei orientate OP (v. Testul de orientare).


Dac
a M1 , . . . , Mq sunt puncte extreme ale lui Conv(P), atunci centrul de
greutate 1q M1 + . . . + 1q Mq este situat n interiorul Conv(P).
Algoritmul lent 1
Input: O multime de puncte P din R2 .
Output: O lista L care contine varfurile ce determina frontiera acoperirii convexe,
parcursa n sens trigonometric.
1. M /*M este multimea punctelor extreme*/
2. for P P
3.

do valid true

4.

for (A, B, C) P P P distincte 2 2, distincte de P

5.

do if P n interiorul ABC sau pe laturile sale

6.
7.

then valid false


if valid=true then M = M {P }

8. do calculeaza centrul de greutate al lui M


8

9. do sorteaza punctele din M dupa unghiul polar, obtinand lista L


Comentarii
Complexitatea: O(n4 ) (pasii 1-7: O(n4 ); pasul 8: O(n); pasul 9: O(n log n)).
Complexitatea algebrica: necesare polinoame de gradul II
Trateaz
a corect cazurile degenerate (daca A, B, C sunt coliniare pe frontier
a, cu C [AB], doar A si B sunt detectate ca fiind puncte extreme)!

Determinarea muchiilor frontierei


Sunt considerate muchiile orientate.
Q: Cum se decide dac
a o muchie orientata fixata este pe frontier
a?
A: Toate celelalte puncte sunt n stanga ei (v. Testul de orientare).
Algoritmul lent 2
Input: O multime de puncte P din R2 .
Output: O lista L care continte varfurile ce determina frontiera acoperirii convexe,
parcursa n sensul trigonometric.
1. E , L /*E este lista muchiilor orientate*/
2. for (P, Q) P P cu P 6= Q
3.

do valid true

4.

for R P \ {P, Q}

5.

do if R n dreapta lui P Q

6.

then valid false

if valid=true then E = E {P Q}

7.

8. din E se construieste lista L a varfurilor acoperirii convexe /*este necesar ca


E sa fie coerent
a*/

Comentarii
Complexitatea: O(n3 ).
Complexitatea algebrica: necesare polinoame de gradul II
Tratarea cazurilor degenerate: poate fi adaptat. Pasul 5 trebuie rafinat:

5. do if R n dreapta lui P Q or (P, Q, R coliniare and r(P, R, Q) < 0)


6.

then valid false

Robustetea: datorit
a erorilor de rotunjire este posibil ca algoritmul sa nu
returneze o list
a coerenta de muchii.

2.3

Algoritmi clasici

Grahams scan
Grahams scan [1972]
Punctele sunt mai ntai sortate (lexicografic, dupa unghiul polar si
distanta polar
a) si renumerotate.
Algoritm de tip incremental, punctele fiind adaugate unul cate unul
la lista L a frontierei acoperirii convexe. Pe parcurs, anumite puncte
sunt eliminate - actualizare locala a listei varfurilor acoperirii convexe.
Q: Cum se decide daca trei puncte sunt varfuri consecutive ale acoperirii convexe (parcursa n sens trigonometric)?
A: Se efectueaz
a un viraj la stanga n punctul din mijloc.
Grahams scan, varianta lui Andrew [1979]
Punctele sunt mai ntai sortate (lexicografic, dupa coordonatele carteziene) si renumerotate.
Algoritmul determina doua liste, reprezentand marginea inferioar
a
si cea superioar
a a frontierei. In final, aceste liste sunt concatenate.
Comentarii - Grahams scan
Algoritm specific pentru context 2D. Nu este on-line, fiind nevoie de toate
punctele.
Complexitatea: O(n log n); spatiu: O(n); complexitate algebrica: polinoame de gradul II.
Tratarea cazurilor degenerate: corect.
Robustetea: datorit
a erorilor de rotunjire este posibil ca algoritmul sa
returneze o list
a eronata (dar coerenta) de muchii.
Grahams scan este optim pentru cazul cel mai nefavorabil.
Problema sort
arii este transformabila n timp liniar n problema acoperirii
convexe.
Jarvis march / Jarvis wrap [1973]
Algoritm de tip incremental. Nu necesita sortare prealabila.
Initializare: un punct care este sigur un varf al acoperirii convexe (e.g.
punctul cel mai de jos / din stanga / stanga jos).
Lista se actualizeaz
a prin determinarea succesorului: cel mai la dreapta
punct.
Implementare: dou
a abordari (i) ordonare; (ii) testul de orientare.
Complexitate: O(hn), unde h este numarul punctelor de pe frontiera acoperirii convexe.

10

2.4

Exercitii, probleme, aplicatii

Exercitiul 2.5 Fie M = {P1 , P2 , . . . , P7 }, unde P1 = (1, 11), P2 = (2, 7),


P3 = (3, 8), P4 = (4, 10), P5 = (5, 7), P6 = (6, 7), P7 = (7, 11). Detaliati
cum evolueaz
a lista v
arfurilor care determina marginea inferioara a frontierei
acoperirii convexe a lui M, obtinuta pe parcursul Grahams scan / Grahams
scan varianta Andrew. Justificati!
Exercitiul 2.6 Consider
am punctele A = (6, 6), B = (1, 6), C = (1, 1),
D = (6, 0), E = (6, 0), F = (3, 2), G = (4, 2), H = (1, 2), I = (2, 2).
Precizati care este num
arul maxim de elemente pe care l contine L pe parcursul
parcurgerii Grahams scan, indicand explicit punctele respective din L (L este
lista v
arfurilor care determina frontiera acoperirii convexe a lui M, iar punctul
intern considerat este O). Justificati!
Exercitiul 2.7 Dati un exemplu de multime M din planul R2 pentru care,
la final, Li are 3 elemente, dar, pe parcursul algoritmului, numarul maxim
de elemente al lui Li este egal cu 5 (Li este lista varfurilor care determina
marginea inferioar
a a frontierei acoperirii convexe a lui M, obtinuta pe parcursul
Grahams scan, varianta Andrew). Justificati!
Exercitiul 2.8 Fie punctele P1 = (2, 0), P2 = (0, 3), P3 = (4, 0), P4 = (4, 2),
P5 = (5, 1). Precizati testele care trebuie efectuate, atunci cand este aplicat
Jarvis march, pentru determinarea succesorului M al celui mai din stanga
punct si a succesorului lui M . Cum decurg testele daca se ncepe cu cel mai
de jos punct?
Exercitiul 2.9 Dati un exemplu de multime cu 8 elemente M din planul R2
pentru care frontiera acoperirii convexe are 3 elemente si pentru care, la gasirea
succesorului celui mai din stanga punct (se aplica Jarvis march), toate celelalte puncte sunt testate. Justificati!
Exercitiul 2.10 Scrieti n pseudocod Grahams scan, Grahams scan - varianta
Andrew si Jarvis march.
Exercitiul 2.11 Explicati daca Grahams scan / Jarvis march indica rezultatul dorit atunci c
and toate punctele sunt situate pe o aceeasi dreapta.
Exercitiul 2.12 Date n puncte n plan, scrieti un algoritm de complexitate
O(n log n) care s
a determine un poligon care are toate aceste puncte ca varfuri.
Explicati cum este aplicat acest algoritm pentru punctele P1 = (4, 2), P2 =
(7, 1), P3 = (3, 5), P4 = (3, 6), P5 = (4, 4), P6 = (1, 1), P7 = (2, 6).

11

Capitolul 3

Triangul
ari
3.1

Triangularea poligoanelor. Problema galeriei de art


a

Supravegherea unei galerii de art


a
Camera din P poate supraveghea A, dar nu B.

Ar
J
J
J
J
J
Jr P

rB

Formalizare
O galerie de art
a poate fi interpretata (n contextul acestei probleme) ca un
poligon simplu P (adica un poligon fara autointersectii) avand n varfuri.
O camer
a video (vizibilitate 3600 ) poate fi identificata cu un punct din
interiorul lui P; ea poate supraveghea acele puncte cu care poate fi unita
printr-un segment inclus n interiorul poligonului.
Problema galeriei de art
a: c
ate camere video sunt necesare pentru a
supraveghea o galerie de art
a si unde trebuie amplasate acestea?
12

Num
arul de camere vs. forma poligonului
Se doreste exprimarea numarului de camere necesare pentru supraveghere
n functie de n (sau controlarea acestuia de catre n).
Pentru a supraveghea un spatiu avand forma unui poligon convex, este
suficient
a o singur
a camera.
Num
arul de camere depinde si de forma poligonului: cu cat forma este
mai complex
a, cu atat numarul de camere va fi mai mare.
Principiu: Poligonul considerat: descompus n triunghiuri (triangulare).
Definitii
Fie P un poligon plan.
(i) O diagonal
a a lui P este un segment ce uneste doua varfuri ale acestuia
si care este situat n interiorul lui P.
(ii) O triangulare TP a lui P este o descompunere a lui P n triunghiuri,
dat
a de o multime maximala de diagonale ce nu se intersecteaza.
Teorem
a. Orice poligon simplu admite o triangulare. Orice triangulare
a unui poligon cu n v
arfuri contine exact n 2 triunghiuri.
Rezovlarea problemei galeriei de art
a
Amplasarea camerelor se poate face n varfurile poligonului.
Dat
a o pereche (P, TP ) se considera o 3-colorare a acesteia: fiecarui varf
i corespunde o culoare dintr-un set de 3 culori si pentru fiecare triunghi,
cele 3 v
arfuri au culori distincte.
Observatie. Dac
a P este simplu, o astfel de colorare exista, deoarece
graful asociat perechii (P, TP ) este arbore.
Teorema galeriei de art
a
Teorem
a. [Chv
atal, 1975; Fisk, 1978] Pentru un poligon cu n v
arfuri,
hni
camere sunt uneori necesare si ntotdeauna suficiente pentru ca
3
fiecare punct al poligonului s
a fie vizibil din cel putin una din camere.
Metode de triangulare: ear cutting / clipping / trimming
Concepte:
v
arf principal,
ear (v
arf / component
a de tip E) [Meisters, 1975];
mouth (v
arf / component
a de tip M ) [Toussaint, 1991].
Orice v
arf de tip E este convex; orice varf de tip M este concav (reflex).
Reciproc nu neap
arat!
Teorem
a. (Two Ears Theorem [Meisters, 1975]) Orice poligon cu cel
putin 4 v
arfuri admite cel putin dou
a componente de tip E care nu se
suprapun.
Corolar. Orice poligon simplu admite (cel putin) dou
a diagonale.
13

Algoritmul de triangulare bazat de metoda ear cutting: complexitate


O(n2 ).
Metode de triangulare: descompunerea n poligoane monotone
Concept: poligon y-monoton
Algoritmi de triangulare eficienti: complexitate O(n) pentru poligoane
y-monotone [Garey et al., 1978].
Descompunerea unui poligon oarecare in componente y-monotone poate fi
realizat
a cu un algoritm de complexitate O(n log n) [Lee, Preparata, 1977].
Exist
a si alte clase de algoritmi mai rapizi; [Chazelle, 1990]: algoritm
liniar.
Triangularea poligoanelor monotone
Input: Un poligon y-monoton P.
Output: O triangulare a lui P.
1. Lantul v
arfurilor din partea stanga si al celor din partea dreapta sunt
unite ntr-un singur sir, ordonat descrescator, dupa y (daca ordonata este
egal
a, se foloseste abscisa). Fie v1 , v2 , . . . , vn sirul ordonat.
2. Initializeaz
a o stiv
a vida S si insereaza v1 , v2 .
3. for j = 3 to n 1
4.
5.

do

if vj si v
arful din top al lui S sunt n lanturi diferite
then extrage toate varfurile din S

6.

insereaz
a diagonale de la vj la vf. extrase, exceptand ultimul

7.

insereaz
a vj1 si vj n S

8.

else extrage un varf din S


extrage celelalte varfuri din S daca diagonalele formate cu vj
sunt n interiorul lui P; insereaza aceste diagonale; insereaza
napoi ultimul varf extras

9.

insereaz
a vj n S

10.

11. adaug
a diagonale de la vn la vf. stivei (exceptand primul si ultimul)

3.2

Triangularea unei multimi arbitrare de puncte

Problematizare
Triangularea unui poligon convex (lista ordonata de puncte (P1 , P2 , . . . , Pn ).
Are sens s
a vorbim de triangulare pentru multimea {P1 , P2 , . . . , Pn }?
Definitie. O triangulare a unei multimi P este o subdivizare maximala
a acoperirii convexe Conv(P) a lui P cu triunghiuri ale caror varfuri sunt
elemente ale lui P (f
ara autointersectii!)

14

Trebuie f
acut
a distinctie ntre triangulare a unui poligon (P1 , P2 , . . . , Pn )
si triangulare a multimii subdiacente {P1 , P2 , . . . , Pn } (coincid daca poligonul este convex!)
Elemente ale unei triangul
ari
Dat
a o multime de puncte P si o triangulare TP a sa:
v
arfuri, muchii, triunghiuri.
Leg
atur
a ntre aceste elemente?
Propozitie. Fie P o multime de n puncte din plan nesituate toate pe o
aceeasi dreapt
a. Not
am cu k num
arul de puncte de pe frontiera acoperirii
convexe Conv(P). Orice triangulare a lui P are (2n k 2) triunghiuri
si (3n k 3) muchii.
Demonstratie: Se bazeaza pe formula lui Euler.
Exemplu: Cazul unui poligon convex.

3.3

Triangul
ari Delaunay

Problematizare
Problem
a. Se fac m
asuratori ale altitidinii pentru un teren. Se doreste
reprezentarea tridimensionala (cat mai sugestiva).
Problem
a (reformulat
a). Cum comparam triangularile unei multimi
de puncte fixate?
Exemplu. Cazul unui patrulater convex.
Terminologie
Fixat
a: o multime de puncte P.
Vectorul unghiurilor unei triangul
ari a lui P
Relatie de ordinepe multimea triangul
arilor lui P
Triangulare unghiular optim
a
Muchie ilegal
a
Triangulare legal
a
Triangul
ari unghiular optime vs. triangul
ari legale
Propozitie. Fie P o multime de puncte din plan.
(i) Orice triangulare unghiular optim
a este legal
a.
(ii) Dac
a P este n pozitie general
a (oricare patru puncte nu sunt conciclice), atunci exist
a o unic
a triangulare legal
a, iar aceasta este unghiular
optim
a.

15

3.4

Exercitii, probleme, aplicatii

Exercitiul 3.1 Fie P poligonul dat de punctele P1 = (6, 0), P2 = (2, 2), P3 =
(0, 7), P4 = (2, 2), P5 = (8, 0), P6 = (2, 2), P7 = (0, 6), P8 = (2, 2) .
Indicati o triangulare TP a lui P si construiti graful asociat perechii (P, TP ).
Exercitiul 3.2 Aplicati metoda din demonstratia teoremei galeriei de arta,
indic
and o posibil
a amplasare a camerelor de supraveghere n cazul poligonului P1 P2 . . . P12 , unde P1 = (4, 4), P2 = (5, 6), P3 = (6, 4), P4 = (7, 4), P5 =
(9, 6), P6 = (11, 6) iar punctele P7 , . . . , P12 sunt respectiv simetricele punctelor
P6 , . . . , P1 fat
a de axa Ox.
Exercitiul 3.3 Fie poligonul P = (P1 P2 P3 P4 P5 P6 ), unde P1 = (5, 0), P2 =
(3, 2), P3 = (1, 2), P4 = (3, 0), P5 = (1, 2), P6 = (3, 2). Aratati ca
Teorema Galeriei de Art
a poate fi aplicata n doua moduri diferite, asa ncat n
prima variant
a s
a fie suficienta o singura camera, iar n cea de-a doua varianta sa
fie necesare si suficiente doua camere pentru supravegeherea unei galerii avand
forma poligonului P.
Exercitiul 3.4 Fie poligonul P = (P1 P2 . . . P10 ), unde P1 = (0, 0), P2 = (6, 0),
P3 = (6, 6), P4 = (3, 6), P5 = (3, 3), P6 = (4, 4), P7 = (4, 2), P8 = (2, 2),
P9 = (2, 6), P10 = (0, 6). Stabiliti natura varfurilor lui P (varf principal sau nu
/ v
arf convex sau concav).
Exercitiul 3.5 Fie n 2 un numar natural par fixat. Consideram multimea
M = {A0 , . . . , An , B0 , . . . , Bn , C0 , . . . , Cn , D0 , . . . , Dn }, unde Ai = (i, 0), Bi =
(0, i), Ci = (i, i), Di = (n i, i), pentru orice i = 0, . . . , n. Determinati numarul
de triunghiuri si num
arul de muchii al unei triangulari a lui M.
Exercitiul 3.6 Dati exemplu de poligon care sa aiba mai multe varfuri principale concave dec
at v
arfuri principale convexe.
Exercitiul 3.7 Dati exemplu de multime de puncte din R2 care sa admita o
triangulare av
and 3 triunghiuri si 7 muchii.
Exercitiul 3.8 Dati exemplu de multime M = {A, B, C, D, E, F, G} din R2
astfel ca M s
a admit
a o triangulare ce contine 14 muchii.
Exercitiul 3.9 Fie ABCD un patrulater convex. Fie C cercul circumscris triunghiului ABC. Demonstrati ca diagonala AC este ilegala daca si numai daca
D este n interiorul lui C.

16

Capitolul 4

Diagrame Voronoi
4.1

Generalit
ati

Problema oficiilor postale


Se consider
a o multime de puncte (oficiile postale) din plan. Care este cel
mai apropiat?
Formalizare
Fie P = {P1 , P2 , . . . , Pn } o multime de puncte din planul R2 .
Diagrama Voronoi a lui P (notata Vor(P)) este o divizare a planului
R2 n n celule V(P1 ), . . . , V(Pn ) cu proprietatea ca
P V(Pi ) d(P, Pi ) d(P, Pj ), j = 1, . . . , n.
Dou
a celule adiacente au n comun o muchie sau un v
arf (punct de intersectie
a muchiilor).
Atentie! V
arfurile lui Vor(P) sunt diferite de punctele din P.
Uneori, prin abuz de limbaj, este precizata doar mpartirea n muchii /
v
arfuri.

4.2

Propriet
ati

Propriet
ati elementare
Celula asociat
a unui punct este o intersectie de semiplane:
\
V(Pi ) =
h(Pi , Pj ),
j6=i

unde h(Pi , Pj ) este semiplanul determinat de mediatoarea segmentului


[Pi Pj ] care contine punctul Pi .
In particular: fiecare celula este o multime convexa.
Aplicabilitate: algoritm (lent) de determinare a diagramei Voronoi.
Comentariu. Forma celulelor depinde de functia distanta aleasa.
17

Structura unei diagrame Voronoi


Fie P = {P1 , P2 , . . . , Pn } o multime de puncte din planul R2 .
Dac
a toate punctele sunt coliniare, atunci diagrama Voronoi asociata
Vor(P) contine n 1 drepte paralele ntre ele (n particular, pentru n 3,
ea nu este conex
a).
In caz contrar, diagrama este conexa, iar muchiile sale sunt fie segmente,
fie semidrepte (cui corespund acestea?).
Leg
atur
a ntre num
arul de varfuri, respectiv de muchii si numarul de
puncte (nv 2n 5, nm 3n 6).

4.3

Diagrame Voronoi si triangul


ari Delaunay

Leg
atura cu triangul
arile unghiular optime
Multime de puncte P
Diagrama Voronoi Vor(P)
Graful dual G(P)
Triangulare TP (triangulare Delaunay)
Teorem
a. Triangularea Delaunay este unghiular optim
a.

Intrebare: Ce se poate spune despre aceasta constructie n cazul n care
punctele multimii P sunt (de exemplu) varfurile unui patrat?

4.4

Un algoritm eficient

Algoritmul lui Fortune [1987]


Complexitate: O(n log n).
Principiu (paradigm
a): sweep line / linie de baleiere.
Inconvenient: la nt
alnirea unui varf al diagramei, linia de baleiere nu a
nt
alnit n c
a toate siturile (puncte din P) care determina acest varf!
Adaptare: nu retinem informatia legata de intersectia dintre linia de
baleiere si diagram
a, ci doar informatia legata de partea diagramei care nu
mai poate fi influentat
a de punctele situate de dincolo de linia de baleiere.
Concepte:
beach line / linie parabolica
site event / eveniment de tip locatie (apare un arc de parabola)
circle event / eveniment de tip cerc (dispare un arc de parabola)
Rezultate principale
Teorem
a. Diagrama Voronoi a unei multimi de n situri poate fi determinat
a cu un algoritm de tip line sweep de complexitate O(n log n), folosind
O(n) spatiu de memorie.
Teorem
a. Triangularea Delaunay a unei multimi de n situri poate fi
determinat
a cu un algoritm de tip line sweep de complexitate O(n log n),
folosind O(n) spatiu de memorie.
18

4.5

Exercitii, probleme, aplicatii

Exercitiul 4.1 Determinati, folosind metoda diagramelor Voronoi, triangularea Delaunay pentru multimea formata din punctele A = (3, 5), B = (6, 6),
C = (6, 4), D = (9, 5) si E = (9, 7).
Exercitiul 4.2 Determinati numarul de semidrepte continute n diagrama Voronoi asociat
a multimii de puncte M = {A0 , . . . , A5 , B0 , . . . , B5 , C0 , . . . , C5 },
unde Ai = (i + 1, i + 1), Bi = (i, i) si Ci = (0, i), pentru i = 0, . . . , 5.
Exercitiul 4.3 Dati exemplu de multimi
mathcalM1 si M2 din R2 , fiecare avand cate 4 puncte, astfel ca, pentru fiecare dintre ele, diagrama Voronoi asociata sa contina exact 3 semidrepte, iar
diagrama Voronoi asociat
a lui M1 M2 sa contina exact 6 semidrepte.

19

Bibliografie
[1] M. de Berg, M. van Kreveld, M. Overmars si O. Schwarzkopf, Computational Geometry, Algorithms and Applications, Springer, 2000.
[2] S. Devadoss, J. ORourke, Discrete and Computational Geometry, Princeton University Press, 2011.
[3] D. Lee, F. Preparata,Computational Geometry - A Survey, IEEE Transactions on Computers, 33 (1984), 1072-1101.
[4] F. Preparata si M. Shamos, Computational Geometry: An Introduction,
Springer, 1985.
[5] L. B
adescu, Geometrie, Editura Universitatii Bucuresti, 2000.
[6] M. do Carmo, Differential Geometry of Curves and Surfaces, Prentice Hall,
1976.
[7] Gh. Galbur
a si F. Rad
o, Geometrie, Editura Didactica si Pedagogica, Bucuresti, 1979.
[8] A. Gray, Modern Differential Geometry of Curves and Surfaces with
Mathematica, CRC Press, 1999.
[9] I. Hiric
a, S. Leiko, L. Nicolescu, G. Pripoae, Geometrie diferential
a. Probleme. Aplicatii, Bucuresti, 1999.
[10] M.I. Munteanu, Algoritmi geometrici 2D si aplicatii n CAGD, Editura Universit
atii Al. I. Cuza Iasi, 2005.
[11] L. Nicolescu, Curs de geometrie, Bucuresti, 2002.
[12] L. Ornea si A. Turtoi, O introducere n geometrie, Editura Theta, Bucuresti,
2000.
[13] M.S. Stupariu, Geometrie analitic
a, Bucuresti, 2008.

20

Anexa A

Proiecte
1. Acoperirea convex
a a unui poligon arbitrar.
Input: Un poligon P din R2 .
Output: V
arfurile acoperirii convexe Conv(P) (determinate n timp liniar).
Reprezentare grafic
a.
2. Invarianta acoperirii convexe la transform
ari afine.
Input: O multime P din R2 , o transformare afina : R2 R2 .
Output: Acoperirea convexa a imaginii lui P prin (coincide cu imaginea lui
Conv(P) prin ). Reprezentare grafica ilustreaza cat mai sugestiv proprietatea de invariant
a la transformari afine a acoperirii convexe.
3. Pozitia unui punct fat
a de un poligon convex.
Input: Un poligon convex P din R2 , un punct A R2 .
Output: Precizeaz
a pozitia lui A fata de P (n interior, pe laturi, n exterior),
folosind o mp
artire convenabila pe sectoare. Reprezentare grafica.
4. Poligon convex si punct exterior.
Input: Un poligon convex P din R2 , un punct A R2 n exteriorul lui P.
Output: Determin
a v
arfurile acoperirii convexe Conv(P {A}) (ca lista ordonat
a, parcurs
a n sens trigonometric). Reprezentare grafica.
5. Poligoane cu laturi paralele.
Input: Dou
a dreptunghiuri / poligoane convexe P, Q din R2 , disjuncte, avand
laturile paralele.
Output: Determin
a v
arfurile acoperirii convexe Conv(P Q) (ca lista ordonata,
parcurs
a n sens trigonometric). Reprezentare grafica.
6. Cercuri.
Input: O multime de cercuri C1 , . . . , Cq de raza 1, disjuncte, din planul R2 (sunt
indicate centrele cercurilor), un punct A R2 .
Output: Precizeaz
a pozitia lui A fata de Conv(C1 . . . Cq ). Reprezentare
grafic
a.

21

7. Triangul
ari ale poligoanelor invarianta la transform
ari afine
Input: Un poligon P din planul R2 , o transformare afina : R2 R2 .
Output: Construieste o triangulare TP a lui P si imaginea acesteia prin
ca triangulare a lui (P). Reprezentare grafica ilustreaza cat mai sugestiv
modificarea triangul
arilor poligoanelor dupa aplicarea unei transformari afine.
8. Pozitia unui punct fat
a de un poligon
Input: Un poligon P din planul R2 , un punct A R2 .
Output: Determin
a o triangulare TP a lui P. Precizeaza pozitia lui A fata de
P (n exterior, pe laturi, n interior). In cazul n care este un punct interior,
indic
a triunghiul din TP c
aruia A i apartine.
9.* Vizibilitate
Input: Un poligon P, un punct A n interiorul lui P.
Output: Determin
a, folosind o triangulare TP a lui P, regiunea lui P care este
vizibil
a din A. Reprezentare grafica.
10. Triangul
ari ale multimilor de puncte invarianta la transform
ari
afine
Input: O multime M de puncte, reprezentand varfurile unui triunghi si puncte
n interiorul acestuia.
Output: Construieste o triangulare TM a lui M si imaginea acesteia prin
ca triangulare a lui (M). Reprezentare grafica ilustreaza cat mai sugestiv
modificarea triangul
arilor multimilor de puncte dupa aplicarea unei transformari
afine.
11. Pozitia unui punct fat
a de o triangulare
Input: O multime M de puncte, reprezentand varfurile unui triunghi si puncte
n interiorul acestuia, un punct A R2 .
Output: Determin
a o triangulare TM a lui M. Precizeaza pozitia lui A fata
de M (n exterior, pe laturi, n interior). In cazul n care este un punct interior,
indic
a triunghiul din TM c
aruia A i apartine.
12.* Echivalenta triangul
arilor
0
Input: O multime M de puncte, doua triangulari TM , TM
ale lui M.

Output: Precizeaz
a dac
a cele doua triangulari sunt echivalente, i.e. pot fi transformate una intr-alta ntr-un numar finit de pasi, prin aplicarea unor modificari
de tip flip. Reprezentare grafica.

22

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