Студопедия — Короткі теоретичні відомості. Бібліотека GLUT пропонує 10 функцій генерації багатокутників: п'ять функцій дають каркасні об'єкти, п'ять відображають грані багатокутників як затінені
Студопедия Главная Случайная страница Обратная связь

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

Короткі теоретичні відомості. Бібліотека GLUT пропонує 10 функцій генерації багатокутників: п'ять функцій дають каркасні об'єкти, п'ять відображають грані багатокутників як затінені






Бібліотека GLUT пропонує 10 функцій генерації багатокутників: п'ять функцій дають каркасні об'єкти, п'ять відображають грані багатокутників як затінені зафарбовані ділянки. Характеристики зафарбованої області визначаються властивостями матеріалу й умовами освітлення, заданими для сцени. Усі правильні багатокутники описуються в модельних координатах і центровані на початку зовнішньої системи координат.

Чотиригранна правильна трикутна піраміда:

glutWireTetrahedron ();

glutSolidTetrahedron ();

Шестисторонній правильний гексаедр (куб):

glutWireCube (edgeLength);

glutSolidCube (edgeLength);

Параметр edgeLength – будь-яке додатне значення подвійної точності з плаваючою комою, центр куба знаходиться на початку координат.

Восьмигранний правильний октаедр:

glutWireOctahedron ();

glutSolidOctahedron ();

Його радіус (відстань від центра до будь-якої вершини) дорівнює 1.

Дванадцятигранний додекаедр, що центрується на початку глобальної системи координат:

glutWireDodecahedron ();

glutSolidDodecahedron ();

Правильний двадцятигранник – ікосаедр:

glutWirelcosahedron ();

glutSolidlcosahedron ();

Радіус (відстань від центра багатокутника на початку координат до будь-якої вершини) ікосаедра дорівнює 1, усі його грані – рівносторонні трикутники.

Найчастіше використовується клас об'єктів, що включає поверхні другого порядку, які описуються рівняннями другого порядку. Ці поверхні включають сфери, еліпсоїди, тори, параболоїди і гіперболоїди. За допомогою функцій GLUT можна відобразити сферу, конус, тор або чайник. Функції GLU поверхонь другого порядку дещо складніше набудувати, але вони дають більше альтернатив – сферу, циліндр, конічний циліндр, конус, плоске кільце (або шайбу) і частину кільця (або диска).

Сфера GLUT генерується за допомогою однієї з наступних функцій:

glutWireSphere (r, nLongitudes, nLatitudes);

glutSolidSphere (r, nLongitudes, nLatitudes);

Радіус сфери – параметр r – визначається числом з плаваючою комою подвійної точності. Параметри nLongitudes і nLatitudes задають ціле число ліній довготи і широти, які використовуються для апроксимації сферичної поверхні чотирикутною сіткою. Сфера визначається в модельних координатах, її центр знаходиться на початку зовнішньої системи координат, а полярна вісь проходить по осі z.

Конус GLUT виводиться на екран за допомогою функцій:

glutWireCone (rBase, height, nLongitudes, nLatitudes);

glutSolidCone (rBase, height, nLongitudes, nLatitudes);

Радіус основи конуса і висота, параметри rBase і height відповідно – значення з плаваючою комою подвійної точності. Параметри nLongitudes і nLatitudes тіж самі, що і у сфери. Лінія довготи конуса є прямим відрізком, що проходить по поверхні конуса від вершини до основи і повністю лежить у площині, яка містить вісь конуса. Кожна лінія широти відображається як набір прямих відрізків уздовж периметра кола на поверхні конуса, вона паралельна основі конуса і лежить у площині, яка перпендикулярна до осі конуса. Конус описується в модельних координатах, центр його основи знаходиться на початку глобальної системи координат, а вісь конуса проходить по осі z глобальної системи координат.

Функції для каркасного зображення тора з круговим поперечним перетином або із затіненими поверхнями:

glutWireTorus (rCrossSection, rAxial, nConcentrics, nRadialSlices);

glutSolidTorus (rCrossSection, rAxial, nConcentrics, nRadialSlices);

Top можна описати як поверхню, породжену обертанням кола радіусом rCrossSection навколо компланарної осі z, де відстань від центра кола до осі z дорівнює rAxial. Розмір тора (радіуси) в цих функціях вибирається з використанням значень подвійної точності з плаваючою комою. Параметри nConcentrics і nRadialSlices – цілі значення, що задають розмір чотирикутників у поверхневій сітці, яка використовується для апроксимації тора. Параметр nConcentrics задає число концентричних кіл (з центром на осі z) на поверхні тора, параметр nRadialSlices задає число радіальних перетинів, що проходять через поверхню тора. Тор центрований на початку зовнішньої системи координат, а його вісь проходить по осі z зовнішньої системи координат.

Щоб зобразити чайник у вигляді сітки використовується одна з наступних двох функцій GLUT:

glutWireTeapot (size);

glutSolidTeapot (size);

Поверхня чайника генерується з використанням функцій OPENGL побудови кривих Безьє. Параметр size встановлює значення подвійної точності з плаваючою комою – максимальний радіус тіла чайника. Чайник центрований на початку зовнішньої системи координат, а його вертикальна вісь проходить уздовж осі у.

Щоб згенерувати поверхню другого порядку з використанням функцій GLU, потрібно присвоїти ім'я квадриці, активізувати процедуру візуалізації поверхонь другого порядку GLU, задати значення параметрів поверхні. Можна також вказати значення інших параметрів, щоб контролювати зовнішній вигляд поверхні другого порядку GLU.

Послідовність викликів операторів для відображення каркасної сфери з центром на початку зовнішньої системи координат:

GLUquadricObj *sphere1;

Sphere1 = gluNewQuadric ();

