【发布时间】:2010-01-12 13:24:22
【问题描述】:
我正在尝试提出一个迭代函数,为六边形网格生成 xyz 坐标。使用起始十六进制位置(为简单起见,例如 0,0,0),我想计算每个连续的六边形“环”的坐标,如下所示:
到目前为止,我想出的只是这个(javascript 中的示例):
var radius = 3
var xyz = [0,0,0];
// for each ring
for (var i = 0; i < radius; i++) {
var tpRing = i*6;
var tpVect = tpRing/3;
// for each vector of ring
for (var j = 0; j < 3; j++) {
// for each tile in vector
for(var k = 0; k < tpVect; k++) {
xyz[0] = ???;
xyz[1] = ???;
xyz[2] = ???;
console.log(xyz);
}
}
}
我知道每个环包含的点比前一个多 6 个,并且每个 120° 向量从中心开始每一步都包含一个额外的点。我也知道x + y + z = 0 适用于所有瓷砖。但是如何生成遵循以下顺序的坐标列表?
0, 0, 0
0,-1, 1
1,-1, 0
1, 0,-1
0, 1,-1
-1, 1, 0
-1, 0, 1
0,-2, 2
1,-2, 1
2,-2, 0
2,-1,-1
2, 0,-2
1, 1,-2
0, 2,-2
-1, 2,-1
-2, 2, 0
-2, 1, 1
-2, 0, 2
-1,-1, 2
【问题讨论】:
-
小修正。每个环包含 6*k 个点,或比前一个多 6*(k-1) 个点,其中 k 是从零开始的环索引。跨度>
标签: math coordinates vector coordinate-systems hexagonal-tiles