511

Масштабирование и растеризация. Составление программы по алгоритму Брезенхема на языке Phyton

Курсовая

Информатика, кибернетика и программирование

Составление программы по алгоритму Брезенхема на языке Phyton. Рассмотрение координаты в ГМ и окне отображения на экране относительно левой нижней точки соответствующего окна. Рисование линий по алгоритму Брезенхема.

Русский

2013-01-06

226 KB

12 чел.

МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ

(НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)

Факультет Радиоэлектроники ЛА

Кафедра 404

Курсовая   работа

по  дисциплине  компьютерная графика

Вариант  № 6

Студент: Михайлов Н.

Группа: 04 - 204

Руководитель работы: Репнев Д.Н.

Оценка:

Дата:

Подпись преподавателя:

Москва   2012

Содержание:

Задание…………………………………………………………………………2

Этап №1. Масштабирование окон……………………………………………3

Этап №2. Отсечение…………………………………………………………..4

Этап №3. Масштабирование примитива…………………………………….5

Этап №4. Растеризация……………………………………………………….6

Задание.

Для отрезка, являющегося составной частью графической модели объекта (изделия),

координаты которого заданы  в мировых координатах, и заданных параметров дисплея и окна отображения выполнить операции:

−  масштабирования;

−  отсечения;

−  растеризации.

Координаты

отрезка, мм

(Х1,У1  Х2,У2)

Координаты окна

отображения в модели,

мм

(Х1м;У1м :Х2м;У2м)

Параметры

графического

режима

монитора,

(Хр;Ур)  точек

Координаты окна

отображения

модели, пикселей

(Х1о;У1о  Х2о;У2о)

2,2    0,15

0,0    10,10

32,24

5;5   15;15

Этап №1. Масштабирование окон.

Задание:

Режим графического адаптера 48*36. Отобразить окно ГМ  с координатами (Х1;У1)м:(Х2;У2)м =0,0    10,10  в окне монитора (Х1;У1)о:(Х2,У2)о =5;5   15;15

Решение:

Определим масштабные коэффициенты  по Х и У:

   К’х=∆Хо/∆Хм=(15-5)/(10-0)=10/10=1

   К’у=∆Уо/∆Ум=(15-5)/(10-0)=10/10=1

Для сохранения пропорций (равенства расстояний по Х и У) на экране коэффициенты масштабирования по Х и У должны быть одинаковы, а также требуется выбирать  минимальный  из рассчитанных коэффициентов. Т.к. коэффициенты получились одинаковыми, выбираем любой…

 Sx=Sy=Кх=Ку=1

Т.к. коэффициенты равны то расширять область отображения ГМ не нужно. 

   Х1оогм=Х1м=0    У1оогм=У1м=0

      Х2оогм=X2м=10   У2оогм=У1м= 10

Этап №2. Отсечение.

Задание:

Определить координаты отрезка (2 точки), расположенного в отображаемой области ГМ. Координаты отрезка X1;Y1=2;2    X2;Y2=0;15

Решение:

Из рисунка видно что отрезок пересекает верхнюю  границу  ООГМ в точке A c координатой по оси  ОY=10. Найдём координату точки А по оси OX:

У=А+Кп*Х; где

 Кп=∆У/∆Х=(У2-У1)/(Х2-Х1)=(13)/(-2)=-6,5

 А=У1-Кп*Х1=2-2*(-6.5)=15

 X=(Y-A)/Кп=(10-15)/(-6.5)=0.7692

 Новый отрезок , после отсечения, будет иметь координаты (X1;Y1)=2;2   (X2;Y2)=0.7692; 10

Этап №3. Масштабирование примитива.

Задание:

 Определить экранные координаты отрезка

Решение:

После отсечения  имеем отрезок с координатами  (X1;Y1)=2;2

(X2;Y2)= 0.769;10 в мировых координатах, который является отображаемой частью заданного отрезка..

Удобно рассматривать координаты в ГМ и окне отображения на экране относительно левой нижней точки соответствующего окна, что равносильно переноса начала координат в эту (левую нижнюю) точку окна. Обычно эту точку называют координатой окна или базовой точкой (координатой) окна.

Определим координаты отрезка  относительно координат окна

 Х1”=X1-X1ooгм=2-0=2

 У1”=У1-У1ooгм=2-0=2

 Х2”=X2-X1ooгм=0.769-0=0.769

 У2”=У2-У1ooгм=10-0=10

Определим экранные координаты отрезка

 Х1э=Х1”*Кх+Х1о=7

 У1э=У1”*Кх+У1о=7

 Х2э=Х2”*Кх+Х1о=7.769=8

 У2э=У2”*Кх+У1о=15

Этап №4. Рисование линий по алгоритму  Брезенхема.

Задание:

Осуществить растеризацию отрезка с координатами   с помощью целочисленного алгоритма рисования линий Брезенхема

Решение:

Для растеризации линии воспользуемся целочисленным алгоритмом Брезенхема рисования линии. Блок схема алгоритма для отрезка лежащего в 3 октанте:

Составим программу по алгоритму Брезенхема на языке Phyton:

