Spec-Zone.ru › Octave 6

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.

<img alt="plot3" src="data:image/png;base64,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

Рисунок 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, то она строится над сеткой x = 1:columns (z), y = 1:rows (z). Таким образом, столбцы матрицы z соответствуют различным значениям x, а строки — различным значениям 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, то она строится над сеткой x = 1:columns (z), y = 1:rows (z). Таким образом, столбцы матрицы z соответствуют различным значениям x, а строки — различным значениям 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, то она строится над сеткой x = 1:columns (z), y = 1:rows (z). Таким образом, столбцы матрицы z соответствуют различным значениям x, а строки — различным значениям y.

Цвет сетки вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Используйте caxis и/или измените цветовую карту для управления внешним видом.

Необязательно, цвет сетки может быть задан независимо от z путём предоставления матрицы цветов c.

Любые пары свойство/значение передаются непосредственно в подлежащий объекту поверхности. Полный список свойств описан в разделе Свойства поверхности.

Если первый аргумент hax является дескриптором осей, то график строится на этих осях, а не на текущих осях, возвращаемых gca.

Необязательное возвращаемое значение h — это дескриптор графического объекта созданной поверхности.

См. также: mesh, meshc, contour, surf, surface, waterfall, meshgrid, hidden, shading, colormap, caxis.

: hidden
: hidden on
: hidden off
: mode = hidden (…)

Управление удалением скрытых линий сетки.

При вызове без аргумента состояние удаления скрытых линий переключается.

При вызове с одним из режимов "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, то она строится над сеткой x = 1:columns (z), y = 1:rows (z). Таким образом, столбцы матрицы z соответствуют различным значениям x, а строки — различным значениям 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 (…)

Построение сетки 3D поверхности с подлежащими линиями контура.

Сетка поверхности строится с использованием затенённых прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом meshgrid. над 2D прямоугольной областью в плоскости x-y. z определяет высоту над плоскостью каждой вершины. Если задана только одна матрица z, то она отображается на сетке x = 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 (…)

Построение 3D поверхности с затенением на основе различных моделей освещения.

Сетка поверхности строится с использованием затенённых прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом meshgrid. над 2D прямоугольной областью в плоскости x-y. z определяет высоту над плоскостью каждой вершины. Если задана только одна матрица z, то она отображается на сетке x = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y.

Режим освещения по умолчанию "cdata", изменяет свойство cdata объекта поверхности, чтобы создать впечатление освещённой поверхности.

Альтернативный режим "light" создаёт объект света для освещения поверхности.

Положение источника света можно указать с помощью lsrc, который может быть 2-элементным вектором [азимут, возвышение] в градусах или 3-элементным вектором [lx, ly, lz]. Значение по умолчанию поворачивается на 45 градусов против часовой стрелки относительно текущей перспективы.

Свойства материала поверхности могут быть заданы с помощью 4-элементного вектора 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 (…)

Вычисление изоповерхности данных объёма 3D.

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

Входной аргумент 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", связанного с дескриптором элемента "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 (…)

Создание крышек для изоповерхностей 3D-данных.

Эта функция размещает крышки в открытых концах изоповерхностей.

Входной аргумент 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 (…, p)
: isocolors (…)

Вычислить цвета изоповерхности.

Если функция вызвана с одним выходным аргументом, и первый входной аргумент c является трёхмерным массивом, содержащим индексированные значения цветов, а второй входной аргумент v — вершины геометрии изоповерхности, то возвращает матрицу cdat с информацией о данных цвета для геометрии в вычисленных точках [x, y, z] = meshgrid (1:l, 1:m, 1:n). Выходной аргумент cdat может быть использован для ручного задания свойства "FaceVertexCData" объекта изоповерхности.

Если функция вызвана с дополнительными входными аргументами x, y и z, которые являются трёхмерными массивами того же размера, что и c, то данные цвета берутся в указанных точках.

Вместо индексированных данных цвета c, isocolors также может быть вызван с RGB-значениями r, g, b. Если входные аргументы x, y, z не указаны, то используются meshgrid вычисленные значения.

По желанию, дескриптор патча p может быть передан в качестве последнего входного аргумента во все варианты вызова функции, и данные вершин будут извлечены из объекта патча изоповерхности. Наконец, если выходной аргумент не указан, то цвета патча, заданного дескриптором патча p, изменяются.

