Модные тенденции и тренды. Аксессуары, обувь, красота, прически

Модные тенденции и тренды. Аксессуары, обувь, красота, прически

» » Икосаэдр определение. Как сделать правильный икосаэдр

Икосаэдр определение. Как сделать правильный икосаэдр

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

4.4.1. Построение правильных многогранников

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

Существует ровно 5 правильных многогранников: правильный тетраэдр, гексаэдр(куб), октаэдр, додекаэдр и икосаэдр. Их основные характеристики приведены в следующей таб. 4.2.

Правильные многогранники и их свойства

Таблица 4.2

Название

многогранника

Тетраэдр

Гексаэдр

Додекаэдр

Икосаэдр

Грани, ребра и вершины связаны между собой равенством Эй-

Г +В =Р +2.

Для полного описания правильного многогранника вследствие его выпуклости достаточно указать способ отыскания всех его вершин. Куб (гексаэдр) построить совсем просто. Покажем, каким образом строятся остальные тела.

Для построения тетраэдра предварительно строится куб, на его противоположных гранях проводятся скрещивающиеся диагонали. Таким образом, вершинами тетраэдра являются любые 4 вершины куба, попарно не смежные ни с одним из его ребер рис.4.1.

тетраэдр

Рис. 4.1. Построение куба, тетраэдра и октаэдра

Для построения октаэдра предварительно строится куб. Вершины октаэдра – центры тяжести граней куба (рис.4.1), значит, каждая вершина октаэдра является средним арифметическим одноименных координат четырех вершин, образующих ее грань куба.

4.4.2. Построение икосаэдра

Икосаэдр и додекаэдр можно также построить при помощи куба. Однако существует и более простой способ конструирования:

- строятся две окружности единичного радиуса на расстоянии h=1;

- каждая из окружностей разбивается на 5 равных частей, как показано на рис. 4.2.

Рис. 4.2. Построение икосаэдра

- перемещаясь вдоль окружностей против часовой стрелки, нумеруем выделенные 10 точек в порядке возрастания угла поворота и затем последовательно в соответствии с нумерацией соединим эти точки прямолинейными отрезками;

- затем, стягивая хордами точки, выделенные на каждой из окружностей, получаем в результате пояс из 10 правильных треугольников;

- для завершения построения икосаэдра выберем на оси Z две точки так, чтобы длина боковых ребер пятиугольных пирамид с вершинами в этих точках и основаниями, совпадающими с построенными пятиугольниками, была равна длинам сторон пояса из треугольников. Нетрудно видеть, что для этого нуж-

ны точки с аппликатами ± 5 2 .

В результате описанных построений получаем 12 точек. Выпуклый многогранник с вершинами в этих точках будет иметь 20 граней, каждая из которых является правильным треугольником, и все его

многогранные углы при вершинах будут равны между собой. Тем самым результат описанного построения – икосаэдр.

4.4.3. Построение додекаэдра и сферы

Для построения додекаэдра воспользуемся свойством двойственности: вершины додекаэдра –центры (тяжести) треугольных граней икосаэдра. Значит, координаты каждой вершины додекаэдра можно найти, вычислив средние арифметические соответствующих координат вершин граней икосаэдра.

Для построения модели сферы используем построенный ранее икосаэдр. Заметим, что икосаэдр уже является моделью сферы: все вершины лежат на ее поверхности, все грани – равносторонние треугольники. Единственный его недостаток – это малое количество треугольных граней для передачи гладкой поверхности сферы. Для повышения уровня детализации модели используется следующая рекурсивная процедура:

каждая треугольная грань разбивается на четыре части, новые вершины берутся на серединах сторон грани, как показано на рис.4.3.;

Рис. 4.3. Грань икосаэдра

новые вершины проецируются на поверхность сферы, для этого из центра сферы через вершину проводится луч и вершина переносится в точку пересечения луча с поверхностью сферы;

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

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

4.5. Полиномиальные параметрические формы представления

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

4.5.1. Формы представления кривых и поверхностей

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

Явная форма задания кривой в двухмерном пространстве представляет собой уравнение, в левой части которого стоит зависимая переменная, а в правой части – функция, аргументом которой является независимая переменная.

Неявная форма в двумерном пространстве f(x ,y) =0. В параметрической форме в трехмерном пространстве:

уравнение кривой – x = x (u ), y = y (u ), z = z (u ) ;

уравнение поверхности – x = x (u , v ), y = y (u , v ), z = z (u , v ).

Одно из главных достоинств параметрической формы (ПФ) представления – ее единообразие в двух- и трехмерном пространствах. ПФ является, во-первых, наиболее гибкой, а во-вторых, устойчивой к любым вариациям формы и ориентации объектов, что делает ее особенно удобной в математическом обеспечении систем компьютерной графики.

Параметрические полиномиальные кривые и поверхности

Существует множество способов представления объектов, но мы сосредоточимся на полиномиальных, т.е. все функции параметра u при описании кривых или параметровu иv при описании поверхностей являются полиномами.

Рассмотрим уравнение кривой:

p (u )= [ x (u )y (u )z (u )] T .

i = 0 j = 0

Полиномиальная параметрическая кривая степени n имеет вид (в OpenGL часто используется термин «порядок» полинома (order), который имеет значение на 1 больше, чем степень полинома)

p(u) = ∑ uk ck ,

k= 0

где c k имеет независимые компонентыx ,y ,z , т.е.c k = c xk

c zk

Матрица {c k }, состоящая изn +1 столбцов, объединяет коэффициенты полиномов для компонентовp ; это означает, что у нас есть 3(n +1) степеней свободы в выборе коэффициентов для конкретной кривойp .

