- •Лабораторна робота 2
- •Побудова дротяних зображеньІз застосуванням бібліотеки OpenGl Теоретичні відомості Бібліотека Open gl – загальні відомості
- •Стандартний проект Delphi для застосування бібліотеки Open gl
- •Модель кольору бібліотеки Open gl
- •Система координат в бібліотеці Open gl
- •Графічні примітиви бібліотеки Open gl
- •Сукупність точок
- •Сукупність відрізків прямих ліній
- •Ламані лінії
- •Замкнута ламана лінія
- •Товщина ліній та шаблон їх заповнення
- •Розв’язок
- •Завдання на лабораторну роботу
- •До звіту включити:
Сукупність точок
Примітив GL_POINTSдозволяє вивести на екран сукупність точок.
Наприклад фрагмент коду
glBegin(GL_POINTS);
glVertex2d(0.5,0.7);
glVertex2d(0.4,-0.2);
glVertex2d(-0.5,-0.9);
glVertex2d(-0.1,0.3);
glVertex2d(0.4,0.3);
glEnd;
виводить на екран сукупність точок з визначеними координатами. Кожна точка представляє собою один піксел поточного кольору переднього плану. Зміну кольору переднього плану можна здійснювати всередині операторних дужок glBegin … glEnd. Так, наприклад у фрагменті:
glColor3d(1,0,0); // Червоний колір переднього плану
glBegin(GL_POINTS);
glVertex2d(0.5, 0.7);
glVertex2d(0.4, -0.2);
glVertex2d(-0.5, -0.9);
glColor3d(0,0,1); // Синій колір переднього плану
glVertex2d(-0.1, 0.3);
glVertex2d(0.4, 0.3);
glEnd;
перші три точки будуть виведені червоним кольором, а дві останні синім.
Сукупність відрізків прямих ліній
Примітив GL_LINES являє собою сукупність відрізків прямих ліній, кожен з яких задається двома вершинами (початком та кінцем). Наприклад фрагмент коду:
glColor3d(1,0,0); //Червоний колір переднього плану
glBegin(GL_LINES);
glVertex2d(0, -1); // Початок першої лінії
glVertex2d(0, 1); // Кінець першої лінії
glColor3d(0,0,1); // Синій колір переднього плану
glVertex2d(-1, -0); // Початок другої лінії
glColor3d(0,1,0); // Зелений колір переднього плану
glVertex2d(1, 0); // Кінець другої лінії
glEnd;
виводить на вікно форми дві лінії. Легко побачити, що для кожної наступноїлінії необхідно задавати дві вершини glVertex. Розглянемо управліннякольором ліній в наведеному фрагменті. При задаванні як початку так і кінцяпершої лінії поточним кольором переднього плану був червоний. Таким чиномперша лінія матиме червоний колір. При встановленні координат початку та кінця другої лінії колір переднього плану був різним, таким чином в наведеному прикладі колір другої лінії буде плавно змінюватися від синього (початок лінії) до зеленого (кінець).
Ламані лінії
Примітив GL_LINE_STRIP застосовується для формування ламаних ліній. Кожна вершина glVertex, задана в операторних дужках glBegin … glEnd, відповідає точці зламу ламаної лінії. Так як в бібліотеці Open GL відсутні примітиви для побудови кривих ліній, то криві лінії слід апроксимувати ламаними лініями з малою довжиною сегмента. Наприклад, побудуємо відрізок параболи y=x2 при -1.0 ≤x≤1.0
// Виведення на екран координатних осей
glColor3d(1,1,1); // Білий колір переднього плану
glBegin(GL_LINES);
glVertex2d(0,-1); // Початок осі ординат
glVertex2d(0,1); // Кінець осі ординат
glVertex2d(-1,-0); // Початок осі абсцис
glVertex2d(1,0); // Кінець осі абсцис
glEnd;
// Виведення на екран відрізка параболи
glColor3d(1,0,0); // Червоний колір переднього плану
glBegin(GL_LINE_STRIP); // Початок ламаної лінії
x:=-1; // Абсциса початкової точки
repeat
y:=sqr(x); // Ордината поточної точки
glVertex2d(x,y); // Додавання поточної точки як вузла до ламаної лінії
x:=x+0.1; // Зсув абсциси поточної точки
until x>=1;
glEnd; // Кінець ламаної лінії
При виконанні наведеного фрагменту слід оголосити у поточній процедурі локальні змінні x та y типу double.