Создать 2D круг из существующей сетки - PullRequest
0 голосов
/ 11 декабря 2018

У нас есть матрица:

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

Я хочу сохранить данные в этих полях, но в форме 2D-круга:

0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0

Но это также масштабируетсяup:

0 0 0 1 1 1 1 0 0 0
0 0 1 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1 1 0
0 0 1 1 1 1 1 1 0 0
0 0 0 1 1 1 1 0 0 0

Какой самый лучший способ приблизиться к этому?

1 Ответ

0 голосов
/ 12 декабря 2018

cy и cx - центральные точки
r - радиус
tiles - пустая сетка

function MakeCircle(tiles, cx, cy, r):
    for x in range(cx - r, cx + r):
        for y in range(cy - r, cy + r):
            if (distance(cx, cy, x, y) <= r):
                tiles[x][y] = 1
    return(tiles)

function distance(x1, y1, x2, y2):
    return(sqrt((x1 - x2)**2) + (y1 - y2)**2))

Это динамически создает круг единиц вквадратная матрица независимо от размера матрицы.

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