导航→ | 『Matlab视频下载』 | 『Matlab研讨会』 | 『Matlab书籍购买』 | 『生活百宝箱』| 捐助论坛,在线获取M币 | 『联系我们』 English
新手必读 | 论坛下载指南论坛热心会员访谈 | 2010年5月份热心会员IE8会员贴图帮助 | RSS订阅帖子 Matlab教学DVD(70集) VANCL购物入口 | 购物奖励入口China-pub购书入口 | 当当网购物入口 | 奖励入口免费获取M币 | 在线获取M币 | VIP会员 免费领取Matlab书籍

发新话题
打印

[程序分享] 生成平面截单叶双曲面的gif动画的程序

生成平面截单叶双曲面的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
附件: 您所在的用户组无法下载或查看附件
本帖最近评分记录
  • hyowinner 威望 +1 鼓励原创内容 2009-2-25 22:38
  • hyowinner 金钱 +1 鼓励原创内容 2009-2-25 22:38

TOP

牛,谢谢。

TOP

发新话题