АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Малювання полігонів, передні і задні грані полігонів

Читайте также:
  1. А. Аксони нейронів задніх рогів
  2. Глава 3. Інформування, консультування та попередні рішення з питань державної митної справи
  3. Попередній потокорозподіл та призначення діаметрів ділянок мережі
  4. ПОПЕРЕДНІЙ ТЕПЛОВИЙ БАЛАНС ДОПОМІЖНОГО КОТЛА
  5. Порядок складання попередніх списків виборців для звичайних виборчих дільниць
  6. Про введення попередніх стандартів на вуглецеві матеріали
  7. Розрахунок попередніх розмірів елементів перекриття
  8. Свідок може бути допитаний щодо попередніх показань, які не узгоджуються із його показаннями.

Для малювання багатокутників в командних дужках використовується константа GL_POLIGON. При цьому вершини, вказані між командними дужками визначають опуклий багатокутник. Багатокутник будується із зв'язаних трикутників із загальною вершиною, як загальна вершина береться перша вершина списку (малюнок 2. Віяло трикутників).

Список вершин для даного багатокутника: a1, a2, a3, a4, a5, a6, a7.

При малюванні багатокутників слід мати на увазі наявність лицьових (передніх) і зворотних (задніх) граней. Може виникнути питання, навіщо при побудові|шикуванні| плоского зображення розрізняти лицьові і зворотні грані? Проте|однак| цю відмінність слід мати на увазі при виведенні закрашених|зафарбовувати| полігонів і тим більше при тривимірних|трьохмірних| побудовах|шикуваннях|.

Грань вважається за лицевою|, якщо вершини перераховуються в напрямі|направленні| проти|супроти| годинникової стрілки, і зворотною, якщо обхід вершин проводиться|виробляє| за годинниковою стрілкою (у негативному|заперечному| напрямі|направленні|).

Побудова|шикування| неопуклих|випуклих| полігонів.

Якщо необхідно змалювати|зображати| неопуклий|випуклий| багатокутник, то він має бути представлений|уявляти| як набір опуклих|випуклих| багатокутників, кожен з яких описується в своїх командних дужках

a1
a2
a3
a4
a5
a6
a7

(Малюнок 3. Представлення неопуклого|випуклого| полігону за допомогою набору опуклих|випуклих| полігонів).

Дану фігуру можна розбити на 3 опуклих багатокутника: a1a2a3a4, a1a4a6a7 і a4a5a6. Отже фігура може бути описана як 3 примітиви типа GL_POLIGON. Проте відмітимо, що перша і друга фігури – суміжні чотирикутники, а третя фігура – трикутник. Для відтворення трикутників і чотирикутників бажано використовувати «рідні» примітиви, причому, якщо це можливо – зв'язані. Тобто для побудови змальованої фігури перші два чотирикутники ми опишемо в одних командних дужках як зв'язані чотирикутники із загальною стороною a1a4 (послідовність перерахування вершин: a2, a3, a4, a1, a7, a6) – використовуємо константу командних дужок GL_QUAD_STRIP. Трикутник a4a5a6 опишемо в своїх командних дужках з константою GL_TRIANGLES.

Можна вирішити це завдання|задачу| і іншими способами. Взагалі оптимальним буде розбиття неопуклої|випуклої| фігури на трикутники, оскільки побудова|шикування| трикутників, як правило, реалізована на апаратному рівні.

Для згладжування (антиэлайзинга) багатокутників використовується константа GL_POLYGON_SMOOTH. Команда використовується так само, як для крапок і ліній. Оскільки трикутники і чотирикутники є багатокутниками, те згладжування для них здійснюється як для багатокутників.

Особливості режимів замалювання|зафарбовувати| для багатокутників.

До цих пір ви змальовували багатокутники з використанням заливки, причому, якщо для різних вершин примітивів були задані різні кольори, то фігури забарвлювалися градієнтний, з плавним переходом квітів від вершини до вершини. Це відбувається через те, що за умовчанням спосіб тонування заданий плавним. Щоб змінити спосіб тонування, необхідно перед командними дужками викликати функцію glShadeModel(GL_FLAT). В цьому випадку зв'язані фігури забарвлюються за правилом старшинства кольору другого примітиву.

Для завдання режиму виведення багатокутників: у контурному вигляді (без заливки), із заливкою, - використовується команда glPolygonMode. Другий параметр команди указує спосіб зображення грані фігури за допомогою наступних констант: GL_FILL – виведення граней із заливкою; GL_LINE – каркасний вивід (тільки контури); GL_POINT - виводяться тільки вершини. Перший параметр визначає для яких граней встановлений режим: лицевые – GL_FRONT; зворотні – GL_BACK; лицевые і зворотні – GL_FRONT_AND_BACK. Описана команда поміщається перед командними дужками.

 


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)