КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритм Брезенхема
Будемо міркувати подібно алгоритму Брезенхема для відрізків (з відповідними виправленнями на 4-й октант) [17]. Із двох можливих пікселів в 4-му октанті (відповідних вертикальному й діагональному зсувам, які позначаються аналогічно колишнім s і d, див. мал. 6.10) будемо вибирати той, відстань від окружності до якого менше.
Рис. 6.8. Відстані до окружності. Для того щоб вибрати один із двох можливих пікселів, будемо порівнювати відстані від них до окружності: де відстань менше - той пиксель і буде знайденим. У прикладі на мал. 6.8 рівняються відстані від крапок S(xs, ys) і D(xd, yd) до окружності з радіусом R. З евклідової метрики одержуємо:
Але обчислення квадратного кореня - трудомістка операція, тому при досить більших R ми будемо заміняти порівняння відстаней порівнянням наближених значень їхніх квадратів (див. мал. 6.9):
Рис. 6.9. Наближене порівняння відстаней. Зменшимо два доданки на приблизно однакові величини:
одержимо
Таким чином, приблизно 1. D ближче до окружності, чим S
2. S ближче до окружності, чим D
Рис. 6.10. Алгоритм Брезенхема для окружності. Нехай (x, y) - поточний піксель. Позначимо
Тоді із двох можливих зсувів d і s виберемо. 1. d: Переходимо в (x + 1, y + 1) і надаємо відповідні збільшення F, ΔF(s),?F(d): F = F +?F(d);?F(s) =?F(s)+4;?F(d) =?F(d)+8. 2. s: Переходимо в (x, y + 1) і надаємо відповідні збільшення F, ΔF(s), ΔF(d): F = F +?F(s);?F(s) =?F(s)+4;?F(d) =?F(d)+4. Якщо ми починаємо з (-R, 0), то початкові значення будуть наступними:
Легко бачити, що в алгоритмі всі величини, пов'язані з F, крім F початкового, будуть кратні 2. Але, якщо ми поділимо всі ці величини на 2 (надалі значення всіх величин уже розуміються в цьому змісті), те Лістинг 6.5. Алгоритм Брезенхема для окружності Розмірність обчислень цього алгоритму (тобто відношення максимальних модулів значень величин, з якими він оперує до модулів вихідних даних (у цьому випадку R)) дорівнює 2.
Дата добавления: 2014-01-07; Просмотров: 521; Нарушение авторских прав?; Мы поможем в написании вашей работы! |