Нередко желательно придать трехмерным объектам определенную форму, например кольца или бублика. Некоторые возможности для этого дают функции под-пакета 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 для построения каркаса сферы