三维的曲面方程都可以写为 f(x,y,z)=0的方程形式
那么我们首先确定一个三维的空间网格x,y,z
[x y z]=meshgrid(x1:dx:x2,y1:dy:y2,z1:dz:z2)
其中x1:dx:x2确定网格x方向的范围和间隔,y,z方向依次类推
当三者一样的时候,可以只写一个
得到的x,y,z都是三维矩阵
然后代入隐函数f(x,y,z)
计算在这个三角网格每一点的值 v=f(x,y,z)
最后利用isosurface(x,y,z,v,0)得到f=0的等值面
该等值面就是f(x,y,z)=0表示的曲面
最简单的三句画就可以画出等值面
[x y z]=meshgrid(x1:dx:x2,y1:dy:y2,z1:dz:z2);
v=f(x,y,z);
isosurface(x,y,z,v,0);
以画球体为例:
[x,y,z]=meshgrid(-1:0.1:1);
v=x.^2+y.^2+z.^2-1;
p = patch(isosurface(x,y,z,v,0));
isonormals(x,y,z,v,p)
set(p,'FaceColor','r','EdgeColor','k');
daspect([1 1 1]);view(3);
axis tight;camlight ;lighting gouraud;
grid on;
xlabel('x');ylabel('y');zlabel('z');