Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Алгоритм Ву для растеризации круга с антиалиасингом

Поиск:
Ранее был рассмотрен алгоритмы Брэзенхема генерации 8-ми связной развертки окружности. Недостатком этого алгоритма явлется то, что он рисует окружности с неровными, резкими краями. Алгоритм Ву, решающий эту проблему, использует те же идеи, что и алгоритм Ву для рисования отрезка и является одним из методов антиалиасинга.

Алгоритм Брэзенхема рисовал все точки окружности одним цветом, этот же алгоритм закрашивает разные участки в разные цвета, и за счет этого "сглаживает" неровности.

user posted image



Для рисования точки с координатами (x, y) вызывается процедура SetPixel, которая закрашивает пиксел с указанными координатами цветом со степенью полупрозрачности, заданной параметром Alpha. Значение параметра, равное 1, соответствует полностью прорисованному непрозрачному пикселю (например, белому, если мы рисуем белым по черному). Значение параметра, равное 0, соответствует полностью прозрачному пикселю (т.е. ничего не рисуется). Промежуточные значения соответствуют различным оттенкам серого, или же, в случае рисования цветных пикселей, определяются по формуле Cresult  = (1-α)·Cscreen  + α·Cpen  (формула применяется поочередно для каждой из трех компонент R, G и B).

Программист должен определить эту процедуру и написать код, который осуществляет соответствующие системные вызовы.

Принцип работы алгоритма идентичен принципу работы алгоритма Ву для отрезка. Этот алгоритм является специализированным вариантом алгоритма Ву растеризации эллипса. Данный алгоритм быстрее, но может рисовать только круги с целыми радиусами и координатами.





Файлы:
wucircle.gif

Просмотров: 5575

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную