gpt4 book ai didi

java - 在 Java 中使用循环创建金字塔

转载 作者:行者123 更新时间:2023-12-01 22:39:06 25 4
gpt4 key购买 nike

我正在尝试使用循环创建一个空心金字塔。我想要解决这个问题的方法是从某个 Y 开始,将其减少 1,同时将 X 和 Z 扩大 1,同时覆盖周边。

    *
* *
* *
* *
* *

当然这将是 3D,使用 XYZ。

所以我的主要问题是,如果我有 3 个点,X=50 Y=50 Z=50,我将如何在 Y 的每个级别上下降,同时获得中心周围的点?

到目前为止

for (int y = 1; y<15; y++) {
l.setY(l.getY() - 1);
l.setX(l.getX() + 1);
l.setZ(l.getZ() + 1);
l.getBlock().setType(Material.GLASS);
}

只会生成从起始位置向下 15 个街区的楼梯

最佳答案

请想象一下 3 轴的图表,如果您没有练习过,请看一下该图表。

x y z axis

我们将使用 z 作为高度,通过旋转轴以便清楚地了解正在发生的情况。您也可以使用 z 作为深度参数,但您会更难理解发生了什么。您获得了错误的绘图,因为您没有以正确的方式走向该空间。

您要寻找的是从一个点开始,例如 S=(x,y,z) = (5,5,5),并且您希望通过打印金字塔的边缘来向下移动每个级别。起点绘制如下图所示 enter image description here

通过向下移动递减 z,您想要绘制 4 个点(您可能想绘制更多点,在本例中我只绘制边缘)。所以在下一个周期你有 z = z-1;因此你必须沿着图表允许的 4 个方向移动。 enter image description here

中间的点保持金字塔的中心,其他点分别保持金字塔的中心

(5,4,4) (5,6,4) --> 沿 y 轴移动

(4,5,4) (6,5,4) --> 沿 x 轴移动

当你循环时,你会不断移动它,在绘制金字塔时使用中心、水平(高度)和轴之间的差异作为度量。

如何?请参阅下面的最后一张图片,我添加了一些颜色来帮助您跟踪正在发生的事情。此外,我添加了轴和要点坐标。 enter image description here红点保持金字塔的中心,从 S = (5,5,5)(即顶部)开始,向下到 S1 =(5,5,4) 和 S2 = (5,5,3) ..想象一下这是 while 循环的 2 个循环。当 z = 4 时,绿点跟踪第一个周期,这次金字塔的中心是S1。您希望通过在 y 轴和 x 轴上移动来扩展空间。

通过中心,您在 y 上移动 -1 和 -+1 .. 因此获得 (5,4,4) 和 (5,6,4)。到目前为止,您获得了 2 条边。让我们在 x 轴上移动,保持中心不变,同样,这次您向该平面移动 1 个单位,这样就有 (6,5,4) 和 (4,5,4)。第二个周期也会发生同样的情况。您移动的距离通过以下方式获得

starting height - actual level height

在 z = 3 的情况下,您必须从中心出发 5 - 3 = 2 个单位(根据前面的语句)依此类推,直到完成循环的其余部分。你可能想通过获得一个漂亮且绘制良好的金字塔在距中心偏移 0 个单位时停止(当起始高度 == 实际水平高度时),否则你可以继续循环,但你必须找到另一种方法来停止,即之前的减法事实上,负高度也适用,您可以注意到,如果达到 z = -1,前一个将告诉您移动 6 个单位,在这种情况下,您必须找到另一种方法来停止并打破循环。

这表示您必须调整周期来绘制 4 个点,而不是实际绘制的点 =)

关于java - 在 Java 中使用循环创建金字塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448491/

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