我需要一种获取圆点的方法,我在网上找到了一种方法,但是很遗憾,我想在其中添加一个布尔值:

public static Location[] getCylinderAt(Location loc, int r, int height) {
    ArrayList<Location> list = new ArrayList<>();

    int cx = loc.getBlockX();
    int cy = loc.getBlockY();
    int cz = loc.getBlockZ();
    World w = loc.getWorld();
    int rSquared = r * r;

    for (int x = cx - r; x <= cx + r; x++) {
        for (int y = cy - height; y <= cy + height; y++) {
            for (int z = cz - r; z <= cz + r; z++) {
                if ((cx - x) * (cx - x) + (cz - z) * (cz - z) <= rSquared) {
                    list.add(new Location(w, x, y, z));
                }
            }
        }
    }
    return list.toArray(new Location[list.size()]);
}


我无法真正地解决涉及到的数学问题,并且一直在寻找非我的世界资源来创建我自己的资源,但无济于事。

理想情况下,我希望能够将方法更改为此:

public static Location[] getCylinderAt(Location loc, boolean filled, int r, int height)


谢谢你们!如果愿意,我可以删除所有的《我的世界》引用,但我认为并没有必要,因为“位置”基本上是一个Vector,其中添加了一些我的世界唯一变量!

谢谢阅读 :)

最佳答案

对于filledfalse的情况,您是否正在寻找一种方法来计算圆形边缘上的像素而不是内部像素?如果是这样,请查看midpoint circle algorithm。它描述了如何在光栅图像中绘制圆。

关于java - Java:用 boolean 值填充获取圆点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13387840/

10-10 08:43