matlab绘三维椭球面_Matlab绘制曲面

时间:2025-02-16 09:11:15

本文整理了一些三维绘图的内容,代码都比较简单

1、surf、surfc、surfl之后可以试试shading interp

2、绘制隐函数

3、参数方程绘制曲面

4、三维到平面:等高线+引力线

5、快速绘制球面(椭球面)

6、绘制旋转面

7、绕轴旋转

8、分段曲面

1、surf、surfc、surfl之后可以试试shading interp

>> [X Y]=meshgrid(linspace(-2,2),linspace(-2,2));

>> Z=exp(-X.^2-Y.^2);

>> subplot(2,1,1);surf(X,Y,Z);subplot(2,1,2);surf(X,Y,Z);shading interp

2、绘制隐函数

二维使用ezplot,三维使用ezimplot3(需安装)

>> f1='x^2+(y-(x^2)^(1/3))^2-1';f2='x*sin(y+z^2)+y^2*cos(x+z)+z*x*cos(z+y^2)';

>> subplot(1,2,1);ezplot(f1,[-1,1,-1,1.6]);subplot(1,2,2);ezimplot3(f2,[-1,1])

3、参数方程绘制曲面

莫比乌斯环,其中u、v是参数

>> syms u v;

>> x=cos(u)+v*cos(u)*cos(u/2);

>> y=sin(u)+v*sin(u)*cos(u/2);

>> z=v*sin(u/2);

>> ezsurf(x,y,z,[0,2*pi,-0.5,0.5])

4、三维到平面:等高线+引力线

>> syms x y;z(x,y)=(x^2-2*x)*exp(-x^2-y^2-x*y);

>> zx=diff(z,x);zy=diff(z,y);

>> [X,Y]=meshgrid(-3:.1:2,-2:.1:2);Z=double(z(X,Y));

>> ZX=double(zx(X,Y));ZY=double(zy(X,Y));

>> subplot(1,2,1);surf(X,Y,Z);shading interp;zlim([-0.7 1.5]);

>> subplot(1,2,2);contour(X,Y,Z,30);

>> hold on;quiver(X,Y,-ZX,-ZY)

5、快速绘制球面(椭球面)

[x y z]=sphere(50);surf(x,y,z);

%单位球面,50多面形数量(越多图越精确)

%修改x、y、z可以作出任意位置的球、椭球

%当然前面的隐函数也可以绘制

6、绘制旋转面

生成柱面的方程

\[r_1(z)=1,0

\]

\[r_2(z)=e^{-\frac{z^2}{2}}\sin z,-1

\]

r(z) 表示到曲面上z坐标的点到z轴的距离

>> subplot(1,2,1);[x,y,z]=cylinder(1);surf(x,y,z)

>> subplot(1,2,2);

>> z0=-1:0.1:3;r=exp(-z0.^2/2).*sin(z0);

>> [x,y,z]=cylinder(r);

>> z=-1+4*z;surf(x,y,z);

7、绕轴旋转

以六中的图2为例

>> z0=-1:0.1:3;r=exp(-z0.^2/2).*sin(z0);

>> [x,y,z]=cylinder(r);z=-1+4*z;h=surf(x,y,z);

>> r_ax=[0 0 1] %该点与坐标原点的连线为旋转轴

>> axis tight; %保证尺度不变

>> for i=0:360

rotate(h,r_ax,1);

pause(0.02),

end

%循环结构每0.02s转动1°,循环360次

8、分段曲面

\[p(x_1,x_2)=\begin{cases}0.5457e^{-0.75x_2^2-3.75x_1^2-1.5x_1},&x_1+x_2>1\\0.7575e^{-x_2^2-6x_1^2},&-1

\]

>> [x y]=meshgrid(-1:.04:1,-2:.04:2);

>> z=0.5457*exp(-0.75*y.^2-3.75*x.^2-1.5*x).*(x+y>1)+...

0.7575*exp(-y.^2-6*x.^2)&((x+y>-1)&(x+y)<=1)+...

0.5457*exp(-0.75*y.^2-3.75*x.^2+1.5*x).*(x+y

>> surf(x,y,z);shading flat;