В пространстве кроме декартовой системы координат используются и другие (см. значения опции coords в табл.3). Наиболее часто применяются цилиндрическая и сферическая системы координат. В пакете plots предусмотрены специальные команды, отображающие графики функций двух независимых переменных в этих системах координат: cylinderplot() и sphereplot().
В цилиндрической системе координат положение точки задается углом поворота q проекции ее радиус-вектора на плоскость xy относительно положительного направления оси x, длиной r этой проекции и значением координаты z точки. Команда cylinderplot() отображает поверхность, заданную либо в виде явной функции, выражающей зависимость координаты r от двух других q и z, либо в параметрическом виде, при котором каждая из координат определяется как функция двух параметров. В случае явного задания функции команда имеет следующий синтаксис:
cylinderplot(r-exp, theta=диапазон, z=диапазон)
Здесь первый аргумент r-exp является выражением от двух переменных theta и z и представляет явный вид задания функции. Для параметрической функции используется другая ее форма, в которой первый аргумент представлен трехэлементным списком, представляющим зависимость трех координат поверхности в цилиндрической системе координат через два параметра, а следующие два аргумента определяют диапазон изменения параметров поверхности:
Как и во всех графических командах кроме указанных аргументов можно использовать любые опции трехмерной графики. Пример 3 демонстрирует построение поверхности в цилиндрической системе координат.
Замечание.Следует не забывать подключать пакет plots при обращении ко всем командам данного раздела. В наших примерах мы предполагаем, что он подключен.
Пример 3. Построение поверхности в цилиндрической системе координат
Обращаем внимание читателя, что для гладкого отображения спирального цилиндра пришлось установить сетку с пятьюдесятью точками по угловой координате q и пятью точками по линейной координате z.
ЗАДАНИЕ 2. Нарисовать спиральный цилиндр в 2 раза ниже и в 2 раза длиннее.
В сферической системе координат положение точки определяется двумя углами и одним линейным размером. Первый угол q, как и в цилиндрической системе координат, задает угол поворота проекции радиус-вектора точки на плоскость xy. Второй угол – это угол f, который образует радиус-вектор точки с положительным направлением оси z декартовой системы координат. Линейная координата r представляет длину радиус-вектора точки. При работе с командой sphereplot(), как и в случае с командой построения поверхностей, заданных в цилиндрической системе координат, возможно либо явное задание поверхности, либо параметрическое. В первом случае необходимо в качестве первого аргумента передать выражение длины радиус-вектора через угловые координаты и задать их диапазоны изменения, во втором случае следует задать список сферических координат точек поверхности в форме выражений от двух параметров:
Как отмечалось при описании опций пространственных команд, Maple позволяет строить поверхности, заданные и в других пространственных системах координат. Единственное, что следует знать и хорошо представлять, – это каким образом определяется в них положение точки. Команда coordplot3d() визуализирует координатные поверхности всех возможных систем координат, используемых в Maple. В примере 8 отображены некоторые из них.
Пример 8. Координатные поверхности пространственных систем координат
Пример 10.> coordplot3d(ellipsoidal, grid=[40,40], orientation=[40,60]);
Кривую в пространстве можно задать набором ее точек или как пересечение двух поверхностей. Команда spacecurve() позволяет отобразить пространственную кривую, задаваемую только набором ее точек, причем координаты точек задаются как функции одного параметра (пример 11).
Можно построить круговую цилиндрическую поверхность заданного радиуса вдоль пространственной кривой командой tubeplot(). В примере 12 построена такая поверхность вдоль кривой предыдущего примера.
Пример 12. Круговой цилиндр вдоль пространственной кривой
Опция radius определяет радиус криволинейного кругового цилиндра, опция tubepoints задает количество точек, используемых для построение кругового сечения цилиндра.
Для построения неявно заданных поверхностей следует использовать команду implicitplot3d(), в которой задается уравнение поверхности и диапазоны изменения всех трех ее переменных. Опцией coords можно определять построение неявно заданных поверхностей в разных системах координат.
Пример 13. Отображение неявно заданных поверхностей
> # Декартова система координат
> implicitplot3d(x^3 + y^3 + z^3 + 1 = (x + y + z + 1)^3, x=-2..2,
Для создания надписей в трехмерном пространстве предназначена команда textplot3d(), синтаксис которой полностью соответствует аналогичной команде для отображения текстовых строк на плоскости с единственным исключением, связанным с заданием текстовых точек: их координаты представляются тремя числовыми значениями. Допустимая опция align выравнивания текста относительно точки имеет те же самые значения с тем же самым смыслом, что и двумерный аналог этой команды.
Пример 15. Отображение текста в пространстве
> textplot3d([[1,2,3,"first point"],
[3,2,1,"second point"]],axes=BOXED, color=black,
align={LEFT,BELOW}, labels=["x","y","z"]);
Трехмерная команда contourplot3d() так же, как и ее двумерный аналог contourplot(), отображает линии уровня поверхности и имеет такой же синтаксис. Первое отличие заключается в том, что двумерная команда рисует линии уровня на плоскости, тогда как трехмерная отображает их в пространстве в плоскостях z=const, где постоянная const равняется значению, принимаемому функцией на соответствующей линии уровня. Второе отличие связано с реализацией: двумерная команда написана на интерпретируемом языке Maple, а трехмерная на компилируемом языке С, поэтому команда contourplot3d() выполняется быстрее команды contourplot().
Пример 16. Линии уровня на поверхности
> contourplot3d(sin(x)*sin(y), x=-3..3, y=-3..3,
grid=[40,40], contours=16, axes=FRAME,
orientation=[30,60], color=black);
Две команды связаны с отображением векторных полей в пространстве. Команда gradplot3d() отображает поле градиента выражения, зависящего от трех переменных, в параллелепипеде, определяемом диапазонами их изменения. Команда fieldplot3d() строит в параллелепипеде, определяемом диапазонами изменения трех переменных, векторного поля с компонентами, зависящими от трех заданных переменных. В обеих этих командах можно использовать опцию arrows, значение которой определяет вид отображаемого вектора.
И последняя команда, на которой мы остановимся, это команда отображения плоского многоугольника в пространстве, который задан списком своих вершин. Для этих целей в пакет plots включена команда polygonplot3d(), синтаксис которой полностью соответствует синтаксису ее двумерного аналога polygonplot(). Единственное отличие связано с заданием точек: в трехмерной команде каждая точка представляется трехэлементным списком своих координат, причем точки не обязательно должны лежать в одной плоскости.
Пример 18. Отображение многоугольника в пространстве