Pergunta

Qual é a maneira mais fácil de desenhar uma grade hexadecimal algoritmicamente? Como devo apresentá -los em dados?

Por exemplo, em uma grade quadrada, eu poderia salvar coordenadas XY ..

Foi útil?

Solução

Então Hexagon é uma biblioteca legal Para os jogos do AS3, possui algumas aulas de hexagon que podem ser úteis em sua pesquisa. Este artigo Tem alguns detalhes muito bons sobre telhas hexagonais no Flash.

Outras dicas

Existem várias maneiras de gerenciar coordenadas do mapa hexadecimal e a maioria delas insiste sem intuição em mapeá -las para coordenadas XY, o que é importante apenas para a renderização. Alguma forma de coordenadas polares geralmente é melhor. Eu tenho uma biblioteca PERL para gerenciar a maioria dos cálculos de vetores, que é uma computação de ponto de referência muito útil, como IA e outras árvores de pesquisa.

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

Para os assentos baratos, as coordenadas polares plotam um ponto como a origem (como o gráfico cartesiano XY padrão), escolhe um vetor como uma linha de base (como o cartesiano) e depois designa pontos como (magnitude, graus).

Onde isso realmente atinge uma corrida em casa com mapas hexadecimais é que todo ângulo puro é um múltiplo de 60 graus. Se você atribuir a cada lado hexadecimente um voltado (A, B, D, E, F, G) e aplique um vetor como magnitude e voltamento, emergem várias propriedades úteis.

1) Cada hexadecimal pode ser representado como uma soma de dois vetores adjacentes (ou um único vetor em que o segundo vetor é uma magnitude 0 ou elemento de identidade). por exemplo, 1a+1b = 1a1b ou 1b1a. De qualquer maneira, é uma travessia de 2 hexadecipais, uma magnitude de 2, e designa um hexágono exclusivo da origem (0,0). 2) vetores não adjacentes sempre podem ser simplificados para dois vetores adjacentes que aplicavam estas regras: 2) Negação: 1a + 1d = 0, 1b + 1e = 0, 1c + 1f = 0, por exemplo, combinação: 1a + 1c = 1b , 1b + 1d = 1c, 1c + 1e = 1d, 1d + 1f = 1e, 1e + 1a = 1f

Mantendo esses princípios em mente, um míssil que deve atravessar o espaço real, precisa preservar os vetores como uma concatenação ou ordem de travessias menores. 1a + 1a + 1c + 1c representa um míssil que viaja com dois hexáticos e depois bancos acentuadamente (120 graus) e viaja com dois hexáticos, encerrando sua travessia a apenas 2 hexágonos de distância, mas 60 graus fora do curso de sua direção inicial.

O computador de direcionamento ou a explosão resultante, no entanto, pode se preocupar apenas com o intervalo; portanto, simplificar esses vetores usando essas regras pode ser importante. Para descobrir a menor distância entre dois pontos, basta concatenar os vetores e simplificá -los.

Também é muito fácil criar um mapa hexadecimal e renderizá -lo criar um objeto hexadecimal como a origem com propriedades, magnitude = 0, vetor = null, etiqueta (opcional) = alguma string (eu gosto de fazer disso o valor legível humano), nome = 0 (concatenação da magnitude e vetor) e saídas = matriz (você preencherá 6 nós, barreiras de minhoca ou outro). Plote a origem centrada no pixel que você escolhe para fazer o centro do mapa. Renderizar o hexadecimal. Escolha um raio para o seu mapa

Magnitude foreach,-preencha o anel com cada combinação de vetores adjacentes. Existem várias maneiras de fazer isso, mas o mais simples é escolher um único vetor como base e depois atravessar hexáfego de magnitude em uma direção e órbita apropriadas com uma curva de 60 graus. Por exemplo, para magnitude 3, comece a 3e, depois vá 3a, 3b, 3c, 3d, 3e, 3f calculando cada hexágono como somas do último hexadecimal atravessadas e o novo vetor hexadecimal. --- Em cada um desses hexágonos, aplique um pouco de calcular para calcular onde o pixel central deve ser relativo ao seu pixel de origem e renderizar o hexadecimal

Espero que ajude alguém. Hex mapa rock. Torná -los é uma merda um pouco.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top