这是我第一次尝试创建2D游戏,因此我的代码可能效率不高。无论如何,我尝试创建一种方法来创建我的瓷砖圆圈。这种方法的关键是在我的屏幕上创建圆形污垢。这是我的一些代码:
private void generateDirt(int x, int y) {
int dirt = 3;
int radius = random.nextInt(7) + 3;
for (int i = radius; i > 1; i--) {
for (int angle = 0; angle < 360; angle++) {
double theta = Math.toRadians(angle);
// Broken Line to solve jutting blocks
// if (theta % Math.PI == 0) theta = 0;
tiles[(int) (x + radius * (Math.sin(theta) * Math.cos(theta)))
+ (int) (y + radius
* (Math.sin(theta) * Math.sin(theta))) * width] = dirt;
}
radius--;
}
}
如果我注释掉减小半径的部分,并且只绘制一个圆形轮廓(注释掉最外面的for循环(int i = radius ...)那么圆圈被完美绘制,除了这两个奇怪的在侧面突出的瓷砖。有时突出块在右侧(我认为它等于pi / 2)和底部也是如此。但主要的问题是,当我试图填充通过减小半径来圆,圆......井......变成一个正方形。它失去了圆形并形成了非常刚硬的角。
我很晚才开始工作,我甚至不确定我的数学是否正确。 TBH,我只是随意地抛出了三角函数,最后得到了一个看似圆圈的东西。如果你能帮我辨别出什么问题,或者告诉我更好的方法,请告诉我!谢谢你的帮助!
*另外,半径实际上是直径(我计算),我需要更改名称......
答案 0 :(得分:1)
我找到了自己问题的答案。事实证明我不需要将角度转换为弧度。事实上,这只会扰乱坐标。只使用“angle”而不是“theta”变量可以解决问题。