Spec-Zone.ru › Octave 8

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-мерными матрицами.

mesh

Рисунок 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.

plot3

Рисунок 15.6: Трехмерная спираль.

Наконец, функция view изменяет точку зрения для трёхмерных графиков.

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

Построение 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 - это дескриптор графического объекта созданной поверхности.

См. также: 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 (…) ¶

Построение 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 - это вектор из 2 элементов с дескриптором графического объекта созданной поверхности и созданного контурного графика.

См. также: 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 (…) ¶

Построение 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 - это дескриптор графического объекта созданной поверхности.

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

: скрыто ¶
: скрыто включено ¶
: скрыто выключено ¶
: режим = скрыто (…) ¶

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

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

При вызове с одним из режимов "on" или "off" состояние устанавливается соответственно.

Необязательный выходной аргумент режим — текущее состояние.

Удаление скрытых линий определяет, какие графические объекты, расположенные за сеткой, будут видны. По умолчанию сетка непрозрачная, и линии за сеткой не видны. Если удаление скрытых линий выключено, объекты за сеткой будут видны сквозь грани (отверстия) сетки, хотя линии сетки всё равно остаются непрозрачными.

См. также: mesh, meshc, meshz, ezmesh, ezmeshc, trimesh, waterfall.

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

Построение 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 для управления свойствами объекта поверхности.

См. также: 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 (…) ¶

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

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

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

Создать торцы для изоповерхностей 3-мерных данных.

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

Входной аргумент 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" объекта патча изоповерхности.

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

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

Необязательно, в качестве последнего входного аргумента всех вариантов вызова функции может быть передан дескриптор патча hp, и данные вершин будут извлечены из объекта патча изоповерхности. Наконец, если выходных аргументов нет, то цвета патча, заданного дескриптором патча 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 должен быть несингулярной 3-мерной матрицей. Выходной 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.

: d = diffuse (sx, sy, sz, lv) ¶

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

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

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

: refl = specular (sx, sy, sz, lv, vv) ¶
: refl = 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, соответствующие полной 2-мерной сетке.

Строки матрицы xx являются копиями вектора x, а столбцы матрицы yy — копиями вектора y. Если y опущен, то он предполагается равным x.

Если необязательный входной аргумент z задан или затребован zz, то выходными данными будет полная 3-мерная сетка. Если z опущен и затребован zz, то он предполагается равным y.

meshgrid чаще всего используется для создания входных данных для 2-мерной или 3-мерной функции, которая будет отображена. Следующий пример создаёт график поверхности функции «сомбреро».

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 ограничено генерацией 2-мерных или 3-мерных сеток. Функция 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 (…) ¶

Построение 3-мерных графиков.

Возможны многие комбинации аргументов. Простейший вариант:

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, что является значением по умолчанию для 2-D графиков.

Вызов view (3) устанавливает точку обзора на azimuth = -37.5 и elevation = 30, что является значением по умолчанию для 3-D графиков.

Если первый аргумент 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 (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.

См. также: 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 (hax, theta) ¶

Повернуть камеру.

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

peaks ()
camroll (30)

Повернуть камеру обратно:

camroll (-30)

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

camup ("auto")

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

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

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

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

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

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

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

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

: camzoom (zf) ¶
: camzoom (hax, zf) ¶

Изменение масштаба камеры.

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

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

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

camzoom (0.5)

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

camva ("auto")
close (hf)

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

См. также: 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 (…) ¶

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

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

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

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

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

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

[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–2023 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/v8.1.0/Three_002dDimensional-Plots.html

Spec-Zone.ru

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