MATLAB绘制3D隐函数曲面的方法总结
2017-03-28 by:CAE仿真在线 来源:互联网
l. isosurface 等值面函数
调用格式:fv =
isosurface(X,Y,Z,V,isovalue)
作用:返回某个等值面(由isovalue指定)的表面(faces)和顶点(vertices)数据,存放在结构体fv中(fv由vertices、faces两个域构成)。如果是画隐函数 v = f(x,y,z) =
0 的三维图形,那么等值面的数值为isovalue =
0。
2. patch函数
调用格式:patch(X,Y,C) 以平面坐标(X, Y)为顶点,构造平面多边形,C是RGB颜色向量
patch(X,Y,Z,C)以空间3-D坐标(X,
Y,Z)为顶点,构造空间3D曲面,C是RGB颜色向量
patch(fv) 通过包含vertices、faces两个域的结构体fv来构造3D曲面,fv可以直接由等值面函数isosurface得到
例如:patch(isosurface(X,Y,Z,V,0))
例如:patch(isosurface(X,Y,Z,V,0))
3. isonormals等值面法线函数
调用格式:isonormals(X,Y,Z,V,p)
实现功能:计算等值面V的顶点法线,将patch曲面p的法线设置为计算得到的法线(p是patch返回得到的句柄)。如果不设置法线的话,得到曲面在过渡地带看起来可能不是很光滑
解决办法一:isosurface
patch isonormals
实现原理:先定义3元显函数v
=f(x, y, z), 则 v = 0 定义的等值面就是z =
g(x,y)的3D曲面。利用isosurface函数获取v= 0 的等值面,将得到的等值面直接输入给patch函数,得出patch句柄p,并画出patch曲面的平面视角图形。对p用isonormals函数设置曲面顶点数据的法线,最后设置颜色、亮度、3D视角,得到3D曲面。
代码如下:
-
f = @(x,y,z) x.*y.*z.*log(1 x.^2 y.^2
z.^2)-10;
% 函数表达式
-
[x,y,z] =
meshgrid(-10:.2:10,-10:.2:10,-10:.2:10);
%
画图范围
-
v = f(x,y,z);
-
h = patch(isosurface(x,y,z,v,0));
-
isonormals(x,y,z,v,h)
-
set(h,'FaceColor','r','EdgeColor','none');
-
xlabel('x');ylabel('y');zlabel('z');
-
alpha(1)
-
grid on; view([1,1,1]); axis equal; camlight; lighting
gouraud
-
ezimplot3的方法实质是跟方法1是一样的。
补充一个:MC(Marching Cube)方法,这是计算机图像学中很有名的方法。
http://www.mathworks.com/matlabc ... 2506-marching-cubes
开放分享:优质有限元技术文章,助你自学成才
相关标签搜索:MATLAB绘制3D隐函数曲面的方法总结 MatLab培训 MatLab培训课程 MatLab在线视频教程 MatLab技术学习教程 MatLab软件教程 MatLab资料下载 MatLab代做 MatLab基础知识 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训
编辑