Подтвердить что ты не робот

Алгоритм для рисования сглаженного круга?

Какой хороший алгоритм для рисования сглаженных кругов? (Заполнено и не заполнено).

4b9b3361

Ответ 1

Bresenham (известность линейного алгоритма) также имеет алгоритм окружения.

Xiaolin Wu адаптировал линейный алгоритм для сглаживания, а также сделал то же самое с алгоритмом окружения.

http://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithm

Вы можете найти алгоритм круга с этим поиском:

http://www.google.com/search?q=Xiaolin%20Wu%20circle

-Adam

Ответ 2

Если вам нужен простой, сделайте мягкое размытие от матрицы пикселей A до матрицы пикселей B.

Это тот, который я использовал (здесь, в псевдокоде)

anti_alised_matrix[x][y] = point[x][y] / 2 + point[x+1][y]/8 + point[x-1][y]/8 + point[x][y-1]/8 + point[x][y+1]/8;

Конечно, это применяется к оттенкам серого, но вы можете сделать то же самое в RGB.

Это действительно очень просто, вы также можете добавить диагонали, т.е. [x + 1] [y + 1] и разбить его на 16 или 32.

Ответ 3

В зависимости от используемой вами платформы, она может быть встроена - Java, безусловно, имеет встроенный в нее графический рендеринг (и имел длительное время). Я был бы удивлен, если бы у DotNet не было встроенного АА. Кроме того, платформа, вероятно, имеет субпиксель АА, который вы получаете бесплатно, и который значительно лучше, чем стандартный АА.

Ответ 4

Создать графический объект g. Сделайте

g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

Нарисуйте свой сглаженный круг с помощью g.FillEllipse или g.DrawEllipse