Orbital Ape

Um blog sobre um grupo de desenvolvimento de jogos indie em constante e vagaroso crescimento.

Os pensamentos de Amit sobre Grades [Parte 4: Sistema de Coordenadas]

Existem três partes da grade, e nós precisamos de uma maneira para endereçar cada uma delas. Eu vou começar com simples coordenadas numéricas que corresponda aos eixos da grade. A soma F, E, V no diz quantas partes da grade compartilham as mesmas coordenadas. Se mais de uma parte possuir a mesma coordenada, utilizarei uma letra maiúscula para retirar a ambiguidade.

Grades Quadrangulares

Faces of a square     Edges of a square    Vertices of a square

Figura 1: Sistema de coordenadas da grade quadrangular: faces, bordas, e vértices

Grades quadrangulares são bem fáceis. Veja o primeiro diagrama na Figura 1 para o padrão do sistema de coordenadas para as faces. A soma F, E, V é 1, 2, 1. Isso significa que só as bordas precisarão de uma letra para retirar a ambiguidade. Para cada face, nós (arbitrariamente) atribuímos uma vértice para compartilhar sua coordenada. Eu escolhi o canto sudoeste da face. Compare o diagrama de face e o diagrama de vértice para ver como as coordenadas são relacionadas. Para cada face nós atribuímos duas bordas para dividir sua coordenada. Eu escolhi as bordas do sul e oeste e anotei as coordenadas com as letras s(Sul/ South) e w(Oeste/ West).  Compare o diagrama de face com o diagrama de bordas para ver como são relacionados. Há uma face, duas bordas, e uma vértice que compartilha a coordenada (1, 1). Isto corresponde a nossa soma F, E, V de 1, 2, 1.

Grades Hexagonais

Faces of a hexagon     Edges of a hexagon    Vertices of a hexagon

Figura 2: Sistema de coordenadas da grade hexagonal: faces, bordas, e vértices

Nós criamos a grade hexagonal de uma grade quadrangular. As coordenadas da face de um hexágono podem ser as mesmas coordenadas da face do quadrado que foi transformado em hexágono. Compare a Figura 1 com a Figura 2 e você verá como a coordenada das faces são relacionadas. Para cada face nós escolhemos três bordas e dois vértices para compartilhares a mesma coordenada. Eu escolhi as bordas NW, N, e NE e as rotulei W, N, E. Eu escolhi os vértices mais a esquerda e a mais a direita e os rotulei L, R. Muitas outras atribuições são possíveis.

Grades Triangulares

Faces of a triangle     Edges of a triangle    Vertices of a triangle

Figura 3: Sistema de coordenadas da grade triangular: faces, bordas e vértices

Nós criamos a grade triangular de uma grade quadrangular, e nós dividimos cada quadrado distorcido em dois triângulos. Isso significa que cada coordenada de uma face quadrangular agora terá que ser duas coordenadas de faces triangulares. Eu escolhi rotulá-los L e R, como visto na Figura 3. As bordas são as mesmas daquelas dos quadrados(W e S), exceto que nós agora temos uma borda adicional, criada a partir da divisão da face quadrangular em duas, e eu rotulei esta borda de E. O triângulo extra não cria nenhum vértice adicional, logo a rotulação dos vértices permanece a mesma da rotulação da grade quadrangular.

Os pensamentos de Amit sobre Grades [Parte 3: Derivação de Grades Hexagonais e Triangulares]

Grades hexagonais e triangulares podem ser derivadas de grades quadrangulares. (Tente mudar o ângulo neste demo em Flash(inglês).) Tendo em vista que o sistema de coordenadas para quadrados é direto, a derivação nos guiará no planejamento de um sistema de coordenadas para hexágonos e triângulos. Quadrados para Hexágonos Há dois passos necessários para tornar uma grade quadrangular numa grade hexagonal. Primeiro, nós devemos compensar as colunas(ou fileiras). Segundo, nós dividimos a metade das bordas e juntamos elas no meio.

Offsetting a square grid to make a hexagonal grid       Another way to offset a square grid to make a hexagonal grid

Figura 1: Grade Quadrangular, aproximações do resultado

Há duas maneiras simples de compensar colunas. A mais comum é compensar de uma em uma coluna(veja na primeira grade da Figura 1). Programar utilizando esta abordagem nota-se se a coluna é par ou impar e escolhe-se quando compensa-la. Uma abordagem mais simples é compensar cada coluna pela metade a mais do que a coluna anterior(veja a segunda grade da Figura 1). Programar usando essa abordagem é mais uniforme, mas o formato do mapa deixa de ser retangular, o que pode ser inconveniente. Nestas páginas trabalharei com a última abordagem; é mais fácil e também pode ser facilmente utilizada com triângulos.(Em uma futura versão desta página eu poderei cobrir as duas versões.)

Widen squares into hexagons, stage 1Widen squares into hexagons, stage 2Widen squares into hexagons, stage 3

Figura 2: Alargando quadrados em hexágonos

Com qualquer abordagem de compensação, o próximo passo é dividir as bordas verticais dos quadrados e dobra-las, como visto na Figura 2. Quando a dobra é reduzida de 180 graus para 120 graus, você terá hexágonos simétricos. Observe que dividindo as bordas verticais nós aumentamos o número de bordas de 4 para 6(um aumento líquido de 1 borda por face, já que as duas novas bordas são compartilhadas por duas faces). Nós também aumentamos o número de vértices de 4 para 6(mas estas vértices são compartilhadas, deixando-nos com um aumento líquido de 1 vértice), e nós deixamos o número de faces inalterado. Isto corresponde o que esperávamos da soma F, E, V indo de 1, 2, 1 para 1, 3, 2.

Quadrados para Triângulo

Square grid     Rhombus grid, from shearing a square gridTriangle grid, from subdividing rhombuses

Figura 3: Deformando quadrados em losangos, então subdividindo-os

Há dois passos necessários para tornar uma grade quadrangular numa grade triangular. Primeiro, devemos deformar os quadrados, o que é similar ao que fizemos aos hexágonos, exceto que nós inclinamos as bordas ao invés de dividi-las. Isto nos da uma grade losangular(veja Figura 3), que compartilha características com a grade quadrangular. Então nós dividimos cara face losangular em dois triângulos. Dividindo cada face significa que agora nós temos o dobro de faces que tínhamos antes, nós adicionamos uma borda para cada face, e nós não adicionamos nenhuma vértice. Isto corresponde o que esperávamos da soma F, E, V indo de 1, 2, 1 para 2, 3, 1.