数学建模社区-数学中国

标题: 【MATLAB动画教程三】 [打印本页]

作者: 士心之约    时间: 2015-9-16 14:33
标题: 【MATLAB动画教程三】
  1. function f=anim_ball(K,ki)
  2. %
  3. %演示红色小球沿一条封闭旋螺线运动的实时动画
  4. % 仅演示实时动画的调用格式为 anim_ball(K)
  5. % 既演示实时动画又拍摄照片的调用格式为 f=anim_ball(K,ki)
  6. % K 红球运动的循环数(不小于 1 )
  7. % ki 指定拍摄照片的瞬间,取 1 到 1034 间的任意整数
  8. % f 存储拍摄的照片数据,可用 image(f.cdata) 观察照片
  9. % 产生封闭的运动轨线
  10. %
  11. %
  12. %by dynamic
  13. %all rights reserved by http://www.4math.cn
  14. %2007.10.26
  15. %
  16. t1=(0:1000)/1000*10*pi;
  17. x1=cos(t1);y1=sin(t1);z1=-t1;
  18. t2=(0:10)/10;
  19. x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2));
  20. t3=t2;
  21. z3=(1-t3)*z1(end);x3=zeros(size(z3));y3=x3;
  22. t4=t2;
  23. x4=t4;y4=zeros(size(x4));z4=y4;
  24. x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4];
  25. h=figure('numbertitle','off','name','擦除动画演示(运动的小球)——Matlabsky')
  26. plot3(x,y,z,'b')
  27. axis off
  28. %绘制红点
  29. %擦除模式设为xor
  30. h=line('Color',[1 0 0],'Marker','.','MarkerSize',40,'EraseMode','xor');
  31. n=length(x);
  32. i=1;j=1;
  33. %循环改变坐标,表现为小球运动
  34. while 1
  35. if ~ishandle(h),return,end
  36. set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i));
  37. drawnow;
  38. pause(0.0005) %这里设置小球运动速度
  39. i=i+1;
  40. if nargin==2 & nargout==1
  41. if(i==ki&j==1);f=getframe(gcf);end %获取指定的帧,保存到f中
  42. end
  43. if i>n
  44. %判断是否运行了一周,是将i设置为1,并将运行周数j加1
  45. i=1;j=j+1;
  46. %判断是否到指定的运行周数,是,退出
  47. if j>K;break;end
  48. end
  49. end
复制代码


作者: 风靡全球    时间: 2015-9-16 18:07
加油  一定要努力哦

作者: 风靡全球    时间: 2015-9-16 18:07
加油  一定要努力哦

作者: 风靡全球    时间: 2015-9-16 18:07
加油  一定要努力哦

作者: 风靡全球    时间: 2015-9-16 18:07
加油  一定要努力哦

作者: 风靡全球    时间: 2015-9-16 18:08
加油  一定要努力哦

作者: 风靡全球    时间: 2015-9-16 18:08
加油  一定要努力哦





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5