gpt4 book ai didi

java - 用瓷砖创建一个圆圈

转载 作者:行者123 更新时间:2023-11-30 11:14:09 24 4
gpt4 key购买 nike

这是我第一次尝试创建 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 loop(int i = radius...) 那么圆就画得很完美,除了这两个奇怪的瓷砖在侧面突出。有时突出的 block 在右侧(我认为它等于 pi/2 时)和底部也是如此。但主要问题是当我尝试填充圆通过减小半径,圆......好吧......变成了一个正方形。它失去了它的圆形并形成了非常僵硬的角。

我做这个已经很晚了,我什至不确定我的数学是否正确。老实说,我只是随意地加入了三角函数,最后得到了一个看起来像圆圈的东西。如果你能帮我找出问题所在,或者告诉我更好的方法,请告诉我!感谢您的帮助!

*还有,半径其实就是直径(我算的),我要改个名字...

最佳答案

好吧,我找到了我自己问题的答案。事实证明我不需要将角度转换为弧度。事实上,这只会弄乱坐标。只需使用“角度”而不是“theta”变量即可解决问题。

关于java - 用瓷砖创建一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26072003/

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