15.2.2 Трёхмерные графики
Функция mesh строит графики поверхностей в виде сетки. Например,
tx = ty = linspace (-8, 8, 41)';
[xx, yy] = meshgrid (tx, ty);
r = sqrt (xx .^ 2 + yy .^ 2) + eps;
tz = sin (r) ./ r;
mesh (tx, ty, tz);
xlabel ("tx");
ylabel ("ty");
zlabel ("tz");
title ("3-D Sombrero plot"); строит знакомый график «сомбреро», показанный на рисунке 15.5. Обратите внимание на использование функции meshgrid для создания матриц координат X и Y, используемых при построении графика данных Z. Функция ndgrid похожа на meshgrid, но работает с N-мерными матрицами.
Рисунок 15.5: График сетки.
Функция meshc похожа на mesh, но также строит график линий уровня поверхности.
Функция plot3 отображает произвольные трёхмерные данные, не требуя, чтобы они образовывали поверхность. Например,
t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));
plot3 (r.*sin (t), r.*cos (t), z);
xlabel ("r.*sin (t)");
ylabel ("r.*cos (t)");
zlabel ("z");
title ("plot3 display of 3-D helix"); отображает спираль в трёх измерениях, показанную на рисунке 15.6.
Рисунок 15.6: Трёхмерная спираль.
Наконец, функция view изменяет точку обзора для трёхмерных графиков.
-
: mesh
(x, y, z) -
: mesh
(z) -
: mesh
(…, c) -
: mesh
(…, prop, val, …) -
: mesh
(hax, …) -
:
h =mesh(…) -
Построить трёхмерный каркасный график сетки.
Каркасная сетка строится с помощью прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом работы
meshgridна двумерной прямоугольной области в плоскости x-y. z определяет высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Цвет сетки вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Для управления внешним видом используйте
caxisи/или измените цветовую карту.При необходимости цвет сетки можно задать независимо от z, указав матрицу цветов c.
Все пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного объекта поверхности.
См. также: ezmesh, meshc, meshz, trimesh, contour, surf, surface, meshgrid, hidden, shading, colormap, caxis.
-
: meshc
(x, y, z) -
: meshc
(z) -
: meshc
(…, c) -
: meshc
(…, prop, val, …) -
: meshc
(hax, …) -
:
h =meshc(…) -
Построить трёхмерный каркасный график сетки с линиями уровня под ней.
Каркасная сетка строится с помощью прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом работы
meshgridна двумерной прямоугольной области в плоскости x-y. z определяет высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Цвет сетки вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Для управления внешним видом используйте
caxisи/или измените цветовую карту.При необходимости цвет сетки можно задать независимо от z, указав матрицу цветов c.
Все пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это вектор из двух элементов с графическими дескрипторами созданного объекта поверхности и графика линий уровня.
См. также: ezmeshc, mesh, meshz, contour, surfc, surface, meshgrid, hidden, shading, colormap, caxis.
-
: meshz
(x, y, z) -
: meshz
(z) -
: meshz
(…, c) -
: meshz
(…, prop, val, …) -
: meshz
(hax, …) -
:
h =meshz(…) -
Построить трёхмерный каркасный график сетки с окружающей её занавесью.
Каркасная сетка строится с помощью прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом работы
meshgridна двумерной прямоугольной области в плоскости x-y. z определяет высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Цвет сетки вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Для управления внешним видом используйте
caxisи/или измените цветовую карту.При необходимости цвет сетки можно задать независимо от z, указав матрицу цветов c.
Все пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного объекта поверхности.
См. также: mesh, meshc, contour, surf, surface, waterfall, meshgrid, hidden, shading, colormap, caxis.
-
Управление удалением скрытых линий сетки.
При вызове без аргументов состояние удаления скрытых линий переключается.
При вызове с одним из режимов
"on"или"off"состояние устанавливается соответствующим образом.Необязательный выходной аргумент mode содержит текущее состояние.
Удаление скрытых линий определяет, какие графические объекты за графиком сетки видны. По умолчанию сетка непрозрачна, и линии за ней не видны. Если удаление скрытых линий отключено, объекты за сеткой видны сквозь её грани (отверстия), хотя линии сетки остаются непрозрачными.
См. также: mesh, meshc, meshz, ezmesh, ezmeshc, trimesh, waterfall.
-
: surf
(x, y, z) -
: surf
(z) -
: surf
(…, c) -
: surf
(…, prop, val, …) -
: surf
(hax, …) -
:
h =surf(…) -
Построить трёхмерную поверхность в виде сетки.
Поверхность строится с помощью закрашенных прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом работы
meshgridна двумерной прямоугольной области в плоскости x-y. z определяет высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Цвет поверхности вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Для управления внешним видом используйте
caxisи/или измените цветовую карту.При необходимости цвет поверхности можно задать независимо от z, указав матрицу цветов c.
Все пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного объекта поверхности.
Примечание: точным внешним видом поверхности можно управлять с помощью команды
shadingили используяsetдля управления свойствами объекта поверхности.См. также: ezsurf, surfc, surfl, surfnorm, trisurf, contour, mesh, surface, meshgrid, hidden, shading, colormap, caxis.
-
: surfc
(x, y, z) -
: surfc
(z) -
: surfc
(…, c) -
: surfc
(…, prop, val, …) -
: surfc
(hax, …) -
:
h =surfc(…) -
Построить трёхмерную поверхность в виде сетки с линиями уровня под ней.
Поверхность строится с помощью закрашенных прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом работы
meshgridна двумерной прямоугольной области в плоскости x-y. z определяет высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Цвет поверхности вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Для управления внешним видом используйте
caxisи/или измените цветовую карту.При необходимости цвет поверхности можно задать независимо от z, указав матрицу цветов c.
Все пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного объекта поверхности.
Примечание: точным внешним видом поверхности можно управлять с помощью команды
shadingили используяsetдля управления свойствами объекта поверхности.См. также: ezsurfc, surf, surfl, surfnorm, trisurf, contour, mesh, surface, meshgrid, hidden, shading, colormap, caxis.
-
: surfl
(z) -
: surfl
(x, y, z) -
: surfl
(…, lsrc) -
: surfl
(x, y, z, lsrc, P) -
: surfl
(…, "cdata") -
: surfl
(…, "light") -
: surfl
(hax, …) -
:
h =surfl(…) -
Построить трёхмерную поверхность с затенением, основанным на различных моделях освещения.
Поверхность строится с помощью закрашенных прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом работы
meshgridна двумерной прямоугольной области в плоскости x-y. z определяет высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Режим освещения по умолчанию
"cdata"изменяет свойство cdata объекта поверхности, создавая впечатление освещённой поверхности.Альтернативный режим
"light"создаёт объект источника света для освещения поверхности.Расположение источника света можно задать с помощью lsrc, который может быть двухэлементным вектором [азимут, угол места] в градусах или трёхэлементным вектором [lx, ly, lz]. Значение по умолчанию повёрнуто на 45 градусов против часовой стрелки относительно текущего направления обзора.
Свойства материала поверхности можно задать с помощью четырёхэлементного вектора P = [AM D SP exp]; значение по умолчанию — p = [0.55 0.6 0.4 10].
-
"AM"интенсивность окружающего света -
"D"интенсивность диффузного отражения -
"SP"интенсивность зеркального отражения -
"EXP"показатель степени зеркального отражения
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного объекта поверхности.
Пример:
colormap (bone (64)); surfl (peaks); shading interp;
См. также: diffuse, specular, surf, shading, colormap, caxis.
-
-
: surfnorm
(x, y, z) -
: surfnorm
(z) -
: surfnorm
(…, prop, val, …) -
: surfnorm
(hax, …) -
:
[Nx, Ny, Nz] =surfnorm(…) -
Найти векторы нормали к поверхности, заданной на сетке.
Если x и y — векторы, то типичная вершина имеет координаты (x(j), y(i), z(i,j)). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y. Если задан только один входной аргумент z, то x принимается равным
1:columns (z), а y —1:rows (z).Если выходные аргументы не запрошены, строится график поверхности с векторами нормалей к ней.
Все входные пары свойство/значение присваиваются объекту поверхности. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Если запрошены выходные аргументы, компоненты векторов нормалей возвращаются в Nx, Ny и Nz, а график не строится. Векторы нормалей не нормированы (длина != 1). Чтобы нормировать их, используйте
len = sqrt (nx.^2 + ny.^2 + nz.^2); nx ./= len; ny ./= len; nz ./= len;
Пример использования
surfnorm:surfnorm (peaks (25));
Алгоритм: векторы нормалей вычисляются как векторное произведение диагоналей каждой четырёхугольной грани сетки, чтобы найти векторы нормалей в центре каждой грани. Затем для каждой точки сетки усредняются четыре ближайших вектора нормалей, чтобы получить итоговую нормаль к поверхности в этой точке сетки.
Для объектов поверхности свойство
"VertexNormals"содержит эквивалентную информацию, за исключением возможных различий вблизи границы поверхности, где разные схемы интерполяции могут давать немного разные значения.См. также: isonormals, quiver3, surf, meshgrid.
-
:
fv =isosurface(v, isoval) -
:
fv =isosurface(v) -
:
fv =isosurface(x, y, z, v, isoval) -
:
fv =isosurface(x, y, z, v) -
:
fvc =isosurface(…, col) -
:
fv =isosurface(…, "noshare") -
:
fv =isosurface(…, "verbose") -
:
[f, v] =isosurface(…) -
:
[f, v, c] =isosurface(…) -
: isosurface
(…) -
Вычислить изоповерхность трехмерных объемных данных.
Изоповерхность соединяет точки с одинаковыми значениями и аналогична контурному графику, но в трех измерениях.
Входной аргумент v — это трехмерный массив, содержащий данные, полученные путем выборки объема.
Входной аргумент isoval — это скаляр, задающий значение изоповерхности. Если isoval не указан или пуст, подходящее значение изоповерхности определяется по v.
При вызове с одним выходным аргументом
isosurfaceвозвращает массив структур fv с полями faces и vertices, вычисленными в точках[x, y, z] = meshgrid (1:l, 1:m, 1:n), где[l, m, n] = size (v). Выходной аргумент fv можно непосредственно использовать в качестве входного аргумента функцииpatch.Если заданы дополнительные входные аргументы x, y и z, представляющие собой трехмерные массивы того же размера, что и v, либо векторы с длинами, соответствующими размерам v, объемные данные берутся в указанных точках. Если x, y или z пусты, сетка соответствует индексам (
1:n) в соответствующем направлении (см.meshgrid).Необязательный входной аргумент col — это трехмерный массив того же размера, что и v, задающий раскраску изоповерхности. При необходимости данные о цвете интерполируются в соответствии со значением isoval. В этом случае выходной массив структур дополнительно содержит поле facevertexcdata.
Если задан строковый входной аргумент
"noshare", вершины могут возвращаться несколько раз для разных граней. По умолчанию общие для соседних граней вершины исключаются из повторений.Строковый входной аргумент
"verbose"поддерживается для совместимости с MATLAB, но не оказывает никакого эффекта.Все строковые аргументы необходимо передавать после остальных аргументов.
При вызове с двумя или тремя выходными аргументами сведения о гранях f, вершинах v и данных о цвете c возвращаются в виде отдельных массивов, а не одного массива структур.
При вызове без выходных аргументов геометрия изоповерхности непосредственно отображается командой
patch; если на осях еще нет источника света, он добавляется.Например,
[x, y, z] = meshgrid (1:5, 1:5, 1:5); v = rand (5, 5, 5); isosurface (x, y, z, v, .5);
непосредственно отобразит случайную геометрию изоповерхности в графическом окне.
Пример геометрии изоповерхности с дополнительной раскраской:
N = 15; # Increase number of vertices in each direction iso = .4; # Change isovalue to .1 to display a sphere lin = linspace (0, 2, N); [x, y, z] = meshgrid (lin, lin, lin); v = abs ((x-.5).^2 + (y-.5).^2 + (z-.5).^2); figure (); subplot (2,2,1); view (-38, 20); [f, vert] = isosurface (x, y, z, v, iso); p = patch ("Faces", f, "Vertices", vert, "EdgeColor", "none"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceColor", "green", "FaceLighting", "gouraud"); light ("Position", [1 1 5]); subplot (2,2,2); view (-38, 20); p = patch ("Faces", f, "Vertices", vert, "EdgeColor", "blue"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceColor", "none", "EdgeLighting", "gouraud"); light ("Position", [1 1 5]); subplot (2,2,3); view (-38, 20); [f, vert, c] = isosurface (x, y, z, v, iso, y); p = patch ("Faces", f, "Vertices", vert, "FaceVertexCData", c, ... "FaceColor", "interp", "EdgeColor", "none"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceLighting", "gouraud"); light ("Position", [1 1 5]); subplot (2,2,4); view (-38, 20); p = patch ("Faces", f, "Vertices", vert, "FaceVertexCData", c, ... "FaceColor", "interp", "EdgeColor", "blue"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceLighting", "gouraud"); light ("Position", [1 1 5]);См. также: isonormals, isocolors, isocaps, smooth3, reducevolume, reducepatch, patch.
-
:
vn =isonormals(val, vert) -
:
vn =isonormals(val, hp) -
:
vn =isonormals(x, y, z, val, vert) -
:
vn =isonormals(x, y, z, val, hp) -
:
vn =isonormals(…, "negate") -
: isonormals
(val, hp) -
: isonormals
(x, y, z, val, hp) -
: isonormals
(…, "negate") -
Вычислить нормали к изоповерхности.
Нормали вершин vn вычисляются по градиенту трехмерного массива val (размер: lxmxn), содержащего данные для геометрии изоповерхности. Нормали направлены в сторону меньших значений val.
При вызове с одним выходным аргументом vn и если второй входной аргумент vert содержит вершины изоповерхности, нормали vn вычисляются в вершинах vert на сетке, заданной
[x, y, z] = meshgrid (1:l, 1:m, 1:n). Выходной аргумент vn имеет тот же размер, что и vert, и может использоваться для задания свойства"VertexNormals"соответствующего объекта patch.Если заданы дополнительные входные аргументы x, y и z, представляющие собой трехмерные массивы того же размера, что и val, объемные данные берутся в этих точках. Вместо данных о вершинах vert функции можно передать дескриптор объекта patch hp.
Если последний входной аргумент — строка
"negate", вычисляются обратные векторные нормали геометрии изоповерхности (то есть направленные в сторону больших значений val).Если выходной аргумент не задан, свойство
"VertexNormals"объекта patch, связанного с дескриптором hp, изменяется непосредственно.См. также: isosurface, isocolors, smooth3.
-
:
fvc =isocaps(v, isoval) -
:
fvc =isocaps(v) -
:
fvc =isocaps(x, y, z, v, isoval) -
:
fvc =isocaps(x, y, z, v) -
:
fvc =isocaps(…, which_caps) -
:
fvc =isocaps(…, which_plane) -
:
fvc =isocaps(…,"verbose") -
:
[faces, vertices, fvcdata] =isocaps(…) -
: isocaps
(…) -
Создать торцевые крышки для изоповерхностей трехмерных данных.
Эта функция добавляет крышки на открытые концы изоповерхностей.
Входной аргумент v — это трехмерный массив, содержащий данные, полученные путем выборки объема.
Входной аргумент isoval — это скаляр, задающий значение изоповерхности. Если isoval не указан или пуст, подходящее значение изоповерхности определяется по v.
При вызове с одним выходным аргументом
isocapsвозвращает массив структур fvc с полями:faces,verticesиfacevertexcdata. Результаты вычисляются в точках[x, y, z] = meshgrid (1:l, 1:m, 1:n), где[l, m, n] = size (v). Выходной аргумент fvc можно непосредственно использовать в качестве входного аргумента функцииpatch.Если заданы дополнительные входные аргументы x, y и z, представляющие собой трехмерные массивы того же размера, что и v, либо векторы с длинами, соответствующими размерам v, объемные данные берутся в указанных точках. Если x, y или z пусты, сетка соответствует индексам (
1:n) в соответствующем направлении (см.meshgrid).Необязательный параметр which_caps может принимать одно из следующих строковых значений, определяющих способ ограничения данных:
-
"above","a"(по умолчанию) -
для торцевых крышек, ограничивающих данные выше isoval.
-
"below","b" для торцевых крышек, ограничивающих данные ниже isoval.
Необязательный параметр which_plane может принимать одно из следующих строковых значений, определяющих, какую торцевую крышку следует нарисовать:
-
"all"(по умолчанию) -
для всех торцевых крышек.
"xmin"-
для торцевых крышек на нижней плоскости x данных.
"xmax"-
для торцевых крышек на верхней плоскости x данных.
"ymin"-
для торцевых крышек на нижней плоскости y данных.
"ymax"-
для торцевых крышек на верхней плоскости y данных.
"zmin"-
для торцевых крышек на нижней плоскости z данных.
"zmax"для торцевых крышек на верхней плоскости z данных.
Строковый входной аргумент
"verbose"поддерживается для совместимости с MATLAB, но не оказывает никакого эффекта.При вызове с двумя или тремя выходными аргументами данные о гранях faces, вершинах vertices и данные о цвете facevertexcdata возвращаются в виде отдельных массивов, а не одной структуры.
При вызове без выходных аргументов торцевые крышки непосредственно отображаются в текущем окне командой
patch.См. также: isosurface, isonormals, patch.
-
-
:
cdat =isocolors(c, v) -
:
cdat =isocolors(x, y, z, c, v) -
:
cdat =isocolors(x, y, z, r, g, b, v) -
:
cdat =isocolors(r, g, b, v) -
:
cdat =isocolors(…, hp) -
: isocolors
(…, hp) -
Вычислить цвета изоповерхности.
При вызове с одним выходным аргументом, если первый входной аргумент c — это трехмерный массив, содержащий индексированные значения цвета, а второй входной аргумент v — вершины геометрии изоповерхности, возвращается матрица cdat с данными о цвете геометрии, вычисленными в точках
[x, y, z] = meshgrid (1:l, 1:m, 1:n). Выходной аргумент cdat можно использовать для ручной установки свойства"FaceVertexCData"объекта patch изоповерхности.Если заданы дополнительные входные аргументы x, y и z, представляющие собой трехмерные массивы того же размера, что и c, данные о цвете берутся в указанных точках.
Вместо индексированных данных о цвете c функции
isocolorsтакже можно передать значения RGB r, g, b. Если входные аргументы x, y, z не заданы, используются вычисленные значенияmeshgrid.В качестве последнего входного аргумента при всех вариантах вызова функции можно указать дескриптор patch hp; в этом случае данные о вершинах извлекаются из объекта patch изоповерхности. Наконец, если выходной аргумент не задан, цвета patch, указанного дескриптором hp, изменяются.
См. также: isosurface, isonormals.
-
:
smoothed_data =smooth3(data) -
:
smoothed_data =smooth3(data, method) -
:
smoothed_data =smooth3(data, method, sz) -
:
smoothed_data =smooth3(data, method, sz, std_dev) -
Сгладить значения трехмерной матрицы data.
Эту функцию можно использовать, например, для уменьшения влияния шума в data перед вычислением изоповерхностей.
data должна быть трехмерной матрицей, размер которой не равен единице ни в одном измерении. Выходной аргумент smoothed_data — это матрица того же размера, что и data.
Необязательный аргумент method определяет ядро свертки, используемое для сглаживания. Возможные значения:
-
"box","b"(по умолчанию) -
ядро свертки с резкими границами.
-
"gaussian","g" ядро свертки, представленное некоррелированной трехмерной нормальной функцией распределения.
sz — это либо вектор из трех элементов, задающий размер ядра свертки в направлениях x, y и z, либо скаляр. В случае скаляра для всех трех измерений используется один и тот же размер (
[sz, sz, sz]). Значение по умолчанию — 3.Если method равен
"gaussian", необязательный аргумент std_dev задает стандартное отклонение трехмерной нормальной функции распределения. std_dev — это либо вектор из трех элементов, задающий стандартное отклонение ядра гауссовой свертки в направлениях x, y и z, либо скаляр. В случае скаляра для всех трех измерений используется одно и то же значение. Значение по умолчанию — 0.65.См. также: isosurface, isonormals, patch.
-
-
:
[nx, ny, nz, nv] =reducevolume(v, r) -
:
[nx, ny, nz, nv] =reducevolume(x, y, z, v, r) -
:
nv =reducevolume(…) -
Уменьшить объем набора данных в v в соответствии со значениями r.
v — это матрица, размер которой не равен единице в первых трех измерениях.
r может быть вектором из трех элементов, представляющих коэффициенты уменьшения в направлениях x, y и z, или скаляром; в последнем случае во всех трех измерениях используется один и тот же коэффициент уменьшения.
reducevolumeуменьшает число элементов v, оставляя только каждый r-й элемент в соответствующем измерении.Необязательно можно задать x, y и z для представления набора координат v. Это могут быть матрицы того же размера, что и v, либо векторы с размерами, соответствующими измерениям v; в последнем случае они преобразуются в матрицы (см.
meshgrid).Если
reducevolumeвызывается с двумя аргументами, предполагается, что x, y и z соответствуют индексам v в соответствующих направлениях.Уменьшенная матрица возвращается в nv.
Необязательно уменьшенный набор координат возвращается соответственно в nx, ny и nz.
Примеры:
v = reshape (1:6*8*4, [6 8 4]); nv = reducevolume (v, [4 3 2]);
v = reshape (1:6*8*4, [6 8 4]); x = 1:3:24; y = -14:5:11; z = linspace (16, 18, 4); [nx, ny, nz, nv] = reducevolume (x, y, z, v, [4 3 2]);
См. также: isosurface, isonormals.
-
:
reduced_fv =reducepatch(fv) -
:
reduced_fv =reducepatch(faces, vertices) -
:
reduced_fv =reducepatch(patch_handle) -
: reducepatch
(patch_handle) -
:
reduced_fv =reducepatch(…, reduction_factor) -
:
reduced_fv =reducepatch(…, "fast") -
:
reduced_fv =reducepatch(…, "verbose") -
:
[reduced_faces, reduces_vertices] =reducepatch(…) -
Уменьшить число граней и вершин объекта patch, сохранив его общую форму.
Входной patch может быть представлен структурой fv с полями
facesиvertices, двумя матрицами faces и vertices (см., например, результатisosurface) или дескриптором объекта patch patch_handle (см.patch).Число граней и вершин patch уменьшается путем последовательного схлопывания кратчайшего ребра patch в его середину (как описано, например, здесь: https://libigl.github.io/libigl/tutorial/tutorial.html#meshdecimation).
В настоящее время поддерживаются только patch, состоящие из треугольников. Результирующий patch также состоит только из треугольников.
Если
reducepatchвызывается с дескриптором допустимого patch patch_handle и без выходных аргументов, заданный patch немедленно обновляется.Если reduction_factor не задан, результирующая структура reduced_fv содержит приблизительно 50% граней исходного patch. Если reduction_factor — дробное число от 0 (не включая) до 1 (не включая), создается patch, содержащий приблизительно соответствующую долю граней. Если reduction_factor — целое число, большее или равное 1, результирующий patch содержит приблизительно reduction_factor граней. В зависимости от геометрии patch итоговое число граней может отличаться от заданного значения reduction_factor. Особенно это заметно при обнаружении большого числа общих вершин.
Для уменьшения необходимо, чтобы вершины соприкасающихся граней были общими. Общие вершины обнаруживаются автоматически. Это обнаружение можно пропустить, передав необязательный строковый аргумент
"fast".При использовании необязательных строковых аргументов
"verbose"в командное окно выводятся дополнительные сообщения о состоянии.Все строковые входные аргументы необходимо передавать после остальных аргументов.
При вызове с одним выходным аргументом уменьшенные грани и вершины возвращаются в структуре reduced_fv с полями
facesиvertices(см. вариант с одним выходным аргументом функцииisosurface).При вызове с двумя выходными аргументами уменьшенные грани и вершины возвращаются в двух отдельных матрицах reduced_faces и reduced_vertices.
См. также: isosurface, isonormals, reducevolume, patch.
-
: shrinkfaces
(p, sf) -
:
nfv =shrinkfaces(p, sf) -
:
nfv =shrinkfaces(fv, sf) -
:
nfv =shrinkfaces(f, v, sf) -
:
[nf, nv] =shrinkfaces(…) -
Уменьшить размер граней в patch с коэффициентом сжатия sf.
Объект patch можно указать графическим дескриптором (p), структурой patch (fv) с полями
"faces"и"vertices"или двумя отдельными матрицами (f, v) граней и вершин.Коэффициент сжатия sf — это положительное число, задающее долю исходной площади, которую будет занимать новая грань. Если коэффициент не задан, по умолчанию используется 0.3 (уменьшение до 30% исходного размера). Коэффициент больше 1.0 приводит к увеличению граней.
Если первым входным аргументом является дескриптор patch и выходные параметры не заданы, грани patch сжимаются на месте, после чего patch перерисовывается.
При вызове с одним выходным аргументом возвращается структура с полями
"faces","vertices"и"facevertexcdata", содержащая данные после сжатия. Эту структуру можно непосредственно использовать в качестве входного аргумента функцииpatch.Предупреждение:: Сжатие невыпуклых граней может привести к нежелательным результатам.
Пример: триангулированная окружность в 3/4 и соответствующая уменьшенная версия.
[phi r] = meshgrid (linspace (0, 1.5*pi, 16), linspace (1, 2, 4)); tri = delaunay (phi(:), r(:)); v = [r(:).*sin(phi(:)) r(:).*cos(phi(:))]; clf () p = patch ("Faces", tri, "Vertices", v, "FaceColor", "none"); fv = shrinkfaces (p); patch (fv) axis equal grid onСм. также: patch.
-
:
d =diffuse(sx, sy, sz, lv) -
Вычислить силу диффузного отражения поверхности, заданной элементами вектора нормали sx, sy, sz.
Вектор положения источника света lv можно задать как двухэлементный вектор [азимут, угол места] в градусах или как трехэлементный вектор [x, y, z].
-
:
refl =specular(sx, sy, sz, lv, vv) -
:
refl =specular(sx, sy, sz, lv, vv, se) -
Вычислить силу зеркального отражения поверхности, заданной элементами вектора нормали sx, sy, sz, используя аппроксимацию Фонга.
Векторы положения источника света и наблюдателя задаются параметрами lv и vv соответственно. Векторы положения можно задать как двухэлементные векторы [азимут, угол места] в градусах или как трёхэлементные векторы [x, y, z].
Необязательный шестой аргумент задаёт показатель степени зеркального отражения (ширину блика) se. Если он не задан, по умолчанию se равен 10.
-
: lighting
(type) -
: lighting
(hax, type) -
Задать освещение графических объектов типа patch или surface.
Допустимые значения аргумента type:
"flat"-
Отображать объекты с фасеточным освещением.
"gouraud"-
Отображать объекты с линейной интерполяцией эффектов освещения между вершинами.
"none"Отображать объекты без эффектов освещения и теней.
Если первый аргумент hax — дескриптор осей, то изменить эффекты освещения объектов в этих осях, а не в текущих осях, возвращаемых
gca.Эффекты освещения видны, только если в тех же осях присутствует и виден хотя бы один объект light.
См. также: light, fill, mesh, patch, pcolor, surf, surface, shading.
-
: material
shiny -
: material
dull -
: material
metal -
: material
default -
: material
([as, ds, ss]) -
: material
([as, ds, ss, se]) -
: material
([as, ds, ss, se, scr]) -
: material
(hlist, …) -
:
mtypes =material() -
:
refl_props =material(mtype_string) -
Задать свойства отражения для освещения поверхностей и объектов patch.
Эта функция изменяет силу фонового, диффузного и зеркального отражения, а также показатель степени зеркального отражения и коэффициент отражения зеркального цвета для всех объектов
patchиsurfaceв текущих осях. Это позволяет в некоторой степени имитировать свойства отражения определённых материалов при использовании сlight.При вызове со строкой указанные выше свойства задаются в соответствии со значениями из следующей таблицы:
mtype сила фонового отражения сила диффузного отражения сила зеркального отражения показатель степени зеркального отражения коэффициент отражения зеркального цвета "shiny"0.3 0.6 0.9 20 1.0 "dull"0.3 0.8 0.0 10 1.0 "metal"0.3 0.3 1.0 25 0.5 "default""default""default""default""default""default"При вызове с вектором из трёх элементов обновляются значения силы фонового, диффузного и зеркального отражения для всех объектов
patchиsurfaceв текущих осях. Необязательный четвёртый элемент вектора обновляет показатель степени зеркального отражения, а необязательный пятый элемент — коэффициент отражения зеркального цвета.В качестве первого аргумента также можно передать список графических дескрипторов. В этом случае будут обновлены свойства этих дескрипторов, а также всех дочерних объектов
patchиsurface.Кроме того,
materialможно вызвать с одним выходным аргументом. Если вызов выполняется без входных аргументов, возвращается столбцовый массив ячеек mtypes со строками, содержащими названия всех доступных материалов. Если единственный входной аргумент mtype_string — это название материала, возвращается массив ячеек размером 1x5 refl_props со свойствами отражения этого материала. В обоих случаях графические свойства не изменяются.
- : camlight
-
: camlight
right -
: camlight
left -
: camlight
headlight -
: camlight
(az, el) -
: camlight
(…, style) -
: camlight
(hl, …) -
: camlight
(hax, …) -
:
h =camlight(…) -
Добавить объект light на график с помощью простого интерфейса.
При вызове без аргументов объект light добавляется к текущему графику и размещается немного выше и правее текущего положения камеры: это эквивалентно
camlight right. Командыcamlight leftиcamlight headlightработают аналогично, размещая источник слева от положения камеры или по центру относительно него.Для более точного управления положение источника света можно задать азимутальным поворотом az и углом места el в градусах относительно текущих параметров камеры.
Необязательная строка style определяет, является ли источник света локальным точечным источником (
"local", значение по умолчанию) или находится на бесконечном расстоянии ("infinite").Если первый аргумент hl — дескриптор объекта light, операция выполняется над этим объектом, а не создаёт новый.
Если первый аргумент hax — дескриптор осей, новый объект light создаётся в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — графический дескриптор объекта light. Его можно использовать для перемещения объекта или дальнейшего изменения его свойств.
Примеры:
Добавить объект light на график
sphere (36); camlight
Точно задать положение источника света
camlight (45, 30);
Здесь сначала камера наклоняется вверх (см.
camup) из своего положения (см.campos) на 30 градусов. Затем она поворачивается вправо на 45 градусов. Оба поворота выполняются вокруг цели камеры (см.camtarget).Вернуть дескриптор для дальнейшего управления объектом light
clf sphere (36); hl = camlight ("left"); set (hl, "color", "r");См. также: light.
-
: lightangle
(az, el) -
: lightangle
(hax, az, el) -
: lightangle
(hl, az, el) -
:
hl =lightangle(…) -
:
[az, el] =lightangle(hl) -
Добавить объект light в текущие оси, используя сферические координаты.
Положение источника света задаётся азимутальным поворотом az и углом места el в градусах.
Если первый аргумент hax — дескриптор осей, новый объект light создаётся в этих осях, а не в текущих осях, возвращаемых
gca.Если первый аргумент hl — дескриптор объекта light, операция выполняется над этим объектом, а не создаёт новый.
Необязательное возвращаемое значение hl — графический дескриптор объекта light.
Пример:
Добавить объект light на график
clf; sphere (36); lightangle (45, 30);
-
:
[xx, yy] =meshgrid(x, y) -
:
[xx, yy, zz] =meshgrid(x, y, z) -
:
[xx, yy] =meshgrid(x) -
:
[xx, yy, zz] =meshgrid(x) -
По заданным векторам координат x и y вернуть матрицы xx и yy, соответствующие полной двумерной сетке.
Строки xx являются копиями x, а столбцы yy — копиями y. Если y не задан, предполагается, что он совпадает с x.
Если задан необязательный входной аргумент z или запрошен выходной аргумент zz, результатом будет полная трёхмерная сетка. Если z не задан, но запрошен zz, предполагается, что он совпадает с y.
Чаще всего
meshgridиспользуют для формирования входных данных двумерной или трёхмерной функции, которую затем строят на графике. В следующем примере создаётся график поверхности функции «сомбреро».f = @(x,y) sin (sqrt (x.^2 + y.^2)) ./ sqrt (x.^2 + y.^2); range = linspace (-8, 8, 41); [X, Y] = meshgrid (range, range); Z = f (X, Y); surf (X, Y, Z);
Примечание по программированию:
meshgridпредназначена только для создания двумерных или трёхмерных сеток. Функцияndgridсоздаёт сетки от одномерных до N-мерных. Однако эти функции не полностью эквивалентны. Если x — вектор длины M, а y — вектор длины N, тоmeshgridсоздаёт выходную сетку размером NxM. Для тех же входных данныхndgridсоздаёт результат размером MxN (транспонированный). Для некоторых основных функций требуется вход в форматеmeshgrid, для других — в форматеndgrid. Чтобы определить подходящий формат входных данных, обратитесь к документации соответствующей функции.
-
:
[y1, y2, …, yn] =ndgrid(x1, x2, …, xn) -
:
[y1, y2, …, yn] =ndgrid(x) -
Для n векторов x1, …, xn функция
ndgridвозвращает n массивов размерности n.Элементы i-го выходного аргумента содержат элементы вектора xi, повторённые во всех измерениях, кроме i-го. Вызов ndgrid с одним входным аргументом x эквивалентен вызову ndgrid, в котором все n входных аргументов равны x:
[y1, y2, …, yn] = ndgrid (x, …, x)
Примечание по программированию:
ndgridочень похожа на функциюmeshgrid, за исключением того, что первые два измерения транспонированы по сравнению сmeshgrid. Для некоторых основных функций требуется вход в форматеmeshgrid, для других — в форматеndgrid. Чтобы определить подходящий формат входных данных, обратитесь к документации соответствующей функции.См. также: meshgrid.
-
: plot3
(x, y, z) -
: plot3
(x, y, z, prop, value, …) -
: plot3
(x, y, z, fmt) -
: plot3
(x, cplx) -
: plot3
(cplx) -
: plot3
(hax, …) -
:
h =plot3(…) -
Строить трёхмерные графики.
Возможны различные комбинации аргументов. Самая простая форма:
plot3 (x, y, z)
аргументы в этом случае считаются координатами вершин точек, которые необходимо изобразить в трёх измерениях. Если все аргументы — векторы одинаковой длины, строится одна непрерывная линия. Если все аргументы — матрицы, каждый столбец рассматривается как отдельная линия. Аргументы не транспонируются для согласования числа строк.
Если задано только два аргумента, например:
plot3 (x, cplx)
действительная и мнимая части второго аргумента используются соответственно как координаты y и z.
Если задан только один аргумент, например:
plot3 (cplx)
действительная и мнимая части аргумента используются как значения y и z, а график строится в зависимости от индекса.
Аргументы также можно задавать группами по три, например:
plot3 (x1, y1, z1, x2, y2, z2, ...)
в этом случае каждая тройка аргументов рассматривается как отдельная линия или набор линий в трёхмерном пространстве.
Чтобы построить несколько групп с одним или двумя аргументами, разделите каждую группу пустой строкой формата, например:
plot3 (x1, c1, "", c2, "", ...)
Можно задать несколько пар «свойство-значение», которые будут влиять на объекты линий, созданные функцией
plot3. Если указан аргумент fmt, он задаёт формат объектов линий так же, как вplot. Полный список свойств приведён в разделе Свойства линий.Если первый аргумент hax — дескриптор осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — графический дескриптор созданного графика.
Пример:
z = [0:0.05:5]; plot3 (cos (2*pi*z), sin (2*pi*z), z, ";helix;"); plot3 (z, exp (2i*pi*z), ";complex sinusoid;");
-
: view
(azimuth, elevation) -
: view
([azimuth elevation]) -
: view
([x y z]) -
: view
(2) -
: view
(3) -
: view
(hax, …) -
:
[azimuth, elevation] =view() -
Получить или задать точку обзора для текущих осей.
Параметры azimuth и elevation можно задать двумя аргументами или вектором из двух элементов. Точку обзора также можно задать декартовыми координатами x, y и z.
Вызов
view (2)задаёт точку обзора со значениями azimuth = 0 и elevation = 90 — это значение по умолчанию для двумерных графиков.Вызов
view (3)задаёт точку обзора со значениями azimuth = -37.5 и elevation = 30 — это значение по умолчанию для трёхмерных графиков.Если первый аргумент hax — дескриптор осей, операция выполняется для этих осей, а не для текущих осей, возвращаемых
gca.Если входные аргументы не заданы, возвращаются текущие значения azimuth и elevation.
-
: camlookat
() -
: camlookat
(h) -
: camlookat
(handle_list) -
: camlookat
(hax) -
Переместить камеру и настроить её параметры так, чтобы она была направлена на объекты.
Если входным аргументом является дескриптор h, камера направляется на центр ограничивающего параллелепипеда объекта h. Положение камеры корректируется так, чтобы параллелепипед приблизительно заполнял поле зрения.
Эта команда фиксирует направление обзора камеры (
camtarget() - campos()), вектор направления вверх камеры (см.camup) и угол обзора (см.camva). Цель камеры (см.camtarget) и положение камеры (см.campos) изменяются.Если аргумент — список handle_list, для всех объектов вычисляется единый ограничивающий параллелепипед, после чего камера настраивается, как описано выше.
Если аргумент — объект осей hax, в качестве handle_list используются дочерние объекты этих осей. При вызове без входных аргументов используется текущая ось (см.
gca).
-
:
p =campos() -
: campos
([x y z]) -
:
mode =campos("mode") -
: campos
(mode) -
: campos
(hax, …) -
Получить или задать положение камеры.
Положение камеры по умолчанию определяется автоматически на основе сцены. Например, чтобы получить положение камеры:
hf = figure(); peaks() p = campos () ⇒ p = -27.394 -35.701 64.079Затем камеру можно переместить выше вдоль оси z:
campos (p + [0 0 10]) campos () ⇒ ans = -27.394 -35.701 74.079После такого изменения режим положения камеры mode становится ручным:
campos ("mode") ⇒ manualЕго можно снова переключить в автоматический режим:
campos ("auto") campos () ⇒ ans = -27.394 -35.701 64.079 close (hf)По умолчанию эти команды действуют на текущую ось; также можно указать ось с помощью необязательного аргумента hax.
-
: camorbit
(theta, phi) -
: camorbit
(theta, phi, coorsys) -
: camorbit
(theta, phi, coorsys, dir) -
: camorbit
(theta, phi, "data") -
: camorbit
(theta, phi, "data", "z") -
: camorbit
(theta, phi, "data", "x") -
: camorbit
(theta, phi, "data", "y") -
: camorbit
(theta, phi, "data", [x y z]) -
: camorbit
(theta, phi, "camera") -
: camorbit
(hax, …) -
Поворачивает камеру вверх/вниз и влево/вправо вокруг её цели.
Перемещает камеру на phi градусов вверх и на theta градусов вправо, как если бы она обращалась по орбите вокруг своей цели. Пример:
sphere () camorbit (30, 20)
Эти повороты выполняются вокруг цели камеры (см.
camtarget). Сначала положение камеры изменяется вверх или вниз поворотом на phi градусов вокруг оси, ортогональной как направлению взгляда (в частности,camtarget() - campos()), так и «вектору вверх» камеры (см.camup). Пример:camorbit (0, 20)
Второй поворот зависит от входных параметров системы координат coorsys и направления dir. По умолчанию coorsys равен
"data". В этом случае камера поворачивается влево или вправо на theta градусов вокруг оси, заданной параметром dir. По умолчанию dir равен"z", что соответствует вектору[0, 0, 1]. Пример:camorbit (30, 0)
Если для coorsys задано значение
"camera", камера перемещается влево или вправо при повороте вокруг оси, параллельной вектору вверх камеры (см.camup). В этом случае параметр dir указывать не следует. Пример:camorbit (30, 0, "camera")
(Примечание: поворот на phi не зависит от
"camera".)Команда
camorbitизменяет два свойства камеры:camposиcamup.По умолчанию эта команда применяется к текущей оси; также можно указать ось с помощью необязательного аргумента hax.
-
: camroll
(theta) -
: camroll
(hax, theta) -
Вращает камеру вокруг оси взгляда.
Поворачивает камеру по часовой стрелке на theta градусов. Например, следующая команда повернёт камеру по часовой стрелке (вправо) на 30 градусов; при этом сцена будет выглядеть повёрнутой на 30 градусов влево:
peaks () camroll (30)
Поворачивает камеру обратно:
camroll (-30)
Следующая команда восстанавливает поворот камеры по умолчанию:
camup ("auto")По умолчанию эти команды применяются к текущей оси; также можно указать ось с помощью необязательного аргумента hax.
-
:
t =camtarget() -
: camtarget
([x y z]) -
:
mode =camtarget("mode") -
: camtarget
(mode) -
: camtarget
(hax, …) -
Получает или задаёт точку, на которую направлена камера.
Цель камеры — это точка в пространстве, на которую направлена камера. Обычно она определяется автоматически на основе сцены:
hf = figure(); sphere (36) v = camtarget () ⇒ v = 0 0 0Можно направить камеру на новую цель:
camtarget ([1 1 1]) camtarget () ⇒ 1 1 1
После этого режим цели камеры mode становится ручным:
camtarget ("mode") ⇒ manualЭто означает, например, что добавление новых объектов в сцену не приведёт к изменению цели камеры:
hold on; peaks () camtarget () ⇒ 1 1 1
Можно вернуть автоматический режим:
camtarget ("auto") camtarget () ⇒ 0 0 0.76426 close (hf)По умолчанию эти команды применяются к текущей оси; также можно указать ось с помощью необязательного аргумента hax.
-
:
up =camup() -
: camup
([x y z]) -
:
mode =camup("mode") -
: camup
(mode) -
: camup
(hax, …) -
Получает или задаёт вектор вверх камеры.
По умолчанию камера ориентирована так, что направление «вверх» соответствует положительной оси z:
hf = figure (); sphere (36) v = camup () ⇒ v = 0 0 1Задание нового «вектора вверх» поворачивает камеру вокруг оси взгляда и переводит режим в ручной:
camup ([1 1 0]) camup () ⇒ 1 1 0 camup ("mode") ⇒ manualИзменение вектора вверх не меняет цель камеры (см.
camtarget). Поэтому вектор вверх камеры может быть не ортогонален направлению её взгляда:camup ([1 2 3]) dot (camup (), camtarget () - campos ()) ⇒ 6...
Из этого следует, что «оттягивание» вектора вверх не наклоняет направление взгляда камеры (для этого потребовалось бы изменить цель). Поэтому задание вектора вверх обычно используется только для поворота камеры вокруг оси взгляда. Более интуитивно понятная команда для этой цели —
camroll.Наконец, можно вернуть для вектора вверх автоматический режим:
camup ("auto") camup () ⇒ 0 0 1 close (hf)По умолчанию эти команды применяются к текущей оси; также можно указать ось с помощью необязательного аргумента hax.
-
:
a =camva() -
: camva
(a) -
:
mode =camva("mode") -
: camva
(mode) -
: camva
(hax, …) -
Получает или задаёт угол обзора камеры.
У камеры есть угол обзора, определяющий, какая область будет видна. По умолчанию он равен:
hf = figure(); sphere (36) a = camva () ⇒ a = 10.340
Чтобы расширить угол обзора, можно удвоить его значение. При этом режим также переключится на ручной:
camva (2*a) camva ("mode") ⇒ manualМожно вернуть автоматический режим:
camva ("auto") camva ("mode") ⇒ auto camva () ⇒ ans = 10.340 close (hf)По умолчанию эти команды применяются к текущей оси; также можно указать ось с помощью необязательного аргумента hax.
-
: camzoom
(zf) -
: camzoom
(hax, zf) -
Приближает или отдаляет изображение с помощью камеры.
Если значение zf больше 1, камера «приближает» сцену, и та выглядит увеличенной:
hf = figure (); sphere (36) camzoom (1.2)
Если значение меньше 1, камера «отдаляет» изображение, чтобы видеть большую часть сцены:
camzoom (0.5)
Технически масштабирование влияет на «угол обзора». Следующая команда восстанавливает масштаб по умолчанию:
camva ("auto") close (hf)По умолчанию эти команды применяются к текущей оси; также можно указать ось с помощью необязательного аргумента hax.
-
: slice
(x, y, z, v, sx, sy, sz) -
: slice
(x, y, z, v, xi, yi, zi) -
: slice
(v, sx, sy, sz) -
: slice
(v, xi, yi, zi) -
: slice
(…, method) -
: slice
(hax, …) -
:
h =slice(…) -
Строит сечения трёхмерных данных/скалярных полей.
Каждый элемент трёхмерного массива v представляет скалярное значение в точке, заданной параметрами x, y и z. Параметры x, y и z представляют собой либо трёхмерные массивы того же размера, что и массив v, в формате
"meshgrid", либо векторы. Параметры xi и т. д. имеют формат, аналогичный формату x и т. д.; они задают точки, в которых интерполируется массив vi с помощью interp3. Векторы sx, sy и sz содержат точки ортогональных сечений соответствующих осей.Если x, y и z не заданы, предполагается, что они равны
x = 1:size (v, 2),y = 1:size (v, 1)иz = 1:size (v, 3).method может принимать одно из следующих значений:
"nearest"-
Возвращает значение ближайшего соседа.
"linear"-
Линейная интерполяция по ближайшим соседям.
"cubic"-
Кубическая интерполяция по четырём ближайшим соседям (пока не реализована).
"spline"Интерполяция кубическим сплайном — первые и вторые производные остаются непрерывными на всей кривой.
По умолчанию используется метод
"linear".Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного поверхностного объекта.
Примеры:
[x, y, z] = meshgrid (linspace (-8, 8, 32)); v = sin (sqrt (x.^2 + y.^2 + z.^2)) ./ (sqrt (x.^2 + y.^2 + z.^2)); slice (x, y, z, v, [], 0, []); [xi, yi] = meshgrid (linspace (-7, 7)); zi = xi + yi; slice (x, y, z, v, xi, yi, zi);
-
: ribbon
(y) -
: ribbon
(x, y) -
: ribbon
(x, y, width) -
: ribbon
(hax, …) -
:
h =ribbon(…) -
Строит ленточный график для столбцов y в зависимости от x.
Если x не задан, предполагается вектор, содержащий номера строк (
1:rows (Y)). Также x может быть вектором с числом элементов, равным числу строк y; в этом случае одно и то же значение x используется для каждого столбца y.Необязательный параметр width задаёт ширину одной ленты (по умолчанию 0.75).
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это вектор графических дескрипторов поверхностных объектов, представляющих каждую ленту.
-
: shading
(type) -
: shading
(hax, type) -
Задаёт затенение графических объектов типа patch или surface.
Допустимые значения аргумента type:
"flat"-
Одноцветные области без видимых границ.
"faceted"-
Одноцветные области с чёрными границами.
"interp"Цвета между вершинами областей интерполируются, границы областей невидимы.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.См. также: fill, mesh, patch, pcolor, surf, surface, hidden, lighting.
-
: scatter3
(x, y, z) -
: scatter3
(x, y, z, s) -
: scatter3
(x, y, z, s, c) -
: scatter3
(…, style) -
: scatter3
(…, "filled") -
: scatter3
(…, prop, val) -
: scatter3
(hax, …) -
:
h =scatter3(…) -
Строит трёхмерную диаграмму рассеяния.
В каждой точке, заданной координатами векторов x, y и z, отображается маркер.
Размер маркеров задаётся параметром s, который может быть скаляром или вектором той же длины, что и x, y и z. Если s не задан или является пустой матрицей, используется значение по умолчанию — 8 пунктов.
Цвет маркеров задаётся параметром c. Это может быть строка, задающая фиксированный цвет; вектор из 3 элементов, задающий красную, зелёную и синюю компоненты цвета; вектор той же длины, что и x, задающий масштабированный индекс в текущей цветовой карте; или матрица Nx3, задающая цвет RGB каждого маркера отдельно.
Тип маркера можно изменить с помощью аргумента style, который представляет собой строку, задающую маркер так же, как и команда
plot. Если маркер не указан, по умолчанию используются"o"или кружки. Если задан аргумент"filled", маркеры заполняются цветом.Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор объекта диаграммы рассеяния, представляющего точки.
[x, y, z] = peaks (20); scatter3 (x(:), y(:), z(:), [], z(:));
Примечание по программированию: полный список свойств приведён в разделе Свойства диаграммы рассеяния.
-
: waterfall
(x, y, z) -
: waterfall
(z) -
: waterfall
(…, c) -
: waterfall
(…, prop, val, …) -
: waterfall
(hax, …) -
:
h =waterfall(…) -
Строит трёхмерный график типа «водопад».
График типа «водопад» похож на график
meshz, но отображаются только линии сетки для строк z (значений x).Каркасная сетка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgridв двумерной прямоугольной области плоскости x-y. Параметр z задаёт высоту каждой вершины над плоскостью. Если задана только одна матрица z, она строится на сетке meshgridx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.Цвет сетки вычисляется путём линейного масштабирования значений z в диапазоне текущей цветовой карты. Используйте
caxisи/или измените цветовую карту, чтобы управлять внешним видом.При необходимости цвет сетки можно задать независимо от z, указав матрицу цветов c.
Все пары свойство/значение передаются непосредственно базовому поверхностному объекту. Полный список свойств приведён в разделе Свойства поверхности.
Если первый аргумент hax является дескриптором осей, график строится в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это графический дескриптор созданного поверхностного объекта.
См. также: meshz, mesh, meshc, contour, surf, surface, ribbon, meshgrid, hidden, shading, colormap, caxis.
© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Three_002dDimensional-Plots.html