Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab5.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
82.28 Кб
Скачать

Міністерство освіти і науки, молоді та спорту НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

Метод цифрового диференціального аналізатора з дисципліни “Комп’ютерна графіка”

Методичні вказівки

до виконання лабораторних робіт

для студентів базового напряму «Автоматизовані системи управління» спеціальності «Комп’ютерні науки»

Затверджено на засіданні кафедри

Інформаційні технології видавничої справи

Протокол № 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. Результати роботи простого ЦДА в третьому квадранті.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]