MATLAB绘制3D隐函数曲面的方法总结

2017-03-28  by:CAE仿真在线  来源:互联网

l. isosurface 等值面函数
调用格式:fv = isosurface(X,Y,Z,V,isovalue)
作用:返回某个等值面(由isovalue指定)的表面(faces)和顶点(vertices)数据,存放在结构体fv中(fvverticesfaces两个域构成)。如果是画隐函数 v = f(x,y,z) = 0 的三维图形,那么等值面的数值为isovalue = 0

2. patch函数
调用格式:patch(X,Y,C) 以平面坐标(X, Y)为顶点,构造平面多边形,CRGB颜色向量
patch(X,Y,Z,C)以空间3-D坐标(X, Y,Z)为顶点,构造空间3D曲面,CRGB颜色向量
patch(fv) 通过包含verticesfaces两个域的结构体fv来构造3D曲面,fv可以直接由等值面函数isosurface得到
例如:patch(isosurface(X,Y,Z,V,0))

3. isonormals等值面法线函数
调用格式:isonormals(X,Y,Z,V,p)
实现功能:计算等值面V的顶点法线,将patch曲面p的法线设置为计算得到的法线(ppatch返回得到的句柄)。如果不设置法线的话,得到曲面在过渡地带看起来可能不是很光滑

解决办法一:isosurface patch isonormals
实现原理:先定义3元显函数v =f(x, y, z), v = 0 定义的等值面就是z = g(x,y)3D曲面。利用isosurface函数获取v= 0 的等值面,将得到的等值面直接输入给patch函数,得出patch句柄p,并画出patch曲面的平面视角图形。对pisonormals函数设置曲面顶点数据的法线,最后设置颜色、亮度、3D视角,得到3D曲面。

代码如下:
  1. f = @(x,y,z) x.*y.*z.*log(1 x.^2 y.^2 z.^2)-10; % 函数表达式
  2. [x,y,z] = meshgrid(-10:.2:10,-10:.2:10,-10:.2:10); % 画图范围
  3. v = f(x,y,z);
  4. h = patch(isosurface(x,y,z,v,0));
  5. isonormals(x,y,z,v,h)
  6. set(h,'FaceColor','r','EdgeColor','none');
  7. xlabel('x');ylabel('y');zlabel('z');
  8. alpha(1)
  9. 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培训 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com