Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Лабораторная работа № 6. Реализация двумерного алгоритма отсечения отрезков Сазерленда-Коэна




 

Цель работы: Закрепить лекционный материал по изучению материала темы "Отсечение". Реализовать двумерный алгоритм Сазерленда - Коэна для отсечения отрезка окном прямоугольной формы.

 

Краткие теоретические сведения

Необходимость отсечь выводимое изображение по границам некоторой области (окна) встречается довольно часто, особенно в многооконных диалоговых графических системах. В простейших случаях в качестве отсекающей области выступает прямоугольник. Существует много алгоритмов отсечения для 2D- и 3D-случаев, ориентированных как на программную, так и аппаратную реализацию. Рассмотрим простой и эффективный алгоритм отсечения отрезков границами произвольного прямоугольника. Вся плоскость вывода разбивается прямыми, образующими прямоугольник на девять подплоскостей; каждой из них присваивается четырехбитовый код, в котором единица

в нулевом бите означает, что конец отрезка лежит левее окна,

в первом бите - выше окна,

во втором бите - правее окна,

в третьем бите - ниже окна.

Например, если один конец отсекаемого отрезка лежит в правом верхнем относительно окна углу экрана, он получает код этого угла равный 0110 по схеме:

     
     
     

 

Описание алгоритма Сазерленда - Коэна:

Дано: прямоугольное окно с координатами (xl,ya),(xr,yb) верхнего левого и нижнего правого углов прямоугольника; отрезок с координатами концов (x1,y1) и (x2,y2).

Найти: новые координаты отрезка (x1,y1) и нарисовать его целиком или частично в случае попадания в область окна и не рисовать в противном случае.

1. Присвоить коды (р1 и р2) концам отрезка.

2. Если отрезок полностью невидим(p1 and p2 <> 0), идти к 9, иначе идти к 3.

3. Если отрезок видим полностью (p1 = 0 and p2 = 0) - нарисовать его (провести линию от точки с координатами (х1,y1) до точки - (x2,y2) и идти к 9, иначе идти к 4.

4. Если р1=0 - поменять местами точки (x1,y1) и (x2,y2),чтобы обработка шла каждый раз с точки, находящейся вне окна: х=х1,х1=х2,х2=х,y=y1,y1=y2,y2=y,p1=p2 и идти к 5, иначе идти к 5.

5. Если точка (x1,y1) - слева от окна - найти ее новые координаты по фор­мулам: y1=y1+(y2-y1)*(xl-х1)/(х2-х1), x1=xl и идти к 1, иначе идти к 6.

6. Если точка (x1,y1) - выше окна - найти ее новые координаты по формулам: х1=х1+(х2-х1)*(ya-y1)/(y2-y1), y1=ya и идти к 1, иначе идти к 7.

7. Если точка (x1,y1)- справа от окна - найти ее новые координаты по формулам: y1=y1+(y2-y1)*(xr-х1)/(х2-х1), х1=xr и идти к 1, иначе идти к 8.

8. Если точка (x1,y1) - ниже окна - найти ее новые координаты по формулам: х1=х1+(х2-х1)*(yb-y1)/(y2-y1),y1=yb и идти к 1, иначе идти к 1.

9. Закончить.

Присваивание кода точке с координатами (x,y) (пункт 1 данного алгоритма) можно выполнить, например, следующей программой:

function kod(x,y,xl,ya,xr,yb:integer):byte;

var

kp:byte;

begin

kp:=0;

if x<xl kp:=kp or $01;

if y<ya kp:=kp or $02;

if x>xr kp:=kp or $04;

if y>yb kp:=kp or $08;

kod:=kp

end;

Здесь (xl,ya),(xr,yb) - координаты левого верхнего и пра­вого нижнего углов окна, kod - результирующий код.

Задание на лабораторную работу

Написать на языке PASCAL программу, реализующую алгоритм Сазерленда-Коэна, отсекающий отрезок по границам прямоугольного окна. Для показа результатов работы программы нарисовать на экране окно прямоугольной формы. Задав координаты окна и отрезка, продемонстрировать отсечение отрезка по границам окна. Рассмотреть все возможные случаи расположения отрезка относительно окна.

Дополнительно

Для демонстрации работы алгоритма использовать мышь.

Требования к защите лабораторной работы

Защита лабораторной работы состоит из демонстрации преподавателю результатов выполнения задания на лабораторную работу и ответов на задаваемые преподавателем вопросы по ходу демонстрации.

 

 

Требования к отчету

Отчет выполняется на отдельных листах формата А4. Содержит титульный лист с названием работы, оформленный согласно требованиям кафедры, распечатку программы результат выполнения заданий лабораторной работы с обязательными комментариями.

Вопросы для самоподготовки:

1. Что такое отсечение и для чего оно применяется?

2. Какие алгоритмы отсечения Вы знаете?

3. Что является границей отсечения для 2D- 3D- случаев?

4. Можно ли реализовать отсечение аппаратно, если можно, то в каких случаях это делают?

Литература

7. Роджерс, Д. Ф. Алгоритмические основы машинной графики [текст] / Д. Ф. Роджерс; пер. с англ. С. А. Вичеса и др.; Под ред. Ю. М. Баяковского, В. А. Галактионова. - М.: Мир, 1989. - 503c.

8. Шикин, Е. В. Компьютерная графика: Динамика, реалист. изображения [текст] / Е. В. Шикин, А. В. Боресков. - М.: ДИАЛОГ-МИФИ, 1996. - 287c.: ил.

 

 






Поделиться с друзьями:


Дата добавления: 2017-01-28; Мы поможем в написании ваших работ!; просмотров: 706 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2319 - | 2226 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.