Связанные шестиугольники C ++ на плитке

У меня есть проблема, когда мне нужно представить шестиугольники на плитке по центру (который я называю узлом) на моем графике. Учитывая плитки шестиугольников, как я могу найти, если два шестиугольника x а также y подключены?

http://domathtogether.com/wp-content/uploads/2012/10/hexagons.png

Следующее будет работать на шестиугольники с их положением в двухмерном пространстве, однако я хочу представить их положение с помощью целочисленной координаты (0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3) etc,

if (n1->getPoint().getEuclideanDistance(n2->getPoint()) < diameter)
{
// The two are connected.
}

3

Решение

Предположим, что шестиугольники пронумерованы 012345 (верхняя строка 0), 0123456 (средняя строка 1), 012345 (нижняя строка 2): они касаются, когда они

  • в той же строке по индексам, которые отличаются на +/- 1, или

  • в строках, отличающихся на +/- 1, и индексы, равные или отличающиеся на +1 или -1, в зависимости от четности строки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]