
- •Метод цифрового диференціального аналізатора з дисципліни “Комп’ютерна графіка”
- •Лабораторна робота № 5 Метод цифрового диференціального аналізатора
- •Теоретичні відомості
- •Порядок роботи
- •Контрольні запитання Література Приклад програмної реалізації
- •«Метод цифрового диференціального аналізатора» з дисципліни «Комп’ютерна графіка» Методичні вказівки
Міністерство освіти і науки, молоді та спорту НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Метод цифрового диференціального аналізатора з дисципліни “Комп’ютерна графіка”
Методичні вказівки
до виконання лабораторних робіт
для студентів базового напряму «Автоматизовані системи управління» спеціальності «Комп’ютерні науки»
Затверджено на засіданні кафедри
Інформаційні технології видавничої справи
Протокол № 5-11/12 від 23 грудня 2011 р.
Львів – 2012
Метод цифрового диференціального аналізатора: Методичні вказівки до лабораторної роботи № 4 з курсу “Комп’ютерна графіка” для студентів «Видавничо-поліграфічна справа» (шифр - 0927) та “Комп‘ютерні науки” (шифр - 0804) / Укл.: О.Я. Різник, М.А. Назаркевич - Львів: Видавництво Національного університету “Львівська політехніка”, 2012. - 9 с.
Укладачі: Різник О.Я., к.т.н., доц., Назаркевич М.А., к.т.н., доц.
Відповідальний за випуск Шпак З.Я., канд. техн. наук, доц.
Рецензент Рашкевич Ю.М., д.т.н., проф.
Лабораторна робота № 5 Метод цифрового диференціального аналізатора
Мета роботи - Освоїти розкладаннявідрізка в растр методом цифрового диференціального аналізатора.
Теоретичні відомості
Один з методів розкладання відрізка в растр полягає в розв’язуванні диференціального рівняння, що описує цей процес. Для прямої лінії маємо dy/dx=const чи Dy/Dx=(y2 - y1)/(x2 - x1)
Розв’язок представляється у вигляді
yi+1=yi+Dy yi+1=yi+Dx(y2-y1)/(x2-x1)
де x1, y1 і x2, y2 - кінці відрізка, що розкладається, і yi - початкове значення для чергового кроку вздовж відрізка. Фактично рівняння являє собою рекурентне співвідношення для послідовних значень y вздовж потрібного відрізка. Цей метод, використовуваний для розкладання в растр відрізків, називається цифровим диференціальним аналізатором (ЦДА). У простому ЦДА або Dx, або Dy (більше із збільшень) вибирається як одиниця растра. Нижче наводиться простий алгоритм, що працює у всіх квадрантах:
Процедура розкладання в растр відрізка по методу цифрового диференціального аналізатора (ЦДА)
Передбачається, що кінці відрізка (x1, y1) і (x2, y2) не збігаються
Апроксимуємо довжину відрізка
if abs(x2-x1)>=abs(y2-y1) then
Довжина=abs(x2-x1)
else
Довжина=abs(y2-y1)
End { if }
назначаємо більше із збільшень Dx чи Dy рівним одиниці растра
Dx=(x2-x1)/Довжина
Dy=(y2-y1)/Довжина
округляємо величини, а не відкидаємо дробову частину
використання знакової функції робить алгоритм придатним для всіх квадрантів
x=x1;
y=y1;
Plot (round(x), round(y)) //промалювання пікселя
початок основного циклу
i=1
while (i<=Довжина) do
x=x+Dx
y=y+Dy
i=i+1
Plot (round(x), round(y))
End; {while}
finish
Розглянемо відрізок із точки (0,0) у точку (-8,-4) в третьому квадранті. Використовуємо ЦДА для розкладання цього відрізка в растр. Результати роботи алгоритму такі:
початкові установки
x1=0
y1=0
x2=-8
y2=-4
Довжина=8
Dx=-1
Dy=-0,5
x=-0,5
y=-0,5
Таблиця 1
Результати роботи покрокового циклу
Незважаючи на те що результати, представлені на рис.2.2, виглядають цілком прийнятними, аналіз відрізків, проведених із точки (0,0) у точку (-8,4) і (8,-4), показує, що розкладений у растр відрізок лежить по одну сторону від реального і що на одному з кінців відрізка з’являється зайва точка, тобто результат роботи алгоритму залежить від орієнтації. Отже точність у кінцевих точках зменшується.
Рис.5.1. Результати роботи простого ЦДА в третьому квадранті.