Вы здесь

7. Построение полиэдров — Polyhedra

 

Построение полиэдров — Polyhedra

 

Подпакет Polyhedra служит для создания регулярных пространственных фигур — полиэдров. Они задаются как графические примитивы и выводятся функцией Show:

  • Show [Polyhedron [polyname] ] — строит полиэдр с именем polyname в центре графика;
  • Show[Polyhedron[polyname,{х,у,z},scale]] — строит полиэдр с именем polyname с центром в точке {х, у, z} и параметром масштаба scale.

Возможно задание следующих имен полиэдров: Tetrahedron, Cube, Octahedron, Dodecahedron, Icosahedron, Hexahedron, GreatDodecahedron, Small-StellatedDodecahedron, GreatStellatedDodecahedron и Greatlcosa-hedron. Пример построения полиэдра Icosahedron показан на рис. 14.74.

Рис. 14.74. Построение полиэдра Icosahedron

Возможность вывода с помощью функции Show двух полиэдров иллюстрирует рис. 14.75.

Рис. 14.75. Вывод функцией Show двух полиэдров

Для вывода полиэдров служит также ряд описанных ниже функций. Так, для построения звездчатых форм полиэдров предназначена функция Stellate:

  • Show [Stellate [Polyhedron [polyname] ] — построение звездчатых форм полиэдров;
  • Show[Stellate[Polyhedron[polyname], ratio] — построение звездчатых форм полиэдров с заданным отношением радиусов описанной и вписанной сфер ratio.

Рисунок 14.76 показывает построение звездообразного (или игольчатого) полиэдра. Представленная фигура напоминает некоторых морских животных — ежей и звезд.

Рис. 14.76. Построение звездчатой формы полиэдра

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

  • Show [Geodesate [Polyhedron [polyname], n] — построение полиэдра с вершинами, лежащими на сфере, представляющего собой результат я-кратно-го разбиения на треугольники граней полиэдра polyname;
  • Show [Geodesate [Polyhedron [polyname] , n, {x, y, z}, radius] —построение полиэдра с вершинами, лежащими на сфере с заданным положением центра {x,y,z} и радиусом radius, представляющего собой результат п-кратного разбиения на треугольники граней полиэдра polyname.

Рисунок 14.77 показывает применение этой функции.

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

  • Show [Truncate [Polyhedron [polyname] ] ] — построение усеченных полиэдров;
  • Show [Truncate [Polyhedron [polyname], ratio] — построение усеченных полиэдров с заданным коэффициентом усечения ratio (от 0 до 0.5);
  • Show[OpenTruncate[Polyhedron[polyname]]] — построение полиэдров с открытым усечением;
  • Show[OpenTruncate[Polyhedron[polyname], ratio] — построение полиэдров с открытым усечением и заданным коэффициентом усечения ratio (от 0 до 0.5).

Рис. 14.77. Построение полиэдра в виде сферы

Рисунок 14.78 показывает построение усеченного полиэдра Усечение сделано так, будто полиэдр заполнен материалом. Поэтому усеченные области выглядят как дополнительные грани. Параметр ratio, задающий степень усечения, может иметь значения от 0 до 0.5 (в ином случае выводятся сообщения об ошибке в задании параметра).

Рис. 14.78. Построение усеченного полиэдра

Усечение может быть открытым — такой вариант реализуется функцией со словом Open в имени. В этом случае фигура выглядит так, будто она склеена из тонкого картона (рис. 14.79). При этом в местах усечения фигура прозрачна.

Рис. 14.79. Построение усеченного полиэдра с открытыми местами усечения

В заключение этого раздела отметим следующие функции:

  • First [Polyhedron [polyname] ] — возвращает список полигонов для указанного полиэдра;
  • Vertices [polyname] — возвращает список координат вершин полиэдра;
  • Faces [polyname] — возвращает список вершин, ассоциированных с каждой гранью.

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


First[ Polyhedron[ Octahedron ]]

{Polygon[{{0, 0, 1.41421}, {1.41421, 0, 0}, {0, 1.41421, 0}}],

Polygon[{{0, 0, 1.41421}, {0, 1.41421, 0}, {-1.41421, 0, 0}}],

Polygon[{{0, 0, 1.41421}, {-1.41421, 0, 0}, {0, -1.41421, 0}}],

Polygon[{{0, 0, 1.41421}, {0, -1.41421, 0}, {1.41421, 0, 0}}],

Polygon[{{1.41421, 0, 0}, {0, -1.41421, 0}, {0, 0, -1.41421}}],

Polygon[ {{1.41421, 0, 0}, {0, 0, -1.41421}, {0, 1.41421, 0}}],

Polygon[{{0, 0, -1.41421}, {0, -1.41421, 0}, {-1.41421, 0, 0}}],

Polygon[{{0, 1.41421, 0}, {0, 0, -1.41421}, {-1.41421, 0, 0}}]}

Vertices[ Octahedron ]

{{0, 0, 1.41421}, {1.41421, 0, 0},

{0, 1.41421, 0}, {0, 0, -1.41421},

{-1.41421, 0, 0}, {0, -1.41421, 0}}

Faces[ Octahedron ]

{{1, 2, 3}, {1, 3, 5}, {1, 5, 6},

{1, 6, 2}, {2, б, 4}, {2, 4, 3}, {4, б, 5}, {3,4,5}}

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

Создание графических форм — Shapes

Нередко желательно придать трехмерным объектам определенную форму, например кольца или бублика. Некоторые возможности для этого дают функции под-пакета Shapes. Основной из них является функция Show [Graphics3D [shape] ], которая производит отображение формы со спецификацией shape.

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

  • Cone [r, h, n] — конус с основанием радиуса r и высотой h на основе n-сто-роннего полигона;
  • Cylinder [r, h, n] — цилиндр радиуса r и высотой h на основе и-стороннего полигона;
  • Torus[rl,r2,n,m] — объемное кольцо с внешним и внутренним радиусами rl и г 2 и числом сторон каркаса n и m;
  • Sphere [r, n,m] — сфера радиуса г, составленная из многоугольников с параметрами n и m и числом сторон п(т - 2) + 2;
  • MoebiusStrip [rl, r2, n] — кольцо Мебиуса с радиусами rl и r2, построенное на основе полигона с 2n сторонами;
  • Helix[r,h,m,n] — плоская спираль радиусом г и высотой h c m витками на основе поверхности, разбитой на nxm четырехугольников;
  • DoubleHelix[r,h,m,n] — плоская двойная спираль радиусом r и высотой h с m витками на основе поверхности, разбитой на nxm четырехугольников.

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


Соnе[1, 1, 20]

Cylinder[1, 1, 20]

Helix[l, 0.5, 2, 20]

DoubleHelix[l, 0.5, 2, 20]

MoebiusStrip[1, 0.5, 20]

Sphere[l, 20, 15]

Torus[l, 0.5, 20, 10]

На рис. 14.80 показан пример построения фигуры DoubleHelix без указания ее параметров с помощью функций Show и GraphicsSD.

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

Рис. 14.80. Пример построения фигуры без указания параметров

Рис. 14.81. Построение кольца Мебиуса

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

  • RotateShape [g,phi, theta,psi] — поворот графического объекта на углы phi, theta и psi;
  • TranslateShape [g, {х, у, z} ] — сдвиг графического объекта на расстояния {х,у, z};
  • Af fineShape [g, {scalel, svale2, scaleS} ] — умножение всех координат объекта g на указанные множители.

Рисунок 14.82 иллюстрирует осуществление вращения для кольца Мебиуса. Эффект вращения хорошо заметен, если сравнить положения фигуры на рис. 14.81 и 14.82.

Рис. 14.82. Кольцо Мебиуса после поворота

Функции Show и Graphics3D позволяют строить трехмерные фигуры, которые пересекаются в пространстве. Пример такого построения приведен на рис. 14.83. Нетрудно заметить, что линии пересечения строятся с точностью до одной ячейки — полигона. Поэтому для получения качественных фигур надо увеличивать число полигонов, из которых фигуры синтезируются. Это, однако, увеличивает время построения фигур — оно становится заметным даже при работе на современных компьютерах с процессорами Pentium II и Pentium III.

Рис. 14.83. Фигуры, пересекающиеся в пространстве

В заключение этого раздела отметим, что функция WireFrame [g] дает «каркас» графического объекта, то есть делает все его грани прозрачными. Применение этой функции иллюстрирует пример, показанный на рис. 14.84.

Рис. 14.84. Пример применения функции WireFrame для построения каркаса сферы

 


Top.Mail.Ru