用Matlab画函数图像
一、螺旋线
1.静态螺旋线
a=0:0.1:20*pi;
h=plot3(a.*cos(a),a.*sin(a),2.*a,'b','linewidth',2);
axis([-50,50,-50,50,0,150]);
grid on
set(h,'erasemode','none','markersize',22);
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('静态螺旋线');
2.动态螺旋线
t=0:0.1:10*pi;
i=1;
h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none');
grid on
axis([-2 2 -2 2 0 35])
for i=2:length(t)
set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i));
drawnow
pause(0.01)
end
title('动态螺旋线');
(图略)
3.圆柱螺旋线
t=0:0.1:10*pi;
x=r.*cos(t);
y=r.*sin(t);
z=t;
plot3(x,y,z,'h','linewidth',2);
grid on
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('圆柱螺旋线')
二、旋转抛物面
b=0:0.2:2*pi;
[X,Y]=meshgrid(-6:0.1:6);
Z=(X.^2+Y.^2)./4;
meshc(X,Y,Z);
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('旋转抛物面')
或直接用:ezsurfc('(X.^2+Y.^2)./4')
三、椭圆柱面
load clown
ezsurf('(2*cos(u))','4*sin(u)','v',[0,2*pi,0,2*pi])
view(-105,40) %视角处理
shading interp %灯光处理
colormap(map) %颜色处理
grid on %添加网格线
axis equal %使x,y轴比例一致
xlabel('x轴');ylabel('y轴');zlabel('z轴'); %添加坐标轴说明title('椭圆柱面') %添加标题
四、椭圆抛物面
b=0:0.2:2*pi;
[X,Y]=meshgrid(-6:0.1:6);
Z=X.^2./9+Y.^2./4;
meshc(X,Y,Z);
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('椭圆抛物面')
或直接用:ezsurfc('X.^2./9+Y.^2./4')
五、'双叶双曲面
ezsurf('8*tan(u)*cos(v)','8.*tan(u)*sin(v)','2.*sec(u)',[-pi./2,3*pi./2,0,2*pi]) axis equal
grid on
axis square
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('双叶双曲面')
六、双曲柱面
load clown
ezsurf('2*sec(u)','2*tan(u)','v',[-pi/2,pi/2,-3*pi,3*pi]) hold on %在原来的图上继续作图
ezsurf('2*sec(u)','2*tan(u)','v',[pi/2,3*pi/2,-3*pi,3*pi]) colormap(map)
shading interp
view(-15,30)
axis equal
grid on
axis equal
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('双曲柱面')
七、双曲抛物面(马鞍面)
[X,Y]=meshgrid(-7:0.1:7);
Z=X.^2./8-Y.^2./6;
meshc(X,Y,Z);
view(85,20)
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('双曲抛物面')
或直接用:ezsurfc('X.^2./8-Y.^2./6')
八、抛物柱面
[X,Y]=meshgrid(-7:0.1:7);
Z=Y.^2./8;
h=mesh(Z);
rotate(h,[1 0 1],180) %旋转处理%axis([-8,8,-8,8,-2,6]);
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('抛物柱面')
或直接用:ezsurfc('Y.^2./8')
九、环面
ezmesh('(5+2*cos(u))*cos(v)','(5+2*cos(u))*sin(v)','2*sin(u)',[0,2*pi,0,2*pi]) axis equal
grid on
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('环面')
十、椭球
ezsurfc('(5*cos(u))*sin(v)','(3*sin(u))*sin(v)','4*cos(v)',[0,2*pi,0,2*pi]) axis equal
grid on
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('椭球')
十一、单叶双曲面
ezsurf('4*sec(u)*cos(v)','2.*sec(u)*sin(v)','3.*tan(u)',[-pi./2,pi./2,0,2*pi]) axis equal
grid on
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('单叶双曲面')
十二、旋转单叶双曲面
load clown
ezsurf('8*sec(u)*cos(v)','8.*sec(u)*sin(v)','2.*tan(u)',[-pi./2,pi./2,0,2*pi]) colormap(map)
view(-175,30)
%alpha(.2) %透明处理
axis equal
grid on
axis square
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('旋转单叶双曲面')
十三、圆柱面
subplot(1,2,1)
ezsurf('(2*cos(u))','2*sin(u)','v',[0,2*pi,0,2*pi]) grid on
shading interp
axis equal
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('圆柱面')
subplot(1,2,2)
cylinder(30)
shading interp
axis square
title('调用cylinder函数所得圆柱面')
下面给出用colormap()改变图像颜色的例子:(用了灯光效果"shading interp") colormap(); %hot/cool/copper/gray/hsv/spring/summer/winter...
colormap(hsv)
colormap(hot)
colormap(gray)
colormap(cool)
colormap(copper)
下面做了旋转("view([ ])")、灯光(“shading interp”)、透明(“alpha()”)处理:
>> figure(2)
n=100;
x=linspace(-3,3,n);
y=linspace(-3,3,n);
z=linspace(-3,3,n);
[X,Y,Z]=ndgrid(x,y,z);
F=((-(X.^2) .* (Z.^3) -(9/80).*(Y.^2).*(Z.^3)) + ((X.^2) + (9/4).* (Y.^2) + (Z.^2)-1).^3); isosurface(F,0)
lighting phong
caxis
axis equal
colormap('flag');
view([55 34]);
clc;clear;close all; i=-pi:0.1:pi; x=2.*(sin(i)-sin(2*i)./2); y=2.*(cos(i)-cos(i).^2); figure(1); plot(x,y);grid on;box on; axis([-3 3 -4.2 1]); title('心形线');xlabel('x');ylabel('y');
[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)