声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8313|回复: 18

[共享资源] [原创]小球沿空间螺旋线运动的动画

[复制链接]
发表于 2006-5-27 10:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1. %function f=anim_zzy1(K,ki)
  2. K=2;
  3. ki=450;
  4. t1=(0:1000)/1000*10*pi;
  5. x1=cos(t1);
  6. y1=sin(t1);
  7. z1=-t1;
  8. t2=(0:10)/10;
  9. x2=x1(end)*(1-t2);
  10. y2=y1(end)*(1-t2);
  11. z2=z1(end)*ones(size(x2));
  12. t3=t2;
  13. z3=(1-t3)*z1(end);
  14. x3=zeros(size(z3));
  15. y3=x3;
  16. t4=t2;
  17. x4=t4;
  18. y4=zeros(size(x4));
  19. z4=y4;
  20. x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4];
  21. plot3(x,y,z,'b'),        axis off       
  22. h=line('Color',[1 0 0],'Marker','.','MarkerSize',40,'EraseMode','xor');
  23. n=length(x);i=1;j=1;
  24. while 1                                                               
  25.   set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i));
  26.    drawnow;                                                                                                %         <21>
  27.    pause(0.0005)                                                                                        %        <22>
  28.    i=i+1;
  29.    if nargin==2 & nargout==1       
  30.       if(i==ki&j==1);f=getframe(gcf);end                                %         <25>
  31.    end
  32.    if i>n
  33.       i=1;j=j+1;
  34.       if j>K;break;end
  35.    end
  36. end
复制代码
回复
分享到:

使用道具 举报

发表于 2006-5-29 13:33 | 显示全部楼层
嗯,是个不错的例子!
发表于 2006-5-31 11:19 | 显示全部楼层
请问楼主是什么专业的,搞什么方向的东西
 楼主| 发表于 2006-5-31 19:00 | 显示全部楼层
机械专业,方向待定[em07]
发表于 2006-6-1 22:16 | 显示全部楼层
<P>怎么没有看见程序啊?</P>[em03]
 楼主| 发表于 2006-6-2 14:31 | 显示全部楼层
[em01]没看见?睁大你的双眼!!!!11[em01]
发表于 2006-7-6 22:44 | 显示全部楼层
这个实例很好啊!
动画效果好
发表于 2006-8-28 20:19 | 显示全部楼层

怎么看不到动呢?是静态的?

发表于 2006-9-5 17:01 | 显示全部楼层
配写中文说明对初学者就更好了(看不太懂拉)
发表于 2006-10-24 20:18 | 显示全部楼层

nihao

请问你是什么学校的呢?
发表于 2006-10-24 20:19 | 显示全部楼层

你好

我可以把你的程序弄成我的实验报告吗?快回答
发表于 2006-10-26 18:17 | 显示全部楼层
原帖由 wem 于 2006-8-28 20:19 发表


动态的
发表于 2006-10-26 18:17 | 显示全部楼层
原帖由 tiantaihei 于 2006-9-5 17:01 发表
配写中文说明对初学者就更好了(看不太懂拉)


这里的命令都不复杂,自己慢慢看,没有太大的难度
发表于 2006-11-5 14:56 | 显示全部楼层
顶!
发表于 2007-1-18 22:16 | 显示全部楼层
看MATLAB书看烦了的时候,不妨看看仿真动画,自己做几个也不错,就当娱乐放松吧。对于新手来说,也不失为一种好的学习方法。废话少说,刚才花几分钟看了看这个M文件,简单写了几句注释,大家多指正。
      
       function f=anim_zzy1(K,ki)
%本动画演示了红色小球沿一条封闭螺线运动的引导线动画,
%K表示红色小球沿着路径运动的总圈数,ki代表小球运动到某一刻(取值范围1-1034)
if nargin==0      %没有参数输入时,给出默认参数值         
K=2;
ki=450;
end
t1=(0:1000)/1000*10*pi;
x1=cos(t1);
y1=sin(t1);
z1=-t1;
t2=(0:10)/10;
x2=x1(end)*(1-t2);
y2=y1(end)*(1-t2);
z2=z1(end)*ones(size(x2));
t3=t2;
z3=(1-t3)*z1(end);
x3=zeros(size(z3));
y3=x3;
t4=t2;
x4=t4;
y4=zeros(size(x4));
z4=y4;
x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4];
plot3(x,y,z,'b');                                 
axis on;   
grid on;            %以上语句绘制动画中的封闭曲线
h=line('Color',[1 0 0],'Marker','.','MarkerSize',40,'EraseMode','xor');%用线对象绘制红色小球,异或檫除模式究竟怎么个异或法,还没理解?
n=length(x);i=1;j=1;  %n为1034,其中x1,1001个元素,x2、x3、x4分别为11个元素
while 1                                                               
  set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i)); %将曲线上的坐标设为小球的位置
   drawnow;                                      %刷新图形窗口                                                         
   pause(0.0005)                                 %控制播放速度                                                      
   i=i+1;
   if nargin==2 & nargout==1                     %当输入变量为2个,输出变量为1个时,执行下面的操作
      if((i-1)==ki&j==1);f=getframe(gcf);        %如果小球处于第一圈第ki个点时,得到此时的画面,赋值给f
      end                     
   end                                          
   if i>n                                        %这里可以看出i的取值范围是1-1035,可见ki的取值范围是1-1034
      i=1;j=j+1;                                 %当小球跑完1034个点后,让小球再回到第一个点,并记录现在的圈数
      if j>K;break;end                           %跑完k圈后,跳出死循环。
   end
end

[ 本帖最后由 geoer 于 2007-1-19 09:28 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 17:59 , Processed in 0.073424 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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