gpt4 book ai didi

math - 生成三角/六角坐标 (xyz)

转载 作者:行者123 更新时间:2023-12-03 01:38:23 24 4
gpt4 key购买 nike

我正在尝试提出一个迭代函数,为六边形网格生成 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° 向量从中心开始每一步都包含一个附加点。我还知道所有图 block 的 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

最佳答案

不仅是x + y + z = 0,而且x、y和z的绝对值都等于环半径的两倍。这应该足以识别每个连续环上的每个六边形:

var radius = 4;
for(var i = 0; i < radius; i++)
{
for(var j = -i; j <= i; j++)
for(var k = -i; k <= i; k++)
for(var l = -i; l <= i; l++)
if(Math.abs(j) + Math.abs(k) + Math.abs(l) == i*2 && j + k + l == 0)
console.log(j + "," + k + "," + l);
console.log("");
}

关于math - 生成三角/六角坐标 (xyz),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2049196/

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