PDA

Visualizza la versione completa : [?] Rappresentazione di poligoni 2D


Gil Mour
12-01-2007, 10:37
Devo sviluppare un algoritmo che deve generare un grafo in un ambiente in cui sono presenti degli oggetti che possono essere approssimati a dei poligoni.

Ho la necessitÓ di manipolare i poligoni stessi (calcolo di aree, centro di massa, intersezioni con delle rette, etc) per dei calcoli geometrici e sto cercando di documentarmi per capire quali sono le rappresentazioni piu convenienti/utilizzate per tenere in memoria questi poligoni.

Ad esempio, la soluzione pi¨ banale che mi viene in mente Ŕ una rappresentazione matriciale dell'ambiente, in cui ogni cella rappresenta un punto, e la cella stessa contiene un valore che identifica se quel punto appartiene ad un poligono piuttosto che ad un altro.

Sapete indicarmi dove documentarmi, o suggerirmi delle chiavi per effettuare una ricerca mirata in tal senso?

Grazie
:ciauz:

Andrea1979
12-01-2007, 10:43
io terrei un array con i vertici dei poligoni.

XWolverineX
12-01-2007, 17:39
Puoi usare una struttura di questo tipo...
non badare alle parentesi


struct Vertice
[
struct
[ float x,y,z; ] Posizione;

struct
[ float x,y,z; ] Normale;

int Primitiva;
];


Le prime 2 strutture si capiscono da sole.
L'int indica la primitiva (triangolo, quadrato, trapezio che sia) di appartenenza (numero 1, 2 ,3..)

Gil Mour
12-01-2007, 21:50
Grazie dei suggerimenti.
Per quanto riguarda il primo confesso che mi era gia venuta in mente una cosa del genere, il secondo Ŕ interessante ma non posso assegnare alcuna primitiva al poligono perche di sicuro non Ŕ un poligono notevole (quadrato, rettangolo etc)

Comunque, in un modo o in un altro, credo che ce la farei ad uscirne in qualche maniera, creando strutture ad hoc. Quello che mi preme sapere, e che forse non ho spiegato bene nel mio post, Ŕ se esistono approcci consolidati e di 'comune' utilizzo per affrontare problemi di questo tipo, tenendo in considerazione il fatto che l'algoritmo finale dovrÓ rispettare determinati vincoli in termini di tempo di elaborazione ed occupazione di memoria.

Come gia detto, una semplice keyword per fare delle ricerche mi sarebbe gia di grande aiuto.

Grazie comunque!
:ciauz:

XWolverineX
12-01-2007, 22:04
Mmm forse anche io non mi sono spiegato.
O non ho capito proprio niente.

Nella struttura, l'intero rappresenta il numero di primitiva.
Mettiamo caso vuoi costruire un quadrato e un triangolo...farai


Vertice v1;
v1.bla //assegni i 4 vertici
v1.Primitiva = 1;

//stessa cosa per v2,v3 e v4

Vertice v5
v5.bla //assegni altri 4 vertici
v5.Primiiva = 2;

//1 sarebbe uguale al quadrato.
//2 invece al trapezio

non so se Ŕ chiaro

Andrea1979
13-01-2007, 19:16
Se non avrai a che fare con curve complesse (polinomi di grado elevato o altre amenitÓ), ossia se avrai a che fare solo con poligoni formati da spezzate, i vertici ti bastano e ti avanzano.

Gil Mour
14-01-2007, 13:15
Originariamente inviato da Andrea1979
Se non avrai a che fare con curve complesse (polinomi di grado elevato o altre amenitÓ), ossia se avrai a che fare solo con poligoni formati da spezzate, i vertici ti bastano e ti avanzano.

Beh allora sembra proprio che non ci siano in giro cose che non mi fossero gia venute in mente

Grazie dell'interessamento

Il Pazzo
14-01-2007, 13:54
Non so se ho capito bene il tuo problema... ma in caso di curve potresti salvare l'equazione della curva....

Loading