Главная. Учебники по программам для графики и дизайна!! Главная страница сайта.

 

Примитивы, использующие сплайны — Spline

 

Подпакет Spline вместе с уже описанным подпакетом NumericalMath'SplineFit' (сплайновая регрессия) обеспечивает представление данных с помощью сплайна. В подпакете Spline определена единственная функция Spline [points, type], которая создает графический примитив, представляющий сплайн-кривую типа type (Cubic, Bezier или CompoziteBezier — см. описание подпакета NumericalMath'SplineFit').

Среди ее опций важно отметить следующие (как и ранее, приведены значения, используемые по умолчанию): SplineDots->None, SplinePoints->25, Max-Bend->10.0 и SplineDivision->20.0.

Рисунок 14.85 показывает задание массива из пяти точек на плоскости и соединение их отрезками прямых и кубическими сплайн-функциями. Хорошо видна аналогия сплайна с гибкой линейкой.

Сплайн-функции в данном случае применяются в порядке задания точек в списке pts. В этом случае возможно создание замкнутых линий (рис. 14.85 является наглядным примером этого).

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

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

Рис. 14.85. Пример интерполяции пяти точек отрезками прямой и сплайнами

Рис. 14.86. Пример срыва сплайн-интерполяции точек

Рис. 14.87. Построение исходных точек и проходящей через них сплайн-функции

 

Создание поверхностей вращения — SurfaceOfRevolution

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

Рисунок 14.88 дает простой пример построения поверхности, образованной линией cos(x) при изменении х от 0 до 4л, вращающейся вокруг оси xz. Построение задано функцией SurfaceOfRevolution [f, {x, xmin, xmax} ]. В этом случае линия вращается в пределах угла от 0 до 2-я, поэтому поверхность получается круговой.

Рис. 14.88. Фигура, образованная вращением линии cos(x)

Следующий пример показывает ту же фигуру (рис. 14.89) в другом положении. Это достигается сменой угла обзора с помощью опции viewVertical.

Рис. 14.89. Фигура рис. 14.88 в другом положении

Пример применения функции SurfaceOfRevolutibn [ {fx, fy}, {t, tmin, tmax) ] представлен на рис. 14.90. Формируется этакое декоративное яйцо на подставке. Заменив в определении функции Cos [u] на Sin [u], можно получить изображение рюмки.

Рис. 14.90. Построение декоративного яйца на подставке

Рисунок 14.91 демонстрирует возможность построения объемной фигуры с вырезами. Все, что для этого надо, — удачно выбрать диапазон изменения угла вращения. Если он будет от 0 до 2л, то фигура будет сплошной, не содержащей вырезов.

Рис. 14.91. Построение яйца с вырезом

Для управления положением оси вращения служат следующие опции:

Рисунок 14.92 иллюстрирует применение опции RevolutionAxis->{x, у, z }.

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

Рисунок 14.93 показывает задание массива точек с помощью функции Table и фигуру вращения, полученную при использовании функции ListSurfaceOf-Revolution во второй форме.

Рис. 14.92. Управление положением оси вращения

Рис. 14.93. Пример построения фигуры вращения с образующей, заданной массивом точек

 

Что еще есть в пакете расширения Graphics

Помимо уже рассмотренных подпакетов пакет расширения Graphics содержит подпакеты ThreeScript и Common. Подпакет ThreeScript содержит функцию преобразования трехмерных графических объектов в программный код формата 3-Script, например:

<<Graphics 'ThreeScript'

obj = Graphics3D[Polygon[0,0,0, 0,1,0, 0,1,1]]

• GraphicsSD •

ThreeScript[ "object.ts", obj]

object.ts

!!object.ts

% Graphics3D objects

boundingbox

0 0 0

0 1 1

viewpoint

1.3 -2.399999999999999 2.

ambientlight

000

lightsources

1. 0. 1.

1 0 0

1. 1. 1.

0 1 0

0. 1. 1.

0 0 1

polygon

0 0 0

0 1 0

0 1 1

Подпакет Common содержит просто перечень системных символов (точнее, слов), которые приняты во всех подпакетах пакета Graphics. Вот этот список: Horizontal, MaxArrowLength, ScaleFactor, ScaleFunction и Vertical.

 

Что нового мы узнали?

В этом уроке мы научились:

 

Hosted by uCoz
Google Scholar
Web Informer Button Web Informer Button