МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ

Бердичівський політехнічний коледж

Контрольна робота

з предмета “ Комп’ютерна графіка ”

(варіант №7)

Методи поліпшення растрових зображень

м. Бердичів 2007 р.


Зміст

1.   Методи поліпшення растрових зображень

2.     Параметри виду, буфер глибини, джерело світла в бібліотеці Opengl

3.     Використовуючи команди надбудови над Opengl, створити тривимірну фігуру та забезпечити її поворот при натисненні на кнопку пробіл

4.     Для попереднього практичного завдання вашого варіанту забезпечити операцію масштабування використовуючи клавіші “+” та “-“


1.  Алгоритм побудови лінії

Для побудування лінії необхідно застосувати аргумент команди glBegm - константу GL_LiNES, задаючий примітив "незалежний відрізок".

Для цього примітиву наступні в командних дужках вершини (тобто функції glvertex) задають попарно координати початку і кінця кожного відрізка прямої. Написавши коротенький алгоритм в програмному середовищі Delphi ми отримаємо лінію.

glBegin (GL_LINES);

glVertex2f (-1, 1);

glVertex2f (1 -1);

glVertex2f (-1, -1);

glVertex2f (1, 1);

glEnd;

Малюються два відрізки, сполучаючі кути вікна по діагоналях. Для збільшення товщини відрізків перед командними дужками потрібно вказати ширину лінії:

glLineWidth (2. 5);

Ця функція також повинна виноситися за командні дужки, у ліній можна усувати ступінчастість, що буду виконувати команда glEnable (GL_LINE_SMOOTH); згладжувати нерівності.

glLineWidth (15);

glEnable (GL_LINE_SMOOTH);

glBegin (GL_LINES);

glVertex2f (-0. 7, 0. 7);

викликом і без виклику і подивитеся результати роботи програми з glEnable (GL_LINE_SMOOTH). Отже, константа GL_LiNES задає примітив окремих відрізків, визначених вказівкою пар вершин. Зрозуміло, що кількість вершин повинна бути парною. Наступна константа - GL_LiNE_STRip - визначає примітив, коли перераховуванні вершини послідовно з'єднуються одна за одною. Код, що приводиться, пояснює відмінність цього примітиву від попередньої.

glBegin (GL_LINE_STRIP);

glVertex2f (-l -1);

glVertex2f (-1, 1);

glVertex2f (1, 1);\

glVertex2f (l, -l); \

glEnd;

Результат - буква П по межі вікна, що задається константою GL_LiNE_Loop, також послідовно з'єднуються перераховані вершини, проте остання вершина замикається з найпершою. Якщо в попередньому прикладі використовувати GL_LiNE__ Loop, буде побудований квадрат по межі вікна. У прикладах на відрізки ми поки використовували безперервну лінію. Для малювання пунктирною лінією перед командними дужками потрібно додати наступні рядки:

glLineStipple (1 $FOFO);glEnable (GL_LINE_STIPPLE);

У функції glLinestipple перший аргумент - масштабний множник, другий аргумент задає шаблон штрихування (побітовим способом). За допомогою програмного середовища Delphi дуже легко можна побудувати - ще один приклад на використання штрихування (мал. 2. 1).


Мал. 2.1. Декілька готових шаблонів штрихових ліній

Призначена для користувача процедура drawOneLine викликається для відтворення кожного окремого відрізка:

procedure TfrmGL. drawOneLine(xl, yl x2, y2: GLfloat);

begin glBegin(GL_LINES);

glVertex2f glVertex2f glEnd;

end;

(2 * xl / ClientWidth - 1. 0, yl (2 * x2 / ClientWidth - 1. 0 y2

/ ClientHeight - 0. 5); / ClientHeight - 0. 5);

Змістовна частина коду перемальовування вікна виглядає так:

glColor3f (1. 0, 1. 0, 1. 0); // всі відрізки малюються білим

// другий рядок: малюється 3 відрізки, все з різним штрихуванням

glEnable (GL_LINE_STIPPLE);

glLineStipple (1, $0101); // точковий

drawOneLine (50. 0, 125. 0, 150. 0, 125. 0);

