Utilizzando la libreria schema di generazione voronoi/delaunay trovato in this program, che si basa su implementazione originale Fortune di his algorithm, con un insieme casuale di punti come dati in ingresso, sono in grado di ottenere i seguenti dati d'uscita:Come posso ottenere un dizionario di celle da questi dati di Voronoi Diagram?
- Un elenco dei bordi dello Delaunay Triangulation, il che significa che per ogni punto di ingresso, posso vedere quali punti di input sono i suoi vicini. Non sembrano essere in un ordine particolare.
- Un elenco delle coppie di vertici da Voronoi Diagram, che posso utilizzare per disegnare il diagramma di Voronoi una riga alla volta. Di nuovo, apparentemente in nessun ordine particolare.
- Un elenco senza nome di coppie di punti, che sembra essere solo la stessa lista di 2, ma in un ordine diverso.
- Un elenco dei vertici formati nel diagramma Voronoi, anche apparentemente in nessun ordine particolare.
Ecco un esempio di dati da un test del mio programma che usano questa libreria:
Input points:
0 (426.484, 175.16)
1 (282.004, 231.388)
2 (487.891, 353.996)
3 (50.8574, 5.02996)
4 (602.252, 288.418)
Vertex Pairs:
0 (387.425, 288.533) (277.142, 5.15565)
1 (387.425, 288.533) (503.484, 248.682)
2 (277.142, 5.15565) (0, 288.161)
3 (387.425, 288.533) (272.213, 482)
4 (503.484, 248.682) (637.275, 482)
5 (503.484, 248.682) (642, 33.7153)
6 (277.142, 5.15565) (279.477, 0)
Voronoi lines?:
0 (279.477, 0) (277.142, 5.15565)
1 (642, 33.7153) (503.484, 248.682)
2 (503.484, 248.682) (637.275, 482)
3 (387.425, 288.533) (272.213, 482)
4 (277.142, 5.15565) (0, 288.161)
5 (387.425, 288.533) (503.484, 248.682)
6 (277.142, 5.15565) (387.425, 288.533)
Delaunay Edges:
0 (282.004, 231.388) (487.891, 353.996)
1 (602.252, 288.418) (487.891, 353.996)
2 (426.484, 175.16) (487.891, 353.996)
3 (426.484, 175.16) (602.252, 288.418)
4 (50.8574, 5.02996) (282.004, 231.388)
5 (426.484, 175.16) (282.004, 231.388)
6 (50.8574, 5.02996) (426.484, 175.16)
Vertices:
0 (277.142, 5.15565)
1 (503.484, 248.682)
2 (387.425, 288.533)
3 (0, 288.161)
4 (272.213, 482)
5 (637.275, 482)
6 (642, 33.7153)
7 (279.477, 0)
Mentre i dati di cui sopra è adeguata se ho solo bisogno di disegnare i diagrammi di Voronoi e Delaunay, è non sono abbastanza informazioni per il lavoro reale che sto cercando di fare con questi diagrammi. Quello di cui ho bisogno è un dizionario di poligoni formato dai vertici di Voronoi, indicizzato dal punto di ingresso in cui è stato formato ogni poligono. Preferibilmente, per ogni poligono, questi punti dovrebbero essere ordinati in senso orario.
Con le informazioni di cui sopra, potrei assegnare implicitamente dati a ciascuna regione, assegnare i dati agli angoli se necessario, dire quali regioni condividono i bordi (usando i bordi di Delaunay) e fare un'analisi di conseguenza.
Quindi, in breve, , come posso utilizzare i dati disponibili per mettere insieme un dizionario in cui la chiave è uno dei punti di input, ei dati indicizzati da quella chiave sono una lista dei vertici di Voronoi che si formano il poligono circostante? O in alternativa, quell'informazione è da qualche parte implicita nei dati che ho ricevuto?
E 'questo tutto quello che vattene dalla biblioteca? Alcune delle cellule di Voronoi non sono descritte con un poligono chiuso. – Daniyar
Questa è tutta la libreria che mi dà. Le cellule voronei non descritte da un poligono chiuso sono cellule (credo) che incontrano il bordo del piano rettangolare; ad esempio, tutte le celle di confine in questo diagramma: http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/voronoi-and-delaunay.png – pdusen