15.2.2 Трёхмерные графики
Функция mesh создаёт графики поверхностей сетки. Например,
tx = ty = linspace (-8, 8, 41)';
[xx, yy] = meshgrid (tx, ty);
r = sqrt (xx .^ 2 + yy .^ 2) + eps;
tz = sin (r) ./ r;
mesh (tx, ty, tz);
xlabel ("tx");
ylabel ("ty");
zlabel ("tz");
title ("3-D Sombrero plot"); создаёт известный график «сомбреро», показанный на рисунке 15.5. Обратите внимание на использование функции meshgrid для создания матриц координат X и Y для построения данных Z. Функция ndgrid аналогична функции meshgrid, но работает с N-мерными матрицами.
Рисунок 15.5: График сетки.
Функция meshc аналогична функции mesh, но также создаёт график контуров для поверхности.
Функция plot3 отображает произвольные трёхмерные данные, не требуя, чтобы они формировали поверхность. Например,
t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));
plot3 (r.*sin (t), r.*cos (t), z);
xlabel ("r.*sin (t)");
ylabel ("r.*cos (t)");
zlabel ("z");
title ("plot3 display of 3-D helix"); отображает спираль в трёх измерениях, показанную на рисунке 15.6.
Рисунок 15.6: Трёхмерная спираль.
Наконец, функция view изменяет точку зрения для трёхмерных графиков.
- : mesh (x, y, z) ¶
- : mesh (z) ¶
- : mesh (…, c) ¶
- : mesh (…, prop, val, …) ¶
- : mesh (hax, …) ¶
- : h = mesh (…) ¶
-
Построить трёхмерную каркасную сетку.
Каркасная сетка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. в 2-мерной прямоугольной области в плоскости 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 (…) ¶
-
Построить трёхмерную каркасную сетку с базовыми линиями контура.
Каркасная сетка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. в 2-мерной прямоугольной области в плоскости 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 (…) ¶
-
Построить трёхмерную каркасную сетку с окружающим занавесом.
Каркасная сетка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. в 2-мерной прямоугольной области в плоскости 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, а строки — различным значениям 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, а строки — различным значениям 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 (…, 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) ¶
-
Сглаживание значений 3-мерной матрицы 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 — матрица, не являющаяся одиночным элементом в первых трёх измерениях.
r может быть либо вектором из трёх элементов, представляющим коэффициенты уменьшения по направлениям X, Y и Z, либо скалярным значением, в этом случае используется одинаковый коэффициент уменьшения для всех трёх измерений.
reducevolumeуменьшает количество элементов v, беря только каждый r-ый элемент в соответствующем измерении.Необязательно, можно предоставить x, y и z для представления набора координат v. Они могут быть либо матрицами того же размера, что и v, либо векторами с размерами, соответствующими измерениям v, в этом случае они расширяются до матриц (см.
meshgrid).Если
reducevolumeвызывается с двумя аргументами, то предполагается, что x, y и z соответствуют соответствующим индексам v.Уменьшенная матрица возвращается в nv.
Необязательно, уменьшенный набор координат возвращается в nx, ny и nz, соответственно.
Примеры:
v = reshape (1:6*8*4, [6 8 4]); nv = reducevolume (v, [4 3 2]);
v = reshape (1:6*8*4, [6 8 4]); x = 1:3:24; y = -14:5:11; z = linspace (16, 18, 4); [nx, ny, nz, nv] = reducevolume (x, y, z, v, [4 3 2]);
См. также: isosurface, isonormals.
- : reduced_fv = reducepatch (fv) ¶
- : reduced_fv = reducepatch (faces, vertices) ¶
- : reduced_fv = reducepatch (patch_handle) ¶
- : reducepatch (patch_handle) ¶
- : reduced_fv = reducepatch (…, reduction_factor) ¶
- : reduced_fv = reducepatch (…, "fast") ¶
- : reduced_fv = reducepatch (…, "verbose") ¶
- : [reduced_faces, reduces_vertices] = reducepatch (…) ¶
-
Уменьшить количество граней и вершин в объекте области, сохраняя при этом общую форму области.
Входная область может быть представлена структурой 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 (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.
- : 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 со свойствами отражения этого материала. В обоих случаях, никакие свойства графики не изменяются.
- : 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);
- : [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входных данных. Проверьте документацию для конкретной функции, чтобы определить правильный формат входных данных.
- : [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;");
- : 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-мерных графиков.Вызов
view (3)устанавливает точку обзора в azimuth = -37.5 и elevation = 30, что является значением по умолчанию для 3-мерных графиков.Если первый аргумент hax является дескриптором оси, то операция выполняется для этой оси, а не для текущей оси, возвращаемой
gca.Если входных данных нет, возвращаются текущие значения azimuth и elevation.
- : camlookat () ¶
- : camlookat (h) ¶
- : camlookat (handle_list) ¶
- : camlookat (hax) ¶
-
Переместить камеру и настроить ее свойства для просмотра объектов.
Когда вход — это дескриптор h, камера устанавливается так, чтобы смотреть на центр ограничивающей рамки h. Положение камеры регулируется таким образом, чтобы ограничивающая рамка приблизительно заполняла поле зрения.
Эта команда фиксирует направление взгляда камеры (
camtarget() - campos()), вектор направления вверх камеры (см.camup) и угол обзора (см.camva). Изменяются цель камеры (см.camtarget) и положение камеры (см.campos).Если аргументом является список handle_list, вычисляется единая ограничивающая рамка для всех объектов, и камера настраивается, как описано выше.
Если аргументом является объект оси hax, в качестве handle_list используются дочерние элементы оси. При вызове без аргументов используется текущая ось (см.
gca).
- : P = campos () ¶
- : campos ([x y z]) ¶
- : mode = campos ("mode") ¶
- : campos (mode) ¶
- : campos (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.
- : 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, …) ¶
- : 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.
- : 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.
- : 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.
- : camzoom (zf) ¶
- : camzoom (ax, zf) ¶
-
Изменить масштаб изображения камеры.
Значение zf, большее 1, “приближает” изображение так, что сцена выглядит увеличенной:
hf = figure (); sphere (36) camzoom (1.2)
Значение меньше 1 “отдаляет” изображение так, что камера может видеть больше сцены:
camzoom (0.5)
С технической точки зрения, масштабирование изменяет “угол обзора”. Следующая команда сбрасывает масштаб до значения по умолчанию:
camva ("auto") close (hf)По умолчанию эти команды влияют на текущую ось; в качестве альтернативы ось можно указать с помощью необязательного аргумента ax.
- : 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-данных/скалярных полей.
Каждый элемент трехмерного массива v представляет скалярное значение в позиции, заданной параметрами x, y и z. Параметры x, y и z — это либо трехмерные массивы той же размерности, что и массив v в формате
"meshgrid", либо векторы. Параметры xi и т. д. имеют аналогичный формат, что и x и т. д., и они представляют точки, в которых массив vi интерполируется с помощью interp3. Векторы sx, sy и sz содержат точки ортогональных срезов соответствующих осей.Если x, y, z опущены, они предполагаются
x = 1:size (v, 2),y = 1:size (v, 1)иz = 1:size (v, 3).method может принимать следующие значения:
"nearest"-
Возвращает ближайшее значение.
"linear"-
Линейная интерполяция от ближайших соседей.
"cubic"-
Кубическая интерполяция от четырёх ближайших соседей (ещё не реализовано).
"spline"Интерполяция кубическим сплайном — плавные первая и вторая производные по всей кривой.
Метод по умолчанию —
"linear".Если первый аргумент hax является дескриптором осей, то график строится на этих осях, а не на текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это дескриптор графического объекта созданной поверхности.
Примеры:
[x, y, z] = meshgrid (linspace (-8, 8, 32)); v = sin (sqrt (x.^2 + y.^2 + z.^2)) ./ (sqrt (x.^2 + y.^2 + z.^2)); slice (x, y, z, v, [], 0, []); [xi, yi] = meshgrid (linspace (-7, 7)); zi = xi + yi; slice (x, y, z, v, xi, yi, zi);
- : ribbon (y) ¶
- : ribbon (x, y) ¶
- : ribbon (x, y, width) ¶
- : ribbon (hax, …) ¶
- : h = ribbon (…) ¶
-
Отображает ленточную диаграмму для столбцов y против x.
Если x опущено, предполагается вектор с номерами строк (
1:rows (Y)). В качестве альтернативы, x также может быть вектором с тем же количеством элементов, что и строки y, в этом случае одно и то же значение x используется для каждого столбца y.Необязательный параметр width задаёт ширину одной ленты (по умолчанию 0.75).
Если первый аргумент hax является дескриптором осей, то график рисуется на этих осях, а не на текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это вектор графических дескрипторов объектов поверхности, представляющих каждую ленту.
- : shading (type) ¶
- : shading (hax, type) ¶
-
Устанавливает затенение объектов графических патчей или поверхностей.
Допустимые значения для 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(:));
Примечание для программирования: Полный список свойств описан в Свойства рассеивания.
- : 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/v7.2.0/Three_002dDimensional-Plots.html