声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4427|回复: 12

[图像处理] 自己学着编写的一个简单动画——“运动合成演示”!

[复制链接]
发表于 2011-4-22 22:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 meiyongyuandeze 于 2011-4-22 23:16 编辑

其实一直都很学习用matlab做动画,但却一直是没有大把的时间,平时事情太多了。最近的一个项目可能要用的到动画的编写,所以最近一直在看动画编程的一些资料,自己昨天晚上编写了一个很简单的动画,主要是关于理论力学中的“运动合成定理”的一个动画演示。编写这个程序主要是学习动画命令和一些功能,自己的水平实在是有限,很多功能都还是很熟练,所以动画只是粗糙的编写了下,凑合真看看吧,也算是交流吧,高手们可别笑话哈。
最近我也将继续就这个程序进行修改,不断添加一些新的功能,算是一起学习吧!
  1. clc;
  2. clear;
  3. close all;
  4. %设置图像
  5. movie=figure('name','运动合成演示');
  6. set(movie,'color',[0.75,0.75,0.75])
  7. set(gcf,'menubar','none','toolbar','none');
  8. fill([0,10,10,0],[9,9,10,10],'r');
  9. text(2.5,9.5,'运动合成演示 ','color','k');
  10. axis([-5,15,-1,10]);
  11. grid on;
  12. %变量设置
  13. x0_wheel1=0.65;
  14. y0_wheel1=-0.6;
  15. x0_wheel2=4;
  16. y0_wheel2=-0.6;
  17. x0_ball=0.0;
  18. y0_ball=5;
  19. x0_body=0.0;
  20. y0_body=5.0;
  21. Dong1=line(x0_wheel1,y0_wheel1,'color','r','linestyle','.','erasemode','xor','markersize',60);
  22. Dong2=line(x0_wheel2,y0_wheel2,'color','r','linestyle','.','erasemode','xor','markersize',60);
  23. Dong4=line([0,5],[0,0],'color','g','linestyle','-','linewidth',10);
  24. Dong5=line([0,0],[-0.15,5],'color','g','linestyle','-','linewidth',10);
  25. Dong6=line([0,5],[5,0],'color','g','linestyle','-','linewidth',10);
  26. Dong7=line([0,2.5],[0,2.5],'color','g','linestyle','-','linewidth',10);
  27. Dong3=line(0.3,5.0,'color','r','linestyle','.','erasemode','none','markersize',30);
  28. orbit1=line('xdata',x0_ball,'ydata',y0_ball,'color','k','linewidth',2);
  29. orbit2=line('xdata',x0_body,'ydata',y0_body,'color','k','linewidth',2);
  30. control_flag=1;
  31. pausetime=0.5;
  32. %设置按钮
  33. bon1=uicontrol('parent',movie,'units','points','tag','b2','style','pushbutton','string','停止','backgroundcolor',[0.75,0.75,0.75],'position',[150 0 50 20],'callback','control_flag=0;');
  34. bon2=uicontrol('parent',movie,'units','points','tag','b3','style','pushbutton','string','退出','backgroundcolor',[0.75,0.75,0.75],'position',[250 0 50 20],'callback',['control_flag=1;,','close']);
  35. %运动设置
  36. t=0;
  37. dt=0.01;
  38. while t<10
  39. if control_flag==0
  40. break
  41. end
  42. t=t+dt;
  43. drawnow;
  44. x_wheel1=x0_wheel1+0.05*t^2;
  45. y_wheel1=y0_wheel1;
  46. set(Dong1,'xdata',x_wheel1,'ydata',y_wheel1);

  47. x_body=0.05*t^2;
  48. x_wheel2=x0_wheel2+x_body;
  49. y_wheel2=y0_wheel2;
  50. set(Dong2,'xdata',x_wheel2,'ydata',y_wheel2);
  51. x0_body=[x0_body x_body];
  52. y0_body=[y0_body 5];
  53. set(orbit2,'xdata',x0_body,'ydata',y0_body);

  54. x_ball=0.1*t^2;
  55. y_ball=5-0.05*t^2;
  56. set(Dong3,'xdata',x_ball,'ydata',y_ball);
  57. x0_ball=[x0_ball x_ball];
  58. y0_ball=[y0_ball y_ball];
  59. set(orbit1,'xdata',x0_ball,'ydata',y0_ball);

  60. x_body1=0.05*t^2-0.15;
  61. y_body1=0;
  62. set(Dong4,'xdata',[x_body1;x_body1+5],'ydata',[y_body1;y_body1]);

  63. x_body2=0.05*t^2-0.15;
  64. y_body2=0;
  65. set(Dong5,'xdata',[x_body2;x_body2],'ydata',[y_body2;y_body2+5]);

  66. x_body3=0.05*t^2-0.15;
  67. y_body3=5;
  68. set(Dong6,'xdata',[x_body3;x_body3+5],'ydata',[y_body3;y_body3-5]);

  69. x_body4=0.05*t^2-0.15;
  70. y_body4=0;
  71. set(Dong7,'xdata',[x_body4;x_body4+2.5],'ydata',[y_body4;y_body4+2.5]);
  72. end
  73. %添加标识
  74. if control_flag~=0
  75. line([5,10],[5,0],'color','k','linestyle','-','linewidth',2.5);
  76. hold on;
  77. pause(pausetime);
  78. fill([0,5,5,0],[5.5,5.5,6.5,6.5],'r');
  79. text(1,6,'牵连运动 ','color','k');
  80. pause(pausetime);
  81. fill([8,13,13,8],[3,3,4,4],'b');
  82. text(9,3.5,'相对运动 ','color','k');
  83. pause(pausetime);
  84. fill([-2.5,2.5,2.5,-2.5],[2,2,3,3],'m');
  85. text(-1,2.5,'绝对运动 ','color','k');
  86. pause(10*pausetime)%无操作5s后关闭并退出
  87. close all
  88. end
