用瓷砖创建一个圆圈

时间:2014-09-27 06:33:30

标签: java geometry tiles sin cos

这是我第一次尝试创建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,我只是随意地抛出了三角函数,最后得到了一个看似圆圈的东西。如果你能帮我辨别出什么问题,或者告诉我更好的方法,请告诉我!谢谢你的帮助!

*另外,半径实际上是直径(我计算),我需要更改名称......

1 个答案:

答案 0 :(得分:1)

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