Дополнительные функции трехмерной графики 

Дополнительные функции трехмерной графики включены в пакет plots. 

Функция 

Назначение 

contourplot3d 

Строит линии равного уровня. Идентична функции plot3d с параметром style=contour 

gradplot3d 

Строит трехмерное поле градиента 

fieldplot3d 

Строит трехмерное векторное поле 

implicitplot3d 

Строит неявно заданную функцию трех переменных 

matrixplot 

Строит поверхность, заданную таблицей 

cylinderplot 

Строит поверхность, заданную в цилиндрических координатах 

sphereplot 

Строит поверхность, заданную в сферических координатах 

spacecurve 

Строит кривую в трехмерном пространстве. Кривая должна быть задана параметрически 

surfdata 

Строит поверхность, проходящую через заданные точки 

tuberplot 

Строит поверхность, определяемую параметрически  заданной пространственной кривой и радиусом 

display3d 

 

Выводит трехмерные графические структуры в общих осях координат 

Приведем примеры использования некоторых дополнительных функций трехмерной графики. 

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

> with(plots):
r := sqrt(x^2+y^2+z^2):
fld := [x/r, y/r, z/r]:
fieldplot3d(fld, x=0..1, y=0..1, z=0..1, arrows=`3-D`, grid=[5, 5, 5], title="Векторное поле");
 

Plot_2d
 

Покажем использование функций  matrixplot и surfdata на следующем примере. 

Заполним массив A размером 8х8 случайными числами и построим трехмерную гистограмму и поверхность. 

> rnd:=rand(1..100):
A:=array(1..8,1..8,[]):
for i from 1 to 8 do for j from 1 to 8 do A[i,j]:= rnd():end do:end do:
print(A);
matrixplot(A,heights=histogram,axes=frame,title="Гистограмма");
S:=[seq([seq([i,j,A[i,j]],j=1..8)],i=1..8)]:
surfdata(S,axes=frame,title="Поверхность");
 

 

 

Matrix(%id = 211246924)
Plot_2d
Plot_2d
 

В этом примере двухмерный массив A заполняется посредством двух вложенных циклов for, а функция rand(1..100) создает процедуру rnd(), генерирующую случайные числа в диапазоне от 1 до 100. Функция matrixplot с параметром heights=histogram строит трехмерную гистограмму, а surfdata – поверхность по точкам, находящимся в списке S. 

Примеры использования функции cylinderplot. 

> cylinderplot(1,theta=0..2*Pi,z=-1..1, axes=frame,title="Поверхность цилиндра");
cylinderplot(z,theta=0..2*Pi,z=-1..1, axes=frame,title="Коническая поверхность");
cylinderplot([cos(z),-cos(z)],theta =0..Pi,z=-2..2,title="Поверхность косинуса");
 

 

 

Plot_2d
Plot_2d
Plot_2d
 

Примеры использования функции sphereplot. 

> sphereplot(1,theta=0..2*Pi,phi=0..Pi,axes=frame,title="Сфера");
sphereplot((1.3)^z*sin(theta),z=-1..2*Pi,theta=0..Pi, style=patch,color=z,axes=frame,title="Улитка");
 

 

Plot_2d
Plot_2d