2014-09-05 3 views
0

Я искал алгоритм утра, чтобы сгенерировать Honeycomb шестиугольников, как этот, используя осевые координаты:Генерация Honeycomb гексагональной Patern в Осевых координатах

this has a radius of 4 Но мне удалось найти генераторы в координатах куба.

Я задал этот вопрос, чтобы поделиться своим решением.

ответ

2

Это генерирует все плитки r*(r-1)*3+1 шестиугольного спирали. Недостатком метода является то, что он предполагает, что вы размещаете фигуру в (0,0).

public void makeHoneyComb(int radius){ 

    makeCell(ta, 0, 0); 
    for (int r = 0; r > -radius; r--) 
     for (int q = -r - 1; q > -radius - r; q--) 
      makeCell(q, r); 

    for (int r = 1; r < radius; r++) 
     for (int q = 0; q > -radius; q--) 
      makeCell(q, r); 

    for (int q = 1; q < radius; q++) 
     for (int r = -q; r < radius - q; r++) 
      makeCell(q, r); 
    } 

Это основано на том факте, что форму, подобную этой кулачке, можно разделить на 3 аналогичных Rectagles и на центральную часть.