gpt4 book ai didi

java - 创建一个需要从 3 个变量 ( x y z ) 中间向外循环的检查

转载 作者:搜寻专家 更新时间:2023-10-31 20:22:38 24 4
gpt4 key购买 nike

for (int ix = x - r; ix < x + r + 1; ix++) {
for (int iz = z - r; iz < z + r + 1; iz++) {
for (int iy = y - r; iy < y + r + 1; iy++) {
// if ix,iy,iz = something blah blah (this part isn't needed)
}
}
}

好了,问题来了。上面的当前代码获取 x、y、z 和 r(范围)。它的工作是通过“立方体”进行引用,直到满足我设置的特定条件。问题在于它从立方体的外部开始,基本上从一个角发展到另一个角。

我正在寻找一种方法(我的数学/java 不喜欢我的 atm)从 pos 开始并从该 pos(包括 pos 本身)向外循环,直到它到达立方体的最外层边界。

所以如果我们给所有东西都设置了假值,让我们使用 x = 5, y = 5, z = 5, r = 2代码应该检查 5,5,5 - 4,5,5 6,5,5 5,6,5 5,4,5 等等,基本上从中心向外遍历每一件事。

该命令称为 FindNearest,但从技术上讲,它的作用类似于 FindFurthest atm。

我希望我提供了足够的细节,如果有人可以向我抛出一些片段或工作代码,我会很高兴,因为这在过去一个小时左右令人沮丧。我不想在 for 循环中间进行 10 个 if 检查或类似的随机检查,我正在寻找一种干净的方法来执行此操作。

最佳答案

您可以通过执行以下操作从中心开始迭代:

for (ix = x, xsign = 1, xstep = 1; 
(ix >= x - r) && (ix <= x + r);
ix += xsign * xstep, xsign = -xsign, xstep++)

所以 ix 对于您的示例将从 5 到 6 到 4 到 7,等等。您可以像这样嵌套循环,您将得到您想要的东西,至少如果我正确地理解了这个问题。

关于java - 创建一个需要从 3 个变量 ( x y z ) 中间向外循环的检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449681/

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