См. также: 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 — либо 3-элементный вектор, определяющий размер сверточного ядра в направлениях x, y и z, либо скаляр. В случае скаляра используется одинаковый размер для всех трёх измерений ([sz, sz, sz]). Значение по умолчанию — 3.

Если method — "gaussian" , то необязательный входной параметр std_dev определяет стандартное отклонение функции тривариантного нормального распределения. std_dev — либо 3-элементный вектор, определяющий стандартное отклонение гауссовского сверточного ядра в направлениях 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 — матрица, не-сингулярная по первым 3 измерениям.

r может быть либо вектором из 3 элементов, представляющим коэффициенты сокращения в направлениях 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 (…)

Сокращение числа граней и вершин в объекте патча, сохраняя общую форму патча.

Входной патч может быть представлен структурой fv с полями faces и vertices, двумя матрицами faces и vertices (см., например, результат isosurface), или дескриптором объекта патча patch_handle (см. patch).

Количество граней и вершин в патче уменьшается путём итеративного обрушения кратчайшего ребра патча до его середины (как обсуждается, например, здесь: https://libigl.github.io/libigl/tutorial/tutorial.html#meshdecimation).

В настоящее время поддерживаются только патчи, состоящие из треугольников. Результирующий патч также состоит только из треугольников.

Если reducepatch вызывается с дескриптором корректного патча patch_handle, и без выходных аргументов, то заданный патч обновляется немедленно.

Если reduction_factor опущена, то результирующая структура reduced_fv включает приблизительно 50% граней исходного патча. Если reduction_factor является дробью между 0 (исключительно) и 1 (исключительно), определяется патч с приблизительно соответствующей долей граней. Если reduction_factor целое число больше или равно 1, результирующий патч имеет приблизительно reduction_factor граней. В зависимости от геометрии патча, полученное количество граней может отличаться от заданного значения 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 (…)

Уменьшите размер граней в патче с помощью коэффициента сжатия sf.

Объект патча может быть указан с помощью графической метки (p), структуры патча (fv) с полями "faces" и "vertices", или как две отдельные матрицы (f, v) граней и вершин.

Коэффициент сжатия sf — это положительное число, определяющее процент от первоначальной площади, которую будет занимать новая грань. Если коэффициент не указан, по умолчанию используется 0,3 (уменьшение до 30% первоначального размера). Коэффициент больше 1,0 приведет к расширению граней.

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

Если вызывается с одним выходным аргументом, возвращается структура с полями "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.

: diffuse (sx, sy, sz, lv)

Рассчитайте интенсивность диффузного отражения поверхности, определенной элементами вектора нормали sx, sy, sz.

Вектор положения источника света lv может быть задан как 2-элементный вектор [азимут, высота] в градусах или как 3-элементный вектор [x, y, z].

См. также: specular, surfl.

: specular (sx, sy, sz, lv, vv)
: specular (sx, sy, sz, lv, vv, se)

Рассчитайте интенсивность зеркального отражения поверхности, определенной элементами вектора нормали sx, sy, sz, используя приближение Фонга.

Векторы положения источника света и наблюдателя задаются соответственно параметрами lv и vv. Векторы положения могут быть заданы как 2-элементные векторы [азимут, высота] в градусах или как 3-элементные векторы [x, y, z].

Необязательный шестой аргумент задает показатель зеркального отражения (распространение) se. Если он не задан, se по умолчанию равен 10.

См. также: diffuse, surfl.

: lighting (type)
: lighting (hax, type)

Установите освещение графических объектов патчей или поверхностей.

Допустимые аргументы для type:

"flat"

Отрисовать объекты с эффектами освещения гранями.

"gouraud"

Отрисовать объекты с линейной интерполяцией эффектов освещения между вершинами.

"none"

Отрисовать объекты без эффектов света и тени.

Если первый аргумент hax является маркером осей, то измените эффекты освещения объектов в этих осях, а не в текущих осях, возвращенных gca.

Эффекты освещения видны только в том случае, если присутствует хотя бы один объект света и он виден в тех же осях.

См. также: 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 и 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 со свойствами отражения этого материала. В обоих случаях графические свойства не изменяются.

См. также: light, fill, mesh, patch, pcolor, surf, surface.

: camlight
: camlight right
: camlight left
: camlight headlight
: camlight (az, el)
: camlight (…, style)
: camlight (hl, …)
: camlight (hax, …)
: h = camlight (…)

Добавить объект света в фигуру с помощью простого интерфейса.

При вызове без аргументов объект света добавляется к текущему графику и размещается немного выше и правее текущего положения камеры: это эквивалентно camlight right. Команды camlight left и camlight headlight ведут себя аналогично, с размещением слева от положения камеры или по центру относительно положения камеры.

Для большего контроля положение света может быть задано азимутальным поворотом az и углом возвышения el, оба в градусах, относительно текущих свойств камеры.

Необязательная строка style указывает, является ли свет локальным точечным источником ("local", по умолчанию) или расположен на бесконечном расстоянии ("infinite").

Если первый аргумент hl — это маркер объекта света, то действие выполняется над этим объектом света, а не над созданием нового объекта.

Если первый аргумент hax — это маркер осей, то создается новый объект света в этих осях, а не в текущих осях, возвращаемых gca.

Необязательное возвращаемое значение h — это графический маркер объекта света. Его можно использовать для перемещения или дальнейшего изменения свойств объекта света.

Примеры:

Добавить объект света к графику

sphere (36);
camlight

Установить точное положение источника света

camlight (45, 30);

Здесь свет сначала наклоняется вверх (см. camup) от положения камеры (см. campos) на 30 градусов. Затем он поворачивается вправо на 45 градусов. Оба поворота центрированы вокруг целевого объекта камеры (см. camtarget).

Возвратить маркер для дальнейшей работы с объектом света

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)

