Sunteți pe pagina 1din 13

Algoritm de reuniune a doua figurii geometrice

Prin reuniunea a doua figure geometrice bidimensionale inteleg obtinerea acelei


figura geometrica care are urmatoarele 2 propietatii:
1. include suprafetele celor 2 figurii geometrice
2. este cea mai mica multime care are propietatea nr.1
Exemplu:

Prin reuniunea figurii geometrice formata din punctele (A, B, C,.D) si a figurii formata
din punctele (F, E, G) se obtine figura geometrica formata din punctele (A, H, F, E, I,C,
B) doarece acesta include saprafetele celor doua figure si este cea mai mica multime care
are acesta propietate.

Reprezentare figuriilor geometrice


Pentru a reprezenta figure geometrice bidimensionale de orce tip, atit convex cit si
concav eu voi folosii notiunea de linie poligonala multipla.
Prin linie poligonala multipla, a unei figurii geometrice inteleg mai multe linii
poligonale inchise, suprafata figurii geometrice fiind cuprinsa intre aceste linii
poligonale.
Exemplu

In imaginea de mai sus linia poligonala multipla, care reprezinta acesta figura este
formata din urmatarele linii poligonale inchise:
 (A, B, C, D, E, F)
 (G, H, I, J)
 (K, L, M)

Motivele pentru care am ales sa folosesc conceptul de linii poligonale multiple


pentru a reprezenta figuriile geometrice bidimensionale este ca in urma reuniunii a doua
figure geometrice bidimensionale, in anumite cazuri, figura rezultata contine gaurii, si
deci figura concave obtinuta nu pote fii exprimate doar printr-o singura linie poligonala.
Exemplu
Se poate poate usor observa ca in cazul reuniunii figurii formata din punctele
(A,L,F,G,H) cu figura formata din punctele (I, C, D, J, N), figura rezultata nu contine
punctele aflate in interiorul poligonului format din punctele (K, L, M, N) deci are o
gaura.
Algoritmul deduce ce portiuni din segmentele celor doua linii poligonale multiple
svor constituii segmente in linia poligonala multipla a figurii rezultate, in urma
reuniunii , si compune acesta figura prin folosirea acestor informatii.

Algoritmul are urmatori 6 pasi:


I. Determinarea punctele de intersectie ale celor doua linii poligonale
multiple.
II. Introducerea puncte de intersectie in liniile poligonale multiple, intre
extremitatiile segmentele, din a caror intersectie provin .
III. Parcurgerea linie cu linie a fiecarei linie poligonala multipla si aflarea,
pentru linia curenta a punctelor, ce se afla in interiorul si in exteriorul
suprafetei figurii
IV. Deducerea punctelor care sunt puncte de pe granita liniei poligonale
multiple ce va rezulta.
V. Alegerea segmentelor din cele 2 linii poligonale multiple care vor
forma linia poligonala multipla ce va rezulta, si compunerea acesteia.
VI. Optimizarea linia poligonala multiple.

Determinarea punctele de intersectie ale celor doua linii poligonale multiple


Determinarea punctele de intersectie ale celor doua linii poligonale multiple se
realizeaza prin calculul tuturor punctelor de intersectie, ale segmentelor, liniilor
poligonale inichise din cel 2 figurii geometrice., lundu-se in calcul perechi segmente de
forma [segment1,segment2] unde segment1 provine din prima line poligonala multipla,
iar segment2 din a doua linie poligonala multipla.
In cazul calcularii punctelor de intersectie dintre 2 segmente exista 4 marii cazurii.
1. Cind au un singur punct de intersectie, segmentele intretaindu-se.
Exemplu segmentul [A1,B1] si segmentul [C1,D1] au ca punct de
intersectie punctul E1
2. Cind segmentele se afla pe drepte paralele distincte.In acest caz segmentele nu
au nici un punct de intersectie.
Exemplu segmentul [A2,B2] si segmentul [C2,D2] nu au nici un punct de
intersectie.
3. Cind segmentele se afla pe aceias drepta dar nu au nici un punct comun.
Exemplu segmentul [A3,B3] si segmentul [C3,D3]
4. Cand segmentele se afla pe aceias dreapta si au cel putin un punct comun. In
acest caz pot rezulta pina la 2 puncte de intersectie.
Exemplu segmentul [A4,B4] si segmentul [B4,D4] au doar un punct de
intersectie punctul B4
Segmentul [A4’,B4’] si segmentul [C4’,D4’] au doua puncte de
intersectie, punctele B4
5. Cind segmentele nu au nici un punct comun
Exemplu segmentul [A5,B5] si segmentul [C5,D5] nu au nici un punct de
intersectie.
Pentru a afla punctul de intersectie a doua segmente am calculate ecuatia dreptelor
pe care se afla aceste segmente.
Dintre cele 2 modalitati de a exprima ecuatia unei drepte am ales varianta cu trei
coeficienti (Ax+By+C=0).Am preferat acesta varianta deoarece varianta folosind
tangenta presupune anumite probleme legate de faptul ca tangenta la Pi / 2 are valoarea
infinit.

