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

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

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


 

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

68101. ІСТОРИЧНИЙ КВК СТАРОДАВНІ ЄГИПЕТ ТА МЕЖИРІЧЧЯ 74.5 KB
  Її називали Першою серед найвродливіших і правила вона Єгиптом 22 роки. Його називали великим завойовником який здійснив 17 військових походів і розширив територію Єгипту у 3 рази завоювавши Сирію Палестину і Нубію. Рамзес ІІ Ця жінка з ніжними рисами обличчя з лебединою шиєю великими видовженими очима...
68102. КВК – асорті 46.5 KB
  Команда вибирає капітана і назву виготовляє емблему готує вітання і домашнє завдання. Домашнє завдання командам: а випустите Математичну газету б придумати емблему кабінету математики в підготувати запитання супернику з курсу геометрії алгебри 67 класів. Два художники від кожної команди виконують такі завдання...
68104. Українське читання (Урок – КВК позакласного читання) 34.5 KB
  Поглибити знання учнів про казки. Виховувати любов до казки як твору де перемагає добро і добра сила. Виставка книг казки; збірка Позакласне читання на кожній парті; матеріал для гри хто прислав телеграму; букви для складання назв казок; книжка Українські народні казки...
68105. Урок-подорож Україною. Узагальнення знань учнів про природні зони України 58.5 KB
  Узагальнити систематизувати знання учнів з вивченого розділу створити цілісну картину природи України. Виховувати любов до рідного краю почуття дружби взаємовиручки а також формувати почуття відповідальності за збереження довкілля природних багатств України.
68106. Мово українська, гордосте моя! 576.5 KB
  Розширювати знання про красу і багатство української мови. Виховувати любов до рідної мови рідного краю його традицій почуття поваги до всього свого українського бажання розмовляти рідною мовою. Шевченка плакати Без мови рідної юначе й народу нашого нема Пісня душа народу...
68107. Визитка «Путешествие в страну дорожных знаков» 71 KB
  Звучит мелодия из передачи Сердце Африки на фоне мелодии звучат слова и проходят участники команды ЮИД Команда Горячая десятка из Краснодона завершая свой кругосветный информационно-просветительский тур добралась до сердца Африки. ЮИД не подведёт Звучит песня Остров невезения...
68108. Літературна вікторина “Дивовижний світ книг” 30 KB
  Що Вам відомо про найменшу у світі книгу де і коли вона була надрукована Найменша у світі книга 1х1 мм. Яка вага найтяжчої книги у світі та про що розповідається у ній Найтяжча книга у світі вагою 50 кг видана у Великобританії. Яка назва даного найбільшого видання у світі Це багатотомна збірка...
68109. Збірка прозових мініатюр «Лабіринтами життя…» 260.5 KB
  Ольга Захарівна Северин Своєрідні ліки від байдужості Збірочка оповідань Лабіринтами життя Ольги Северин це картини її власної душі. Картини душі Ольги Северин чисті наївні спонукають прислухатись до шелесту ранкових зірок ще раз переконатись що життя прекрасне тому що ми живемо й можемо творити його самі.