Методи поліпшення растрових зображень
МІНІСТЕРСТВО ОСВІТИ УКРАЇНИБердичівський політехнічний коледжКонтрольна роботаз предмета “ Комп’ютерна графіка ”(варіант №7)Методи поліпшення растрових зображеньм. Бердичів 2007 р.ЗмістМетоди поліпшення растрових зображеньПараметри виду, буфер глибини, джерело світла в бібліотеці OpenglВикористовуючи команди надбудови над Opengl, створити тривимірну фігуру та забезпечити її поворот при натисненні на кнопку пробілДля попереднього практичного завдання вашого варіанту забезпечити операцію масштабування використовуючи клавіші “+” та “-“Алгоритм побудови лініїДля побудування лінії необхідно застосувати аргумент команди 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);