Кривую можно определить на любом интервале изменения параметра u , но не теряя общности суждений, можно принять, что 0≤ u ≤ 1, т.о. определяется сегмент кривой.

Параметрическая полиномиальная поверхность описывается уравнением следующего вида:

x(u, v)

p(u, v) = y(u, v) = ∑∑ n m cij ui vj .

z(u, v)

Таким образом, для определения конкретной поверхности p (u ,v ) необходимо задать 3(n +1)(m +1) коэффициентов. Можно при анализе принятьn=m , а параметрыu иv изменять на интервале 0≤ u, v ≤ 1 и определить порцию поверхности (surface patch), показанной на рис. 4.4.

Рис. 4.4. Определение порции поверхности

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

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

Отметим преимущества использования полиномиальной параметрической формы представления:

возможность локального контроля формы объекта;

гладкость и непрерывность в математическом смысле;

возможность аналитического вычисления производных;

устойчивость к малым возмущениям;

возможность использовать относительно простые, а значит, высокоскоростные методы тонирования.

4.5.2. Параметрически заданные кубические кривые

Если воспользоваться полиномом очень высокой степени, будет больше «свободы», но потребуется и больше вычислений при расчете координат точек. Также при росте степени свободы возрастает опасность получить волнистую форму кривой. С другой стороны, выбор полинома слишком низкой степени даст нам слишком мало параметров, и не удастся воспроизвести форму кривой. Решение – кривая разбивается на сегменты, которые описываются полиномами низкой степени.

Описать кубическую полиномиальную кривую можно следующим образом:

p(u) = c0 + c1 u+ c2 u2 + c3 u3 = ∑ uk ck = uT c,

k= 0

где c = [ c 0c 1c 2c 3] ,

u = 1 u u

c k= c xk

c ykc zk

В этих выражениях c представляет собой матрицу коэффициентов полинома. Именно ее и требуется вычислять по заданному ансамблю опорных точек. Далее рассмотрим разные классы кубических кривых, которые отличаются характером сопоставления с опорными точками. Для каждого типа будет сформирована система из 12 уравнений с 12-ю неизвестными, но, поскольку параметрические функции для компонентов x,y,z независимы, эти 12 уравнений будет разделены на три группы по 4 уравнения с 4-мя неизвестными.

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

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

4.5.3. Интерполяция

Пусть имеются четыре опорные точки в трехмерном пространстве: p 0 ,p 1 ,p 2 иp 3 . Каждая точка представлена тройкой своих координат:

p k= [ x ky kz k] T .

Найдем элементы матрицы коэффициентов c , такие, что полиномp(u)=u T c будет проходить через заданные четыре опорные точки.

Решение. Есть четыре точки, составляем 12 уравнений с 12-ю неизвестными – элементами матрицыc . Полагаем, что значенияu k (k= 0,1,2,3) распределены равномерно на интервале , т.е.u= 0,1/3,2/3,1. Получаем уравнения:

P (0)= c 0 ,

c 3,

c 3,

p 3= p (1 ) = c 0+ c 1+ c 2+ c 3.

Запишем эти уравнения в матричной форме: p=AC ,

p = [ p 0p 1p 2p 3] T

(2 3 )

(2 3 )

Проанализируем матрицу A . Если интерпретироватьp иc как матрицы-столбцы из 12 элементов, то правило умножения матриц соблюдено не будет. Но мы можем рассматриватьp иc как матрицы столбцы из 4-х элементов, каждый из которых в свою очередь является матрицей-строкой. Тогда в результате произведения получим элемент того же вида, что и элементы матрицы столбцаp . Матрица не является вырожденной, ее можно обратить и получитьбазисную ин-

терполяционную матрицу:

M I =A − 1 =− 5.5

− 4.5

− 22.5

− 4.5

− 13.5

− 4.5

Располагая значениями M I , можно вычислить искомые значения коэффициентовc= M I /p .

Если кривая задана не 4-мя, аm опорными точками, то можно представить интерполяционным полиномом (m -1)-го порядка (рассчитать 3× m коэффициентов, используя аналогичную методику). Можно поступить иначе – считать эту кривую состоящей из нескольких сегментов, каждый из которых задается очередной группой из 4-х точек. Непрерывность можно обеспечить тем, что считать последнюю опорную точку предшествующей группы первой опорной точкой следующей группы. МатрицыM I на каждом сегменте будут одинаковы, т.к.u . Но в этом случае функции производных по па-

раметру будут претерпевать разрыв в точках сопряжения.

4.5.4. Функции смешивания (полиномиальные весовые функции опорных точек)

Проведем анализ гладкости интерполяционных полиномиальных кривых. Для этого перепишем выведенные ранее соотношения в слегка измененном виде:

p(u) = uT с= uT MI p.

Это соотношение можно записать в виде: p (u ) = b (u ) T p ,

b(u) = MI T u,

есть матрица-столбец из четырехполиномиальных функций смеши-

вания (blending polynomials) :

b (u )= [ b 0 (u )b 1 (u )b 2 (u )b 3 (u )] T .

В каждой функции смешивания полином является кубическим. Выразив p (u ) как сумму полиномов смешивания, получим:

p (u )= b 0 (u )p 0 + b 1 (u )p 1 + b 2 (u )p 2 + b 3 (u )p 3 = ∑ b i (u )p i .

i= 0

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

b 0 (u )= − 9 2 (u − 1 3 )(u − 2 3 )(u − 1),b 1 (u )= 27 2 u (u − 2 3 )(u − 1),

b 2 (u )= − 27 2 u (u − 1 3 )(u − 1),b 3 (u )= 9 2 (u − 1 3 )(u − 2 3 ) .