gluQuadricDrawStyle (sphere1, GLU_LINE);

gluSphere (spherel, r, nLongitudes, nLatitudes);

Назва об'єкта другого порядку (sphere1) визначається в першому операторові. Це ім'я можна використовувати в інших функціях GLU для звернення до цієї поверхні другого порядку. Функція gluNewQuadric активізує процедуру візуалізації поверхонь другого порядку. Команда gluQuadricDrawStyle для поверхні sphere1 вибирає режим відображення GLU_LINE. Сфера виводиться на екран в каркасній формі з відрізками між кожною парою вершин поверхні. Параметру r присвоюється значення подвійної точності (радіус сфери), і сферична поверхня поділяється на набір багатокутних граней за допомогою рівномірно розміщених ліній широти і довготи. Параметри nLongitudes і nLatitudes задають ціле число ліній довготи і широти у вигляді значень.

Використання символьної константи GLU_POINT як аргументу функції gluQuadricDrawStyle відобразить поверхню другого порядку у вигляді точкового графіка. Використання символьної константи GLU_SILHOUETTE відобразить каркасне зображення зі спільними краями між двома компланарними багатокутними гранями. Використання символьної константи GLU_FILL відобразить частини багатокутника як затінені зафарбовані ділянки.

Для зображення конуса, циліндра або конічного циліндра замість функції gluSphere викликається функція:

gluCylinder (quadricName, rBase, rTop, height, nLongitudes, nLatitudes);

Основа цього об'єкта лежить у площині ху (z = 0), вісь проходить по осі z. Радіус основи цієї поверхні другого порядку задається параметром rBase, радіус вершини поверхні – параметром rТор. Якщо rТор = 0.0, отримуємо конус; якщо rTop = rBase, отримуємо циліндр. Інакше – конічний циліндр. Параметр height – значення висоти (число подвійної точності). Поверхня поділена на декілька рівномірно розташованих вертикальних і горизонтальних ліній, які визначаються цілими значеннями — параметрами nLongitudes і nLatitudes.

Плоске кільце або суцільний диск на площині ху (z = 0) з центром на початку зовнішньої системи координат виводиться на екран за допомогою функції:

gluDisk (ringName, rlnner, rOuter, nRadii, nRings);

Внутрішній та зовнішній радіуси задаються в параметрах rlnner і rOuter (значення подвійної точності). Якщо rlnner = 0, диск суцільний. Інакше він відображається з концентричним отвором в центрі. Поверхня диска поділяється на грані, які визначаються цілими параметрами nRadii і nRings, що задають число радіальних сегментів у мозаїчному зображенні та число концентричних кіл відповідно. Орієнтація кільця визначається по відношенню до осі z, передня частина кільця дивиться в напрямку +z, а задня – у напрямку - z.

Сегмент кільця можна задати за допомогою функції GLU:

gluPartialDisk (ringName, rlnner, rOuter, nRadii, nRings, startAngle, sweepAngle);

Параметр подвійної точності startAngle визначає кутову відстань у градусах на площині ху, якавідлічується за годинниковою стрілкою від додатного напрямку осі у. Параметр sweepAngle задає кутову відстань у градусах від положення startAngle. На екрані відображається сегмент плоского диска від положення startAngle до startAngle + sweepAngle.

Для будь-якої поверхні GLU другого порядку можна виділити область пам'яті, а для видалення поверхні використовується команда:

gluDeleteQuadric (quadricName);

Функція орієнтації визначає напрямок будь-якої поверхні другого порядку:

gluQuadricOrientation (quadricName, normalVectorDirection);

Параметру normalVectorDirection присвоюється або значення GLU_ OUTSIDE, або GLU_INSIDE, щоб вказати напрямок векторів нормалі до поверхні, де "outside" позначає напрямок передньої грані, "inside" — напрямок задньої грані. За замовчанням значення дорівнює GLU_OUTSIDE. Для плоского кільця напрямок передньої грані за замовчанням збігається з додатним напрямком осі z (передня грань знаходиться "над" диском). Альтернативою є генерація векторів нормалі до поверхні:

gluQuadricNormals (quadricName, generationMode);

Параметр generationMode – значення символьної константи, що вказує, як повинні генеруватися вектори нормалі до поверхні. Значення за замовчанням GLU_NONE означає, що вектори нормалі не генеруються, крім того, зазвичай на поверхню другого порядку не накладаються умови освітленості. Для затінювання плоскої поверхні (з кожною поверхнею співвідноситься постійний код кольору) використовується символьна константа GLU_FLAT. Для кожної багатокутної грані генерується одна нормаль. Якщо потрібно застосувати інші умови освітлення і затінювання, використовується константа GLU_SMOOTH, і для кожної вершини поверхні генерується вектор нормалі.

Для поверхонь другого порядку GLU можна встановити параметри поверхневої текстури, задати функцію, яка буде викликатися, якщо виникне помилка в процесі генерації поверхні другого порядку:

gluQuadricCallback (quadricName, GLU_ERROR, function);







Дата добавления: 2015-10-19; просмотров: 418. Нарушение авторских прав; Мы поможем в написании вашей работы!



Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Основные структурные физиотерапевтические подразделения Физиотерапевтическое подразделение является одним из структурных подразделений лечебно-профилактического учреждения, которое предназначено для оказания физиотерапевтической помощи...

Почему важны муниципальные выборы? Туристическая фирма оставляет за собой право, в случае причин непреодолимого характера, вносить некоторые изменения в программу тура без уменьшения общего объема и качества услуг, в том числе предоставлять замену отеля на равнозначный...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

Хронометражно-табличная методика определения суточного расхода энергии студента Цель: познакомиться с хронометражно-табличным методом опреде­ления суточного расхода энергии...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия