координаты доступа в диапазоне круга - PullRequest
0 голосов
/ 11 марта 2019

Мне нужен способ обвести все координаты, которые образуют круг вокруг заданной координаты.Например (посмотрите на изображение), если я дам координаты серой плитки и радиус 9, мне нужно получить все координаты красных плиток.

Circle radius 9

Это будетбыть чем-то вроде алгоритма круга Брезенхэма, но я действительно не понял его.

В моем случае, я буду использовать это, чтобы стереть круглое отверстие в наборе плиток.Заранее спасибо!

1 Ответ

0 голосов
/ 11 марта 2019

Используйте цикл for, хотя все плитки ИЛИ рекурсивно

Для:

public List<Tile> Circle (Tile center, float radius)
{
    List<Tile> inside = new List<Tile>();
    foreach (Tile[] tilerow in Tilemap)
        foreach (Tile tile in tilerow)
            if (Vector2.Distance(center.position, tile.position) <= radius) inside.Add(tile);
    return inside;
}

Вы также можете попробовать использовать рекурсию (от центра ко всем соседям, пока вы находитесь внутрикруг) - на маленьких картах будет намного быстрее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...