生成平面截单叶双曲面的gif动画的程序
%平面截单叶双曲面
clear
clc
filename='mianjiedanyeshuangqu.gif';
a=3;
b=3;
c=4;
z = -1.5*c:c/20:1.5*c;
[r,alpha1] = meshgrid(z,linspace(0,2*pi,30));
X=a*sqrt(1+r.^2/c^2).*cos(alpha1);
Y=b*sqrt(1+r.^2/c^2).*sin(alpha1);
Z=repmat(z,30,1);
figure(1)
backcolor=get(gcf,'Color');
uicontrol(gcf,'style','text','units','normalized','pos',[0.74 0.02 0.25 0.15],...
'string',{'谢中华设计制作','QQ:56330069','天津科技大学'},'fontsize',12,'fontweight','bold',...
'fontunits','normalized','Hor','left','ForegroundColor',[0.5,0.5,0.5],...
'bac',backcolor)
set(gcf,'DoubleBuffer','on')
surf(X,Y,Z)
hold on
%colormap gray
[X,Y]=meshgrid(-6:0.5:6,-6:0.5:6);
Z=-6*ones(size(X));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
quiver3(0,0,0,-1,0,0,9,'k','filled','LineWidth',2);
quiver3(0,0,0,0,-1,0,9,'k','filled','LineWidth',2);
quiver3(0,0,0,0,0,1,7,'k','filled','LineWidth',2);
text(0,-0.8,7,'Z')
text(0,-9,0.8,'Y')
text(-9,0,1,'X')
axis equal
%axis([-7,7,-7,7,-7,7])
axis off
title('平面截单叶双曲面的演示动画','fontsize',14,'fontweight','bold')
theta=0:pi/10:2*pi;
r=sqrt(1+36/c^2);
h1=plot3(a*r*cos(theta),b*r*sin(theta),-6*ones(size(theta)),'-k','LineWidth',1.5);
for z=-6:0.4:6
set(h, 'xdata' ,X, 'ydata' ,Y, 'zdata' ,z*ones(size(X)));
R=sqrt(1+z^2/c^2);
xx=a*R*cos(theta);
yy=b*R*sin(theta);
zz=z*ones(size(xx));
set(h1, 'xdata' ,xx, 'ydata' ,yy, 'zdata' ,zz);
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
imind=frame2im(f);
[imind,cm] = rgb2ind(imind,256);
if z==-6
imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.3);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.3);
end
end
delete(h);
[X,Z]=meshgrid(-6:0.5:6,-6:0.5:6);
Y=-5.4083*ones(size(X));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
h1=plot3(0,-5.4083,-6,'-k','LineWidth',1.5);
h2=plot3(0,-5.4083,6,'-k','LineWidth',1.5);
xx=-5.4083:0.1:5.4083;
for y=-5.4083:0.25:-3
set(h, 'xdata' ,X, 'ydata' ,y*ones(size(X)), 'zdata' ,Z);
yy=y*ones(size(xx));
zz1=-c*sqrt(xx.^2/a^2+yy.^2/b^2-1);
zz2=c*sqrt(xx.^2/a^2+yy.^2/b^2-1);
set(h1, 'xdata' ,xx(zz1>-6), 'ydata' ,yy(zz1>-6), 'zdata' ,zz1(zz1>-6));
set(h2, 'xdata' ,xx(zz2<6), 'ydata' ,yy(zz2<6), 'zdata' ,zz2(zz2<6));
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
imind=frame2im(f);
[imind,cm] = rgb2ind(imind,256);
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.3);
end
zz=-6:0.5:6;
for y=-3:0.25:3
set(h, 'xdata' ,X, 'ydata' ,y*ones(size(X)), 'zdata' ,Z);
yy=y*ones(size(zz));
xx1=-a*sqrt(1+zz.^2/c^2-yy.^2/b^2);
xx2=a*sqrt(1+zz.^2/c^2-yy.^2/b^2);
set(h1, 'xdata' ,xx1, 'ydata' ,yy, 'zdata' ,zz);
set(h2, 'xdata' ,xx2, 'ydata' ,yy, 'zdata' ,zz);
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
imind=frame2im(f);
[imind,cm] = rgb2ind(imind,256);
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.3);
end
for y=3:0.25:5.4083+0.25
set(h, 'xdata' ,X, 'ydata' ,y*ones(size(X)), 'zdata' ,Z);
yy=y*ones(size(xx));
zz1=-c*sqrt(xx.^2/a^2+yy.^2/b^2-1);
zz2=c*sqrt(xx.^2/a^2+yy.^2/b^2-1);
set(h1, 'xdata' ,xx(zz1>-6), 'ydata' ,yy(zz1>-6), 'zdata' ,zz1(zz1>-6));
set(h2, 'xdata' ,xx(zz2<6), 'ydata' ,yy(zz2<6), 'zdata' ,zz2(zz2<6));
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
imind=frame2im(f);
[imind,cm] = rgb2ind(imind,256);
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.3);
end
delete(h);
hold off
附件: 您所在的用户组无法下载或查看附件