Какой хороший алгоритм для рисования сглаженных кругов? (Заполнено и не заполнено).
Алгоритм для рисования сглаженного круга?
Ответ 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