复制代码

点评

赞成: 5.0
赞成: 5
  发表于 2014-11-5 16:36

评分

2

查看全部评分

回复
分享到:

使用道具 举报

发表于 2011-4-23 08:58 | 显示全部楼层
meiyongyuandeze兄,好厉害啊,学习了

点评

发了帖子就后悔了,做的太简单了,上不了台面,别笑话哈!  发表于 2011-4-23 09:07
发表于 2011-5-3 15:51 | 显示全部楼层
发表于 2014-10-26 12:33 | 显示全部楼层
我冒昧的问一句  学这个软件拿来干嘛,是仿真吗?
发表于 2014-10-26 15:01 | 显示全部楼层
爱我的泡沫 发表于 2014-10-26 12:33
我冒昧的问一句  学这个软件拿来干嘛,是仿真吗?

http://baike.baidu.com/view/10598.htm?fr=aladdin
回复 支持 1 反对 0

使用道具 举报

发表于 2014-10-27 22:40 | 显示全部楼层
chybeyond 发表于 2014-10-26 15:01
http://baike.baidu.com/view/10598.htm?fr=aladdin

小弟大专一枚,知识甚少呀。
发表于 2014-10-28 15:53 | 显示全部楼层
发表于 2014-10-28 21:46 | 显示全部楼层
爱我的泡沫 发表于 2014-10-27 22:40
小弟大专一枚,知识甚少呀。

跟学历没关系,只要你肯学习
发表于 2014-10-29 18:55 | 显示全部楼层
chybeyond 发表于 2014-10-28 21:46
跟学历没关系,只要你肯学习

谢谢呀! 我主要是来学 振动的,小弟 点检一枚。
发表于 2014-12-6 17:01 | 显示全部楼层
学习中,谢谢了。我也很想自己编个程序,进行动画演示,可是编程能力太一般了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-26 03:59 , Processed in 0.106730 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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