МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ
Бердичівський політехнічний коледж
Контрольна робота
з предмета “ Комп’ютерна графіка ”
(варіант №11)
Виконав: студент групи ПЗС-504
Лифар Сергій Олександрович
Перевірив
викладач: Козік Вадим Юрійович
м. Бердичів - 2007 р.
Зміст
1. Алгоритм побудови лінії.
2. Графічна бібліотека DirectX
3. Засобами бібліотеки Opengl побудувати довільну кількість довільного розміру точок на поверхні форми
Список використаної літератури
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 doglVertex2f ( 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;
... . Імовірно, обидві ці думки справедливі, як і багато інших. Одне безсумнівно - створення мережі Internet є видатним досягненням людства. Важливе місце в Internet посідає комп'ютерна графіка. Усе більше удосконалюються способи передачі візуальної інформації, розробляються досконаліші графічні формати, відчутно бажання використовувати тривимірну графіку, анімацію, весь спектр мультимедіа. 2. ...
... відрізок, або робота команди не буде зупинена натисканням клавіші <ENTER>. Команду зручно використовувати при малюванні різного типу таблиць, специфікацій, зображення ліній технологічних матеріальних потоків і т.п. Основною незручністю при роботі з цим графічним примітивом являється складність його модифікації, тобто зміна ширини чи довжини полоси. Область Область – це частина площини, ...
... знаходяться два рядки, які займають панелі інструментів «Standard» (Стандартна) та «Select object» (Властивості об’єктів). Ще дві панелі інструментів – «Draw» (Малювання) та «Modify» (Редагування), – традиційно розміщуються зліва від графічної зони екрана у два вертикальних рядки. Ці панелі мають назву «плаваючі» і за необхідності користувач має можливість перенести їх та розмістити у будь – якому ...
... растрова графіка, векторна графіка і фрактальна графіка. Вони відрізняються принципами формування зображення при відображенні на екрані монітору або при друкуванні на папері. 2. Загальна структура і функції комп’ютерної графіки Растрову графіку використовують при розробці електронних (мультимедійних) та поліграфічних видань. Ілюстрації, виконані засобами растрової графіки, рідко створюються ...
0 комментариев