Рисование круга пикселей заданной области - PullRequest
0 голосов
/ 28 мая 2019

У меня есть некоторая область X на Y пикселей, и мне нужно заполнить ее попиксельно.Проблема заключается в том, что в любой данный момент нарисованная форма должна быть как можно более круглой.

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

Я знаю о круге Брезенхэма, но он используется для рисования круга определенного радиуса, а не области.

Я создал анимацию всех процентов заполнения для 10на 10 пикселей сетки.Так как полная площадь равна 10x10 = 100px, то каждый кадр составляет ровно 1%, включая

pixel animation

1 Ответ

2 голосов
/ 28 мая 2019

заполненный диск имеет уравнение

(X - Xc)² + (Y - Yc)² ≤ C.

Когда вы увеличиваете C, число точек, удовлетворяющих уравнению, увеличивается, но из-за симметрии оно увеличивается в очередях.

Чтобы получить желаемый эффект заливки, вы можете вычислить (X - Xc)² + (Y - Yc)² для каждого пикселя, отсортировать по этому значению и позволить пикселям появляться один за другим (или за один раз, если вы знаете желаемое количество пикселей).

Вы можете разорвать связь разными способами:

  • сохранить исходный порядок, как при вычислении пикселей, используя стабильную сортировку;

  • перемешать серии равных значений;

  • немного изменить координаты центра, чтобы не было связей.


Заполнение трюком для децентрирования.

Значения:

enter image description here

Заказ:

enter image description here

...