Добавляет объект света в текущую систему координат, используя сферические координаты.

Положение света задаётся азимутальным углом вращения az и углом возвышения el, оба в градусах.

Если первый аргумент hax — дескриптор оси, то создаётся новый объект света в этой оси, а не в текущей оси, возвращаемой функцией gca.

Если первый аргумент hl — дескриптор объекта света, то действие выполняется над этим объектом, а не создаётся новый.

Необязательное значение возврата hl — дескриптор объекта света.

Пример:

Добавление объекта света к графику

clf;
sphere (36);
lightangle (45, 30);

См. также: light, view, camlight.

: [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 будет генерировать сетки от 1 до N измерений. Однако функции не полностью эквивалентны. Если x — вектор длины M, а y — вектор длины N, то meshgrid создаст выходную сетку размера NxM. ndgrid создаст выходную сетку размера MxN (транспонированная) для тех же входных данных. Некоторые основные функции ожидают meshgrid входные данные, а другие — ndgrid входные данные. Обратитесь к документации к конкретной функции, чтобы определить правильный формат входных данных.

См. также: ndgrid, mesh, contour, surf.

: [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;");

См. также: ezplot3, plot.

: view (azimuth, elevation)
: view ([azimuth elevation])
: view ([x y z])
: view (2)
: view (3)
: view (hax, …)
: [azimuth, elevation] = view ()

Запрос или установка точки зрения для текущей оси координат.

Параметры azimuth и elevation могут быть заданы как два аргумента или как 2-элементный вектор. Точка зрения также может быть задана с помощью декартовых координат 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).

См. также: camorbit, camzoom, camroll.

: P = campos ()
: campos ([x y z])
: mode = campos ("mode")
: campos (mode)
: campos (ax, …)

Установка или получение позиции камеры.

По умолчанию положение камеры определяется автоматически в зависимости от сцены. Например, для получения положения камеры:

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)

По умолчанию эти команды влияют на текущую ось; альтернативно, можно указать ось с помощью необязательного аргумента ax.

См. также: camup, camtarget, camva.

: 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.

См. также: camzoom, camroll, camlookat.

: camroll (theta)
: camroll (ax, theta)

Провести камерой рол.

Вращение камеры по часовой стрелке на theta градусов. Например, следующая команда повернёт камеру на 30 градусов по часовой стрелке (вправо); это заставит сцену повернуться на 30 градусов влево:

peaks ()
camroll (30)

Вращение камеры обратно:

camroll (-30)

Следующая команда восстанавливает значение ролла камеры по умолчанию:

camup ("auto")

По умолчанию эти команды влияют на текущую ось; альтернативно ось может быть указана необязательным аргументом ax.

См. также: camzoom, camorbit, camlookat, camup.