Am folosit calculul urmatoriilor determinati pentrua a determina :

 Ecuatie drepte cu ajutorul urmatorului determinant urmatorului determinant si


identificarea coeficientiilor..A,B,C unde (X1,Y1), (Y2,Y2) sunt coordonatele
punctelor ce determina acest segment.
X1 Y1 1
X2 Y2 1
X Y 1

In acest caz: coeficientii A,B,C dreptei pe care sta acest segment sunt:
A=(Y1-Y2)
B=(X2-X1)
C=( X1 Y2-X2 Y1)
 Daca 2 drepte sunt una si aceias prin calculul urmatorului determinant urmat
de testarea daca valoarea determinatului este egala cu 0, unde A 1,B1,C1 si
A2,B2,C2 sunt coeficientii ecuatiilor celor doua drepte.
A1 B1 C1
A2 B2 C2
1 1 1

 Daca doua drepte sunt paralele prin calcularea valori urmatorului determinant
si verificarea daca valoarea acestuia este egala cu 0, unde A1,B1 si A2,B2 sunt
coeficientii ecuatiilor celor doua drepte.
A1 B1
A2 B2

Introducerea puncte de intersectie in liniile poligonale multiple, intre


extremitatiile segmentele, din a caror intersectie provin
Se introduc puncte de intersectie in liniile poligonale multiple intre extremitatiile
segmentele din a caror intersectie provin, avindu-se grija ca in cazul in care sunt mai
multe puncte de introdus intre extremiatiile unui segment ca ele sa fie asezate
respectindu-se pozitionarea lor pe segment.(mai aprope, sau mai de parte decit celelate
puncte fata de una dintre extremitati.)
Exemplu:
in figura alaturata se
doreste adaugarea punctelor
C si D intre extremitatiile
segmentului [A,b]. Se poate
observa ca dupa introducerea
punctului C intre punctele A
si B, la introducerea
punctului D intre A si B
trebuie decis daca se va
introduce intre punctele A si
C sau C si B.
.
La sfirsitul acestor primi doi pasi am spart segmentele initiale, ale celor doua
linii poligonale multiple in segmente ce se afla sau in interiorul suparfetei figurii ce va
rezulta sau pe granite suparfetei figurii ce se doreste a se obtine
Motivul pentru care am realizat acest lucru este ca atunci cind un segment din
prima linie poligonala se intretaie intr-un punc cu alt segment din a doua linie poligonala
din cele patru .zone rezultate ca urmatea a suprapunerii celor cite doua semiplane ale
celor doua segmente , exista posibilitatea ca una dintrea zonele rezultate este exteriora.
suparafetet figurii. si ca urmare este delimitate din doua subsegmente celor doua
segmente initiale.
Parcurgerea linie cu linie a fiecarei linie poligonala multipla si aflarea,
pentru linia curenta a punctelor, ce se afla in interiorul si in exteriorul
suprafetei figurii

Acest pas urmareste determinarea punctelor ce se afla in interiorul ariei unei linii
poligonale multiple, pentru cele 2 linii poligonale multiple.
Pentru acesta se parcurge fiecare figura linie cu linie si se calculeaza punctele de
intersectie dintre acesta linie si figura respective.
Punctele de intersectie rezultate pot fii de trei feluri:
 Extremitate a unui segment ce este paralel cu axa Ox
 Extremitate a unui segment(caz in care el apare de 2 ori ca urmare ca se afla
pe segmentul curent cit si pe cel conectat cu acest segment. )
 Punct care nu este punct extreme ci doar se afla pe un segment..

Punctele de pe o linie se ordoneaza dupa urmatoarele criterii.


