Problema


bogdancri


Am urmatoarea problema ...
Sa se proiecteze si se implementeze un tip de date abstract pentru poligoane în plan. Tipul de date abstract trebuie sa permita rezolvarea urmatoarelor probleme:
- Afisarea poligonului;
- Determinarea dreptunghiului de arie minim care contine în interior poligonul;
- Determinarea ariei poligonului;
- Determinarea perimetrului poligonului;
- Determinarea centrului de greutate;
- Determinarea daca poligonul este convex;
- Compararea poligoanelor în raport cu aria lor;
- (*) Concatenarea a doupoligoane; concatenarea a doua poligoane este întotdeauna un poligon convex obtinut astfel:
- se determina reuniunea multimii vârfurilor celor doua poligoane;
- se determin înfurtoarea convexa a multimii de puncte rezultate anterior;
- multimea punctelor înfurtorii reprezinta varfurile noului poligon;


As dori cateva idei mai ales pe partea matematica .....aici nu prea mai stiu...am uitat.
Problema trebuie implementata cu clase in c++.
Sunt incepator .... worthy.gif


va rog sa ma ajutati


Multumesc
ciuly
ai incercat manualul de geometrie clasa nu_mai_stiu_cand_se_facea_asa_ceva ? huh.gif
 
shiva
QUOTE(bogdancri @ Nov 18 2005, 16:07) *
- (*) Concatenarea a doupoligoane; concatenarea a doua poligoane este întotdeauna un poligon convex obtinut astfel:
- se determina reuniunea multimii vârfurilor celor doua poligoane;
- se determin înfurtoarea convexa a multimii de puncte rezultate anterior;
- multimea punctelor înfurtorii reprezinta varfurile noului poligon;

WTF e "infurtoarea"? eek.gif Never, ever n-am auzit de asa ceva....si doar stiu mtm angel.gif
caracatita
QUOTE(shiva @ Nov 18 2005, 16:49) *
WTF e "infurtoarea"? eek.gif Never, ever n-am auzit de asa ceva....si doar stiu mtm angel.gif


Vrea sa zica infasuratoarea wink.gif
bogdancri
infasuratoarea am vrut sa zic.

Geometrie nu prea mai stiu ....
bogdancri
Poate aveti o problema asemanatoare rezolvata .....si o puteti si trimite
ciuly
adica cu alte cuvinte sa iti facem noi tema dry.gif
 
bogdancri
cum se calculeaza centrul de greutate pentru un poligon cu n laturi ???
Orice informatie este buna ....

va rog.
horobica
QUOTE(bogdancri @ Nov 20 2005, 23:33) *
cum se calculeaza centrul de greutate pentru un poligon cu n laturi ???
Orice informatie este buna ....

va rog.


O idee ma gandesc ca ar fi sa il imparti in triunghiuri pentru care ai formula pt centrul de greutate (intersectia medianelor). Dupa care centrul de greutate al poligonului este media ponderata dupa arie a centrelor de greutate ale tuturor triunghiurilor. Zic si eu...
Africanul


QUOTE(bogdancri @ Nov 20 2005, 23:33) *
cum se calculeaza centrul de greutate pentru un poligon cu n laturi ???
Orice informatie este buna ....


Din cate imi aduc eu aminte (geometria si trigonometria nu mi-au placut):
Ai un poligon cu "n" laturi, iar punctele lui au coordonatele (xi, yi), i=1..n;
Fie (gx, gy) puctul care reprezinta centrul de greutate.
Atunci: gx=media_aritmetica(xi), gy=media_aritmetica(yi).

Asta este ce-mi aduc aminte. Am facut rapid pentru patrat, hexagon si octagon si mi-a dat corect centrul de greutate. Evident, centrul de greutate poate fi in afara ariei polinomului...
bluehipy
- Determinarea dreptunghiului de arie minim care contine în interior poligonul;

Calculezi xMin xMax yMin yMax pt toate punctele, dreptunghiul e ABCD
A(xMin,yMin) B(xMax,yMin) C(xMax,yMax) D(xMin,yMax)

- Determinarea ariei poligonului (convex);

Mai intai determini centrul de greutate:
xg = (x1+ .... +xn) / n
yg = (y1+ .... +yn) / n

daca unesti varfurile (n) poligonului cu centrul de greutate o sa obtii n-1 triunghiuri
A = A1+A2+...+An-1

unde Ai = hi*Li / 2
unde hi e distanta de la centrul de greutate G(xg,yg) la dreapta care trece prin Vi(xi,yi) si Vj(xj,yj) , j= i+1
Li e distanta dintre Vi si Vj , j=i+1 , Li = sqrt((xi-xj)(xi-xj)+(yi-yj)(yi-yj))

- Determinarea perimetrului poligonului;

Pn = L1+L2+...+Ln-1 , unde Li ai vazut mai sus cum se calculeaza

- Determinarea centrului de greutate;


ai vazut mai sus cum se calculeaza si a mai postat deja cineva asta

- Determinarea daca poligonul este convex;

Asta e mai "complicat" . iti alegi un sens de parcurgere a varfurilor si pentru fiecare semiplan creat de doua varfuri consecutive , celelete varfuri trebui sa faca parte din acelasi semiplan.
adica pt semiplanele:
Si dat de dreapta di(Vi Vj) si punctul Vk , j=i+1 ,k=i+2 , include toate Vx , x=1..n , x != i,i+1,i+2
coditia de apartenenta la acelasi semiplan e data de:

fie y(x) = yi+m(x-xi) ecuatia dreptei d(Vi,Vj),
un punct Vx apartine semiplanului dat de dreapta d si punctul Vk(xk,yk) daca f(xk) * f(xx) >0 (adica daca au acelasi semn) . Egalitatea cu 0 arata ca punctul Vx e pe dreapta d.



Poate te ajuta pe tine sau pe altcineva smile.gif

Eu caut solutie la o problema de vizibilitate in interiorul unui poligon ne-convex si / sau intersectii de poligoane neconvexe , daca-mi poate da cineva un hint m-as bucura : )


peace and love,
bluehipy
sapho
ce intelegi prin "vizibilitate in interiorul unui poligon ne-convex"?
Reclama
Am vazut aici ca au CASCO cu 5% mai ieftin. Pentru Renault e oferta in principal! Pare OK... uitati-va si voi!
Aceasta este o versiune simplificată a paginii originale. Pentru a vizita versiunea originala click aici.