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

https://www.ilovematlab.cn/thread-264471-1-1.html

解决办法一: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

代码说明:
alpha函数用于设置patch曲面的透明度(可以是0~1任意数值),1 表示不透明,0 表示最大透明度。如果想设置透明度为0.7,可以修改alpha(1)为alpha(0.7)。
使用此代码解决特定问题时,只需将第1行的函数表达式替换为特定问题的函数表达式,将第2行数据(x、y、z)范围换成合适的范围,后续代码无需任何变动。

解决办法三:第三方工具包ezimplot3
在matlab central 的 file exchange 上有一个非常优秀的绘制3维隐函数的绘图函数,叫ezimplot3。感兴趣的可以在如下链接下载:
http://www.mathworks.com/matlabcentral/fileexchange/23623-ezimplot3-implicit-3d-functions-plotter
也可以直接从本帖下载: ezimplot3.zip (3.71 KB, 下载次数: 25798)

ezimplot3一共有三种参数调用方式:
ezimplot3(f) 画函数f(X,Y,Z)= 0 在-2pi< X < 2 pi, -2* pi < Y < 2* pi, -2* pi < Z < 2* pi上的图形
ezimplot3(f, [A,B])画函数f(X,Y,Z)= 0 在A< X < B, A < Y < B, A < Z < B上的图形
ezimplot3(f, [XMIN,XMAX,YMIN,YMAX,ZMIN,ZMAX])画函数f(X,Y,Z)= 0 在XMIN< X < XMAX, YMIN < Y < YMAX, ZMIN < Z < ZMAX上的图形

ezimplot3使用方法:解压ezimplot3.zip,将解压得到的ezimplot3.m 添加到matlab当前搜索路径后就可以使用了。然后,可以直接在command window 输入代码:

f = @(x,y,z) x*y*z*log(1+x^2+y^2+z^2)-10;
ezimplot3(f,[-10,10]);  % [-10, 10] 表示图形范围x、y、z都在区间[-10, 10]
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值