Пусть L
будет длиной стороны шестиугольника, и пусть индексные вершины в столбце i
и строке `j будут таким образом:
i 0 0 1 1 2 2 3...
j \ / \ /
0 . A---o . . o---o
/ \ / \
/ \ /
/ \ /
1 -o . . o---o .
\ / \
\ / \
\ / \ /
2 . o---o . . o---o
/ \ / \
и пусть (x,y)
будет координатой вершины A
(вверху слева).
Чем координата y каждой строки сдвинута на L*sqrt(3)/2
.Координату X довольно легко вычислить, если мы посмотрим точки в шестиугольнике на расстоянии L/4
в направлении x от вершин.Эти точки (отмеченные точками) образуют решетку с расстоянием L*3/2
в направлении X.
Чем:
vertices[i][j] = Vertex( x - L/4 + i*L*3/2 + L/4*(-1)^(i+j), y - j*L*sqrt(3)/2 )
Индексы вершин в одном шестиугольнике имеют тип: (i,j), (i+1,j), (i+1,j+1), (i+1,j+2), (i,j+2), (i,j+1)
.