Лекция № 6 Пространственная графика в Maple.
6.1 Команда plot3d().
6.2 Меню для работы с трёхмерной графикой.
6.3 Трёхмерные команды пакета plots.
6.4 Трёхмерные графические структуры Maple.
6.5 Трёхмерные команды пакета plottools.
Команда plot3d()
Функцию двух переменных можно отобразить как поверхность в трёхмерном пространстве, две оси которого соответствуют значениям двух независимых переменных, а по третьей оси откладываются значения функции. В Maple подобную процедуру визуализации функции двух переменных выполняет команда plot3d(), которая, как и команда отображения графика функции одной переменной plot3d(), расположена в стандартной библиотеке, а поэтому доступна пользователю в любой момент. Эта команда позволяет отображать график функции, заданных как в явном виде, так и в параметрическом виде.
Синтаксис команды plot3d() практически полностью соответствует синтаксису команды plot() с небольшим очевидным дополнением, связанным с наличием второй дополнительной переменной:
plot3d(expr,x=a..b,y=c..d,опции)
Здесь параметр expr представляет алгебраическое выражение или обращение к пользовательской функции двух переменных с диапазонами изменения, определяемыми вторым и третьим параметром, в которых вместо x и y следует задавать имена переменных. Пользовательскую функцию можно определять непосредственно в команде, но в этом случае задавать имена переменных не надо:
plot3d((x,t)->cos(x)*sin(t),-1..1,-1..1);
Отметим, что и выражение, и функция, представляющие параметр expr, не должны содержать неопределённых символьных переменных, кроме двух упомянутых независимых переменных. Границы диапазонов представляются числами, хотя для второй независимой переменной они могут быть выражениями, зависящими от первой переменной. В этом случае график функции двух переменных отображается не на прямоугольной области, а на четырёх угольной, у которой две противоположенные границы являются криволинейными. Например, следующая команда:
plot3d(cos(x)*sin(t),x=-1..1,t=-5..x^2);
отображает график функции на области, у которой одна из границ представлена параболой.
Опции для команд трёхмерной графики определяются так же, как и для команд графического отображения на плоскости, в виде уравнения, в левой части которого стоит имя опции, а в правой её значение. Многие опции команд пространственной графики полностью соответствуют своим двухмерным аналогам, правда в некоторых опциях добавлена дополнительная функциональность (смотри, например, опцию color), но есть и специальные опции, отражающие специфику пространственной графики. В таблице ниже перечислены все опции с их кратким описанием и возможными значениями.
Опции команд трёхмерной графики
Опция | Описание |
ambientlight | Задаёт цвет внешнего источника интенсивностями его красной, зелёной и синей составляющих, представленными трёхэлементным списком вещественных чисел из интервала [0,1].Эта опция имеет значение при определении пользователем собственной схемы освещённости поверхности |
axes | Определяет тип отображаемых осей координат. Эта опция может принимать следующие значения: NORMAL - обычные оси координат, пересекающиеся в точке (0,0,0);BOXED- поверхность заключена в охватывающий параллелепипед с нанесёнными шкалами по трём граням; FRAME - три оси отображаются по внешним граням охватывающего параллелепипеда; NONE - оси не отображаются |
axesfont | Задаёт шрифт для надписей под засечками вдоль осей координат. Значение этой опции аналогично значению опции font |
color | Задаёт цвет отображаемой поверхности в случае её закрашивания или цвет линий сетки в случае отображения поверхности в виде каркаса или линий уровня. В качестве значения этой опции может выступать одно из зарезервированных значений цвета в Maple: aquamarine, black, blue, navy, coral, cyan, brown, gold, green, gray, grey, knaki, magenta, maroon, orange, pink, plum, red, sienna, tan, turquoise, violet, wheat, white и yellow. Можно также определить и собственный цвет, соответствующий смешению заданных частей красного, зелёного и синего цветов. Это осуществляется с помощью следующей команды macro(palegreen=COLOR(RGB,.5607,.7372,.5607)), где palegreen имя константы нового цвета, в котором красный составляет 0.5607 части, зелёный 0.7372 и синий 0.5607. Задание значения в форме выражения, содержащего две независимые переменные, определяет цвет в каждой точке поверхности по цветовой схеме HUE. Если цвет определяется с помощью процедуры, то она должна иметь два аргумента и возвращать значение цвета |
contours | Определяет количество линий уровня при отображении их на поверхности или список значений отображаемых линий уровня. Значение по умолчанию равно 10 |
coords | По умолчанию при выводе как явно заданной функции, так и параметрически заданной функции используется декартовая система координат (cartesian), т. е. задаваемое уравнение кривой рассматривается именно в этой системе координат. Данная опция меняет тип системы координат. Возможные значения: bipolarcylindrical, bisherical, cardiodal, cardioidcylindrical, casscylindrical, confocalellip, cofocalparab, conical, cylindrical, ellcylindrical, ellipsoidal, hypercylindrical, invcasscylindrical, invellcylindrical, invoblspheroidal, invprospheroidal, logcoshcylindrical, logcylindrical, maxwellcylindrical, oblatespheroidal, paraboloidal, paracylindrical, prolatespheroidal, rosecylindrical, sixsphere, spherical, tangentcylindrical, tangentsphere и toroidal, описание которых можно получить в справочной системе Maple с помощью команды?coords |
filled | Установка значения этой опции равным true приводит к тому, что область, ограниченная поверхностью и плоскостью xy, отображается как твёрдое непрозрачное тело и закрашивается в соответствии с используемой цветовой схемой |
font | Задаёт шрифт для вывода текста а рисунке. Значение опции задаётся в виде списка [семейство, стиль, размер]. Параметр семейство задаёт гарнитуру шрифта: TIMES, COURIER, HELVETICA или SYMBOL. Параметр стиль определяет стиль шрифта: для гарнитуры TIMES возможны значения ROMAN, BOLD, ITALIC или BOLDITALIC, для гарнитур COURIER и HELVETICA стиль можно опустить, или задать BOLD, OBLIQUE или BOLDOBLIQUE, для шрифта SYMBOL стиль не задаётся. Последний параметр задаёт размер шрифта в пунктах (points) (один пункт приблизительно равен 1/72 дюйма) |
grid | Эта опция определяет прямоугольную равномерную сетку значений независимых переменных отображаемой функции, на которой вычисляются её значения для построения поверхности и задаётся в виде двухэлементного списка [m,n], в котором каждый элемент является целым числом, определяющим количество точек по соответствующей координате. По умлчанию используется сетка [25,25] |
gridstyle | Задаёт тип отображаемой сетки: составленной из прямоугольников или треугольников на основании вычисленных её значений в соответствии с установками, определяемыми опцией grid. Она может принимать одно из двух значений RECTANGULAR и TRIANGULAR |
labels | Задание названий осей координат в виде списка [x,y,z]. Параметры x, y и z задаются в виде строк и соответствуют отображаемым названиям трёх осей декартовой системы координат. По умолчанию оси не подписываются |
labeldirections | Эта опция определят направление отображения названия осей и задаётся в виде списка [x,y,z], элементы которого могут принимать одно из двух значений HORISONTAL или VERTICAL |
labelfont | Задаёт шрифт, которым отображаются названия осей координат. Значение этой опции аналогично значению опции font |
light | Эта опция определяет расположение и цвет направленного источника света при задании пользовательской схемы подсветки. Её значения выдаются в виде списка [phi,theta,r,g,b], элементы которого имеют следующий смысл: phi и theta определяют углы направления, из которого исходит направленный свет (задаются в сферической системе координат), а r, g, b задают числовые интенсивности красной, зелёной и синей составляющих цвета источника |
lightmodel | Эта опция позволяет выбрать одну из предопределённых схем подсветки и может принимать следующие значения: 'none' (нет подсветки), 'light1', 'light2', 'light3' или 'light4' |
linestyle | Определяет тип линии на поверхности. Значением этой опции является целое число n. При n=0 или 1линии отображаются как сплошные, значение, равное 2, соответствует отображению линии точками, 3 - пунктиром и 4 - штрих пунктиром |
numpoints | Определяет минимальное количество n вычисляемых точек, по которым строится поверхность (значение по умолчанию равно 625=25^2). Эта опция перекрывает задание сетки опцией grid, определяя её новые значения по осям независимых переменных, равными равномерно распределённым sqrt(n) точкам в диапазонах изменения независимых переменных |
orientation | Задаёт углы в сферической системе координат направления, из которого пользователь смотрит на отображаемую поверхность:[theta,phi]. Углы задаются в градусах и по умолчанию равны [45,45] |
projection | Задаёт проекцию, в которой отображается поверхность. Значением этой опции может быть целое число r из диапазона [0,1], причём 0 соответствует широкоугольной перспективе, 1 - ортогональной проекции, промежуточные значения разным типам перспектив. Можно использовать три зарезервированных ключевых слова: 'FISHEYE' для широкоугольной перспективы (r=0), 'NORMAL' для перспективной проекции с параметром r=0.5 и 'ORTHOGONAL' для ортогональной проекции (r=1) |
scaling | Задаёт масштаб, в котором отображается поверхность. Если значение данной опции равно CONSTRAINED, то это соответствует заданию абсолютных значений по осям координат, т. е. одна единица измерения по оси независимой переменной равна одной единице измерения по оси значений функции. Значение по умолчанию равно UNCONSTRAINED, и это соответствует тому, что оси растягиваются таким образом, чтобы их размеры соответствовали размерам графического окна вывода |
shading | Определяет. какая схема закрашивания применяется при отображении поверхности. Допустимые значения: XYZ (цвет точки поверхности зависит от значений трёх её координат), XY (цвет точки поверхности зависит от значений её двух независимых координат), Z (цвет точки поверхности зависит от значения функции: минимальное представляется синим цветом, максимальное - красным, остальные оттенками при переходе от синего к красному), ZGRAYSCALE (цвет точки поверхности зависит от значения функции: минимальное представляется чёрным цветом, максимально - бледно-серым, остальные оттенками при переходе от чёрного к бледно-серому), ZHUE (цвет точки поверхности зависит от значения функции: от минимального сиреневого через синий, зелёный и жёлтый к максимальному красному) и NONE (поверхность не закрашена) |
style | Определяет как будет отображаться поверхность. Допустимые значения: POINT (точкам. представляющими значения функции на сетке), HIDDEN (каркасная модель с удалением невидимых линий), PATCH (закрашенная поверхность с линиями сетки), WIREFRAME или LINE (каркасная модель без удаления невидимых линий), CONTOUR (линиями уровня), PATCHNOGRID (закрашенная поверхность без линии сетки), PATCHCONTOUR (закрашенная поверхность с линиями уровня) |
symbol | Определяет тип символа, которым помечаются точки поверхности функции при опции style=POINT. Может принимать следующие значения: BOX для "квадратика", CROSS для +, CIRCLE для "кружочка", POINT для "точки" и DIAMOND для "ромбика" |
symbolsize | Задаёт размер символа в пунктах. Его значением может быть любое натуральное число. По умолчанию используются символы размером 10 пунктов. Действие этой опции не распространяется на символ точка, задаваемый опцией symbol=POINT |
thickness | Задаёт толщину линий на поверхности. Значение является целым числом и изменяется от 0 до 3, соответствуя изменению толщины линий от самой тонкой до самой жирной |
tickmarks | Определяет число точек, не менее которого должно быть помечено по горизонтальной и вертикальной оси координат. Значение задаётся в виде списка [l,n,m] |
title | Определяет строку, которая выводится как заголовок рисунка. По умолчанию заголовок не выводится. В строке можно использовать специальные комбинации символов. Например,\n осуществляет перевод на новую строку, формируя тем самым многострочный заголовок |
titlefont | Определяет шрифт для заголовка рисунка. Значение этой опции аналогично значению опции font |
view | Определяет минимальное и максимальное значения координаты z, между которыми отображается поверхность, а также диапазоны изменения независимых координат в виде [xmin..xmax, ymin..ymax, zmin..zmax]. По умолчанию отображается вся поверхность без обрезания в пределах заданных диапазонов изменения независимых переменных в команде plot3d() |
Как видно из описания команды plot3d() и её опций, работа с ней интуитивно ясна и проста. Например, для отображения графика функции z=cos(x)y^2 с заголовком и значениями опций по умолчанию следует выполнить команду:
По умолчанию поверхность закрашивается в соответствии с цветовой схемой XYZ, которая выбирает цвет точки поверхности в зависимости от значений трёх её координат.
Можно отобразить ту же поверхность в виде каркасной модели с удалёнными невидимыми линиями и явно заданным направлением взгляда на неё:
Командой plot3d() можно отображать параметрически заданные поверхности. Только надо помнить, что для параметризации трёхмерной поверхности следует использовать два параметра, т. е. задать три координаты точек поверхности как функции или выражения двух переменных. Синтаксис команды plot3d() в этом случае будет иметь следующий вид:
plot3d ([x-expr,y-expr,z-expr], диапазон-парам1, диапазон-парам2, опции)
Рисунок ниже иллюстрирует отображение параметрически заданной поверхности в декартовой системе координат
Для улучшения вида отображаемой поверхности явно задана сетка точек, на которой вычисляются значения параметрически заданной функции поверхности.