Дополнительные функции трехмерной графики
Дополнительные функции трехмерной графики включены в пакет 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="Векторное поле"); |
![]() |
Покажем использование функций 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="Поверхность"); |
![]() |
![]() |
![]() |
В этом примере двухмерный массив 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="Поверхность косинуса"); |
![]() |
![]() |
![]() |
Примеры использования функции 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="Улитка"); |
![]() |
![]() |