Т.к. все нули функций лежат на отрезке , то их значения могут существенно изменятся на этом интервале, а сами функции не являются монотонными (рис. 4.5.). Эти характеристики следуют из того, что интерполяционная кривая должна проходить через опорные точки, а не в ближайшей их окрестности. Плохая гладкость кривой, отсутствие непрерывности производных в точках стыка сегментов объясняют, почему интерполяционные полиномиальные кривые редко используются в КГ. Но пользуясь той же методикой анализа, можно отыскать более подходящий тип кривой.

b1 (u)

b2 (u)

b3 (u)

Рис. 4.5. Полиномиальная функция смешивания

для случая кубической интерполяции

Порция кубической интерполяционной поверхности

Бикубическое уравнение поверхности можно записать следующим образом:

p(u, v) = ∑∑ ui vj cij .

i = 0j = 0

Здесь c ij – трехкомпонентная матрица-столбец, элементами которой являются коэффициенты при одинаковых степенях независимой переменной в уравнениях дляx ,y , z- компонент. Определим матрицуC 4x4 таким образом, что ее элементами будут трехкомпонентные мат- рицы-столбцы:

C = [ cij ].

Тогда описать порцию поверхности можно следующим образом: p (u , v ) = u T Cv ,

v = 1 v v

Конкретная порция бикубической поверхности определяется 48 значениями элементов матрицы C – 16-ю трехмерными векторами.

Допустим, что имеется 16 трехмерных опорных точек p ij ,i= 0,..,3,j= 0,..,3 (рис. 4.6.). Будем считать, что эти данные используются для интерполирования с равным шагом по обоим независимым параметрамu иv , которые принимают значения 0, 1/3, 2/3, 1. Отсюда

получим три набора из 16 уравнений с 16 неизвестными в каждом. Так, при u=v= 0 получим

p 00 = [ 1 0 0 0] C 0 0 = c 00 .0

Рис. 4.6. Порция интерполяционной поверхности

Можно не решать все эти уравнения. Если зафиксировать v =0, то, изменяяu , получим кривую, проходящую черезp 00 ,p 10 ,p 20 ,p 30 . Используя результаты, полученные в предыдущем разделе, можем записать для этой кривой следующее соотношение:

p (u ,0)= u T M

UT C.

При значениях v= 1/3, 2/3, 1 можно определить три другие интерполяционные кривые, каждую из которых можно описать тем же способом. Объединив уравнения для всех кривых, получим интересующую нас систему из 16 уравнений:

uT MI P= uT CAT ,

где A – матрица, обратнаяM I . Решением этого уравнения будет искомая матрица коэффициентов:

C = MI PMI T .

Подставляя ее в уравнение поверхности, окончательно получим p (u ,v )= u T M I PM I T v .

Этот результат можно интерпретировать по-разному. Из него следует, во-первых, что результаты, полученные при анализе кривых, можно распространить на соответствующие поверхности. Во-вторых, можно распространить на поверхности методику использования полиномиальных функций смешивания:

p(u, v) = ∑∑ bi (u) bj (v ) pij .

i = 0j = 0

4.5.5. Форма представления кривых и поверхностей Эрмита

Пусть имеются точки p 0 ,p 3 и сегменту соответствует интервалu , т.е. имеющиеся точки соответствуютu =0 иu =1. Запишем

два условия:

p (0)= p 0 = c 0,

p (1) = p 3= c 0+ c 1+ c 2+ c 3.

Два других условия получим, задав значения производных функций в крайних точках сегмента u =0 иu =1:

p " (u )= c 1 + 2uc 2 + 3u 2 c 3 , тогда

p " 0 = p " (0)= c 1 ,

p " 3= p " (1) = c 1+ 2 c 2+ 3 c 3.

Запишем эти уравнения в матричной форме:

p " 3

Обозначив через q вектор данных

