Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КГ Лаб 02 Побудова дротяних зображень.doc
Скачиваний:
5
Добавлен:
14.02.2015
Размер:
227.33 Кб
Скачать

Сукупність точок

Примітив 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;

виводить на екран сукупність точок з визначеними координатами. Кожна точка представляє собою один піксел поточного кольору переднього плану. Зміну кольору переднього плану можна здійснювати всередині операторних дужок glBeginglEnd. Так, наприклад у фрагменті:

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, задана в операторних дужках glBeginglEnd, відповідає точці зламу ламаної лінії. Так як в бібліотеці 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.