我需要一种获取圆点的方法,我有一个我在网上找到的但不幸的是我想添加一个填充的布尔值:
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)
谢谢你们!如果你愿意,我可以删除所有的Minecraft引用,但我不认为它是必要的,因为一个位置基本上是一个Vector,只增加了一些Minecraft变量!
感谢阅读:)
答案 0 :(得分:2)
在filled
为false
的情况下,您是否正在寻找计算圆圈边缘像素的方法,而不是内部像素?如果是这样,请查看midpoint circle algorithm。它描述了如何在光栅图像中绘制圆圈。