q = [ p0

p " 0

p " 3 ] T ,

можно записать уравнение в виде:

c = MH q,

где MH называется обобщенной матрицей Эрмита (Hernite geometry matrix).

−3

−2

−1

−2

В результате получим представления полиномиальной кривой в форме Эрмита:

p(u) = uT MH q.

Будем использовать форму Эрмита для представления сегментов составной кривой, как показано на рис. 4.7. Точка сопряжения является общей для обоих сегментов, и, кроме того, производные к кривой в точке сопряжения для обоих сегментов также равны. В результате получаем составную кривую, непрерывную по первой производной на всем протяжении.

p(0) p(1)=q(0)

Рис. 4.7. Применение формы Эрмита к стыковке сегментов

Возможность получения более гладких кривых при использования формы представления по Эрмиту можно обосновать математически следующим образом. Запишем полином в виде

p(u) = b(u) T q,

где новая функция смешивания имеет вид

b(u) = MT u=

− 2 u 3+ 3 u 2.

−2 u 2 +u

u 3− u 2

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

Можно следующим образом определить порцию поверхности в форме Эрмита:

p (u , v ) = ∑∑ b i(u ) b j(v) q ij,

i = 0j = 0

где Q =[ q ij ] – набор данных, представляющих порцию поверхности аналогично тому, какq представляет сегмент кривой. Четыре элементаQ представляют собой значения функцииp (u,v ) в угловых точках поверхности, а четыре других должны представлять производные к поверхности в этих угловых точках. В интерактивных приложениях пользователю желательно специфицировать не данные о производных, а координаты точек, и, следовательно, не сформулировав аналитические выражения для этих данных, мы не сможем получить производные.

Если в точке сопряжения значения всех трех параметрических компонент векторов p иq равны, то имеет местопараметрическая непрерывность (parametric continuity) классаС 0 .

Кривые, в которых условия непрерывности удовлетворяются и для значения, и для первой производной, обладают параметрической непрерывностью класса С 1 .

Если значения компонент производных пропорциональны, то имеет место геометрическая непрерывность класса G 1 .

Эти идеи можно обобщить для производных более высоких порядков.

Форма кривой, обладающей геометрической непрерывностью класса G 1 , зависит от коэффициента пропорциональности длин касательных к сегментам в точке сопряжения. На рис.4.8. показано, что форма сегментов кривых, совпадающих в конечных точках и имеющих в этих точках пропорциональные векторы касательных, довольно существенно отличается. Это свойство часто используется в графических программах вычерчивания.

p"(0) q(u) p"(1)

Рис. 4.8. Влияние длины вектора касательных на форму сегментов

4.5.6. Кривые и поверхности в форме Безье

Сравнение кривых в форме Эрмита и в форме интерполяционного полинома невозможно, т.к. для их формирования используются

разные по характеру наборы данных. Попробуем использовать один и тот же ансамбль опорных точек и для определения интерполяционного многочлена и для косвенного задания кривых в форме Эрмита. В результате этого получим кривую в форме Безье (Bezier), которая является хорошим приближением кривой в форме Эрмита и которую можно сравнивать с интерполяционным полиномом, сформированным на том же ансамбле точек. Кроме того, такая процедура идеально подходит для интерактивного построения криволинейных объектов в системах КГ и САПР, т.к. определение кривой в форме Безье не требует задания производных.

Кривые Безье

Пусть имеются четыре опорные точки в трехмерном пространстве: p 0 ,p 1 ,p 2 иp 3 . Конечные точки формируемой кривойp (u ) должны совпадать с опорными точкамиp 0 ,p 1 :

p 0 = p (0),p 3 = p (1) .

Безье предложил использовать две другие опорные точки p 1 иp 2 для задания производных в крайних точках сегментаu= 0 иu= 1. Вос-

пользуемся для этого линейной аппроксимацией (рис.4.9).

p "(0)=

p 1− p 0

3(p − p ),

p "(1)=

p 3− p 2

3(p −p

Рис. 4.9. Аппроксимация векторов касательных

Применив эту аппроксимацию к касательным в двух крайних точках к параметрической полиномиальной кривой p (u ) =u T c , получим два условия:

3 p 1− 3 p 0= c 1,

3 p 3− 3 p 2= c 1+ 2 c 2+ 3 c 3.

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

p (0)= p 0 = c 0 ,

p (1) =p 3 =c 0 +c 1 +c 2 +c 3 .

Итак, мы снова получили три набора по четыре уравнения относительно четырех неизвестных в каждом. Решая их по той же методике, что и в предыдущем разделе, получим:

c = MB p,

где M B называется базисной матрицей Безье (Bezier geometry matrix):

= − 3

−6

−1

−3

В результате получим представления полиномиальной кривой в форме Безье:

p(u) = uT MB p.

Эту формулу можно использовать для получения составной кривой, сегменты которой являются интерполяционными полиномами. Очевидно, что составная кривая, построенная по методу Безье на произвольном ансамбле опорных точек, относится к классу С 0 , но требованиям классаС 1 она не удовлетворяет, т.к. касательные справа и слева от точки сопряжения аппроксимируются по разным формулам.

Проанализируем свойства кривой с помощью функций смешивания. Запишем полином в форме:

p(u) = b(u) T p,

где новая функция смешивания имеет вид (рис. 4.10):

−u )

b(u) = MT u= 3 u (1 − u ) 2

3u 2

(1− u )

Эти четыре полинома являются частными случаями полиномов Бернштейна :

b kd (u )= k !(d d − ! k )! u k (1− u )d − k .

Свойства полиномов Бернштейна:

1) все нули в точках u= 0 илиu= 1;

2) следовательно, при 0< ) должна лежать внутри выпуклой многоугольной оболочки, образованной четырьмя заданными точками, как показано на рис. 4.11. Таким образом, хотя кривая Безье и не проходит через все заданные опорные точки, она никогда не выходит за пределы области, ограниченной этими точками. Это очень удобно при интерактивном визуальном конструировании.

Рис. 4.11. Выпуклая оболочка и

Рис. 4.10. Полиномиальные функции

Порции поверхности в форме Безье

Порции поверхностей Безье можно сформировать с помощью функций смешивания. Если P = – массив опорных точек с раз-

мерами 4x4, то соответствующая порция поверхности в форме Безье описывается соотношением:

p(u, v) = ∑∑ bi (u) bj (v ) pij = uT MB PMB T v.

i= 0

j= 0

Порция поверхности проходит через угловые точки p 00 ,p 03 ,p 30 иp 33 и не выходит за пределы выпуклого многоугольника, вершинами которого являются опорные точки. Двенадцать опорных точек из 16

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

4.6. Пример построения полигональных моделей

Рассматриваемую задачу – представление геометрических моделей, задаваемых полигональным сетками, – можно разбить на следующие этапы:

1) разработка модели (структур данных) для представления сцены;

2) разработка формата файла, для хранения модели;

3) написание программы для просмотра созданных сцен;

4) написание программы для генерации полигональных моделей объектов в соответствии с вариантом задания.

4.6.1. Разработка структур данных полигональной модели

Можно выделить следующие элементы модели: точка, полигон, модель отдельного объекта, сцена (множество объектов с заданным расположением относительно друг друга).

1) Точка описывается тремя координатами:

2) Полигон – в общем случае произвольный выпуклый многоугольник. Мы будем использовать его частный случай – треугольник. Наш выбор обоснован тем, что последующие алгоритмы закраски с Z-буфером, для своей работы будут требовать именно треугольные

грани и все более сложные многоугольники потребуется разбивать.

