language-agnostic maps voronoi

language agnostic - Generación de mapa de territorio



language-agnostic maps (4)

¿Por qué no utilizar un mapa de primitivas (triángulos, cuadrados), distribuir los puntos de partida de los países (las "capitales") y luego expandir aleatoriamente los países agregando una primitiva adyacente aleatoria al país.

¿Existe una forma trivial, o al menos medianamente directa, de generar mapas territoriales (p. Ej., Riesgo)?

Miré en el pasado y lo mejor que pude encontrar fueron referencias vagas a los diagramas de Voronoi. Un ejemplo de un diagrama de Voronoi es este:

aquí http://www.dma.fi.upm.es/mabellanas/tfcs/fvd/images/voronoi.gif .

Estos son prometedores, pero creo que no he visto ninguna manera directa de renderizarlos, y mucho menos de tenerlos en alguna forma de estructura de datos para tratar cada territorio como un objeto.

Otro enfoque que es prometedor es el llenado de inundaciones, pero de nuevo no estoy seguro de la mejor manera de comenzar con este enfoque.

Cualquier consejo sería muy apreciado.


La mejor referencia que he visto sobre ellos es Geometría Computacional: Algoritmos y Aplicaciones , que cubre diagramas de Voronoi, triangulaciones de Delaunay (similares a los diagramas de Voronoi y cada uno puede convertirse en el otro) y otras estructuras de datos similares.

Hablan de todas las estructuras de datos que necesita, pero no le dan el código necesario para implementarlo (lo cual puede ser un buen ejercicio). En términos de código, una búsqueda de Amazon muestra el libro Geometría Computacional en C , que presumiblemente viene con el código (aunque ya que estás atrapado en C, te molestaría obtener el otro e implementarlo en el idioma que quieras ) Tampoco tengo ninguna experiencia con este libro, solo el primero.

Lamento tener solo libros para recomendar! El único recurso en línea decente que he visto en ellos son los dos artículos de Wikipedia , que en realidad no te dicen los detalles de la implementación. Este enlace puede ser útil sin embargo.


CGAL es una biblioteca C ++ que tiene estructuras de datos y algoritmos utilizados en Geometría Computacional.


En realidad, estoy lidiando exactamente con este tipo de cosas para el videojuego de mi compañía. La información más útil que he encontrado se encuentra en estos dos enlaces:

La página de Paul Bourke en UWA, con su artículo de 1989 sobre Delaunay y una serie de enlaces de implementación.

Una gran explicación del psudocódigo y un aspecto visual de Delaunay en codeGuru.com.

En términos de renderizar esto, la mayoría de las implementaciones que he encontrado necesitarán un masaje para obtener lo que deseas, pero dado que usar esto para un mapa del juego daría lugar a una cantidad de puntos más líneas entre ellos, podría ser una muy cuestión simple de hacer dibujar esto a la pantalla.