MATLAB 里面怎么画 x^3+y^3+z^3=1 的三维图像啊?
展开全部
追答
x^2+y^2+z^2=1 函数的定义域 x,y,z都是-1~1
将x,y,z的取值范围缩小,加密一点取值得点就可以了
[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');
实际上,这种画隐函数三维曲面的办法,只要基于isosurface这个matlab提供的函数
三维的曲面方程都可以写为 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^2+y^2+z^2=1 函数的定义域 x,y,z都是-1~1
将x,y,z的取值范围缩小,加密一点取值得点就可以了
[x,y,z]=meshgrid(-5:0.5:5);
v=x.^3+y.^3+z.^3-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');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |