русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Трехмерные команды пакета plots


Дата добавления: 2015-08-06; просмотров: 2792; Нарушение авторских прав


В пространстве кроме декартовой системы координат используются и другие (см. значения опции coords в табл.3). Наиболее часто применяются цилиндрическая и сферическая системы координат. В пакете plots предусмотрены специальные команды, отображающие графики функций двух независимых переменных в этих системах координат: cylinderplot() и sphereplot().

В цилиндрической системе координат положение точки задается углом поворота q проекции ее радиус-вектора на плоскость xy относительно положительного направления оси x, длиной r этой проекции и значением координаты z точки. Команда cylinderplot() отображает поверхность, заданную либо в виде явной функции, выражающей зависимость координаты r от двух других q и z, либо в параметрическом виде, при котором каждая из координат определяется как функция двух параметров. В случае явного задания функции команда имеет следующий синтаксис:

cylinderplot(r-exp, theta=диапазон, z=диапазон)

Здесь первый аргумент r-exp является выражением от двух переменных theta и z и представляет явный вид задания функции. Для параметрической функции используется другая ее форма, в которой первый аргумент представлен трехэлементным списком, представляющим зависимость трех координат поверхности в цилиндрической системе координат через два параметра, а следующие два аргумента определяют диапазон изменения параметров поверхности:

cylinderplot([r-exp,theta-expr,z-expr], param1=диапазон, param2=диапазон)

Как и во всех графических командах кроме указанных аргументов можно использовать любые опции трехмерной графики. Пример 3 демонстрирует построение поверхности в цилиндрической системе координат.

Замечание.Следует не забывать подключать пакет plots при обращении ко всем командам данного раздела. В наших примерах мы предполагаем, что он подключен.

 



Пример 3. Построение поверхности в цилиндрической системе координат

> # Круговой цилиндр радиуса 1 и высотой 2.

> cylinderplot(1, theta=0..2*Pi, z=-1..1, shading=ZGRAYSCALE);

Пример 4. > # Параметрически заданная поверхность

> cylinderplot([s*t, t, cos(s^2)], t=0..Pi, s=-2..2, shading=ZGRAYSCALE);

Пример 5. > # Спиральный цилиндр высотой 2

> cylinderplot(t, t=0..4*Pi, s=-1..1, shading=ZGRAYSCALE, grid=[50,5]);

Обращаем внимание читателя, что для гладкого отображения спирального цилиндра пришлось установить сетку с пятьюдесятью точками по угловой координате q и пятью точками по линейной координате z.

ЗАДАНИЕ 2. Нарисовать спиральный цилиндр в 2 раза ниже и в 2 раза длиннее.

В сферической системе координат положение точки определяется двумя углами и одним линейным размером. Первый угол q, как и в цилиндрической системе координат, задает угол поворота проекции радиус-вектора точки на плоскость xy. Второй угол – это угол f, который образует радиус-вектор точки с положительным направлением оси z декартовой системы координат. Линейная координата r представляет длину радиус-вектора точки. При работе с командой sphereplot(), как и в случае с командой построения поверхностей, заданных в цилиндрической системе координат, возможно либо явное задание поверхности, либо параметрическое. В первом случае необходимо в качестве первого аргумента передать выражение длины радиус-вектора через угловые координаты и задать их диапазоны изменения, во втором случае следует задать список сферических координат точек поверхности в форме выражений от двух параметров:

sphereplot(r-exp, theta=диапазон, phi=диапазон)

sphereplot([r-exp,theta-expr,phi-expr], param1=диапазон, param2=диапазон)

Команды примера 18 иллюстрирует построение поверхностей в сферической системе координат.

Пример 6. Построение поверхности в сферической системе координат

> # Единичная сфера с центром в начале координат.

> sphereplot(1, theta=0..2*Pi, phi=0..Pi, shading=ZGRAYSCALE, scaling=CONSTRAINED);

ЗАДАНИЕ 3. Нарисовать полушарие.

Пример 7.> # Параметрическая поверхность

