将矩形网格点转换为六边形网格

时间:2013-09-18 19:09:47

标签: c++ math geometry

我有一个像enter image description here这样的矩形网格点,我希望得到这些点的索引,形成一个像enter image description here这样的六边形网格。

如果我只想绘制完整的六边形,我怎样才能“六角化”矩形网格?

编辑:

我添加了另一张图片,展示了我想要实现的目标enter image description here

2 个答案:

答案 0 :(得分:1)

您可以创建两个网格,一个尺寸为N / 2xN / 2,其中N = 20,另一个是(N-1)/ 2 + 1x(N-1)/ 2 + 1。如果调用的索引是奇数,则转到图形中的内部单元格,长度为N-1,否则为外部单元格,长度为N.

我想这将是最经济/最优化的方式。

答案 1 :(得分:0)

您的照片每2个水平重复一次,每4个垂直重复一次。所以你需要看一下x mod 2和y mod 4,然后根据它来确定线条。


明确说明:

(x mod 2,y mod 4) connections
(0,0)             top left to bottom right
(1,0)             bottom left to top right
(0,1)             bottom left to top left
(1,1)             bottom right to top right
(0,2)             bottom left to top right
(1,2)             top left to bottom right
(0,3)             bottom right to top right
(1,3)             bottom left to top left

<小时/> 根据您的评论,似乎数字未分配给方块,它们被分配到紧接其下方或左侧的行(并且您首先列出了y坐标)。

首先列出x,以下网站位于第一个六边形,但不是第二个:
(1,0),(1,3),(0,2),(0,1)
以下网站没有六边形:
(0,0),(1,1),(1,2),(0,3)

如果你看一下(x mod 2,y mod 4),会将你的网站分成你需要的两个列表。