等值面图

等值面将体数据中等于特定值的点依次相连,在强调值相等这一点上它与等值线相同。[大谦MATLAB,dqmatlab点com]

使用isosurface函数可以从体数据中提取出等值面数据来,然后利用patch函数可以绘出等值面。该函数的调用格式为:

fv=isosurface(X,Y,Z,V,isovalue) 计算体数据V中由值isovalue确定的等值面数据。数组X,Y和Z定义体V的坐标。结构fv包含等值面的小面和顶点,可以直接将它们传递给patch命令。

fv=isosurface(V,isovalue) 假设数组X,Y和Z定义为[X,Y,Z]=meshgrid(1:n,1:m,1:p),其中[m,n,p]=size(V)。

fvc=isosurface(…,colors) 对数组colors进行插值,并将插值后的数据返回到fvc结构中的facevertexcdata字段中。colors数组的大小必须与V的相同。使用colors参数,使得可以用与计算等值面不同的数据控制等值面的颜色映射。例如,可以用气流数据绘等值面,用温度数据进行颜色映射。

fv=isosurface(..,'noshare') 不创建公共顶点。这样更快,但生成的顶点集更大。

fv=iaosurface(…, 'verbose') 将进度消息输出到命令窗口。

[f,v]=isosurface(…) 将小面和顶点数据返回到两个数组中,而不是结构中。

isosurface(…) 没有输出参数,用算得的小面和顶点数据创建面片。

本例使用例1-11的数据绘制z=0对应的等值面图。

code.matlab
>> [x,y,z]=meshgrid(-2:.2:2);
>> v=x.^2+2*y.^2-3*z.^2;  %用函数计算各点处的v值
>> isosurface(x,y,z,v,0])  %绘制v=0对应的等值面图

生成图5-3。

Document Image
\[\]

图5-3 创建等值面

将等值面转换为面片对象,可以对等值面进行更多的设置。下面将等值面的颜色设置为红色,小面的边为绿色。

code.matlab
>> [x,y,z]=meshgrid(-2:.2:2);
>> v=x.^2+2*y.^2-3*z.^2;  %用函数计算各点处的v值
>> p=patch(isosurface(x,y,z,v,0));  %将等值面转换为面片对象
>> isonormals(x,y,z,v,p)  %计算等点法向量
>> set(p,'FaceColor','red7;,'EdgeColor','green');  %设置颜色

设置效果如图5-4所示。

Document Image
\[\]

图5-4 改变等值面的属性