Студопедия — Короткі теоретичні відомості. Бібліотека 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; просмотров: 412. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

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

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

Факторы, влияющие на степень электролитической диссоциации Степень диссоциации зависит от природы электролита и растворителя, концентрации раствора, температуры, присутствия одноименного иона и других факторов...

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

Броматометрия и бромометрия Броматометрический метод основан на окислении вос­становителей броматом калия в кислой среде...

Способы тактических действий при проведении специальных операций Специальные операции проводятся с применением следующих основных тактических способов действий: охрана...

Искусство подбора персонала. Как оценить человека за час Искусство подбора персонала. Как оценить человека за час...

Этапы творческого процесса в изобразительной деятельности По мнению многих авторов, возникновение творческого начала в детской художественной практике носит такой же поэтапный характер, как и процесс творчества у мастеров искусства...

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