本页翻译不是最新的。点击此处可查看最新英文版本。
从三维体数据中提取等值面数据
isosurface(X,Y,Z,V,isovalue)
s = isosurface(X,Y,Z,V,isovalue)
s = isosurface(X,Y,Z,V)
s = isosurface(V,isovalue)
s = isosurface(V)
s = isosurface( ___ ,colors)
s = isosurface( ___ ,'verbose')
s = isosurface( ___ ,'noshare')
[faces,verts] = isosurface( ___ )
[faces,verts,colors] = isosurface( ___ )
等值面是三维数据分布中具有相等值的各点的三维曲面表示。 isosurface 函数通过连接空间的一个三维体内的常量值点来计算和绘制曲面。
isosurface
示例
isosurface( X , Y , Z , V , isovalue ) 确定三维体数据 V 等于指定的 isovalue 的位置,并将 isosurface 绘制到当前坐标区中。
isosurface( X , Y , Z , V , isovalue )
X
Y
Z
V
isovalue
s = isosurface( X , Y , Z , V , isovalue ) 确定三维体数据 V 等于指定的 isovalue 的位置,并在结构体中返回所得曲面的面和顶点数据。
s = isosurface( X , Y , Z , V , isovalue )
s
s = isosurface( X , Y , Z , V ) 使用数据的直方图选择等值面值。
s = isosurface( X , Y , Z , V )
s = isosurface( V , isovalue ) 使用基于 V 的大小的 X 、 Y 和 Z 坐标。每个维度中的坐标从 1 开始,形成一个 m × n × p 网格,其中 [m,n,p] = size(V) 。
s = isosurface( V , isovalue )
m
n
p
[m,n,p] = size(V)
s = isosurface( V ) 使用数据的直方图选择等值面值。
s = isosurface( V )
s = isosurface( ___ , colors ) 对数组 colors 插值并转化为标量字段,并将数据存储在结构体的 facevertexcdata 字段中。
s = isosurface( ___ , colors )
colors
facevertexcdata
s = isosurface( ___ , 'verbose' ) 在计算过程中将进度消息输出至命令行窗口。
s = isosurface( ___ , 'verbose' )
'verbose'
s = isosurface( ___ , 'noshare' ) 不创建共享顶点。它会生成更多的顶点。
s = isosurface( ___ , 'noshare' )
'noshare'
[ faces , verts ] = isosurface( ___ ) 在单独的数组中返回面和顶点。
[ faces , verts ] = isosurface( ___ )
faces
verts
[ faces , verts , colors ] = isosurface( ___ ) 在单独的数组中返回面、顶点和颜色数据。
[ faces , verts , colors ] = isosurface( ___ )
全部折叠
使用 meshgrid 创建三维网格坐标,并创建三维体数据 V。然后,通过连接值为 0.0001 的点在三维体内创建一个等值面。绘制该等值面。
meshgrid
[x,y,z] = meshgrid([-3:0.25:3]); V = x.*exp(-x.^2 -y.^2 -z.^2); isosurface(x,y,z,V,1e-4);
创建一个等值面,其中等值面的值为 0.0001。在结构体中返回所得曲面的面和顶点的位置。
[x,y,z] = meshgrid([-3:0.25:3]); V = x.*exp(-x.^2 -y.^2 -z.^2); s = isosurface(x,y,z,V,1e-4)
s = struct with fields: vertices: [1693x3 double] faces: [3348x3 double]
创建一个等值面,其中等值面的值为 0.0001。在单独的数组中返回所得曲面的面和顶点的位置。
[x,y,z] = meshgrid([-3:0.25:3]); V = x.*exp(-x.^2 -y.^2 -z.^2); [faces,verts] = isosurface(x,y,z,V,1e-4)
faces = 3348×3 1 2 3 1 4 2 2 4 5 4 6 5 5 6 7 6 8 7 9 10 11 9 12 10 10 12 13 12 14 13
verts = 1693×3 0.2500 -0.2500 -2.7918 0.2181 -0.2500 -2.7500 0.2500 -0.4366 -2.7500 0.2500 0 -2.8092 0.2049 0 -2.7500 0.2500 0.2500 -2.7918 0.2181 0.2500 -2.7500 0.2500 0.4366 -2.7500 0.5000 -0.7500 -2.7935 0.4165 -0.7500 -2.7500
创建一个等值面,其中等值面的值为 0.0001。计算面和顶点的位置并在结构体中返回结果。然后,通过将结构体数据传递给 patch 函数来绘制面和顶点数据。调整绘图的视图,更改曲面颜色,并指定自定义光照。
patch
[x,y,z] = meshgrid([-3:0.25:3]); V = x.*exp(-x.^2 -y.^2 -z.^2); s = isosurface(x,y,z,V,1e-4);
p = patch(s); isonormals(x,y,z,V,p) view(3); set(p,'FaceColor',[0.5 1 0.5]); set(p,'EdgeColor','none'); camlight; lighting gouraud;
将流数据可视化,但用颜色对曲面进行标记以指示沿 X 轴的幅值。首先,通过指定包含等值面中每个顶点的标量值的向量来计算颜色数据。这些颜色映射到当前颜色图。
[x,y,z] = meshgrid([-3:0.25:3]); V = x.*exp(-x.^2 -y.^2 -z.^2); [faces,verts,colors] = isosurface(x,y,z,V,1e-4,x);
然后,通过将数据传递给 patch 函数,用计算的颜色数据绘制等值面。设置相机角度和纵横比,并更改颜色图。
patch('Vertices',verts,'Faces',faces,'FaceVertexCData',colors,... 'FaceColor','interp','EdgeColor','interp') view(3) colormap copper
x 轴坐标数据,指定为向量或与 V 大小相同的三维数组。如果指定三维数组,它必须单调正交分布,就好像是由 meshgrid 函数生成的一样。
数据类型: single | double
single
double
y 轴坐标数据,指定为向量或与 V 大小相同的三维数组。如果指定三维数组,它必须单调正交分布,就好像是由 meshgrid 函数生成的一样。
z 轴坐标数据,指定为向量或与 V 大小相同的三维数组。如果指定三维数组,它必须单调正交分布,就好像是由 meshgrid 函数生成的一样。
三维体数据,指定为与 X 、 Y 和 Z 大小相同的三维数组。
用于计算曲面的等值面值,指定为标量。
颜色数据,指定为向量或与 V 大小相同的三维数组。使用此参数控制 isosurface 的颜色映射,其数据不同于用于计算 isosurface 的数据。此参数通过对所得的 isosurface 着色来叠加另一个数据集。向量或数组包含 isosurface 中每个顶点的标量值,并使用当前颜色图进行映射。
您可以使用 colormap 函数自定义颜色方案。这种自定义需要更改控制曲面和颜色图之间关系的数组中的值。索引数组将绘图的特定位置与颜色图中的颜色相关联。默认情况下, C 中的中间值线性映射到颜色图中间的行。
colormap
C
等值面数据,以结构体形式返回,其中的字段 faces 和 vertices 包含对应的面和顶点数据。
vertices
计算的等值面的面数据,以数组形式返回。
计算的等值面的顶点数据,以数组形式返回。
计算的等值面的颜色数据,以数组形式返回,其中包含每个顶点的插补颜色数据标量值. 系统将根据当前颜色图来绘制该数据。 colors 数组的大小必须与 V 相同。
如果要指定曲面的自定义相机视图、光照或不同颜色图,请使用 patch 函数绘制从 isosurface 返回的数据。您可以将 isosurface 创建的结构体直接传递给 patch 命令。例如:
s = isosurface(X,Y,Z,V,isovalue); patch(s)
也可以通过指定属性名称将单个面和顶点数组传递给 patch。例如:
[faces,verts] = isosurface(X,Y,Z,V,isovalue) ; patch('Faces',faces,'Vertices',verts);
用法说明和限制:
此函数接受 GPU 数组,但不在 GPU 上运行。
有关详细信息,请参阅 Run MATLAB Functions on a GPU (Parallel Computing Toolbox) 。
此函数在分布式数组上运行,但在客户端 MATLAB ® 中执行。
有关详细信息,请参阅 Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox) 。
在 R2006a 之前推出
isonormals | shrinkfaces | smooth3 | contour | meshgrid | contourslice
isonormals
shrinkfaces
smooth3
contour
contourslice
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
MathWorks
Accelerating the pace of engineering and science
MathWorks is the leading developer of mathematical computing software for engineers and scientists.
Discover...