找回密码
 注册
Simdroid-非首页
查看: 156|回复: 10

[分享原创] 平面截马鞍面的动画演示程序

[复制链接]
发表于 2009-2-24 21:39:14 | 显示全部楼层 |阅读模式 来自 天津
本帖最后由 xiezhh 于 2009-2-25 09:41 编辑

用平面从不同方向截马鞍面,观察交线形状,从而更清楚的了解马鞍面。生成的动画比较大,就不上传了。
这是原创,我在2008a中已测试过。

%平面截双曲抛物面(马鞍面)
clear
clc
mov=avifile('平面截双曲抛物面(马鞍面).avi','fps',3);
a=4;
b=4;
X=linspace(-12,12,30);
Y=linspace(-12,12,30);
[X,Y]=meshgrid(X,Y);
Z=X.^2/a^2-Y.^2/b^2;
figure(1)
surf(X,Y,Z)
T=[    1.1832   -0.8084         0   -0.1874
    0.1903    0.4799    0.9511   -0.8106
    0.5858    1.4770   -0.3090   11.2109
         0         0         0    1.0000];
view(T)
hold on
quiver3(0,0,0,-1,0,0,20,'k','filled','LineWidth',2);
quiver3(0,0,0,0,-1,0,30,'k','filled','LineWidth',2);
quiver3(0,0,0,0,0,1,15,'k','filled','LineWidth',2);
text(0,-2,15,'Z')
text(0,-30,1,'Y')
text(-20,0,1.5,'X')
axis equal
axis off
%colormap gray
[X,Y]=meshgrid(-13:0.5:13,-13:0.5:13);
Z=-9*ones(size(X));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
%axis([-17,17,-17,17,-10,10])
title('平面截双曲抛物面(马鞍面)的演示动画')

h1=plot3(0,-12,-9,'-k');
h2=plot3(0,12,-9,'-k');
x=-12:0.5:12;
for z=-9:0.1:0
    set(h, 'xdata' ,X, 'ydata' ,Y, 'zdata' ,z*ones(size(X)));     
    xx=x;
    zz=z*ones(size(xx));
    yy1=-b*sqrt(xx.^2/a^2-zz);
    yy2=b*sqrt(xx.^2/a^2-zz);
    set(h1, 'xdata' ,xx, 'ydata' ,yy1, 'zdata' ,zz);
    set(h2, 'xdata' ,xx, 'ydata' ,yy2, 'zdata' ,zz);
    drawnow; % 刷新屏幕
    pause(0.05)   
    f=getframe(gcf);
    mov=addframe(mov,f);
end
for z=0:0.1:9
    set(h, 'xdata' ,X, 'ydata' ,Y, 'zdata' ,z*ones(size(X)));
    yy=x;
    zz=z*ones(size(yy));
    xx1=-a*sqrt(yy.^2/b^2+zz);
    xx2=a*sqrt(yy.^2/b^2+zz);
    set(h1, 'xdata' ,xx1, 'ydata' ,yy, 'zdata' ,zz);
    set(h2, 'xdata' ,xx2, 'ydata' ,yy, 'zdata' ,zz);
    drawnow; % 刷新屏幕
    pause(0.05)   
    f=getframe(gcf);
    mov=addframe(mov,f);
end
delete(h2);
delete(h);

[X,Z]=meshgrid(-13:0.5:13,-9:0.5:9);
Y=-12*ones(size(X));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
xx=-12:0.1:12;
for y=-12:0.1:12
    set(h, 'xdata' ,X, 'ydata' ,y*ones(size(X)), 'zdata' ,Z);
    yy=y*ones(size(xx));
    zz=xx.^2/a^2-yy.^2/b^2;
    set(h1, 'xdata' ,xx, 'ydata' ,yy, 'zdata' ,zz);
    drawnow; % 刷新屏幕
    pause(0.05)   
    f=getframe(gcf);
    mov=addframe(mov,f);
end
delete(h);

[Y,Z]=meshgrid(-13:0.5:13,-9:0.5:9);
X=-12*ones(size(Y));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
yy=-12:0.1:12;
for x=-12:0.1:12
    set(h, 'xdata' ,x*ones(size(Y)), 'ydata' ,Y, 'zdata' ,Z);
    xx=x*ones(size(yy));
    zz=xx.^2/a^2-yy.^2/b^2;
    set(h1, 'xdata' ,xx, 'ydata' ,yy, 'zdata' ,zz);
    drawnow; % 刷新屏幕
    pause(0.05)   
    f=getframe(gcf);
    mov=addframe(mov,f);
end
delete(h1);
delete(h);
hold off
mov=close(mov);

评分

2

查看全部评分

发表于 2009-2-25 08:56:57 | 显示全部楼层 来自 北京
Simdroid开发平台
本帖最后由 ljelly 于 2009-2-25 08:59 编辑

是否原创,请注明
粘贴代码,请注意格式
有代码插入格式
便于编辑
回复 不支持

使用道具 举报

发表于 2009-2-25 09:10:38 | 显示全部楼层 来自 北京
没有avi文件,怎么验证你的代码
实现的效果呢?没法执行啊
回复 不支持

使用道具 举报

 楼主| 发表于 2009-2-25 09:54:09 | 显示全部楼层 来自 天津
ljelly斑竹所说的插入代码格式是右上角的“源码”复选框吗?

我把循环次数减少,生成的动画见附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-2-25 10:04:56 | 显示全部楼层 来自 天津
我把avi格式动画改做成gif格式动画,见附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-2-25 11:32:11 | 显示全部楼层 来自 河北秦皇岛
确实牛,学习学习
回复 不支持

使用道具 举报

发表于 2009-2-25 12:36:57 | 显示全部楼层 来自 北京
ljelly斑竹所说的插入代码格式是右上角的“源码”复选框吗?

我把循环次数减少,生成的动画见附件。
xiezhh 发表于 2009-2-25 09:54


在你编辑的时候,上面的菜单栏除字体大小,颜色外
学有代码,引用等选项
按其中的代码标志,即出现插入代码,粘贴即可
回复 不支持

使用道具 举报

发表于 2009-2-25 23:03:31 | 显示全部楼层 来自 新疆乌鲁木齐
挺不错.
楼主这两天对getframe和drawnow很有兴趣嘛,好像写了不止一个相关代码:victory:
回复 不支持

使用道具 举报

 楼主| 发表于 2009-2-25 23:12:39 | 显示全部楼层 来自 天津
总共写了7个:空间曲线绕Z轴生成旋转面、平面截单叶双曲面、平面截双曲抛物面(马鞍面)、平面截双叶双曲面、平面截椭球面、平面截椭圆抛物面、平面截椭圆锥面。
大同小异,没有全发上面。一开始我只生成avi格式动画,后来都改成gif格式了。
回复 不支持

使用道具 举报

发表于 2009-2-25 23:50:14 | 显示全部楼层 来自 北京朝阳
xiezhh兄是不是天津高校的数学系老师?看你对MATLAB的涉猎范围很广泛,呵呵,热爱程度非同一般!好像北京研讨会你也参加,期待ing
回复 不支持

使用道具 举报

 楼主| 发表于 2009-2-26 17:59:51 | 显示全部楼层 来自 天津河平区
我是天津科技大学数学系的老师,对matlab比较热爱,通过论坛上的交流也学到不少东西,我也非常期待与各位面对面的交流,5月16号北京见吧!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-28 17:05 , Processed in 0.046179 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表