gpt4 book ai didi

grid - 如何在二维数组中存储六边形网格的顶点位置?

转载 作者:行者123 更新时间:2023-12-02 00:31:14 24 4
gpt4 key购买 nike

我正面临这个问题。我想创建一个 hexgrid 并能够以这种方式创建:

//grid extents
int numCols,numRows;
for (int i=0; i<numCols; ++i){
for (int j=0; j<numRows; ++j){

//x and y coordinates of my hexagon's vertices
float xpos,ypos;


//2D array storing verteces of my hextopology
vertices[i][j] = new VertexClass(xpos, ypos);

// statements to change xpos/ypos and create hex
}
}

我发现制作六边形网格的所有方法,首先创建一个十六进制对象,然后将其复制到网格上,从而创建重复的顶点位置和连接边。我想避免重复顶点位置。如何声明语句来制作这样的网格?

谢谢

最佳答案

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。如果我们在距离顶点 L/4 的 x 方向上观察六边形中的点,则 X 坐标很容易计算。这些点(用圆点标记)在 X 方向上以 L*3/2 的距离构成格子。

比:

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).

关于grid - 如何在二维数组中存储六边形网格的顶点位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com