glLineStipple (1 $OOFF); // штрихи

drawOneLine (150. 0, 125. 0, 250. 0, 125. 0);

glLineStipple (1 $1C47); // штріхпунктір

drawOneLine (250. 0, 125. 0, 350. 0, 125. 0);// третій рядок: малюється три широкі відрізки з тим же штрихуванням

glLineWidth (5. 0); // задаємо ширину лінії

glLineStipple (1, $0101);

drawOneLine (50. 0, 100. 0, 150. 0, 100. 0);

glLineStipple (1 $00FF);

drawOneLine (150. 0, 100. 0, 250. 0, 100. 0);

glLineStipple (1 $1C47);

drawOneLine (250. 0, 100. 0, 350. 0, 100. 0);

glLineWidth (1. 0);// в першому рядку малюється 6 відрізків, шаблон "пунктир/точка/пунктир", // як частини одного довгого відрізка, без виклику процедури

drawOneLine glLineStipple (1 $1C47);

glBegin (GL_LINE_STRIP);

for i: = 0 to 6 do

glVertex2f ( 2 * (50. 0 + (i * 50. 0)) / ClientWidth - 1. 0, 75. 0 / ClientHeight);

glEnd;// Четвертий рядок - аналогічний результат, але 6 отдельньк відрізків for i: = 0 to 5 do

drawOneLine (50. 0 + i * 50. 0, 50. 0, 50. 0 + (i+l) * 50. 0, 50. 0); // п'ятий рядок - малюється один штрихпунктирний відрізок, множник = 5 glLineStipple (5 $1С47);

drawOneLine (50.0, 25.0, 350.0, 25.0);

Після виконання побудови такого алгоритму ми отримаємо з ліній картинку, що буду нагадувати бенгальський вогник.

glEnable (GL_LINE_STIPPLE) ;

For i := 1 to 100 do begin

glColor3f (random, random, random);

glLineStipple (random (5), random ($FFFF) ) ;

glBegin (GL_LINES);

glVertex2f (xpos, ypos) ;

glVertex2f (xpos + 0.5 * random * sin (random (360)),

ypos + 0.5 * random * cos (random (360)));

glEnd; end;


Информация о работе «Методи поліпшення растрових зображень»
Раздел: Информатика, программирование
Количество знаков с пробелами: 19610
Количество таблиц: 0
Количество изображений: 3

Похожие работы

Скачать
16844
0
5

... процесі фотовиведення. Можливі два шляхи вирішення цієї проблеми: 1. Усунення растрової структури оригіналу в процесі сканування й обробки. Для цього використовуються методи згладжування. Недоліки такого усунення: а) втрата різкості зображення; б) внаслідок різних кутів повороту растрових структур зображення для різних фарб, повне узгодження апертури дерастрування і растрової структури не ві ...

Скачать
191192
6
39

... принтера також містить різні мови опису даних (Adobe PostScript, PCL і тощо.). Ці мови знову ж таки призначені для того, щоб забрати частину роботи у комп'ютера і передати її принтеру. Розглянемо фізичний принцип дії окремих компонентів лазерного принтера. 2.5.29 Фотобарабан Як вже писалося вище, найважливішим конструктивним елементом лазерного принтера є фотобарабан, що обертається, за ...

Скачать
106641
28
1

... фотонасвітлювачі. 4. Офсетна попередньо чутлива пластина Для виготовлення друкарських офсетних форм позитивного копіювання. Схема технологічного процесу виготовлення офсетних друкарських форм для друкування журнальної продукції Ознайомлення з оригіналом і бажаннями замовника Складання тексту Сканування і обробка чорно-білих ілюстрацій Верстка журнальних сторінок ...

Скачать
62671
0
2

... країни (табл. 1). При цьому містобудівні об'єкти нижчого рівня формують організовану цілісність у рамках об'єктів вищого рівня. Ієрархічній структурі об'єктів відповідають стадії містобудівного проектування, які різняться між собою: - змістом завдань, які вони вирішують; - масштабом і характером технічної документації; - терміном проектування. При цьому в стадійності містобудівного ...

0 комментариев


Наверх