Связанные шестиугольники 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.
}

1 ответ

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

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

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

Другие вопросы по тегам