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

Замкнута ламана лінія

Примітив GL_LINE_LOOP являє собою замкнуту ламану лінію та відрізняється від попереднього, тим що до лінії автоматично додається сегмент, який з’єднує першу і останню вершини ламаної лінії.

Товщина ліній та шаблон їх заповнення

Як вже зазначалося, для формування повноцінних дротяних зображень необхідно крім засобів управління кольором та координатами примітивів (ліній) також мати засоби управління товщиною ліній та шаблоном їх заповнення. До таких засобів в бібліотеці Open GL відносяться процедури glLineWidth та glLineStipple.

Управління товщиною ліній здійснюється за допомогою процедури

glLineWidth(ТовщинаЛінії);

де параметр ТовщинаЛінії це змінна або стала дійсного типу, що визначає товщину лінії в пікселях. Бібліотека Open GL реалізує два режими виводу ліній з згладжуванням контурних нерівностей та без згладжування. Перший режим дає більш якісні зображення, однак сповільнює побудову зображень.

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

glEnable(GL_LINE_SMOOTH); // Включення згладжування нерівностей

glDisable(GL_LINE_SMOOTH); // Виключення згладжування нерівностей

При відключеному режимі згладжування дійсні значення товщини лінії округляються до найближчого цілого. В іншому випадку товщина лінії в пікселях обчислюється в кожному конкретному випадку і залежить від радіуса кривизни апроксимованої лінії та інш. Режим згладжування робить ламану лінію візуально ближчою до кривої.

Для управління шаблоном застосовується функція

glLineStipple(Множник,Шаблон);

де Шаблон – двохбайтна цілочисельна змінна або стала (наприклад типу integer або word), що визначає спосіб заповнення лінії. Кожен з 16 бітів шаблону управляє одним пікселем лінії. Якщо біт шаблону дорівнює одиниці, то піксел зафарбовується кольором переднього плану, якщо біт дорівнює нулеві то піксел зафарбовується кольором фону. Наприклад, якщо необхідно встановити шаблон лінії пунктир з рівними за довжиною штрихами та проміжками можна викликати процедуру glLineStipple з наступними параметрами:

glLineStipple(1,$FF00);

Шістнадцяткова константа $FF00 в двійковій системі зчисленне має вигляд

$FF00 =b11111111111111110000000000000000

Таким чином, половина кожного 16-піксельного сегменту лінії буде зафарбовуватися кольором переднього плану, а половина – кольором фону. Параметр Множник є однобайтним цілим числом і визначає скільки разів повторюватиметься кожен біт шаблона. Наприклад, якщо в попередньому виклику процедури замінити множник на 2

glLineStipple(2,$FF00);

то довжина штрихів та проміжків лінії збільшиться в 2 рази. Слід пам’ятати що управління шаблоном лінії функціонує лише після включення відповідного режиму викликом процедури

glEnable(GL_LINE_STIPPLE);

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

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

Задача

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

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