def Proga(x1,y1,x2,y2):

 Dy=y2-y1

if Dy<0:

 Dy=Dy*(-1)

else:

 Dy=Dy

Dx=x2-x1

if Dx<0:

 Dx=Dx*(-1)

else:

 Dx=Dx

d=2*Dx-Dy

n=0

x=x1

y=y1

 print 'N', 'Yi', 'Xi', 'd', 'DX', 'DY'

print n, y, x, d, Dx, Dy

 print 'N', 'Yi', 'Xi', 'd', 'DL'

while y<y2:

 if d<0:

  DL=2*Dx

 else:

  DL=2*(Dx-Dy)

  x-=1

 d+=DL

 y+=1

 n+=1

 print n, y, x, d, DL

 print "KONEC"

Программа выведет ответ :

Proga(7, 7, 8, 15)

N Yi Xi d DX DY

0 7 7 -6 1 8

N Yi Xi d DL

1 8 7 -4 2

2 9 7 -2 2

3 10 7 0 2

4 11 6 -14 -14

5 12 6 -12 2

6 13 6 -10 2

7 14 6 -8 2

8 15 6 -6 2

KONEC

Занесём полученные данные в таблицу:

Yi

Xi

d

0

7

7

-6

1

8

7

-4

2

9

7

-2

3

10

7

0

4

11

6

-14

5

12

6

-12

6

13

6

-10

7

14

6

-8

8

15

6

-6

  Нарисуем растр экрана:

Большая синяя рамка это «экран монитора», а маленькая это окно на экране


 

А также другие работы, которые могут Вас заинтересовать

14069. Всеволод Нестайко. «Тореадори з Васюківки» 32 KB
  УРОК № 47 Тема. В. Нестайко. Тореадори з Васюківки. Мета:ознайомити учнів із життям та творчістю письменника зі змістом його твору; дати учням поняття про повість; виховувати наполегливість у навчанні; розвивати почуття гумору. Обладнання:портрет письменника збі...
14070. Всеволод Нестайко. Тореадори з Васюківки 27.5 KB
  УРОК № 48 Тема. В. Нестайко. Тореадори з Васюківки. Мета: ознайомити учнів із новими пригодами героїв повісті В. Нестайка; розвивати навички виразного читання аналізу поведінки та вчинків персонажів їхнього морального вибору у різних життєвих ситуаціях; виховувати ...
14071. Всеволод Нестайко. Тореадори з Васюківки. Конспект уроку з української літератури 36 KB
  УРОК № 49 Тема.В. Нестайко. Тореадори з Васюківки. Мета:ознайомити учнів із новим розділом повісті; розвивати навички толерантного й аргументованого доведення своєї думки виразного читання переказу прозового твору характеризування героїв; виховувати прагнення до...
14072. Всеволод Нестайко. «Тореадори з Васюківки». Поняття про повість 36.5 KB
  УРОК № 50 Тема.В. Нестайко. Тореадори з Васюківки. Поняття про повість. Мета:ознайомити учнів з новим розділом повісті Тореадори з Васюківки допомогти усвідомити особливості жанру повісті; розвивати навички виразного читання переказу аналізу поведінки та вчин
14073. Урок. І Калинець. «Писанки» 30.5 KB
  УРОК № 52 Тема. І Калинець. Писанки. Мета: ознайомити учнів із життям та творчістю письменника допомогти сприйняти красу й оригінальність його поезій; розвивати навички виразного читання коментування ліричних творів визначення ролі метафори та порівняння у них; р
14074. Поетична вітальня. І. Калинець. Цикл «Дивосвіт»: «Стежечка», «Блискавка», «Веселка» 28 KB
  УРОК № 53 Тема. Поетична вітальня. І. Калинець. Цикл Дивосвіт: Стежечка Блискавка Веселка. Мета: ознайомити учнів з оригінальними неповторними віршами І. Калинця про природу допомогти усвідомити особливості та красу цих творів; розвивати навички виразного...
14075. Стельмах. «Химера лісового озера, або Митькозавр з Юрківки» 35 KB
  УРОК № 55 Тема. Я. Стельмах. Химера лісового озера або Митькозавр з Юрківки. Мета: ознайомити учнів із життям та творчістю письменника викликати цікавість до його пригодницьких книжок; розвивати навички виразного читання переказу аналізу прочитаного; виховувати
14076. Ярослав Стельмах. «Химера лісового озера, або Микитькозавр з Юрківки» 53 KB
  УРОК № 56 Тема. Я. Стельмах. Химера лісового озера або Микитькозавр з Юрківки. Мета:ознайомити учнів із новими розділами повісті спонукати до читання художньої літератури; розвивати навички виразного читання переказу характеристики героїв; виховувати допитливіст
14077. Ярослав Стельмах. «Химера лісового озера, або Микитькозавр з Юрківки». Урок з української літератури 28 KB
  УРОК № 57 Тема.Я. Стельмах Химера лісового озера або Микитькозавр з Юрківки. Мета:ознайомити учнів із новими пригодами двох друзів; прищеплювати інтерес і любов до читання художньої літератури; розвивати навички виразного читання уміння фантазувати передбачати