El uso de la biblioteca de generación de diagrama de Voronoi/Delaunay encontró in this program, que se basa en la implementación original de la Fortuna de his algorithm, con un conjunto aleatorio de puntos como datos de entrada, soy capaz de obtener los siguientes datos de salida:¿Cómo puedo obtener un diccionario de células a partir de estos datos del diagrama de Voronoi?
- Una lista de los bordes del Delaunay Triangulation, lo que significa que para cada punto de entrada, puedo ver qué puntos de entrada son sus vecinos. No parecen estar en ningún orden particular.
- Una lista de pares de vértices del Voronoi Diagram, que puedo usar para dibujar el diagrama de Voronoi una línea a la vez. De nuevo, aparentemente sin un orden en particular.
- Una lista sin nombre de pares de puntos, que parece ser la misma lista que 2, pero en un orden diferente.
- Una lista de los vértices formados en el diagrama de Voronoi, aparentemente sin ningún orden en particular.
Aquí es un ejemplo de los datos de una prueba de funcionamiento de mi programa utilizando esta biblioteca:
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)
Si bien la información es la adecuada si todo lo que necesito es para dibujar los diagramas de Voronoi y Delaunay, se no es suficiente información para el trabajo real que estoy tratando de hacer con estos diagramas. Lo que necesito es un diccionario de polígonos formado por los vértices de Voronoi, indexados por el punto de entrada en torno al cual se formó cada polígono. Preferiblemente, para cada polígono, estos puntos se ordenarían en el sentido de las agujas del reloj.
Con la información anterior, podría asignar implícitamente datos a cada región, asignar datos a las esquinas si es necesario, decir qué regiones comparten los bordes (utilizando los bordes de Delaunay), y hacer el análisis correspondiente.
Así que en resumen, cómo puedo usar los datos disponibles para armar un diccionario en el que la clave es uno de los puntos de entrada, y los datos indexados por esa clave son una lista de los vértices de Voronoi que forman el polígono circundante? O, como alternativa, ¿esa información está implícita en alguna parte en los datos que se me han proporcionado?
¿Es esto todo lo que salir de la biblioteca? Algunas de las células de Voronoi no se describen con un polígono cerrado. – Daniyar
Esto es todo lo que la biblioteca me ofrece. Las células voronoi no descritas por un polígono cerrado son (creo) células que se encuentran con el borde del plano rectangular; por ejemplo, todas las celdas fronterizas en este diagrama: http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/voronoi-and-delaunay.png – pdusen