typedef struct Polygon {

int Points; //индексы трех вершин, образующих //полигон, вершины хранятся в списке вершин модели

3) Модель отдельного объекта представляет собой список точек и список вершин:

typedef struct Model3D {

Polygon Polygons; //массив полиго-

4) Сцена – это множество объектов с заданным расположением относительно друг друга. В простейшем случае можно использовать

список (массив) объектов, например,

4.6.2. Разработка формата файла для хранения модели

Для хранения и обработки сцен и моделей удобно использовать текстовые файлы, состоящие из различных секций. Секции могут разделяться ключевыми словами, которые делают чтение и редактирование файлов более простым, а также дают возможность задания для модели только части информации. Хорошим примером является формат DXF, который используется для обмена чертежей между САПР-системами. Рассмотрим простой пример:

где первое число – количество моделей в файле сцены N. Далее следует N моделей. Первым числом в описании моделей является количество вершин K. Далее последовательно перечисляются координаты

x,y,z всех К вершин. После этого идет число G, задающее количество граней в модели. После чего следует G строк, каждая из которых содержит индексы трех вершин, образующих треугольную грань.

4.6.3. Просмотр созданных сцен

Для просмотра созданных сцен в ортографической проекции разработана следующая программа:

#include #include #include #include

const int MAX_MODEL_COUNT = 3; //макс. к-во моделей в сцене const int MAX_POINT_COUNT =100; //макс. к-во точек в модели const int MAX_POLY_COUNT =100; //макс. к-во граней в модели

