函数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以创建用于绘制Z数据的X坐标和Y坐标的矩阵。这个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函数改变三维图的观点。
(x,y,z)¶
(z)¶
(…,c)¶
(…,prop,val, …)¶
(hax, …)¶
h= mesh (…)¶
打印三维线框网格。
线框网格是使用矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x = 1:columns (z), y = 1:rows (z)。因此,的列z对应不同x值和行z对应不同y价值观
网格的颜色是通过线性缩放z值以适应当前颜色map的范围。使用caxis和/或改变颜色map以控制外观。
(可选)网格的颜色可以独立于z通过提供彩色矩阵,c.
任何属性/值对都将直接传递给基础surfaceobject。完整的属性清单记录在Surface Properties.
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是createdsurface对象的图形句柄。
详见: ezmesh,meshc,meshz,trimesh,contour,surf,surface,meshgrid,hidden,shading,colormap,caxis.
(x,y,z)¶
(z)¶
(…,c)¶
(…,prop,val, …)¶
(hax, …)¶
h= meshc (…)¶
打印具有基本轮廓线的三维线框网格。
线框网格是使用矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x = 1:columns (z), y = 1:rows (z)。因此,的列z对应不同x值和行z对应不同y价值观
网格的颜色是通过线性缩放z值以适应当前颜色map的范围。使用caxis和/或改变颜色map以控制外观。
(可选)网格的颜色可以独立于z通过提供彩色矩阵,c.
任何属性/值对都将直接传递给基础surfaceobject。完整的属性清单记录在Surface Properties.
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是一个带有图形句柄的2元素向量,用于创建的曲面对象和创建的等高线图。
详见: ezmeshc,mesh,meshz,contour,surfc,surface,meshgrid,hidden,shading,colormap,caxis.
(x,y,z)¶
(z)¶
(…,c)¶
(…,prop,val, …)¶
(hax, …)¶
h= meshz (…)¶
使用周围的幕墙打印三维线框网格。
线框网格是使用矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x = 1:columns (z), y = 1:rows (z)。因此,的列z对应不同x值和行z对应不同y价值观
网格的颜色是通过线性缩放z值以适应当前颜色map的范围。使用caxis和/或改变颜色map以控制外观。
(可选)网格的颜色可以独立于z通过提供彩色矩阵,c.
任何属性/值对都将直接传递给基础surfaceobject。完整的属性清单记录在Surface Properties.
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是createdsurface对象的图形句柄。
详见: mesh,meshc,contour,surf,surface,waterfall,meshgrid,hidden,shading,colormap,caxis.
控制网格隐藏线的删除。
当在没有参数的情况下调用时,隐藏线删除状态会切换。
使用其中一种模式调用时"on"或"off"相应地设置状态。
可选输出参数mode是当前状态。
“隐藏线删除”确定网格绘图后面哪些图形对象可见。默认情况下,网格是不透明的,并且网格后面的线不可见。如果禁用了隐藏线移除,则可以通过网格的面(开口)看到网格后面的对象,尽管网格网格线仍然是不透明的。
(x,y,z)¶
(z)¶
(…,c)¶
(…,prop,val, …)¶
(hax, …)¶
h= surf (…)¶
打印三维曲面网格。
曲面网格是使用着色矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x = 1:columns (z), y = 1:rows (z)。因此,的列z对应不同x值和行z对应不同y价值观
曲面的颜色是通过线性缩放z值以适应当前颜色map的范围。使用caxis和/或改变颜色map以控制外观。
(可选)可以独立于z通过提供彩色矩阵,c.
任何属性/值对都将直接传递给基础surfaceobject。完整的属性清单记录在Surface Properties.
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是createdsurface对象的图形句柄。
注意:可以使用控制曲面的确切外观shading命令或使用set以控制曲面对象属性。
详见: ezsurf,surfc,surfl,surfnorm,trisurf,contour,mesh,surface,meshgrid,hidden,shading,colormap,caxis.
(x,y,z)¶
(z)¶
(…,c)¶
(…,prop,val, …)¶
(hax, …)¶
h= surfc (…)¶
使用基础等高线绘制三维曲面网格。
曲面网格是使用着色矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x = 1:columns (z), y = 1:rows (z)。因此,的列z对应不同x值和行z对应不同y价值观
曲面的颜色是通过线性缩放z值以适应当前颜色map的范围。使用caxis和/或改变颜色map以控制外观。
(可选)可以独立于z通过提供彩色矩阵,c.
任何属性/值对都将直接传递给基础surfaceobject。完整的属性清单记录在Surface Properties.
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是createdsurface对象的图形句柄。
注意:可以使用控制曲面的确切外观shading命令或使用set以控制曲面对象属性。
详见: ezsurfc,surf,surfl,surfnorm,trisurf,contour,mesh,surface,meshgrid,hidden,shading,colormap,caxis.
(z)¶
(x,y,z)¶
(…,lsrc)¶
(x,y,z,lsrc,P)¶
(…, "cdata")¶
(…, "light")¶
(hax, …)¶
h= surfl (…)¶
使用基于各种照明模型的着色打印三维曲面。
曲面网格是使用着色矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。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-elementvector指定曲面的材质属性P= [AM D SP exp]默认为p= [0.55 0.6 0.4 10].
"AM" strength of ambient light"D" strength of diffuse reflection"SP" strength of specular reflection"EXP" specular exponent如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是createdsurface对象的图形句柄。
用例
colormap (bone (64)); surfl (peaks); shading interp;
(x,y,z)¶
(z)¶
(…,prop,val, …)¶
(hax, …)¶
[Nx,Ny,Nz] = surfnorm (…)¶
找到垂直于网格曲面的向量。
如果x和y是向量,则典型的顶点是(xjy(i) ,z(i,j))。因此,的列z对应不同x的值和行z对应不同y价值观如果只有单个输入z则给出x是的1:columns (z)和y是1:rows (z).
如果不要求返回参数,则会绘制曲面图,其中包含曲面的法线向量。
任何属性/值输入对都将指定给曲面对象。完整的属性列表记录在Surface Properties.
如果第一个参数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 (…)¶
(…)¶
计算三维体积数据的等值面。
等值面连接具有相同值的点,类似于等值线图,但在三维中。
输入参数v是一个三维数组,包含在体积上采样的数据。
输入isoval是一个标量,用于指定sosurface的值。如果isoval省略或为空,等值面的“好”值从v.
使用单个输出参数调用时isosurface返回aststructure数组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")¶
(val,hp)¶
(x,y,z,val,hp)¶
(…, "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 (…)¶
(…)¶
为三维数据的等值面创建端盖。
此函数用于在等曲面的开放端放置封口。
输入参数v是一个三维数组,包含在体积上采样的数据。
输入isoval是一个标量,用于指定sosurface的值。如果isoval省略或为空,等值面的“好”值从v.
当使用单个输出参数调用时,isocaps返回aststructure数组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" (default)用于包含上述数据的端盖isoval.
"below", "b"用于包含以下数据的端盖isoval.
可选参数which_plane可以具有以下字符串值之一,以定义应绘制的端盖:
"all" (default)用于所有端盖。
"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)¶
(…,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" (default)具有尖锐边缘的卷积核。
"gaussian", "g"从非相关三元分布函数表示的卷积核。
sz是指定卷积核在x、y和z方上级大小的三元向量,或者是标量。在标量情况下,所有三个维度都使用相同的尺寸([sz, sz, sz]). 默认值为3。
如果method是"gaussian"然后是可选输入std_dev定义了三元正态分布函数的标准差。std_dev是指定高斯卷积核在x、y和z方上级标准偏差的三元向量,或者是标量。在标量情况下,所有三维都使用相同的值。默认值为0.65。
详见: isosurface,isonormals,patch.
[nx,ny,nz,nv] = reducevolume (v,r)¶
[nx,ny,nz,nv] = reducevolume (x,y,z,v,r)¶
nv= reducevolume (…)¶
减少中的数据集体积v根据中的值r.
v是在前3个维度中非奇异的矩阵。
r可以是表示x、y和z方上级归约因子的3个元素的向量,也可以是标量,在这种情况下,在所有三维中使用相同的归约系数。
reducevolume减少的元素数量v只拿走每一个r-第th个元素。
可选地,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)¶
(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,并且没有任何输出参数,则givenpatch将立即更新。
如果reduction_factor省略,得到的结构体reduced_fv包括原始批次的大约50%的面。如果reduction_factor是介于0(排除)和1(排除)之间的分数,该贴片具有大约确定的facesis的相应分数。如果reduction_factor是一个大于或等于1的整数,则生成的补丁具有近似值reduction_factor面孔。根据补丁的几何图形,生成的面数可能与给定的值不同reduction_factor。当检测到许多共享顶点时尤其如此。
为了减少,有必要共享接触面的顶点。共享顶点会自动检测到。通过传递可选的字符串参数可以跳过此检测"fast".
带有可选的字符串参数"verbose",其他状态信息将打印到命令窗口中。
任何字符串输入参数都必须在所有其他参数之后传递。
如果使用一个输出参数调用,则在结构体中返回缩减的面和顶点reduced_fv与字段faces和vertices(详见的一个输出参数isosurface).
如果使用两个输出参数调用,则缩减的面和顶点将在两个单独的矩阵中返回reduced_faces和reduced_vertices.
(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使用Phong的近似。
光源位置和查看器位置向量是使用参数指定的lv和vv分别地位置向量可以给出为以度为单位的2-元素向量[方位角,仰角]或3-元素向量[x,y,z]。
可选的第六个参数指定镜面反射指数(扩散)se如果没有给出,se默认为10。
(type)¶
(hax,type)¶
设置补丁或曲面图形对象的照明。
的有效参数type是
"flat"绘制具有分面照明效果的对象。
"gouraud"在顶点之间绘制具有线性插值照明效果的对象。
"none"绘制没有灯光和阴影效果的对象。
如果第一个参数hax是一个轴控制柄,然后更改此轴中对象的光照效果,而不是从返回的当前轴gca.
只有在同一轴上至少存在一个可见光对象时,照明效果才可见。
shiny¶
dull¶
metal¶
default¶
([as,ds,ss])¶
([as,ds,ss,se])¶
([as,ds,ss,se,scr])¶
(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返回所有可用材料的字符串。如果一个inputargumentmtype_string是材料的名称,1x5元胞载体refl_props并研究了该材料的反射属性。在这两种情况下,都不会更改图形属性。
right¶
left¶
headlight¶
(az,el)¶
(…,style)¶
(hl, …)¶
(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.
(az,el)¶
(hax,az,el)¶
(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-D网格。
的行xx是的副本x的列yy是的副本y如果y如果省略,则假定其与x.
如果可选z输入已给出,或zz则输出将是一个完整的三维网格。如果z省略,并且zz如果有要求,则假定与y.
meshgrid最常用于返回将被绘制的2-D或3-D函数的输入。以下示例创建了一个“宽边帽”函数的曲面图。
f = @(x,y) sin (sqrt (x.^2 + y.^2)) ./ sqrt (x.^2 + y.^2); range = linspace (-8, 8, 41); [X, Y] = meshgrid (range, range); Z = f (X, Y); surf (X, Y, Z);
编程说明:meshgrid仅限于二维或三维网格生成。这个ndgrid函数将生成1-D到N-D网格。然而,这些函数并不完全等同。如果x是长度为M的向量,并且y是长度为N的向量,则meshgrid将返回NxM的输出网格。ndgrid将为相同的输入返回MxN(转置)的输出。一些核心函数预期meshgrid输入和其他人期望ndgrid输入检查有关函数的文档,以确定正确的输入格式。
[y1,y2, …,yn ndgrid (x1,x2, …,xn¶
[y1,y2, …,yn ndgrid (x)¶
给定n个向量x1, …,xnndgrid返回维度n的narray。
第i个返回变量的元素包含向量的元素x我在所有不同于第i维度的维度上重复了一遍。只使用一个输入参数调用ndgridx相当于在所有n个输入参数都等于的情况下调用ndgridx:
[y1,y2, …,yn] =ndgrid(x, …,x)
编程说明:ndgrid与函数非常相似meshgrid除了前两个维度被转换为meshgrid。一些核心函数预期meshgrid输入和其他人期望ndgrid输入检查有关函数的文档,以确定正确的输入格式。
详见: meshgrid.
(x,y,z)¶
(x,y,z,prop,value, …)¶
(x,y,z,fmt)¶
(x,cplx)¶
(cplx)¶
(hax, …)¶
h= plot3 (…)¶
制作三维绘图。
许多不同的参数组合是可能的。最简单的形式是
plot3 (x, y, z)
其中自变量被认为是要在三维中绘制的点的顶点。若所有自变量都是相同长度的向量,则绘制一条连续的直线。如果所有的参数都是矩阵,那么的每一列都被视为一行。没有试图转换参数以使行数匹配。
如果只给出两个自变量,作为
plot3 (x, cplx)
第二个自变量的实部和虚部用作y和z坐标。
如果只给出一个自变量,作为
plot3 (cplx)
参数的实部和虚部用作y和z值,并将它们与索引进行比较。
参数也可以三人一组给出,如下所示
plot3 (x1, y1, z1, x2, y2, z2, ...)
其中每一组三个自变量被视为一条单独的线或三维的一组线。
要绘制多个一个或两个参数组,请使用空格式字符串分隔每个组,如下所示
plot3 (x1, c1, "", c2, "", ...)
可以指定多个属性值对,这将影响绘制的线对象plot3。如果fmt提供了参数,它将以与相同的方式格式化行对象plot。完整的属性清单记录在Line Properties.
如果第一个参数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;");
(azimuth,elevation)¶
([azimuth elevation])¶
([x y z])¶
(2)¶
(3)¶
(hax, …)¶
[azimuth,elevation] = view ()¶
查询或设置当前轴的视点。
参数azimuth和elevation可以作为两个自变量或作为2-元素向量给出。也可以使用笛卡尔坐标指定视点x,y和z.
电话view (2)将视点设置为azimuth= 0 以及elevation= 90 ,这是二维图的默认值。
电话view (3)将视点设置为azimuth= -37.5 以及elevation= 30 ,这是三维图形的默认设置。
如果第一个参数hax是一个轴句柄,然后在该轴上操作,而不是在返回的当前轴上操作gca.
如果没有输入,返回这里的azimuth和elevation.
()¶
(h)¶
(handle_list)¶
(hax)¶
移动相机并调整其属性以查看对象。
当输入为句柄时h,相机设置为指向的边界框的中心h。调整相机的位置,使边界框大致填满视野。
此命令固定相机的查看方向(camtarget() - campos()),相机向上向量(详见camup)和视角(详见camva). 摄像头目标(详见camtarget)和摄像头位置(详见campos)都发生了变化。
如果参数是列表handle_list,然后计算所有对象的单个边界框,然后如上所述调整相机。
如果参数是轴对象hax,则轴的子对象用作handle_list。当在没有输入的情况下调用时,它使用当前轴(详见gca).
p= campos ()¶
([x y z])¶
mode= campos ("mode")¶
(mode)¶
(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.
(theta,phi)¶
(theta,phi,coorsys)¶
(theta,phi,coorsys,dir)¶
(theta,phi数据¶
(theta,phi,“数据”,“z”)¶
(theta,phi,“数据”,“x”)¶
(theta,phi,“数据”,“y”)¶
(theta,phi数据x y z])¶
(theta,phi照相机¶
(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.
(theta)¶
(hax,theta)¶
转动相机。
将相机顺时针滚动theta度。例如,以下命令将相机顺时针(向右)滚动30度;这将导致场景看起来向左滚动30度:
peaks () camroll (30)
将相机向后滚动:
camroll (-30)
以下命令将恢复默认的相机滚转:
camup ("auto")
默认情况下,这些命令会影响当前轴;或者,轴扫描从可选参数指定hax.
t= camtarget ()¶
([x y z])¶
mode= camtarget ("mode")¶
(mode)¶
(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 ()¶
([x y z])¶
mode= camup ("mode")¶
(mode)¶
(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 ()¶
(a)¶
mode= camva ("mode")¶
(mode)¶
(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.
(zf)¶
(hax,zf)¶
放大或缩小相机。
的值zf大于1“放大”,使场景看起来放大:
hf = figure (); sphere (36) camzoom (1.2)
小于1的值会“缩小”,以便相机可以看到更多场景:
camzoom (0.5)
从技术上讲,缩放会影响“视角”。以下命令将重置为默认缩放:
camva ("auto")
close (hf)
默认情况下,这些命令会影响当前轴;或者,轴扫描从可选参数指定hax.
(x,y,z,v,sx,sy,sz)¶
(x,y,z,v,xi,yi,zi)¶
(v,sx,sy,sz)¶
(v,xi,yi,zi)¶
(…,method)¶
(hax, …)¶
h= slice (…)¶
绘制三维数据/标量场的切片。
三维数组的每个元素v表示参数给定的标量值ata位置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是createdsurface对象的图形句柄。
示例:
[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);
(y)¶
(x,y)¶
(x,y,width)¶
(hax, …)¶
h= ribbon (…)¶
为的列绘制函数区图yvs。x.
如果x如果省略,则假定为包含行号的向量(1:rows (Y)). 可替换地,x也可以是元素数与行数相同的向量y在哪种情况下相同x用于的每列y.
可选参数width指定单个函数区的宽度(默认值为0.75)。
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是表示每个函数区的曲面对象的图形句柄的向量。
(type)¶
(hax,type)¶
设置补丁或曲面图形对象的着色。
的有效参数type是
"flat"带有不可见边缘的单色补丁。
"faceted"黑色边缘的单色补丁。
"interp"将对补丁顶点之间的颜色进行插值,并且补丁边不可见。
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
(x,y,z)¶
(x,y,z,s)¶
(x,y,z,s,c)¶
(…,style)¶
(…, "filled")¶
(…,prop,val)¶
(hax, …)¶
h= scatter3 (…)¶
绘制三维散点图。
符号绘制在从向量中的坐标定义的每个点上x,y和z.
符号的大小从s,可以是标量,也可以是长度与x,y和z如果s如果没有给定,或者是一个空矩阵,则使用默认值8点。
符号的颜色从c,可以是定义固定颜色的字符串;三元素向量,给出颜色的红色、绿色和蓝色分量;长度与相同的向量x其将缩放后的索引提供给当前颜色图;或者单独定义每个符号的RGB颜色的Nx3矩阵。
可以使用更改要使用的符号style参数,即以与plot命令如果未指定符号,则默认为"o"或圆形。如果参数"filled"则填充符号。
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是表示点的散射对象的图形句柄。
[x, y, z] = peaks (20); scatter3 (x(:), y(:), z(:), [], z(:));
编程说明:属性的完整列表记录在Scatter Properties.
(x,y,z)¶
(z)¶
(…,c)¶
(…,prop,val, …)¶
(hax, …)¶
h= waterfall (…)¶
绘制三维瀑布图。
瀑布图类似于meshz只打印的行的网格线z(x值)。
线框网格是使用矩形绘制的。角的顶点[x,y]通常是的输出meshgrid.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x = 1:columns (z), y = 1:rows (z)。因此,的列z对应不同x值和行z对应不同y价值观
网格的颜色是通过线性缩放z值以适应当前颜色map的范围。使用caxis和/或改变颜色map以控制外观。
(可选)网格的颜色可以独立于z通过提供彩色矩阵,c.
任何属性/值对都将直接传递给基础surfaceobject。完整的属性清单记录在Surface Properties.
如果第一个参数hax是一个轴句柄,然后绘制到此轴,而不是返回的当前轴gca.
可选返回值h是createdsurface对象的图形句柄。
详见: meshz,mesh,meshc,contour,surf,surface,ribbon,meshgrid,hidden,shading,colormap,caxis.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2