Pregunta

¿Cuál es la forma más fácil de dibujar una cuadrícula hexagonal algorítmica? ¿Cómo debo presentar en los datos?

Por ejemplo, en una rejilla cuadrada, tan sólo pudiera salvar a X-Y de coordenadas ..

¿Fue útil?

Solución

hexágono es una biblioteca ordenada para los juegos de AS3, tiene algunas clases hexagonales que podría ser útil en su investigación. Este artículo tiene algunos detalles muy agradables sobre las baldosas hexagonales en Flash .

Otros consejos

Hay varias formas de gestionar las coordenadas del mapa hexagonales y la mayoría de ellos insisten en unintuitively asignándolos a las coordenadas x-y que sólo es importante para la representación. Alguna forma de coordenadas polares es lo mejor. Tengo una biblioteca Perl para la gestión de la mayoría de los cálculos vectoriales que es muy útil la computación de punto de referencia como AI y otros árboles de búsqueda.

http://en.wikipedia.org/wiki/Polar_coordinate_system

Para los asientos baratos, coordenadas polares traza un punto como el origen (como el xy estándar gráfico cartesiano), picos un vector como una línea de base (como el cartesiano) y después se designa como puntos (magnitud, grados).

Cuando esto realmente realiza un home run con mapas hexagonales es que todos los ángulos puro es un múltiplo de 60 grados. Si se asigna cada lado hex un paramento ((a, b, d, e, f, g) y aplicar un vector como una magnitud y frente, varias propiedades útiles emergen.

1) Cada hex puede representarse como una suma de dos vectores adyacentes (o un único vector en el que el segundo vector es una magnitud 0 o elemento de identidad). p.ej. 1a + 1b = 1A1B o 1B1a. De cualquier manera, se trata de un recorrido de 2 hexágonos, una magnitud de 2, y designa un hexágono único desde el origen (0,0). 2) Los vectores no adyacentes siempre se pueden simplificar a dos vectores adyacentes se aplican las siguientes reglas: 2) Negación: 1A + 1D = 0, 1B + 1E = 0, 1C + 1F = 0, por ejemplo, 3) Combinación: 1A + 1C = 1B, 1B + 1D = 1C, 1C + 1E = 1D, 1D + 1F = 1E, 1E + 1A = 1F

Mantener estos principios en mente, un misil que debe atravesar el espacio real, necesita preservar los vectores como una concatenación o el orden de recorridos más pequeños. 1A + 1A + 1C + 1C representa un misil que viaja dos hexágonos hacia fuera y después bancos bruscamente (120 grados) y viaja dos hexágonos, terminando su recorrido sólo 2 hexágonos de distancia pero 60 grados de su curso desde su dirección inicial.

El ordenador de orientación o resultante explosión, sin embargo, pueden sólo se preocupan por la gama, simplificando así estos vectores usando esas reglas pueden ser importantes. Para calcular la distancia más corta entre dos puntos cualquiera, simplemente concatenar los vectores y simplificar ellos.

También es bastante fácil de crear un mapa hexagonal y hacerla Crear un objeto hexagonal como el origen de propiedades, Magnitud = 0, Vector = NULL, Etiqueta (opcional) = alguna cadena (me gusta hacer de este el valor legible por humanos), Name = 0 (concatenación de la magnitud y el vector), y salidas = array (usted poblar 6 nodos, salvo los agujeros de gusano u otro). Trazar el origen centrada en el píxel que elija para hacer el centro del mapa. Hacer que el hexagonal. Elija un radio para su mapa

Magnitud Foreach, --- poblar el anillo con cada combinación de vectores adyacentes. Hay un número de maneras de hacer esto, pero la más sencilla es elegir un único vector como una base y luego atravesar hexágonos magnitud en una dirección y la órbita apropiado con un giro de 60 grados. p.ej. Para Magnitud 3, comience en 3E, y luego ir 3A, 3B, 3C, 3D, 3E, 3F calcular cada hex como sumas de la última hex atravesada y el nuevo vector único hex. --- En cada uno de estos hexágonos, aplicar un poco de trigonometría para calcular donde el píxel central debe ser relativa a su origen píxeles y hacer que el hexágono

Espero que ayude a alguien. Mapas hexagonales roca. Haciéndolos chupa un poco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top