: T = camtarget ()
: camtarget ([x y z])
: mode = camtarget ("mode")
: camtarget (mode)
: camtarget (ax, …)

Установить или получить, на что направлена камера.

Цель камеры — точка в пространстве, на которую направлена камера. Обычно она определяется автоматически на основе сцены:

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)

По умолчанию эти команды влияют на текущую ось; альтернативно ось может быть указана необязательным аргументом ax.

См. также: campos, camup, camva.

: up = camup ()
: camup ([x y z])
: mode = camup ("mode")
: camup (mode)
: camup (ax, …)

Установить или получить вектор направления «вверх» камеры.

По умолчанию камера ориентирована так, что «вверх» соответствует положительной оси 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)

По умолчанию эти команды влияют на текущую ось; альтернативно ось может быть указана необязательным аргументом ax.

См. также: campos, camtarget, camva.

: a = camva ()
: camva (a)
: mode = camva ("mode")
: camva (mode)
: camva (ax, …)

Установить или получить угол обзора камеры.

Камера имеет угол обзора, который определяет, сколько можно увидеть. По умолчанию это:

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)

По умолчанию эти команды влияют на текущую ось; альтернативно ось может быть указана необязательным аргументом ax.

См. также: campos, camtarget, camup.

: camzoom (zf)
: camzoom (ax, zf)

Изменить масштаб камеры приближением или отдалением.

Значение zf, большее 1, «приближает» изображение, так что сцена кажется увеличенной:

hf = figure ();
sphere (36)
camzoom (1.2)

Значение, меньшее 1, «отдаляет» камеру, чтобы камера могла видеть больше сцены:

camzoom (0.5)

Технически говоря, масштабирование влияет на «угол обзора». Следующая команда сбрасывает масштаб к значению по умолчанию:

camva ("auto")
close (hf)

По умолчанию эти команды влияют на текущую ось; альтернативно ось может быть указана необязательным аргументом ax.

См. также: camroll, camorbit, camlookat, camva.

: 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 (…)

Построить срезы 3-мерных данных/скалярных полей.

Каждый элемент трёхмерного массива v представляет скалярное значение в местоположении, заданном параметрами x, y и z. Параметры x, x и 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);

См. также: interp3, surface, pcolor.

: 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 — вектор графических дескрипторов объектов поверхности, представляющих каждую ленту.

См. также: surface, waterfall.

: 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 (…)

Построение 3D-графика точек.

На каждом заданном точке с координатами в векторах x, y и z рисуется маркер.

Размер маркеров определяется значением s, которое может быть скаляром или вектором той же длины, что и x, y и z. Если s не указано или является пустой матрицей, используется значение по умолчанию 8 точек.

Цвет маркеров определяется аргументом c, который может быть строкой, задающей фиксированный цвет; вектором из 3 элементов, задающим красный, зелёный и синий компоненты цвета; вектором той же длины, что и x, который определяет индекс в текущей палитре цветов; или Nx3 матрицей, задающей RGB цвет каждого маркера индивидуально.

Тип маркера можно изменить с помощью аргумента style, который задаётся строкой, описывающей маркер, аналогично команде plot. Если маркер не указан, по умолчанию используется "o" или кружки. Если аргумент "filled" задан, то маркеры заполняются цветом.

Дополнительные пары свойство/значение передаются непосредственно базовому объекту patch. Полный список свойств описан в Свойства patch.

Если первый аргумент hax — дескриптор осей, то график будет построен на этих осях, а не на текущих осях, возвращаемых gca.

Необязательное возвращаемое значение h — дескриптор объекта hggroup, представляющего точки.

[x, y, z] = peaks (20);
scatter3 (x(:), y(:), z(:), [], z(:));

См. также: scatter, patch, plot.

: waterfall (x, y, z)
: waterfall (z)
: waterfall (…, c)
: waterfall (…, prop, val, …)
: waterfall (hax, …)
: h = waterfall (…)

Построение 3D-графика водопадного типа.

График водопадного типа похож на график meshz, за исключением того, что показаны только линии сетки для строк z (значения x).

Сетка каркаса строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом meshgrid. над 2D-прямоугольной областью в плоскости x-y. z определяет высоту над плоскостью каждой вершины. Если задана только одна матрица z, то она строится над сеткой x = 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–2022 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/v6.4.0/Three_002dDimensional-Plots.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API