> sphereplot([exp(s)+t, cos(s+t), t^2], s=0..2*Pi,t=-2..2,

shading=ZGRAYSCALE,orientation=[80,30],grid=[40,40]);

Как отмечалось при описании опций пространственных команд, Maple позволяет строить поверхности, заданные и в других пространственных системах координат. Единственное, что следует знать и хорошо представлять, – это каким образом определяется в них положение точки. Команда coordplot3d() визуализирует координатные поверхности всех возможных систем координат, используемых в Maple. В примере 8 отображены некоторые из них.

Пример 8. Координатные поверхности пространственных систем координат

> # Цилиндрическая система координат.

> coordplot3d(cylindrical);

Пример 9.> # Сферическая система координат.

> coordplot3d(spherical, style=PATCH, orientation=[0,60],

scaling=CONSTRAINED);

> # Эллипсоидальная система координат.

Пример 10.> coordplot3d(ellipsoidal, grid=[40,40], orientation=[40,60]);

Кривую в пространстве можно задать набором ее точек или как пересечение двух поверхностей. Команда spacecurve() позволяет отобразить пространственную кривую, задаваемую только набором ее точек, причем координаты точек задаются как функции одного параметра (пример 11).

Пример 11. Отображение пространственной кривой

> spacecurve([cos(t), sin(t), t],t=0..4*Pi, color=black, thickness=2,

axes=BOXED, orientation=[15,65]);

Можно построить круговую цилиндрическую поверхность заданного радиуса вдоль пространственной кривой командой tubeplot(). В примере 12 построена такая поверхность вдоль кривой предыдущего примера.

Пример 12. Круговой цилиндр вдоль пространственной кривой

> tubeplot([cos(t),sin(t),t],t=0..4*Pi,radius=1,tubepoints=20,

projection=0.8,orientation=[15,65],shading=ZGREYSCALE);

Опция radius определяет радиус криволинейного кругового цилиндра, опция tubepoints задает количество точек, используемых для построение кругового сечения цилиндра.

Для построения неявно заданных поверхностей следует использовать команду implicitplot3d(), в которой задается уравнение поверхности и диапазоны изменения всех трех ее переменных. Опцией coords можно определять построение неявно заданных поверхностей в разных системах координат.

Пример 13. Отображение неявно заданных поверхностей

> # Декартова система координат

> implicitplot3d(x^3 + y^3 + z^3 + 1 = (x + y + z + 1)^3, x=-2..2,

y=-2..2, z=-2..2, shading=ZGRAYSCALE, axes=BOXED);

Пример 14.> # Сферическая система координат

> implicitplot3d(r^2 = (1.3)^x * sin(y), x=-1..2*Pi, y=0..Pi, r=0.1..5,

coords=spherical,orientation=[145,95]);

Для создания надписей в трехмерном пространстве предназначена команда 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, значение которой определяет вид отображаемого вектора.

Пример 17. Построение векторных полей

> gradplot3d((x^2+y^2+z^2+1)^(1/2),x=-2..2,y=-2..2,z=-2..2,

color=black, arrows=SLIM, axes=FRAME, orientation=[41,44]);

> fieldplot3d([2*x,2*y,1],x=-1..1,y=-1..1,z=-1..1,

color=black,arrows=SLIM,axes=FRAME,orientation=[35,44]);

И последняя команда, на которой мы остановимся, это команда отображения плоского многоугольника в пространстве, который задан списком своих вершин. Для этих целей в пакет plots включена команда polygonplot3d(), синтаксис которой полностью соответствует синтаксису ее двумерного аналога polygonplot(). Единственное отличие связано с заданием точек: в трехмерной команде каждая точка представляется трехэлементным списком своих координат, причем точки не обязательно должны лежать в одной плоскости.

Пример 18. Отображение многоугольника в пространстве

> polygonplot3d([[0,1,1],[1,-1,2],[3,0,5] ,[1,1,1]],

axes=boxed,orientation=[120,80]);

ЗАДАНИЕ 5. Нарисовать произвольный многоугольник в пространстве.

 





<== предыдущая лекция | следующая лекция ==>
Команда plot3d() | Трехмерные графические структуры Maple


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.044 сек.