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

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

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


 

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

33165. Вечер знакомств 79 KB
  Набор команды: Садко набирает дружину Царь с царицей подданных в свое царство Капитан Врунгель команду. Творческая ромашка: детей делят на две или три команды Желтые лепестки цирк клоуны гимнасты дрессировщики жонглеры Красные лепесткитеатр инсценировать сказки ситуации . Далее все делятся на две команды. Способы деления на команды: 1 Первому игроку на ухо говорится цвет например красный.
33166. ВОЖАТОМУ НА ЗАМЕТКУ 71.5 KB
  ЛЕНИВЫЙ ВОЖАТЫЙ Ведя детей то в одно место то в другое исходя из запланированного в дне по дороге указывает рукой в разные направления и говорит: А это дети вон чо. Ведь надо отвечать на вопросы НОРМАЛЬНЫЙ ВОЖАТЫЙ В первые дни устроит игру по станциям в рамках Хозяйственного или Организационного сборов. ВОЖАТЫЙ С ФАНТАЗИЕЙ Заранее до начала смены выстроит экскурсионную программу по лагерю на всю смену продумав что показывать в первую очередь что в середине смены о чем говорить в конце. Договорится с вожатыми соседних отрядов...
33167. Возрастные особенности детей 32.5 KB
  Дети 79летнего возраста имеют следующие возрастные характеристики : высокий уровень активности; процессы возбуждения преобладают над процессами торможения; эмоциональная непосредственность; повышенная работоспособность но в то же время высокая утомляемость в следствии чего необходим отдых в течении дня ; Высокая потребность в игре движении во внешних впечатлениях; Предпочтение к шумным коллективным играм; Высокая чувствительность к критике со стороны взрослых; Сознание различий пола; Становление независимости; Развитие...
33168. Как не скучно ехать в автобусе 34.5 KB
  И если всё это время просто так сидеть и наблюдать в окно весёлой она точно не покажется. Чем же можно занять это время Вопервых уже по дороге в лагерь вожатый должен начинать формировать отряд. А самое главное на время дороги нужно придумать какоенибудь развлечение.Так как север это очень красивое но в то же время и очень опасное место вы все должны уметь четко и быстро выполнять наши команды что бы не погибнуть Кольцовка что нужно взять в экспедицию на Северный полюс А теперь проверим все ли вы взяли ничего не забыли а...
33169. КОНЦЕРТ ВОЖАТЫХ 28.5 KB
  если их нет изначально то скорее всего и не будет Основной этап: когда всю смену все говорят что нужен вожатник но кто его будет делать не понятно все кто действительно его будут делать об этом попрежнему не знают Внимание Время когда надо думать как быть с вожатником приходит нежданнонегадано как полный абзац Группа добровольцев сбивается в каком нибудь лагерном помещении и начинает судорожно перебирать все мыслимые и немыслимые варианты подготовки проведения и темы вожатника Внимание Водка и все заранее подготовленные...
33170. Чем развлекать детей 23 KB
  Например такие: Эстафеты разнообразные состязания в ловкости быстроте и силе Викторины интеллектуальные конкурсы КТД коллективное творческое дело постановки спектаклей концертов и представлений конкурсы красоты талантов разное рукоделие изготовление поделок и т. Тема: Море тогда или конкурсы могут быть связаны с морскими предметами или они могут быть объединены единой сюжетной линией морское путешествие. Тут все конкурсы так или иначе привязаны к этому предмету. Сами конкурсы 1.
33171. Центральный банк, основы его деятельности. Функции центральных банков. Активные и пассивные операции центральных банков 55.5 KB
  Функции центральных банков. Активные и пассивные операции центральных банков. Деятельность любых центральных банков как следует из анализа их исторического развития и современного положения в рыночной системе подчинена следующим основным целям: обеспечению стабильности покупательной способности и валютного курса национальной денежной единицы ликвидности банковской системы созданию эффективного и бесперебойного ведения расчетов включая расчеты наличными деньгами. Центральный банк хранит кассовые резервы коммерческих банков...
33172. Коммерческие банки, их виды. Роль коммерческих банков в рыночной экономике 57.5 KB
  Коммерческие банки их виды. Банки это огромное достижение цивилизации. Поскольку банки проводят в основном денежные операции и предметом их деятельности является денежный капитал то и содержание и масштабы последней зависят от степени развития товарноденежных отношений в стране уровня торговли темпов промышленного производства. Неэмиссионные банки подразделяются по направлению работы на коммерческие универсальные сберегательные инвестиционные ипотечные.
33173. Финансовые рынки. Финансовые институты 59 KB
  Формируется финансовый рынок. Современный финансовый рынок это сложный экономический механизм перераспределения денежных средств между странами регионами и отраслями. Свободные денежные средства сбережения всех экономических агентов поступают на финансовый рынок посредством сделок на котором происходит их инвестирование в различные финансовые активы. Финансовый рынок служит своего рода механизмом обеспечивающим перемещение потоков денежных сбережений от домашних хозяйств к предприятиям инвестирующим капиталы на свое развитие.