Создание круга из плиток

Это моя первая попытка создания 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), а также на нижней стороне. Но главная проблема заключается в том, что, когда я пытаюсь заполнить круг, уменьшая радиус, круг... ну... становится квадратом, теряет круглую форму и развивает очень жесткие углы.

Я работал над этим довольно поздно, я даже не уверен, что моя математика верна. ТБХ, я просто как-то добавил функции триггера наугад и, наконец, получил нечто, похожее на круг. Если вы можете помочь мне определить, что не так, или сказать мне лучший способ сделать это, пожалуйста, дайте мне знать! Спасибо за помощь!

* Кроме того, радиус на самом деле диаметр (я считал), мне нужно изменить имя...

1 ответ

Решение

Ну, я нашел ответ на свой вопрос. Оказывается, мне не нужно переводить мои углы в радианы. На самом деле, это просто портит координаты. Простое использование "угла" вместо "тета" переменной решает проблему.

Другие вопросы по тегам