15.2.2 Трехмерные графики ¶
Функция mesh создаёт графики поверхности сетки. Например,
tx = ty = linspace (-8, 8, 41)';
[xx, yy] = meshgrid (tx, ty);
r = sqrt (xx .^ 2 + yy .^ 2) + eps;
tz = sin (r) ./ r;
mesh (tx, ty, tz);
xlabel ("tx");
ylabel ("ty");
zlabel ("tz");
title ("3-D Sombrero plot"); производит знакомый график «со шляпы», показанный на рисунке 15.5. Обратите внимание на использование функции meshgrid для создания матриц координат X и Y для построения данных Z. Функция ndgrid похожа на meshgrid, но работает для N-мерных матриц.
Рисунок 15.5: График сетки.
Функция meshc похожа на mesh, но также создаёт график контуров для поверхности.
Функция plot3 отображает произвольные трёхмерные данные, не требуя формирования поверхности. Например,
t = 0:0.1:10*pi;
r = linspace (0, 1, numel (t));
z = linspace (0, 1, numel (t));
plot3 (r.*sin (t), r.*cos (t), z);
xlabel ("r.*sin (t)");
ylabel ("r.*cos (t)");
zlabel ("z");
title ("plot3 display of 3-D helix"); отображает спираль в трёхмерном пространстве, показанную на рисунке 15.6.
Рисунок 15.6: Трехмерная спираль.
Наконец, функция view изменяет точку зрения для трёхмерных графиков.
-
: mesh
(x, y, z)¶ -
: mesh
(z)¶ -
: mesh
(…, c)¶ -
: mesh
(…, prop, val, …)¶ -
: mesh
(hax, …)¶ -
:
h =mesh(…)¶ -
Построение трёхмерной сетчатой рамки.
Сетчатая рамка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. над двумерной прямоугольной областью в плоскости x-y. z определяет высоту над плоскостью каждой вершины. Если задана только одна матрица z, то она строится по сеткеx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z соответствуют различным значениям y.Цвет сетки вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Используйте
caxisи/или измените цветовую карту для управления внешним видом.Необязательно, цвет сетки можно указать независимо от z, передав матрицу цвета c.
Любые пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств описан в Свойствах поверхности.
Если первый аргумент hax является дескриптором осей, то построение выполняется на этих осях, а не на текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это дескриптор графического объекта созданной поверхности.
См. также: ezmesh, meshc, meshz, trimesh, контур, surf, поверхность, meshgrid, скрытый, затенение, colormap, caxis.
-
: meshc
(x, y, z)¶ -
: meshc
(z)¶ -
: meshc
(…, c)¶ -
: meshc
(…, prop, val, …)¶ -
: meshc
(hax, …)¶ -
:
h =meshc(…)¶ -
Построение трёхмерной сетчатой рамки с линиями контура в основе.
Сетчатая рамка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. над двумерной прямоугольной областью в плоскости x-y. z определяет высоту над плоскостью каждой вершины. Если задана только одна матрица z, то она строится по сеткеx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z соответствуют различным значениям y.Цвет сетки вычисляется путём линейного масштабирования значений z в соответствии с диапазоном текущей цветовой карты. Используйте
caxisи/или измените цветовую карту для управления внешним видом.Необязательно, цвет сетки можно указать независимо от z, передав матрицу цвета c.
Любые пары свойство/значение передаются непосредственно базовому объекту поверхности. Полный список свойств описан в Свойствах поверхности.
Если первый аргумент hax является дескриптором осей, то построение выполняется на этих осях, а не на текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это вектор из двух элементов с дескриптором графического объекта созданной поверхности и созданного графика контура.
См. также: ezmeshc, mesh, meshz, контур, surfc, поверхность, meshgrid, скрытый, затенение, colormap, caxis.
-
: meshz
(x, y, z)¶ -
: meshz
(z)¶ -
: meshz
(…, c)¶ -
: meshz
(…, prop, val, …)¶ -
: meshz
(hax, …)¶ -
:
h =meshz(…)¶ -
Построение 3D сетки с окружающей шторой.
Сетка строится с использованием прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. над двумерной прямоугольной областью в плоскости 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, поверхность, waterfall, meshgrid, hidden, shading, colormap, caxis.
-
Управление удалением скрытых линий сетки.
Без аргументов функция переключает режим скрытия линий.
При использовании одного из режимов
"on"или"off"состояние устанавливается соответственно.Необязательный выходной аргумент mode — это текущее состояние.
Удаление скрытых линий определяет, какие графические объекты, находящиеся за объектом сетки, видны. По умолчанию сетка непрозрачна, и линии, расположенные за сеткой, не видны. Если удаление скрытых линий отключено, объекты, расположенные за сеткой, видны через грани (проемы) сетки, хотя линии сетки по-прежнему непрозрачны.
См. также: mesh, meshc, meshz, ezmesh, ezmeshc, trimesh, waterfall.
-
: surf
(x, y, z)¶ -
: surf
(z)¶ -
: surf
(…, c)¶ -
: surf
(…, prop, val, …)¶ -
: surf
(hax, …)¶ -
:
h =surf(…)¶ -
Построение 3D поверхности сетки.
Поверхность строится с использованием затенённых прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. над двумерной прямоугольной областью в плоскости 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, поверхность, meshgrid, hidden, shading, colormap, caxis.
-
: surfc
(x, y, z)¶ -
: surfc
(z)¶ -
: surfc
(…, c)¶ -
: surfc
(…, prop, val, …)¶ -
: surfc
(hax, …)¶ -
:
h =surfc(…)¶ -
Постройте 3D-сетку поверхности с подлежащими контурными линиями.
Сетка поверхности строится с помощью затенённых прямоугольников. Вершины прямоугольников [x, y] обычно являются результатом
meshgrid. над прямоугольной областью в плоскости 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, контур, mesh, поверхность, 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. над прямоугольной областью в плоскости x-y. z определяет высоту над плоскостью каждой вершины. Если задана только одна матрица z, то она строится над сеткойx = 1:columns (z), y = 1:rows (z). Таким образом, столбцы z соответствуют различным значениям x, а строки z соответствуют различным значениям y.Режим освещения по умолчанию
"cdata", изменяет свойство cdata объекта поверхности, чтобы создать впечатление освещённой поверхности.Альтернативный режим
"light"создаёт объект света для освещения поверхности.Положение источника света может быть указано с помощью lsrc, который может быть 2-элементным вектором [азимут, возвышение] в градусах или 3-элементным вектором [lx, ly, lz]. Значение по умолчанию повернуто на 45 градусов против часовой стрелки к текущему виду.
Свойства материала поверхности могут быть заданы с помощью 4-элементного вектора P = [AM D SP exp], который по умолчанию равен p = [0.55 0.6 0.4 10].
-
"AM"интенсивность рассеянного света -
"D"интенсивность диффузного отражения -
"SP"интенсивность зеркального отражения -
"EXP"показатель зеркального отражения
Если первый аргумент hax является дескриптором осей, то построение выполняется в этих осях, а не в текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это дескриптор графического объекта созданной поверхности.
Пример:
colormap (bone (64)); surfl (peaks); shading interp;
См. также: diffuse, specular, surf, shading, colormap, caxis.
-
-
: surfnorm
(x, y, z)¶ -
: surfnorm
(z)¶ -
: surfnorm
(…, prop, val, …)¶ -
: surfnorm
(hax, …)¶ -
:
[Nx, Ny, Nz] =surfnorm(…)¶ -
Найти векторы, нормальные к поверхности сетчатого графика.
Если x и y — векторы, то типичная вершина — (x(j), y(i), z(i,j)). Таким образом, столбцы z соответствуют различным значениям x, а строки z — различным значениям y. Если задан только один входной аргумент z, то x принимается равным
1:columns (z), а y —1:rows (z).Если не запрошены возвращаемые значения, то строится график поверхности с векторами нормали к поверхности.
Любые входные пары свойство/значение присваиваются объекту поверхности. Полный список свойств описан в Свойствах поверхности.
Если первый аргумент hax — дескриптор осей, то график строится в этих осях, а не в текущих осях, возвращаемых
gca.Если запрошены возвращаемые значения, то компоненты векторов нормали возвращаются в Nx, Ny и Nz, и график не строится. Векторы нормали не нормализованы (модуль != 1). Для нормализации используйте
len = sqrt (nx.^2 + ny.^2 + nz.^2); nx ./= len; ny ./= len; nz ./= len;
Пример использования
surfnorm:surfnorm (peaks (25));
Алгоритм: Векторы нормали вычисляются путём взятия векторного произведения диагоналей каждой из четырёхугольных граней в сетчатом графике для нахождения векторов нормали в центре каждой грани. Затем для каждой точки сетчатого графика усредняются четыре ближайших вектора нормали, чтобы получить окончательную нормаль к поверхности в точке сетчатого графика.
Для объектов поверхности свойство
"VertexNormals"содержит эквивалентную информацию, за исключением, возможно, области границы поверхности, где различные схемы интерполяции могут давать немного разные значения.См. также: isonormals, quiver3, surf, meshgrid.
-
:
fv =isosurface(v, isoval)¶ -
:
fv =isosurface(v)¶ -
:
fv =isosurface(x, y, z, v, isoval)¶ -
:
fv =isosurface(x, y, z, v)¶ -
:
fvc =isosurface(…, col)¶ -
:
fv =isosurface(…, "noshare")¶ -
:
fv =isosurface(…, "verbose")¶ -
:
[f, v] =isosurface(…)¶ -
:
[f, v, c] =isosurface(…)¶ -
: isosurface
(…)¶ -
Вычисление изоповерхности данных объёмного 3D-объёма.
Изоповерхность соединяет точки с одинаковым значением и аналогична контурному графику, но в трёх измерениях.
Входной аргумент v — это трёхмерный массив, содержащий данные, сэмплированные в объёме.
Вход isoval — скаляр, определяющий значение для изоповерхности. Если isoval опущен или пустой, значение для изоповерхности определяется из v.
При вызове с единственным выходным аргументом
isosurfaceвозвращается структура-массив fv, содержащий поля faces и vertices, вычисленные в точках[x, y, z] = meshgrid (1:l, 1:m, 1:n)где[l, m, n] = size (v). Выход fv может быть использован напрямую в качестве входных данных для функцииpatch.При вызове с дополнительными входными аргументами x, y и z, которые являются трёхмерными массивами того же размера, что и v, или векторами с длинами, соответствующими размерностям v, данные объёма берутся в указанных точках. Если x, y или z пусты, сетка соответствует индексам (
1:n) в соответствующем направлении (см.meshgrid).Необязательный входной аргумент col, который является трёхмерным массивом того же размера, что и v, определяет окраску изоповерхности. Данные цвета интерполируются по мере необходимости, чтобы соответствовать isoval. В этом случае выходной массив структуры имеет дополнительное поле facevertexcdata.
Если задан строковый входной аргумент
"noshare", вершины могут возвращаться несколько раз для разных граней. По умолчанию поведение заключается в исключении вершин, общих для смежных граней.Строковый входной аргумент
"verbose"поддерживается для совместимости с MATLAB, но не оказывает никакого влияния.Все строковые аргументы должны передаваться после других аргументов.
При вызове с двумя или тремя выходными аргументами информация о гранях f, вершинах v и данных цвета c возвращается в виде отдельных массивов вместо одного массива структуры.
При вызове без выходных аргументов геометрия изоповерхности непосредственно отображается с помощью команды
patchи к осям добавляется объект света, если он ещё не присутствует.Например,
[x, y, z] = meshgrid (1:5, 1:5, 1:5); v = rand (5, 5, 5); isosurface (x, y, z, v, .5);
непосредственно отобразит случайную геометрию изоповерхности в окне графики.
Пример геометрии изоповерхности с различной дополнительной окраской:
N = 15; # Increase number of vertices in each direction iso = .4; # Change isovalue to .1 to display a sphere lin = linspace (0, 2, N); [x, y, z] = meshgrid (lin, lin, lin); v = abs ((x-.5).^2 + (y-.5).^2 + (z-.5).^2); figure (); subplot (2,2,1); view (-38, 20); [f, vert] = isosurface (x, y, z, v, iso); p = patch ("Faces", f, "Vertices", vert, "EdgeColor", "none"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceColor", "green", "FaceLighting", "gouraud"); light ("Position", [1 1 5]); subplot (2,2,2); view (-38, 20); p = patch ("Faces", f, "Vertices", vert, "EdgeColor", "blue"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceColor", "none", "EdgeLighting", "gouraud"); light ("Position", [1 1 5]); subplot (2,2,3); view (-38, 20); [f, vert, c] = isosurface (x, y, z, v, iso, y); p = patch ("Faces", f, "Vertices", vert, "FaceVertexCData", c, ... "FaceColor", "interp", "EdgeColor", "none"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceLighting", "gouraud"); light ("Position", [1 1 5]); subplot (2,2,4); view (-38, 20); p = patch ("Faces", f, "Vertices", vert, "FaceVertexCData", c, ... "FaceColor", "interp", "EdgeColor", "blue"); pbaspect ([1 1 1]); isonormals (x, y, z, v, p) set (p, "FaceLighting", "gouraud"); light ("Position", [1 1 5]);См. также: isonormals, isocolors, isocaps, smooth3, reducevolume, reducepatch, patch.
-
:
vn =isonormals(val, vert)¶ -
:
vn =isonormals(val, hp)¶ -
:
vn =isonormals(x, y, z, val, vert)¶ -
:
vn =isonormals(x, y, z, val, hp)¶ -
:
vn =isonormals(…, "negate")¶ -
: isonormals
(val, hp)¶ -
: isonormals
(x, y, z, val, hp)¶ -
: isonormals
(…, "negate")¶ -
Вычисляются нормали к изоповерхности.
Нормали вершин vn рассчитываются из градиента трехмерного массива val (размер: lxmxn), содержащего данные для геометрии изоповерхности. Нормали направлены к меньшим значениям в val.
Если вызывается с одним выходным аргументом vn, и второй входной аргумент vert содержит вершины изоповерхности, то нормали vn вычисляются в вершинах vert на сетке, заданной
[x, y, z] = meshgrid (1:l, 1:m, 1:n). Выходной аргумент vn имеет тот же размер, что и vert, и может использоваться для установки свойства"VertexNormals"соответствующего патча.Если вызывается с дополнительными входными аргументами x, y и z, которые являются трехмерными массивами того же размера, что и val, то данные объема берутся в этих точках. Вместо данных вершин vert, можно передать дескриптор патча hp.
Если последний входной аргумент — строка
"negate", вычисляются обратные векторные нормали геометрии изоповерхности (т.е. направленные к большим значениям в val).Если не задан ни один выходной аргумент, свойство
"VertexNormals"патча, связанного с дескриптором патча hp, изменяется напрямую.См. также: isosurface, isocolors, smooth3.
-
:
fvc =isocaps(v, isoval)¶ -
:
fvc =isocaps(v)¶ -
:
fvc =isocaps(x, y, z, v, isoval)¶ -
:
fvc =isocaps(x, y, z, v)¶ -
:
fvc =isocaps(…, which_caps)¶ -
:
fvc =isocaps(…, which_plane)¶ -
:
fvc =isocaps(…,¶"verbose") -
:
[faces, vertices, fvcdata] =isocaps(…)¶ -
: isocaps
(…)¶ -
Создаёт заглушки для изоповерхностей 3D данных.
Эта функция размещает заглушки на открытых концах изоповерхностей.
Входной аргумент v является трехмерным массивом, который содержит данные, сэмплированные по объёму.
Вход isoval — скаляр, который задает значение для изоповерхности. Если isoval опущено или пусто, то хорошее значение для изоповерхности определяется из v.
При вызове с одним выходным аргументом,
isocapsвозвращает массив структур fvc со полями:faces,vertices, иfacevertexcdata. Результаты вычисляются в точках[x, y, z] = meshgrid (1:l, 1:m, 1:n)где[l, m, n] = size (v). Результат fvc можно использовать непосредственно в качестве входных данных для функцииpatch.Если вызывается с дополнительными входными аргументами x, y и z, которые являются трехмерными массивами того же размера, что и v, или векторами с длинами, соответствующими размерам v, то данные объема берутся в заданных точках. Если x, y или z пусты, сетка соответствует индексам (
1:n) в соответствующем направлении (см.meshgrid).Необязательный параметр which_caps может иметь одно из следующих строковых значений, определяющих, как будут обрамлены данные:
-
"above","a"(по умолчанию) -
для заглушек, которые обрамляют данные выше isoval.
-
"below","b" для заглушек, которые обрамляют данные ниже isoval.
Необязательный параметр which_plane может иметь одно из следующих строковых значений для определения, какая заглушка должна быть нарисована:
-
"all"(по умолчанию) -
для всех заглушек.
"xmin"-
для заглушек на нижней плоскости x данных.
"xmax"-
для заглушек на верхней плоскости x данных.
"ymin"-
для заглушек на нижней плоскости y данных.
"ymax"-
для заглушек на верхней плоскости y данных.
"zmin"-
для заглушек на нижней плоскости z данных.
"zmax"для заглушек на верхней плоскости z данных.
Строковый входной аргумент
"verbose"поддерживается для совместимости с MATLAB, но не имеет эффекта.Если вызывается с двумя или тремя выходными аргументами, данные для граней faces, вершин vertices и цветовых данных facevertexcdata возвращаются в отдельных массивах вместо одной структуры.
Если не задано ни одного выходного аргумента, заглушки рисуются непосредственно в текущей фигуре с помощью команды
patch.См. также: isosurface, isonormals, patch.
-
-
:
cdat =isocolors(c, v)¶ -
:
cdat =isocolors(x, y, z, c, v)¶ -
:
cdat =isocolors(x, y, z, r, g, b, v)¶ -
:
cdat =isocolors(r, g, b, v)¶ -
:
cdat =isocolors(…, 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 должен быть трехмерной матрицей, не являющейся одиночным элементом. Выход 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].
-
:
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.
-
: 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)¶ -
Устанавливает свойства отражения для освещения поверхностей и «заплаток».
Эта функция изменяет интенсивность окружающего, диффузного и зеркального света, а также показатель зеркального отражения и цвет зеркального отражения всех объектов типа «поверхность» и «заплатка» на текущих осях. Это может быть использовано для имитации свойств отражения некоторых материалов при использовании с
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"При вызове с вектором из трёх элементов обновляются интенсивность окружающего, диффузного и зеркального света всех объектов типа «поверхность» и «заплатка» на текущих осях. Необязательный четвёртый элемент вектора обновляет показатель зеркального отражения, а необязательный пятый — цвет зеркального отражения.
В качестве первого аргумента также можно передать список дескрипторов графических объектов. В этом случае свойства этих дескрипторов и всех дочерних объектов типа «поверхность» и «заплатка» будут обновлены.
Кроме того,
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, соответствующие полной двумерной сетке.
Строки xx представляют собой копии x, а столбцы yy — копии y. Если y опущено, предполагается, что оно такое же, как x.
Если необязательный входной z задан или запрашивается zz, то выход будет полной трехмерной сеткой. Если z опущено и запрашивается zz, предполагается, что оно такое же, как y.
meshgridчаще всего используется для создания входных данных для двумерной или трехмерной функции, которая будет отображаться. Следующий пример создает график поверхности для функции «соболь».f = @(x,y) sin (sqrt (x.^2 + y.^2)) ./ sqrt (x.^2 + y.^2); range = linspace (-8, 8, 41); [X, Y] = meshgrid (range, range); Z = f (X, Y); surf (X, Y, Z);
Примечание по программированию:
meshgridограничен генерацией двумерных или трехмерных сеток. Функцияndgridсгенерирует сетки от 1D до 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(…)¶ -
Создаёт 3D графики.
Возможны различные комбинации аргументов. Простейший вариант:
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, что является значением по умолчанию для 2D графиков.Вызов
view (3)устанавливает точку обзора в azimuth = -37.5 и elevation = 30, что является значением по умолчанию для 3D графиков.Если первый аргумент hax является дескриптором осей, то действие выполняется на этих осях, а не на текущих осях, возвращаемых
gca.Если ввода нет, возвращаются текущие значения azimuth и elevation.
-
: camlookat
()¶ -
: camlookat
(h)¶ -
: camlookat
(handle_list)¶ -
: camlookat
(hax)¶ -
Перемещает камеру и настраивает её свойства для просмотра объектов.
Когда входным значением является дескриптор объекта h, камера устанавливается так, чтобы смотреть на центр области, охватываемой объектом h. Положение камеры корректируется так, чтобы область примерно заполнила поле зрения.
Эта команда фиксирует направление взгляда камеры (
camtarget() - campos()), вектор "вверх" камеры (см.camup) и угол обзора (см.camva). Цель камеры (см.camtarget) и позиция камеры (см.campos) изменяются.Если аргументом является список handle_list, вычисляется общая область, охватываемая всеми объектами, и камера настраивается, как описано выше.
Если аргументом является объект оси hax, то в качестве handle_list используются дочерние элементы оси. При вызове без аргументов используется текущая ось (см.
gca).
-
:
p =campos()¶ -
: campos
([x y z])¶ -
:
mode =campos("mode")¶ -
: campos
(mode)¶ -
: campos
(hax, …)¶ -
Получение или установка позиции камеры.
Позиция камеры по умолчанию определяется автоматически на основе сцены. Например, чтобы получить позицию камеры:
hf = figure(); peaks() p = campos () ⇒ p = -27.394 -35.701 64.079Затем мы можем переместить камеру дальше вверх по оси z:
campos (p + [0 0 10]) campos () ⇒ ans = -27.394 -35.701 74.079После внесения этих изменений, режим позиции камеры mode теперь ручной:
campos ("mode") ⇒ manualМы можем установить его обратно в автоматический режим:
campos ("auto") campos () ⇒ ans = -27.394 -35.701 64.079 close (hf)По умолчанию эти команды влияют на текущую ось; альтернативно, ось можно указать с помощью необязательного аргумента hax.
-
: camorbit
(theta, phi)¶ -
: camorbit
(theta, phi, coorsys)¶ -
: camorbit
(theta, phi, coorsys, dir)¶ -
: camorbit
(theta, phi, "data")¶ -
: camorbit
(theta, phi, "data", "z")¶ -
: camorbit
(theta, phi, "data", "x")¶ -
: camorbit
(theta, phi, "data", "y")¶ -
: camorbit
(theta, phi, "data", [x y z])¶ -
: camorbit
(theta, phi, "camera")¶ -
: camorbit
(hax, …)¶ -
Поворачивает камеру вверх/вниз и влево/вправо вокруг её целевой точки.
Перемещает камеру на phi градусов вверх и на theta градусов вправо, как будто она вращается по орбите вокруг целевой точки. Пример:
sphere () camorbit (30, 20)
Эти вращения центрированы вокруг целевой точки камеры (см.
camtarget). Сначала позиция камеры наклоняется вверх или вниз путём вращения на phi градусов вокруг оси, ортогональной как направлению взгляда (конкретноcamtarget() - campos()), так и вектору «вверх» камеры (см.camup). Пример:camorbit (0, 20)
Второе вращение зависит от входных данных системы координат coorsys и направления dir. По умолчанию coorsys равно
"data". В этом случае камера наклоняется влево или вправо путём вращения на theta градусов вокруг оси, заданной dir. По умолчанию dir равно"z", что соответствует вектору[0, 0, 1]. Пример:camorbit (30, 0)
Когда coorsys установлено в
"camera", камера перемещается влево или вправо путём вращения вокруг оси, параллельной вектору «вверх» камеры (см.camup). В этом случае входной параметр dir не должен быть указан. Пример:camorbit (30, 0, "camera")
(Примечание: вращение на phi не зависит от
"camera".)Команда
camorbitизменяет две свойства камеры:camposиcamup.По умолчанию эта команда воздействует на текущую ось; в качестве альтернативы ось может быть указана необязательным аргументом hax.
-
: camroll
(theta)¶ -
: camroll
(hax, theta)¶ -
Производит вращение камеры.
Вращает камеру по часовой стрелке на theta градусов. Например, следующая команда вращает камеру на 30 градусов по часовой стрелке (вправо); это приведет к тому, что сцена будет казаться повернутой на 30 градусов влево:
peaks () camroll (30)
Возвращение камеры в исходное положение:
camroll (-30)
Следующая команда восстанавливает значение по умолчанию для вращения камеры:
camup ("auto")По умолчанию эти команды воздействуют на текущую ось; в качестве альтернативы ось может быть указана необязательным аргументом hax.
-
:
t =camtarget()¶ -
: camtarget
([x y z])¶ -
:
mode =camtarget("mode")¶ -
: camtarget
(mode)¶ -
: camtarget
(hax, …)¶ -
Получение или установка направления взгляда камеры.
Целевая точка камеры — это точка в пространстве, на которую нацелена камера. Обычно она определяется автоматически на основе сцены:
hf = figure(); sphere (36) v = camtarget () ⇒ v = 0 0 0Мы можем направить камеру на новую целевую точку:
camtarget ([1 1 1]) camtarget () ⇒ 1 1 1
После этого режим целевой точки камеры mode становится ручным:
camtarget ("mode") ⇒ manualЭто означает, например, что добавление новых объектов в сцену не перенастроит камеру:
hold on; peaks () camtarget () ⇒ 1 1 1
Мы можем сбросить её в автоматический режим:
camtarget ("auto") camtarget () ⇒ 0 0 0.76426 close (hf)По умолчанию эти команды воздействуют на текущую ось; в качестве альтернативы ось может быть указана необязательным аргументом hax.
-
:
up =camup()¶ -
: camup
([x y z])¶ -
:
mode =camup("mode")¶ -
: camup
(mode)¶ -
: camup
(hax, …)¶ -
Получение или установка вектора «вверх» камеры.
По умолчанию камера ориентирована так, что «вверх» соответствует положительной оси z:
hf = figure (); sphere (36) v = camup () ⇒ v = 0 0 1Указание нового вектора «вверх» производит вращение камеры и устанавливает режим в ручной:
camup ([1 1 0]) camup () ⇒ 1 1 0 camup ("mode") ⇒ manualИзменение вектора «вверх» не изменяет целевую точку камеры (см.
camtarget). Таким образом, вектор «вверх» камеры может быть не ортогонален направлению взгляда камеры:camup ([1 2 3]) dot (camup (), camtarget () - campos ()) ⇒ 6...
Следствием является то, что «отодвигание» вектора «вверх» не наклоняет вид камеры (поскольку это потребовало бы изменения целевой точки). Поэтому вектор «вверх» обычно используется только для вращения камеры. Более интуитивная команда для этой цели —
camroll.Наконец, мы можем сбросить вектор «вверх» в автоматический режим:
camup ("auto") camup () ⇒ 0 0 1 close (hf)По умолчанию эти команды воздействуют на текущую ось; в качестве альтернативы ось может быть указана необязательным аргументом hax.
-
:
a =camva()¶ -
: camva
(a)¶ -
:
mode =camva("mode")¶ -
: camva
(mode)¶ -
: camva
(hax, …)¶ -
Получение или установка угла обзора камеры.
У камеры есть угол обзора, который определяет, сколько можно увидеть. По умолчанию это:
hf = figure(); sphere (36) a = camva () ⇒ a = 10.340
Чтобы получить более широкий угол обзора, мы можем удвоить угол обзора. Это также установит режим в ручной:
camva (2*a) camva ("mode") ⇒ manualМы можем вернуть его к автоматическому режиму:
camva ("auto") camva ("mode") ⇒ auto camva () ⇒ ans = 10.340 close (hf)По умолчанию эти команды влияют на текущую ось; в качестве альтернативы, ось можно указать с помощью необязательного аргумента hax.
-
: camzoom
(zf)¶ -
: camzoom
(hax, zf)¶ -
Изменение масштаба камеры вперёд или назад.
Значение zf больше 1 «приближает» так, что сцена выглядит увеличенной:
hf = figure (); sphere (36) camzoom (1.2)
Значение меньше 1 «отдаляет» так, что камера может видеть больше сцены:
camzoom (0.5)
В техническом плане, масштабирование влияет на «угол обзора». Следующая команда сбрасывает масштаб до значения по умолчанию:
camva ("auto") close (hf)По умолчанию эти команды влияют на текущую ось; в качестве альтернативы, ось можно указать с помощью необязательного аргумента hax.
-
: slice
(x, y, z, v, sx, sy, sz)¶ -
: slice
(x, y, z, v, xi, yi, zi)¶ -
: slice
(v, sx, sy, sz)¶ -
: slice
(v, xi, yi, zi)¶ -
: slice
(…, method)¶ -
: slice
(hax, …)¶ -
:
h =slice(…)¶ -
Построение срезов 3-мерных данных/скалярных полей.
Каждый элемент трёхмерного массива 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, в этом случае для каждого столбца y используется одно и то же значение x.Необязательный параметр width задаёт ширину одной ленты (по умолчанию 0,75).
Если первый аргумент hax является дескриптором осей, то построение выполняется на этих осях, а не на текущих осях, возвращаемых
gca.Необязательное возвращаемое значение h — это вектор дескрипторов графических объектов поверхности, представляющих каждую ленту.
-
: shading
(type)¶ -
: shading
(hax, type)¶ -
Устанавливает затенение графических объектов patch или surface.
Допустимые значения аргумента type:
"flat"-
Одноцветные фигуры с невидимыми краями.
"faceted"-
Одноцветные фигуры с чёрными краями.
"interp"Цвета между вершинами фигур интерполируются, и края фигур невидимы.
Если первый аргумент hax является дескриптором осей, то построение выполняется на этих осях, а не на текущих осях, возвращаемых
gca.См. также: fill, mesh, patch, pcolor, surf, surface, hidden, lighting.
-
: scatter3
(x, y, z)¶ -
: scatter3
(x, y, z, s)¶ -
: scatter3
(x, y, z, s, c)¶ -
: scatter3
(…, style)¶ -
: scatter3
(…, "filled")¶ -
: scatter3
(…, prop, val)¶ -
: scatter3
(hax, …)¶ -
:
h =scatter3(…)¶ -
Построение 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. над двумерной прямоугольной областью в плоскости 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/v9.2.0/Three_002dDimensional-Plots.html