typedef struct Point { double x, y, z;

typedef struct Polygon {

int Points; //индексы трех вершин, образующих полигон

typedef struct Model3D {

int PolygonCount;//количество полигонов в модели

Polygon Polygons; //массив полигонов

Model3D Models; //массив моделей

//функция выполняет чтение сцены из файла

void LoadScene(Scene3D &scene, const char * filename)

if ((f = fopen(filename, "rt")) == NULL)

fprintf(stderr, "Cannot open input file.\n"); exit(1);

//читаем к-во моделей в файле fscanf(f, "%d", &scene.ModelsCount);

for(int m = 0; m < scene.ModelsCount; ++m)

Model3D *model = &scene.Models[m]; //загрузка списка точек модели fscanf(f, "%d", &model->PointCount);

for(int i = 0; i < model->PointCount; ++i)

fscanf(f, "%lf%lf%lf", &p.x, &p.y, &p.z); model->Points[i] = p;

Polygon *p = &(model->Polygons[i]); fscanf(f, "%d%d%d", &(p->Points),

&(p->Points), &p->Points);

//вывод на экран каркасной //модели в ортографической проекции

//недостаток - все ребра рисуются по два раза void DrawWireFrameScene(const Scene3D &scene)

for(int m = 0; m < scene.ModelsCount; ++m)

const Model3D *model = &scene.Models[m]; for(int i = 0; i < model->PolygonCount; ++i)

const Polygon *poly = &model->Polygons[i];

&model->Points;

&model->Points;

&model->Points;

line(320 + p1->x,

line(320 + p2->x,

line(320 + p3->x,

//инициализация графического режима void InitGraphMode(void)

int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, "");

errorcode = graphresult();

if (errorcode != grOk) //an error occurred

printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

//возвращаем код ошибки

Scene3D scene; LoadScene(scene, "model.dat"); InitGraphMode(); DrawWireFrameScene(scene); getch();

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

Но из-за упрощения для повышения наглядности он имеет следующие существенные недостатки:

1) количество вершин, граней, моделей задается непосредственно в программе, а должна использоваться динамическая память, например динамический одномерный массив, память под который будет выделяться при загрузке сцены.

2) если имеется несколько одинаковых моделей, отличающихся только положением и ориентацией в пространстве, то данные описывающие их геометрию, дублируются, например несколько моделей сфер. Целесообразно разделить модель на две составляющие: геометрическую, хранящую описание граней, вершин, и топологическую, т.е. конкретный экземпляр объекта, расположенный в пространстве.

3) описание структур данных и методы, их поддерживающие, следует выделить в отдельный модуль, тогда его можно будет использовать, например, в программах генерации примити-

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

вычислительной техники с одной стороны и требований к качеству моделей с другой ведутся интенсивные исследования новых типов моделей.

Контрольные вопросы и упражнения

1. Чем отличаются геометрические модели от других видов моделей?

2. Назовите основные компоненты геометрической модели.

3. Чем отличаются координатные модели от аналитических?

4. Какие виды геометрических моделей существуют?

5. Почему полигональные модели получили широкоераспространение?

6. Какие способы задания полигональной модели вы знаете?

7. Какие недостатки и ограничения имеют полигональные модели?

8. Реализуйте алгоритмы построения полигональных моделей додекаэдров, икосаэдров и сфер.

9. Предложите алгоритм построения полигональной модели тора.

10. Каким образом можно сократить объем данных, хранимых

в памяти ЭВМ, при многократном использовании одинаковых полигональных моделей?

Белозерова Мария, ученица 10 класса

В данной работе представлена информация о геометрической модели, с которой познакомилась учащаяся при её изготовлении.

Скачать:

Предварительный просмотр:

Правильный многогранник. Икосаэдр

Выполнила Белозерова Мария , ученица 10 класса МОУ «Средняя школа №16», г.Кимры, Тверской области

Названия правильных многогранников пришли из Греции. В дословном переводе с греческого "тетраэдр", "октаэдр", "гексаэдр", "додекаэдр", "икосаэдр" означают: "четырехгранник", "восьмигранник", "шестигранник", "двенадцатигранник", "двадцатигранник". Этим красивым телам посвящена 13-я книга "Начал" Евклида. Их еще называют телами Платона, т.к. они занимали

важное место в философской концепции Платона об устройстве мироздания.

Четыре многогранника олицетворяли в ней четыре сущности или "стихии".Тетраэдр имволизировал огонь, т.к. его вершина устремлена вверх; икосаэдр - воду, т.к. он самый "обтекаемый"; куб - землю, как самый "устойчивый"; октаэдр - воздух, как самый "воздушный". Пятый многогранник, додекаэдр, воплощал в себе "все сущее", символизировал все мироздание, считался главным.

Икосаэдр (от греческого ico – двадцать и hedra – грань).

Правильный выпуклый многогранник, составленный из 20 правильных треугольников. Каждая из 12 вершин икосаэдра является вершиной 5 равносторонних треугольников, поэтому сумма углов при вершине равна 300°.

У икосаэдра 30 ребер. Как и у всех правильных многогранников ребра икосаэдра имеют равную длину, а грани - равную площадь.

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

симметрии.

Плоскостей симметрии также 15. Плоскости симметрии проходят через четыре вершины, лежащие в одной плоскости, и середины противолежащих параллельных ребер.

Икосаэдр - геометрическое тело, форму которого принимают вирусы, состоящие из ДНК и белка, то есть икосаэдральная форма и пентагональная симметрия "являются фундаментальными в организации живого вещества".

Правильные многогранники встречаются так же и в живой природе. Например, скелет одноклеточного организма феодарии (Circjgjnia icosahtdra) по форме напоминает икосаэдр.

Большинство феодарий живут на морской глубине и служат добычей коралловых рыбок. Но простейшее животное защищает себя двенадцатью иглами, выходящими из 12 вершин скелета. Оно больше похоже на звёздчатый многогранник. Из всех многогранников с тем же числом граней икосаэдр имеет наибольший объём при наименьшей площади поверхности. Это свойство помогает морскому организму преодолевать давление толщи воды.

Вирус не может быть совершенно круглым, как считалось ранее. Чтобы установить его форму, брали различные многогранники, направляли на них свет под теми же углами, что и поток атомов на вирус. Оказалось, что только один многогранник дает точно такую же тень - икосаэдр.

Исключительностью икосаэдра среди Платоновых тел воспользовались вирусы. Вирусная частица должна весь обмен клетки-хозяина перевернуть вверх дном; она должна заставить зараженную клетку синтезировать многочисленные ферменты и другие молекулы, необходимые для синтеза новых вирусных частиц. Все эти ферменты должны быть закодированы в вирусной нуклеиновой кислоте. Но количество ее ограничено. Поэтому для кодирования белков собственной оболочки в нуклеиновой кислоте вируса оставлено совсем мало места. Что же делает вирус? Он просто использует много раз один и тот же участок нуклеиновой кислоты для синтеза большого числа стандартных молекул - строительных белков, объединяющихся в процессе автосборки вирусной частицы. В результате достигается максимальная экономия генетической информации. По законам математики для построения наиболее экономичным способом замкнутой оболочки из одинаковых элементов нужно сложить из них икосаэдр, который мы наблюдаем у вирусов.

Так «решают» вирусы сложнейшую (ее называют «изопиранной») задачу: найти тело наименьшей поверхности при заданном объеме и притом состоящее из одинаковых и тоже простейших фигур. Вирусы, мельчайшие из организмов, настолько простые, что до сих пор неясно - относить их к живой или неживой природе, - эти самые вирусы справились с геометрической проблемой, потребовавшей у людей более двух тысячелетий! Все так называемые «сферические вирусы», в том числе такой страшный, как вирус полиомиелита, представляют собой икосаэдры, а не сферы, как думали раньше.

Строение аденовирусов также имеет форму икосаэдра. Аденовирусы (от греческого aden - железо и вирусы), семейство ДНК-содержащих вирусов, вызывающих у человека и животных аденовирусные болезни.

Вирус кошачьей панлейкопении (FPLV) принадлежит к семейству парновирусов. Родственных возбудителей среди распространенных болезней человека нет. Вирус - сферический двадцатигранник - икосаэдр, мелкий, размер около 20 нм (0,00002 мм), простой по структуре, не имеет внешней оболочки; геном одна молекула однотяжевой ДНК с молекулярной массой около 2 млн. Вирус очень стабилен, может сохранять активность вне организма месяцы и годы.

Вирус гепатита В - возбудитель гепатита В, основной представитель семейства гепадновирусов. Это семейство включает также гепатотропные вирусы гепатита сурков, сусликов, уток и белок. Вирус ГВ является ДНК-содержащим. Он представляет собой частицу диаметром 42-47 нм, состоит из ядра-нуклеоида, имеющего форму икосаэдра диаметром 28 нм, внутри которого находятся ДНК, концевой белок и фермент ДНК-полимераза.

Итак, выполнив эту работу, я узнала много нового и интересного о правильном многограннике - икосаэдре.

Выполняя работу по изготовлению модели икосаэдра, изучая материал узнала, что первыми правильные полуправильные многогранники изучали ещё древние учёные Платон и Архимед. В наши дни многие ученые занимаются изучением многогранников. Свойства многогранников используются в различных сферах деятельности человека. Например, в архитектуре: почти все здания строятся с соблюдением симметрии.

Таким образов вся наша жизнь наполнена многогранниками, с ними сталкивается каждый человек: и маленькие дети и зрелые люди.

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

Положительным многогранником именуется рельефный многогранник, если все его грани представляют собой равные между собой, положительные многоугольники, при этом в всей его вершине сходится идентичное число ребер. Существует пять верных многогранников – тетраэдр, октаэдр, икосаэдр , гексаэдр (куб) и додекаэдр. Икосаэдр – это многогранник, гранями которого являются двадцать равных между собой верных треугольников.

Инструкция

1. Для построения икосаэдр а воспользуемся построением куба. Обозначим одну из его граней SPRQ.

2. Проведите два отрезка AA1 и BB1, так, дабы они соединяли середины ребер куба, то есть as = AP = A1R = A1Q = BS = BQ.

3. На отрезках AA1 и BB1 отложите равные между собой отрезки CC1 и DD1 длиной n так, дабы их концы находились на равных расстояниях от ребер куба, т.е. BD = B1D1 = AC = A1C1.

4. Отрезки CC1 и DD1 – это ребра строящегося икосаэдр а. Возведя отрезки CD и C1D, вы получите одну из граней икосаэдр а – CC1D.

5. Повторите построения 2, 3 и 4 для всех граней куба — в итоге получите вписанный в куб верный многогранник – икосаэдр . С подмогой гексаэдра дозволено возвести всякий верный многогранник.

Икосаэдр — это верный многоугольник. Такая геометрическая фигура имеет 30 ребер, 20 треугольных граней и 12 вершин, являющихся местом стыка пяти ребер. Собрать икосаэдр из бумаги достаточно трудно, но дюже увлекательно. Его дозволено сделать из гофрированной, упаковочной либо цветной бумаги, фольги. Применяя разные материалы, вы можете придать еще крупную эффектность и красоту своему икосаэдру.

Вам понадобится

  • — макет икосаэдра;
  • — бумага;
  • — ножницы;
  • — линейка;
  • — клей ПВА.

Инструкция

1. Распечатайте макет икосаэдра на листе бумаги, после этого вырежьте его по пунктиру. Это надобно для того, дабы оставить свободное место для склеивания частей фигуры друг с ином. Усердствуйте вырезать икосаэдр как дозволено неторопливей, напротив при малейшем сдвиге ваша поделка в результате станет выглядеть уродливо. Надобность в дюже опрятном вырезании связана с тем, что все треугольники в верном икосаэдре имеют идентичные стороны. Следственно если какая-нибудь сторона станет отличаться по своей длине, в итоге такое расхождение в размерах будет невидимым.

2. Сложите икосаэдр по сплошным линиям, после этого при помощи клея проклейте места, которые очерчены пунктирной линией, и объедините друг с ином соседние стороны треугольников. Для больше плотной фиксации всякую проклеенную сторону надобно подержать в таком состоянии в течение 20 секунд. Верно так же следует проклеить все остальные стороны икосаэдра. Труднее каждого склеить два последних ребра, потому что для их соединения нужны терпение и ухватка. Ваш бумажный икосаэдр готов.

3. Такой геометрическую фигуру дозволено увидеть и в повседневной жизни. К примеру, в форме усеченного икосаэдра (многогранника, состоящего из 20 шестиугольников и 12 пятиугольников) изготавливается футбольный мяч. Это становится особенно невидимо, если получившийся икосаэдр раскрасить в черно-белый цвет. Футбольный мяч из бумаги вы можете сделать самосильно, заблаговременно распечатав в 2-х экземплярах развертку усеченного икосаэдра.

4. Производство икосаэдра из бумаги представляет собой интересный процесс, требующий терпения, вдумчивости и большого числа бумаги. Но полученный итог станет еще длинное время радовать глаз. Бумажный икосаэдр дозволено дать в качестве развивающей игрушки ребенку, достигшему 3-хлетнего возраста. Играя с этой геометрической фигурой, малыш станет развивать не только пространственные навыки и образное мышление, но и поближе познакомится с миром геометрии. Взрослому человеку творческий процесс по конструированию бумажного икосаэдра своими руками дозволит скоротать время, а также поразить своих близких знанием мастерить трудные фигуры.

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

Октаэдр – один из четырех верных многогранников, которым люди придавали магическое значение еще в античные времена. Данный многогранник символизировал воздух. Демонстрационную модель октаэдра дозволено сделать из плотной бумаги либо проволоки.

Вам понадобится

  • — плотная бумага либо картон;
  • — линейка;
  • — карандаш;
  • — транспортир;
  • — ножницы;
  • — клей ПВА.

Инструкция

1. У октаэдра восемь граней, вся из которых представляет собой равносторонний треугольник. В геометрии обыкновенно строят октаэдр, вписанный в куб либо описанный около него. Дабы сделать модель этого геометрического тела, трудные расчеты не потребуются. Октаэдр будет состоять из 2-х склеенных между собой идентичных четырехгранных пирамид.

2. На листе бумаги начертите квадрат. На одной из его сторон постройте положительный треугольник, у которого все стороны равны, а весь из углов составляет 60°. Треугольник комфортно строить при помощи транспортира, отложив от 2-х прилегающих к одной и той же стороне углов квадрата по 60°. Через отметки проведите лучи. Точка из пересечения и будет третьим углом, а в будущем – вершиной пирамиды. Такие же треугольники постройте на остальных сторонах квадрата.

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

4. Загните всякий из треугольников на изнаночную сторону. Припуски намажьте клеем ПВА. Склейте две идентичные пирамидки и дайте им высохнуть.

5. Сейчас надобно склеить пирамиды совместно. Намажьте квадратное дно одной из них клеем, прижмите дно 2-й, совместив стороны и углы. Дайте октаэдру просохнуть.

6. Дабы сделать модель октаэдра из проволоки, вам потребуется картонный либо деревянный квадрат. Однако, дозволено обойтись и обыкновенным треугольником – дабы согнуть заготовку под прямым углом, его абсолютно довольно. Согните из проволоки квадрат.

7. Отрежьте 4 идентичных кусков проволоки размером в 2 стороны квадрата, плюс припуск на то, дабы скрепить их в 2-х точках между собой, а при необходимости – прикрепить и к углам квадрата. Это зависит от проволоки. Если материал дозволено паять, длина граней равна удвоенной стороне квадрата без любых припусков.

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

Полезный совет
Проволоку для сходственных моделей необходимо выбирать такую, которая классно держит форму.

Искусство оригами пришло к нам из Старинного Китая. На заре своего становления из бумаги мастерили фигурки звериных и птиц. Но сегодня дозволено создавать не только их, но и трудные геометрические фигуры.

Вам понадобится

  • — лист бумаги формата А4
  • — ножницы

Инструкция

1. Для производства объемной геометрической фигуры октаэдр нужен квадратный лист бумаги. Сделать его дозволено из обыкновенного листа формата А4. Для этого верхний правый либо левый угол листа согните к противолежащей стороне. Сделайте пометку на листе бумаги. Прочертите линию параллельно тесной стороне листа по сделанной отметке. Отрежьте непотребный кусок бумаги. Согните квадрат напополам.

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

3. Согните левый нижний угол квадрата к средней линии. Совместив правый нижний угол подобно верхним углам, сделайте сгиб. Позже чего заготовку нужно опрокинуть.

4. Сложите правый нижний уголок детали и верхний левый к центральному сгибу. Прогладьте заготовку рукой и опрокиньте на иную сторону.

5. Верхнюю и нижнюю стороны совместите с получившейся линией сгиба. Разгладьте заготовку рукой.

6. Согните стороны фигурки к средней линии квадрата. Опрокиньте деталь на противоположную сторону.

7. Сложите деталь снизу вверх по горизонтальной линии. В результате должна получиться фигура, напоминающая латинскую букву «V».

8. Левую сторону согните вниз по левой стороне центрального треугольника. Правую сторону согните вниз по правой стороне центрального треугольника.

9. Сделайте полоски на верхних сторонах фигурки. Точка сгиба полосок будет начинаться в нижней точке внутреннего выреза буквы «V».

10. Левый верхний угол согните к линии сгиба полоски. Позже чего загните полоску вниз. Аналогичным образом согните правый угол и полоску.

11. Левую сторону сложите вниз.

12. На рисунке показаны карманы и вставки для сборки октаэдра.

13. Для конструирования октаэдра нужно сделать 4 таких модуля. Совместите два модуля под углом, заправив выступающие части в кармашки. После этого соберите все 4 модуля совместно.

14. Получилась геометрическая фигура, называемая октаэдр.

- (греч., от eikosi двадцать, и hedra основание). Двадцатигранник. Словарь иностранных слов, вошедших в состав русского языка. Чудинов А.Н., 1910. ИКОСАЭДР греч. eikosaedros, от eikosi, двадцать, и hedra, основание. Двадцатигранник. Объя … Словарь иностранных слов русского языка

Многогранник, двадцатигранник Словарь русских синонимов. икосаэдр сущ., кол во синонимов: 2 двадцатигранник (3) … Словарь синонимов

- (от греческого eikosi двадцать и hedra грань), один из 5 типов правильных многогранников, имеющий 20 треугольных граней, 30 ребер и 12 вершин, в каждой из которых сходятся 5 ребер … Современная энциклопедия

- (от греч. eikosi двадцать и hedra грань) один из пяти типов правильных многогранников; имеет 20 граней (треугольных), 30 ребер, 12 вершин (в каждой сходится 5 ребер) … Большой Энциклопедический словарь

ИКОСАЭДР, икосаэдра, муж. (от греч. eikosi двадцать и hedra основание, грань) (мат.). Геометрическая фигура правильный многогранник, имеющий двадцать углов. Толковый словарь Ушакова. Д.Н. Ушаков. 1935 1940 … Толковый словарь Ушакова

Муж., греч. тело, ограненное двадцатью равносторонними треугольниками, это одни из правильвых миогогранников, образуемых из шара, срезкою отсеков. Толковый словарь Даля. В.И. Даль. 1863 1866 … Толковый словарь Даля

Многогранник с 20 треугольными гранями, имеющий кубическую симметрию. Форма, свойственная вирионам многих вирусов. (Источник: «Микробиология: словарь терминов», Фирсов Н.Н., М: Дрофа, 2006 г.) … Словарь микробиологии

Икосаэдр - (от греческого eikosi двадцать и hedra грань), один из 5 типов правильных многогранников, имеющий 20 треугольных граней, 30 ребер и 12 вершин, в каждой из которых сходятся 5 ребер. … Иллюстрированный энциклопедический словарь

Икосаэдр - * ікасаэдр * icosahedron многогранник с двенадцатью треугольными гранями, имеющий кубическую симметрию и приблизительно сферическую форму. И. форма, свойственная большинству сферических ДНК содержащих вирусов … Генетика. Энциклопедический словарь

- (греч. eikosaédron, от éikosi двадцать и hédra основание) один из пяти правильных Многогранников; имеет 20 граней (треугольных), 30 рёбер, 12 вершин (в каждой вершине сходятся 5 рёбер). Если а длина ребра И., то его объём … … Большая советская энциклопедия

Книги

  • Волшебные грани № 9. Звездчатый многогранник "Большой икосаэдр" , . Набор для творчества школьников и студентов. Развивает пространственное воображение. Позволяет склеить из цветного картона объемную фигуру - многогранник. Каждаямодель многогранника уникальна…
  • Геометрия комплексных чисел, кватернионов и спинов , Арнольд В.И.. Комплексные числа описывают движения евклидовой плоскости, одному вращению трёхмерного пространства соответствует два кватерниона, различие которых (физики назвали это явление спином) связано…