Sunteți pe pagina 1din 4

Algoritmul direct in constructia poligonului Voronoi(PSEUDOCOD)

 pentru  i=1,n   //se calculeaza poligonul Pi

                {poligon(i)=dreptunghiul(l,h); //initial poligonul Voronoi al Pi este conturul hartii (l,h)

pentru  j=1,n si j<>i 

                                {med(i,j) =calculeaza_mediatoarea_segementului(Pi,Pj);

                               poligon(i)= intersecteaza_poligon_cu_mediatoare(poligon(i),med(i,j));    

                                }                            

  afiseaza_poligon;//se poate afisa poligonul

                prelucreza_poligon;//sau se poate prelucra pentru  diferite informatii

2.Algoritmul direct pentru constructia infasuratorii convexe(PSEUDOCOD)

Pas 1 CS
Pas 2 Pentru toate punctele P IS
Pentru toate punctele p j ∈ S , p j ≠ p i
Pentru toate punctele pk ∈ S , PK ≠ p j , p k ≠ pi
Pentru toate punctele p ∈ S , p ≠ pi , p ≠ p j , p≠ pk
C
If p∈ ∆ p i p j pk thenC ← .
{P }

3.Algoritmul Andry de constructia a infrasuratorii convexe

Pas 1 Se determina 2 puncte pmin , pmax ∈ S de abscisa minima (maxima).



Pas 2 Se separa S in S¿ S INF dupa pozitia punctelor fata de p p ∗S va fi format din punctele
min max ¿
extreme si cele din dreapta vectorului.
Pas 3 Se sorteaza S¿ , S INF dupacresterea abscise.
Pas 4 a) Se verifica toate tripletele consecutive pi , pi+1 , pi +2 ∈ S ¿ pornind de la pmi n . Daca

pi+1 este pozitionat∈ stinga p i pi +2atunci se executa miscarea” inainte”,Altfel miscarea “inapoi”. La
atingerea pmax punctele ramase in S¿ formeaza partea superioara a infasuratorii convexe .
b) se verifica toate tripletele consecutive pi , pi +1 , pi+ 2 ∈ Sinf pornind de la pmin .Daca pi+1 este

pozitionat la dreapta p p atunci se executa “inainte”,altfel “inapoi”. La atingerea pm ax punctele
i i+2
ramase in S INF formeaza partea inferioara a infasuratorii convexe.
Pas 5 Q ← S INF ∪ S ¿.
4.Algoritmul de constructie a nucleului unui poligon simplu(pseudo]cod)

PAS1 Initializare. La sfirsitul listei de virfuri dupa P N se adauga virful virtual P N+1 =P 1.Se
construieste poligonul Q( NUCLEUL INITIAL) conform uneia din metodele cunoscute. i← 1.
PAS2 Procesarea laturii I . Fie Q=(q 1 , q 2 , … , q k) pentru dreapta l ce contine latura i a poligonului P
definite de virfurile ¿) se determina punctele de intersectie cu poligonul Q precum si laturile
intersectate ( q j , q j+1 ) si ( q k , qk +1) .
a) Se formeaza poligoanele Q1=( d 1 , q j+1 , … , qk , d 2 ) si Q2=( d 2 , qk +1 , … , q n , q 1 , … , q j , d1 ) .

b) Se determina Q ∈ { Q1 , Q2 } care se afla in dreapta vectorului ( pi p i+1)
¿

c) Q ←Q ¿
PAS 3 If i<N then begin i↑ goto pas 2 end else STOP.
Q este nucleul.

5.Algoritmul de determinare de aparteneta a unui punct la un domeniu


simplu(pseudocod)

1) Se translateaza linia poligonala in cadranul I, adica se considera P( x i , y i), x i , y i>0, i=1,..,n

pn+ 1 ← p 1

2) Se numara intersectiile laturilor pi p i+1, i=1,…,n , pn+ 1=p 1 cu segmentul [QQ] m← 0.

//contor pentru intersectii [Q(0,0)Q(x,y)]∩¿]

For i=1..nn1 ← det( Pi , O ,Q)

n2 ← det(P I+1 , O ,Q)

n3 ← det(O , Pi , Pi +1)

n 4 ← det (Q , P i , Pi+1 )

If (n1∗n2 <0 ¿∧( n3∗n4 <0 ) then m← m+ 1

If m=par then Q∈ Ext Pelse Q ∈Int P .end.

6.Algoritmul de constructie a triangularizarii unui sistem de puncte(pseudocod)

Pas 1 m← 0

Pas 2 for i de la 1 la n do

For j de la i+1 to n do

Begin
m↑

Muchie[m].l←distant(p[i],p[j])

Muchie[m].st←p[i]

Muchie[m].fin ←p[j]

End;

Pas 3 qsort(muchie,m);

Pas 4 k←0

Pas 5 for I de la 1 la m do

Begin

z←false

for j←1 to k do

if intersect(Muchie[i],Triang[j]) then z←TRUE

if NOT z then begin

k↑; Triang[k]←Muchie[i]

End.

7.Algoritmul de constructie a triangualizarii unui poligon convex(pseudocod)

Pas 1 m←0

Pas 2 for i←1 to n do

For j←2+I to n do begin m↑

Muchie[m].l←distant(p[i],p[j])

Muchie[m].st←p[i]

Muchie[m].fin ←p[j]

End;

Pas 3 qsort(muchie,m);
Pas 4 for i←1 to n-1 do begin

Triang[i].st←p[i]

Triang[i].fin←p[i+1]; end;

Triang[n].st←p[n]

Triang[n].fin←p[1]

k←n

Pas 5 for i←1 to m do

Begin

Z←false

For j←1 to k do,

If intersect (muchie[i],triang[j]) then z←true

If NOT z then begin

x,y←middle(muchie[i])

if apart(x,y.p) then begin k↑; triang[k]←muchie[i];

end;end;end.

8.Algoritmul direct pentru determinarea cele mai apropiate perechi de puncte

Preprocesare X←S ,sort(X) Y←S ,sort(Y)

Procedure apr2p(S,X,Y)

IF |S|>=4 THEN BEGIN

Formeaza S1 , S 2 , X 1 , X 2 ,Y 1 , Y 2 δ ← MIN (APR 2 P ( S1 , X 1 ,Y 1 ) , APR 2 P ( S 2 , X 2 , Y 2 ))formeaza Y ∎

For i←1 to |Y ∎| do

For ←1 to 8 do

If distance (Y ∎[i], Y ∎[i+j]<δthen δ ←distance (Y ∎[i],Y ∎[i+1]) Return δ end

Else return distant minima in S

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