Se ordeaza intii dupa coordonata x .La coordonate x egale se ordoneaza dupa
coordonata y..Daca atit coordonata x cit si coordonata y sunt egale (acest caz este posibil
doar daca punctul se afla pe mai mult de doua segmente, fiind punct extrem) atunci se
ordoneaza dupa celelate puncte extreme ale segmentele din care provin.
Aviind punctele de pe o linie se incepe o prelucrarea a lor. Algoritmul cauta
perechi de puncte cu semnificatia ca toate punctele intre primul punct si al doilea se afla
in interiorul suprafetei figurii
Aceasta alegere a perechiilor de punctelor se realizeza in 3 etape:
1. se i-au toate perechiile de puncte sucessive care sunt extremitatiile aceluias
segment.(acest segment este paralele cu axa Ox). Se elimina aceste perechi
din multimea punctelor de intersectie si se retin puncte aflate intre aceste
perechi de puncte ca puncte apartinind suprafetei figurii de reuniune.
2. apoi se gasesc toate perechile de puncte succesive cu coordonatele x si y
egale(exita 2 puncte successive cu aceles coordonate daca punctul de
coordonate x,y este extremitatea unui segment si deci el este extremitate si al
segmentului urmator) .
In acest caz perechile de puncte sunt de forma [(x,y),(x,y)].Se observa ca
perechile sunt generate de acelas punct.
Daca notam:
B punctul de coordonate (x,y) ,
A cealalta extremitate a primului segment
C cealalta extremitate a celui deal al doilea segment
atunci se identifica toate perechiile de forma [B,B] care au pe A intr-un
semiplan fata de linia de cooordonata y si pe C in celalat.Unul dintre aceste
puncte se sterge.
3. Perechiile ramase determina punctele care sunt in interiorul figurii sau pe
granite sas si care nu sint.In aceet moment intre daca avem puncte numerorate
intre 1 si n, unde n par atunci perechiile de forma 2k+1,2k+2, unde k apartine
multimii {0,n/2-1) sunt perechi ce determina puncte ce se afla pe suparafeta
figurii.
Deducerea punctelor care sunt puncte de pe granita liniei poligonale
multiple ce va rezulta.

Se gasesc punctele de pe prin faptul ca nu sunt inconjurate de 8 puncte dintre punctele


aflate in pe suprafata figurii.

Alegerea segmentelor din cele 2 linii poligonale multiple care vor forma
linia poligonala multipla ce va rezulta, si compunerea acesteia.

Se testeaza pentru toate segmentele, din liniile poligonale ce au rezultat in urma


introducerii in linii poligonale multiple a punctelor de intersectie, daca au doar puncte
dintre punctele descoperite ca punct aflat pe granite figurii ce va rezulta. Daca da atunci
se i-a acest segment si se introduce intr-un vector de linii poligonale.incercindu-se sa se
lipeasca acest segment de o linie poligonala ce are ca extremitate un nod neconectat care
coincide cu unul dintre punctele terminale ale acestui segment.

Optimizarea linia poligonala multiple.


Acesta etapa are rolul de a micsora numarul de puncte si de linii poligonale ce
rezulta ca urmare a reuniunii suprafetelor celor doua linii poligonale multiple fara a
pierde insa din aspectul visual al figurii rezultate.
Acest lucru se realizeaza prin eliminarea punctelor care daca nu ar fii luate in
calcul intr-o linie poligonala multipla nu ar modifica aspectul sau grapfic(adica conturul)
si reunirea a mail multor linii poligonale multiple daca este posibil.
Motivatia pentru acesta operatie este optimizarea figurii prin reducerea memoriei
ocupate si simplificarea modului cum este retinuta acesta figura geometrica.
Se realizeaza pe 2 etape:
 Etapa 1
Eliminarea punctelor care nu sunt indispensabile de pe liniile poligonale.
Prin puncte indispensabile inteleg puncte care daca nu ar fiiluate in calcul
la reprezentarea figurii geometric ear modifica aspectul grafic)
Daca mai mult de 2 puncte consecutive de pe o linie poligonala sunt colineare
atunci punctele cuprinse intre primul si ultimul dintre aceste puncte nu sunt
idinspensabile. eliminarea lor nu determina modificarea conturului acestei linii
poligonale multiple.

Exemplu

Puncte A,D,F sunt indispensabile deoarece eleiminrea lor ar determina


schimbarea aspectului grfic al figurii pe cind punctele B,C nu sunt puncte
indinspesabile deorece poligonul ABCDEF are acelas contur cu poligonul
ADEF
 Etapa 2 reuniunea liniilor poligonale inchise daca au un punct comun..
Daca 2 linii poligonale inchise au un punct comun atunci ele pot fii reunite
figura rezultata fiind aceias.Daca avem liniile poligonale formate din
punctele(a1,..an,a1) respective (b1..bm,b1) si punctual ai=bj atunci reuniunea
acestor doua linii poligonale este (a1..ai-1,ai,bj+1..bm,b1..bj-1, ai,ai+1,an,a1)
Exemplu

In figura de mai sus poligonul ABCD se poate reunii poligonul DEF . Poligonul
rezultat este ABCDFED
La sfirsitul acestor 6 pasi vom obtine reuniunea acestor doua figure geometrice.

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