等值面将体数据中等于特定值的点依次相连,在强调值相等这一点上它与等值线相同。[大谦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对应的等值面图。
>> [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。
图5-3 创建等值面
将等值面转换为面片对象,可以对等值面进行更多的设置。下面将等值面的颜色设置为红色,小面的边为绿色。
>> [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所示。
图5-4 改变等值面的属性