Побудова дротяних зображень з застосуванням бібліотеки OpenGL (Лабораторна робота № 2), страница 5

Відключення цього режиму здійснюється викликом процедури

       glDisable(GL_LINE_STIPPLE);

Розглянемо приклад, що використовує ряд описаних можливостей бібліотеки Open GL.

  Задача: необхідно побудувати зображення рівностороннього трикутника, вписаного в коло радіусом 1. Трикутник слід вивести на екран суцільними лініями червоного кольору з товщиною ліній в 3 пікселі, а коло – штрихпунктирною лінією синього кольору товщиною в один піксель (рис. 2.2).

Рис. 2.2. Приклад графічного зображення

Розв’язання:

Спершу сформуємо числове значення шаблона для формування штрихпунктирних ліній:

Номер розряду

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Значення біта

1

1

1

1

1

1

1

1

1

1

0

0

1

1

0

0

Вигляд лінії

 

Таким чином двійкове значення шаблона для штрихпунктирних ліній b1111111111001100 що відповідає шістандцятковому $FFCC.

Текст фрагмента процедури, що зформує наведене на рис. 2.2 зображення подано нижче:

{Включення режиму згладжування та режиму управління шаблонами}

glEnable(GL_LINE_SMOOTH);

glEnable(GL_LINE_STIPPLE);

{Виведення на екран трикутника}

glColor3d(1,0,0);        {Червоний колір переднього плану}

glLineStipple(2, $FFFF); {Встановлення шаблону – суцільної лінії}

glLineWidth(3);          {Товщина лінії 3 піксела}

glBegin(GL_LINE_LOOP);   {Трикутник – замкнена ламана лінія}

         glVertex2d(0, 1);   {Перша вершина}

          glVertex2d(cos(-pi/6), sin(-pi/6)); {Друга вершина}

          glVertex2d(cos(-5*pi/6), sin(-5*pi/6)); {Третя вершина}

glEnd;

{Виведення на екран кола}

glColor3d(0,0,1);        {Синій колір переднього плану}

glLineStipple(2, $FFCC); {Встановлення шаблону штрихпунктир}

glLineWidth(1);          { Товщина лінії 1 піксел }

glBegin(GL_LINE_LOOP);   {Коло – замкнена ламана лінія}

     Fi:=0;              { Початкове значення кута

   (полярна система кооординат)}

     while Fi<=2*pi do

          glVertex2d(cos(Fi), sin(fi)); {Вершина}

          Fi:=Fi+pi/100; {Приріст кута}

     end;

glEnd;

Результат роботи даної програми показано на рис. 2.3.

Рис. 2.3. Результат роботи програми

Слід пам’ятати, що всі змінні, які застосовуються в розглянутих прикладах необхідно попередньо оголошувати. Наприклад в останньому прикладі слід попередньо оголосити змінну  Fi типу Real.

Завдання на лабораторну роботу

З застосуванням графічної бібліотеки Open GL розробити програму, що виводить на екран графік функції на проміжку  згідно варіанта (номер студента в журналі). Графік повинен виводитися в  окремому вікні, на графіку слід показати координатні осі зі стрілками та сітку (вся область виводу графіка повинна бути розділена на десять клітин по осях абсцис та ординат). Лінія графіка функції повинна відрізнятися від координатних осей кольором та бути в 2 рази товщою. Лінії стіки повинні відображатися пунктиром.

Варіанти завдань наведено в таблиці:

№ варіанта

Функція

1.   

2.   

3.   

4.   

До звіту включити:      

1. Конспективний виклад теоретичних відомостей, необхідних для виконання лабораторної роботи.

2. Текст проекту Object Pascal що формує зображення.

3. Графічне зображення графіка функції.

4. Висновки по роботі.