如果梦想触手可及,就不是梦想了
MATLAB画三维隐函数图……又蛋疼了一把……

今天看到某人用另一鄙人不熟悉的数学工具绘了一个三维的心形图……
于是想用MATLAB试试……但是发现貌似MATLAB里面没有现成的画三维隐函数的函数……
以前也没有画过……见过的都是可以解出解析式的或者可以用参数方程表示的……折腾了很久……
先看一个函数……isosurface:
isosurface是用来绘制等值面的函数。 如果函数有返回值,则生成的是曲面的三角网格节点和边的集合,之后需要用patch绘制。实际上得到的并不是类似用mesh或surf之类得到的网格图(surface),而是三角网格图(patch)。(但是用isosurface是目前我所知可以用来绘制一般隐函数曲面的唯一办法。暂时还未找到生成一般隐函数曲面的网格图的好办法。) isosurface的用法还是自己看帮助文件比较好,一时半会也说不完整。大概的意思是: fv=isosurface(x,y,z,v,val) 其中xyz是整个三维空间的网格点,可以用meshgrid生成。 v是对应于坐标(x,y,z)处的函数值 val是你要取的值,之后得到的fv就是v=val处的等值面的xyz的坐标信息,实际上是三角网格点和边的集合。 我们要绘制当v=f(x,y,z)=0处的隐函数曲面,就取val=0。
来个范例:
绘制隐函数(x^2+(9/4)*y^2+z^2-1)^3-x^2*z^3+(9/80)*y^2*z^3=0的图像(一颗爱心),这个方程还是挺有意思的
[x,y,z]=meshgrid(linspace(-1.3,1.3)); val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3; isosurface(x,y,z,val,0) axis equal view(-10,24)
| 打印文章 | 这篇文章由admin于2010年05月14日 12:25 下午发表在MATLAB。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。 |
我最近看过的电影