У меня есть некоторая область X на Y пикселей, и мне нужно заполнить ее попиксельно. Проблема в том, что в любой момент нарисованная фигура должна быть максимально круглой.
Я думаю, что этот алгоритм является подмножеством упорядоченного дизеринга при преобразовании изображений в градациях серого в однобитные, но я не смог найти ссылок и не смог разобраться сам.
Я знаю о круге Брезенхэма, но он используется для рисования круга определенного радиуса, а не площади.
Я создал анимацию всех процентов заполнения для сетки 10 на 10 пикселей. Поскольку полная площадь составляет 10x10 = 100 пикселей, каждый кадр составляет ровно 1% вкл.

Таким образом, грубо говоря, результатом будет прямоугольная область, заполненная диском увеличивающегося размера с центром в середине области?
Нужно ли начинать с центра? Можете ли вы показать, что вы считаете самым круглым заполнением, если, скажем, X = 3Y, а площадь заполнена на 25%, 50% и 90%, пожалуйста?
Что уже пробовал ТЫ? Где ты застрял?
Вероятно, самый простой способ — использовать алгоритм Дейкстры для поиска пикселей в порядке увеличения расстояния от центра.
Я не вижу, какое это имеет отношение к дизерингу.





Заполненный диск имеет уравнение
(X - Xc)² + (Y - Yc)² ≤ C.
Когда вы увеличиваете C, количество точек, удовлетворяющих уравнению, увеличивается, но из-за симметрии оно увеличивается скачками.
Чтобы получить желаемый эффект заполнения, вы можете вычислить (X - Xc)² + (Y - Yc)² для каждого пикселя, отсортировать по этому значению и позволить пикселям появляться один за другим (или за один раз, если вы знаете желаемое количество пикселей).
Разорвать связи можно разными способами:
сохраните исходный порядок, как при вычислении пикселей, используя стабильную сортировку;
перетасовывать ряды с одинаковыми значениями;
немного изменить координаты центра, чтобы не было связей.
Заполнение трюком с децентрированием.
Значения:
Заказ:
Большое спасибо, это именно то, что я искал.
Возможный дубликат Концентрические круги Брезенхэма оставляют пустые пиксели