Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
Задание параметра scaling=unconstrained означает отказ от равного масштаба по осям. График при этом увеличивается в размерах, но становятся заметны его искажения по осям координат. В итоге он тор превращается в толстую сплющенную трубу с эллиптическим сечением (рис. 8.14).
Рис. 8.14. Тор, построенный с применением значения параметра scaling=unconstrained
Весьма важным является учет углов, под которыми наблюдается трехмерная поверхность или объект. К примеру, построение рис. 8.14 неудачно в том плане, что оно не показывает наличия у тора дырки. Простейший и очень удобный способ изменить угол обзора заключается во вращении фигуры на рисунке мышью при нажатой левой кнопке. При этом можно повернуть фигуру так, что ее геометрические особенности будут отчетливо видны. Попробуйте проделать это.
В Maple есть способ явно задать углы обзора с помощью параметра orientation=[theta, phi], где theta и phi — углы, через которые задаются параметрические уравнения трехмерной фигуры или поверхности. Рисунок 8.15 дает пример такого задания фигуры, которую можно назвать «квадратным» тором.
Рис. 8.15. «Квадратный» тор, представленный под заданными углами обзора
Обратите внимание, что значения заданных углов обзора повторяются в полях углов на контекстной панели инструментов. Разумеется, последние будут меняться, если начать вращать фигуру на рисунке мышью.
8.3.7. Занимательные фигуры — трехмерные графики
Параметрическое задание уравнений поверхности открывает почти неисчерпаемые возможности построения занимательных и сложных фигур самого различного вида. Приведем пару построений такого рода.
На рис. 8.16 показан тор, сечение которого имеет вид сплюснутой шестиконечной звезды. Вырез в фигуре дает прекрасный обзор ее внутренней поверхности, а цветная функциональная окраска и линии сетки, построенные с применением алгоритма удаления невидимых линий, дают весьма реалистичный вид фигуры. Замените параметр scaling=unconstrained на scaling=constrained, и вы получите тор с неискаженным сечением.
Рис. 8 16. Тор с сечением в виде шестиконечной звезды
На рис. 8.17 показан еще один тор. На этот раз он круглого сечения, но сверху к снизу имеет вид пятиконечной звезды.
Рис. 8.17. Тор круглого сечения в виде пятиконечной звезды
Быстрое (не в смысле ускорения самого построения, а лишь в смысле более быстрою задания построения графиков) построение трехмерных графиков обеспечивает функция smartplot3d.
8.3.8. Построение ряда трехмерных фигур на одном графике
Функция plot3d позволяет строить одновременно несколько фигур, пересекающихся в пространстве. Для этого достаточно вместо описания одной поверхности задать список описаний ряда поверхностей. При этом функция plot3d обладает уникальной возможностью — автоматически вычисляет точки пересечения фигур и показывает только видимые части поверхностей. Это создает изображения, выглядящие вполне естественно. Пример такого построения для двух функций показан на рис. 8.18.
Рис. 8.18. Пример построения двух трехмерных фигур, пересекающихся в пространстве
8.4. Работа с графическими структурами
8.4.1. Работа с графическими структурами двумерной графики
Функции PLOT и PLOT3D (с именами, набранными большими буквами) позволяют создавать графические структуры, содержащие ряд графических объектов s1, s2, s3 и т.д. Каждый объект может представлять собой точку или фигуру, полигон, надпись и т.д., позиционированную с высокой точностью в заданной системе координат. Координатные оси также относятся к графическим объектам. Важно отметить, что функции PLOT и PLOT3D одновременно являются данными, описывающими графики. Их можно записывать в виде файлов и (после открытия файлов) представлять в виде графиков. Особые свойства этих функций подчеркиваются их записью прописными буквами.
Графическая структура двумерной графики задается в виде
PLOT(s1, s2, s3,...,о);
где s1, s2, s3 … — графические объекты (или элементарные структуры — примитивы), о — общие для структуры параметры).
Основными объектами являются:
• POINTS([x1,y1],[x2,y2],…[xn,yn]) — построение точек, заданных их координатами;
• CURVES([[x11,y11],…[x1n,y1n]], [[x21,y21],…[x2n,y2n]],… [[xm1,ym1],…[xmn,ymn]]) — построение кривых по точкам;
• POLYGONS([[x11,у11],…[х1n,y1n]], [[х21,у21],…[х2n,у2n]],…[[xm1,ym1],…[xmn,ymn]]) — построение замкнутой области-полигона (многоугольника, так как последняя точка должна совпадать с первой);
• ТЕХТ([х,у],`string`,horizontal,vertical) — вывод текстовой надписи `string`, позиционированной в точке с координатами [х,у], с горизонтальной или вертикальной ориентацией. Параметр horizontal может иметь значения ALIGNLEFT или ALIGNRIGHT, указывающие, в какую сторону (влево или вправо) идет надпись. Аналогично, параметр vertical может иметь значения ALIGNABOVE или ALIGNBELOW, указывающие в каком направлении (вверх или вниз) идет надпись.
При задании графических объектов (структур) s1, s2, s3 и т.д. можно использовать описанные выше параметры и параметры, например, для задания стиля построения - STYLE (POINT, LINE, PATCH, PATCHNOGRID); толщины линий — THICKNESS (кроме координатных осей); символа, которым строятся точки кривых — SYMBOL (BOX, CROSS, CIRCLE, POINT, DIAMOND и DEFAULT); стиля линий — LINESTYLE; цвета — COLOR (например, COLOR(HUE,0) для закраски непрерывной области), типа шрифта — FONT; вывода титульной надписи — TITLE(string); имени объекта — NAME(string); стиля координатных осей — AXESSTYLE (BOX, FRAME, NORMAL, NONE или DEFAULT) и т.д.
Следует отметить, что параметры в графических структурах задаются несколько иначе — с помощью круглых скобок. Например, для задания шрифта TIMES ROMAN с размером символов 16 пунктов надо записать FONT(TIMES, ROMAN, 16), для задания стиля координатных осей в виде прямоугольника — AXES-STYLE (BOX) и т.д.
На рис. 8.19 показан пример графических построений при использовании основных структур двумерной графики.
Рис. 8.19. Пример использования двумерных структур
Как видно из этого примера, графическая двумерная структура позволяет задавать практически любые двумерные графики и текстовые надписи в пределах одного рисунка.
8.4.2. Работа с графическими структурами трехмерной графики
Графические структуры трехмерной графики строятся функцией PLOT3D:
PLOT3D(s1,s2,s3,...,о)
В качестве элементарных графических структур можно использовать уже описанные выше объекты POINTS, CURVES, POLYGONS и TEXT — разумеется, с добавлением в списки параметров третьей координаты. Пример такого построения дан на рис. 8.20.
Рис 8.20 Пример создания структуры трехмерной графики
Кроме того, могут использоваться некоторые специальные трехмерные структуры. Одна из них — структура GRID:
GRID(a..b,c..d,listlist) — задание поверхности над участком координатной плоскости, ограниченной отрезками [a, b] и [с, d], по данным, заданным переменной-списком listlist:=[[z11,…z1n], [z21,…z2n],…[zm1…zmn]] с размерностью n×m. Заметим, что эта переменная задает координату z для равноотстоящих точек поверхности.
На рис. 8.21 показан пример создания структуры трехмерной графики на базе GRID. Изображение представляет собой линии, соединяющие заданные точки.
Рис. 8.21. Пример задания графической структуры типа GRID
Еще один тип трехмерной графической структуры — это MESH:
MESH(listlist) — задание трехмерной поверхности по данным списочной переменной listlist, содержащей полные координаты всех точек поверхности (возможно задание последней при неравномерной сетке).
Обычная форма задания этой структуры следующая:
MESH([[[x11, y11, z11], ... [x1n, y1n, z1n]], [[x21, у21, z21], ... [x2n, y2n, z2n]], ... [[xm1, ym1, zm1] ... [xmn, ymn, zmn}]])
Пример задания такой структуры представлен на рис. 8.22.
Рис. 8.22. Пример задания графической структуры типа MESH
Описанные структуры могут использоваться и в программных модулях. Много таких примеров описано в книгах, поставляемых с системой Maple.
8.5. Применение графики пакета plots
8.5.1. Пакет plots и его возможности
Пакет plots содержит почти полсотни графических функций, существенно расширяющих возможности построения двумерных и трехмерных графиков в Maple:
> with(plots);
Warning, the name changecoords has been redefined
[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, graphplot3d, implicitplot, implicitplot3d, inequal, interactive, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot]Ввиду важности этого пакета отметим назначение всех его функций: