函数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:列(z),y=1:行(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:列(z),y=1:行(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:列(z),y=1:行(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:列(z),y=1:行(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:列(z),y=1:行(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”)
¶
光
¶
(hax, …)
¶
h=
surfl (…)
¶
使用基于各种照明模型的着色打印三维曲面。
曲面网格是使用着色矩形绘制的。角的顶点[x,y]通常是的输出meshgrid
.在x-y平面中的2-D矩形区域上。z确定每个顶点的平面上方的高度。如果只有一个z给出矩阵,然后将其绘制在网格上x=1:列(z),y=1:行(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"
环境光强度"D"
漫反射强度"SP"
镜面反射强度"EXP"
镜面指数如果第一个参数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:列(z)
和y是1:行(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 冗长的
¶
[f,v] =
isosurface (…)
¶
[f,v,c] =
isosurface (…)
¶
(…)
¶
计算三维体积数据的等值面。
等值面连接具有相同值的点,类似于等值线图,但在三维中。
输入参数v是一个三维数组,包含在体积上采样的数据。
输入isoval是一个标量,用于指定sosurface的值。如果isoval省略或为空,等值面的“好”值从v.
使用单个输出参数调用时isosurface
返回aststructure数组fv包含字段faces和vertices在点处计算[x,y,z]=网格(1:l,1:m,1:n)
这里的[l,m,n]=大小(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 取消
¶
(val,hp)
¶
(x,y,z,val,hp)
¶
取消
¶
计算等值面的法线。
顶点法线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]=网格(1:l,1:m,1:n)
这里的[l,m,n]=大小(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)
¶
(…,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是指定卷积核在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=整形(1:6*8*4,[6 8 4]);nv=减少流明(v, [4 3 2]);
v=整形(1:6*8*4,[6 8 4]);x= 1:3:24;y= -14:5:11;z=林空间(16,18,4);[nx,ny,nz,nv]=减少流明(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 快速的
¶
reduced_fv=
reducepatch 冗长的
¶
[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
.
只有在同一轴上至少存在一个可见光对象时,照明效果才可见。
闪亮的
¶
迟钝的
¶
金属
¶
默认
¶
([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并研究了该材料的反射属性。在这两种情况下,都不会更改图形属性。
正确的
¶
左边
¶
头灯
¶
(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=林空间(-8,8,41);[X,Y]=网格(范围,范围);Z=f(X,Y);冲浪(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 (…)
¶
制作三维绘图。
许多不同的参数组合是可能的。最简单的形式是
绘图3(x,y,z)
其中自变量被认为是要在三维中绘制的点的顶点。若所有自变量都是相同长度的向量,则绘制一条连续的直线。如果所有的参数都是矩阵,那么的每一列都被视为一行。没有试图转换参数以使行数匹配。
如果只给出两个自变量,作为
绘图3(x,cplx)
第二个自变量的实部和虚部用作y和z坐标。
如果只给出一个自变量,作为
绘图3(cplx)
参数的实部和虚部用作y和z值,并将它们与索引进行比较。
参数也可以三人一组给出,如下所示
绘图3(x1,y1,z1,x2,y2,z2, ...)
其中每一组三个自变量被视为一条单独的线或三维的一组线。
要绘制多个一个或两个参数组,请使用空格式字符串分隔每个组,如下所示
绘图3(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)
¶
(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)
¶
(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)
¶
(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)
¶
(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:尺寸(v2.
,y=1:大小(v1.
和z=1:大小(v3.
.
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)
¶
(…,“已填充”)
¶
(…,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:列(z),y=1:行(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