青蛙跳水[终稿]
Matlab程序设计
实验报告
化学实验报告单总流体力学实验报告观察种子结构实验报告观察种子结构实验报告单观察种子的结构实验报告单
设计题目:青蛙跳水 姓 名:杨庆龙
学 号:090408426
院 系:电气工程与电子学院 班 级:电气工程及其自动化
指导教师:XX
二零一一年十二月一日
摘要
本程序MATLAB动画设计作品~是使用MATLAB语言进行模拟青蛙跳水的动作~
让我们有身临其境的感觉。
关键词:青蛙跳水 仿真动画 MATLAB
一.课程设计目的
1、熟悉MATLAB设计的基本流程,
2、掌握MATLAB语法结构及调试方法,
3、熟悉MATLAB函数调用~并熟练二维画图的制作;
4、掌握MATLAB语言及其对运动的控制,
5、学会用MATLAB进行基本仿真,
6、掌握MATLAB编程技巧~提高编程水平。 二(课程设计题目描述和要求
题目的描述:
,1,开始时~先画出水盆及盆中水的~然后画出青蛙及地面
,2,用matlab实验对青蛙运动的控制 , 2.要求:
用matlab模拟出水盆、水纹、青蛙和地面~然后运用运动控制是青蛙先运动
到最高点~接着用运动控制让青蛙运动的水中。
三(系统分析与设计:
1.系统总体设计:
程序可分为两个模块:画图和运动控制
画图:画水盆、画青蛙
运动控制:起跳到最高点及竖直下落 2.系统流程图
3.MATLAB动画源程序清单:
close all;
axis([0,25,-13,20]);%定义坐标轴范围 fill([0,25,25,0],[-15,-15,20,20],'w')%填充坐标背景为白色
hold on;%保持当前图形及其轴性
axis off;%取消坐标轴
r1=6;%长半径
r2=3;%短半径
a=0:0.1:2*pi;%定义a
ps=fill(8+r1*cos(a),r2*sin(a),'w');%画盆子底部~填充为白色
hold on;%保持当前图形及其轴性
r3=3;%长半径
r4=1;%短半径
px=fill(8+r3*cos(a),-12+r4*sin(a),'k');%画盆子顶部~填充为黑色
hold on;%保持当前图形及其轴性
pz=line([2,5],[0,-12],'color','k','linewidth',2);%花盆子左边部分~黑色
py=line([11,14],[-12,0],'color','k','linewidth',2);%画盆子右边部分~黑色
title('青蛙跳水','fontsize',20)%标题
hold on;%保持当前图形及其轴性
x1=2.3:0.1:13.5;%定义x1范围
plot(x1,0.3*sin(x1),'k');%画盆中的纹
plot(x1,1+0.3*sin(x1),'k');%画盆中的纹
hold on;%保持当前图形及其轴
b=0:0.01:2*pi;%定义b范围
yanz=line(21.5,6.8,'color','g','linestyle','.','erasemode','xor', 'ma
rkersize',50);%画青蛙左眼轮廓~
yany=line(23.5,6.8,'color','g','linestyle','.','erasemode','xor', 'ma
rkersize',50);%画青蛙右眼轮廓
yanzhz=line(21.5,6.4,'color','m','linestyle','.','erasemode','xor', '
markersize',20);%画青蛙左眼眼珠轮
yanzhy=line(23.5,6.4,'color','m','linestyle','.','erasemode','xor', '
markersize',20);%画青蛙右眼眼珠
zuis=line([21.5,23.5],[6,6],'color','g','linewidth',2);%画青蛙嘴部上面并设置为绿色
zuiz=line([21.5,22.5],[6,4],'color','g','linewidth',2);%画青蛙嘴部左面并设置为绿色
zuiy=line([23.5,22.5],[6,4],'color','g','linewidth',2);%画青蛙嘴部右面并设置为绿色
shen1=line([21.5,21.5],[3.5,6],'color','g','linewidth',2);%画青蛙身体线条并设置为绿色
shen2=line([23.5,23.5],[3.5,6],'color','g','linewidth',2);%画青蛙身体线条并设置为绿色
shen3=line([20,21.5],[2.0,3.5],'color','g','linewidth',2);%画青蛙身体线条并设置为绿色
shen4=line([23.5,25],[3.5,2.0],'color','g','linewidth',2);%画青蛙身体线条并设置为绿色
fx=line([20,25],[2,2],'color','g','linewidth',2);%画青蛙下面线条并设置为绿色
tui1=line([21.5,21.5],[0.8,2],'color','g','linewidth',2);%画青蛙左腿并设置为绿色
tui2=line([23.5,23.5],[0.8,2],'color','g','linewidth',2);%画青蛙右腿并设置为绿色
zhao1=line([20.2,21.5],[0.8,0.8],'color','g','linewidth',3);%画青蛙左脚掌并设置为绿色
zhao2=line([23.5,24.8],[0.8,0.8],'color','g','linewidth',3);%画青蛙右脚掌并设置为绿色
ban=line([19,25],[0.5,0.5],'color','k','linewidth',3);%画青蛙右脚掌并设置为绿色
hold on;%保持当前图形及其轴
for t=0:-0.002*pi:-pi/2 %定义t
a=sin(t);%a变化
x=21.5+14*a;%青蛙在水平方向运动方程
y=6.8-8*a;%青蛙在竖直平方向运动方程
set(yanz,'xdata',[x],'ydata',[y]);%设置左眼的变化
set(yany,'xdata',[x+2],'ydata',[y]);%设置右眼变化
set(yanzhz,'xdata',[x],'ydata',[y-0.4]);%设置左眼珠变化
set(yanzhy,'xdata',[x+2],'ydata',[y-0.4]);%设置右眼珠的变化
set(zuis,'xdata',[x,x+2],'ydata',[y-0.8,y-0.8]);%设置嘴的变化
set(zuiz,'xdata',[x,x+1],'ydata',[y-0.8,y-2.8]);%设置嘴的变化
set(zuiy,'xdata',[x+2,x+1],'ydata',[y-0.8,y-2.8]);%设置嘴的变化
set(shen1,'xdata',[x,x],'ydata',[y-3.3,y-0.8]);%设置身体的变化
set(shen2,'xdata',[x+2,x+2],'ydata',[y-3.3,y-0.8]);%设置身体的变化
set(shen3,'xdata',[x-1.5,x],'ydata',[y-4.8,y-3.3]);%设置身体的变化
set(shen4,'xdata',[x+2,x+3.5],'ydata',[y-3.3,y-4.8]);%设置身体的变化
set(tui1,'xdata',[x,x],'ydata',[y-6,y-4.8]);%设置腿的变化
set(tui2,'xdata',[x+2,x+2],'ydata',[y-6,y-4.8]);%设置腿的变化
set(zhao1,'xdata',[x-1.3,x],'ydata',[y-6,y-6]);%设置爪的变化
set(zhao2,'xdata',[x+2,x+3.3],'ydata',[y-6,y-6]);%设置爪的变化
set(fx,'xdata',[x-1.5,x+3.5],'ydata',[y-4.8,y-4.8]);%设置身体下面线条的变化
set(gcf,'DoubleBuffer','on') ;%消除图像震动
hold on;%保持当前图形及其轴
drawnow;
end
text(12,13,'哇:可以进水中了','fontsize',16,'color','r');%在定义坐标处写标题
for t=0:0.1:18.5%定义t
y1=21-t;%在竖直方向的运动方程
set(yanz,'xdata',[x],'ydata',[y1-7]);%设置左眼的变化
set(yany,'xdata',[x+2],'ydata',[y1-7]);%设置右眼变化
set(yanzhz,'xdata',[x],'ydata',[y1-7.4]);%设置左眼珠变化
set(yanzhy,'xdata',[x+2],'ydata',[y1-7.4]);%设置右眼珠的变化
set(zuis,'xdata',[x,x+2],'ydata',[y1-7.8,y1-7.8]);%设置嘴的变化
set(zuiz,'xdata',[x,x+1],'ydata',[y1-7.8,y1-9.8]);%设置嘴的变化
set(zuiy,'xdata',[x+2,x+1],'ydata',[y1-7.8,y1-9.8]);%设置嘴的变化
set(shen1,'xdata',[x,x],'ydata',[y1-10.3,y1-7.8]);%设置身体的变化
set(shen2,'xdata',[x+2,x+2],'ydata',[y1-10.3,y1-7.8]);%设置身体的变化
set(shen3,'xdata',[x-1.5,x],'ydata',[y1-11.8,y1-10.3]);%设置身体的变化
set(shen4,'xdata',[x+2,x+3.5],'ydata',[y1-10.3,y1-11.8]);%设置身体的变化
set(tui1,'xdata',[x,x],'ydata',[y1-13,y1-11.8]);%设置腿的变化
set(tui2,'xdata',[x+2,x+2],'ydata',[y1-13,y1-11.8]);%设置腿的变化
set(zhao1,'xdata',[x-1.3,x],'ydata',[y1-13,y1-13]);%设置爪的变化
set(zhao2,'xdata',[x+2,x+3.3],'ydata',[y1-13,y1-13]);%设置爪的变化
set(fx,'xdata',[x-1.5,x+3.5],'ydata',[y1-11.8,y1-11.8]);%设置身体下面线条的变化
set(gcf,'DoubleBuffer','on') ;%消除图像震动
hold on;%保持当前图形及其轴
drawnow;
End
四(系统能够运行效果图
五. 系统调试过程中出现的主要问题与分析
1在刚开始画图过程中~由于对命令运用不是很熟悉~导致频繁出错 。 后来 查阅资料和向同学取经掌握了这一些列指令。
2.由于青蛙是有很多线条组成~在运动过程中有的线条出现错误~后经过检查修改~是一个完整的青蛙正常运动。
3.青蛙运动的时候画面效果有点抖动~运用set(gcf,'DoubleBuffer','on')
消除震动
4.程序运行异常,,原因是运行前没有清空数据区;由于数据区是覆盖作用的,所以应该养成先清空数据区的习惯~可以用clc来进行这样的操作。
5.在颜色选用时候一直没有达到最好的效果~特别是青蛙的眼睛无法做到十分逼真。
六. 系统运行报告与结论
1. 特点:程序运行后~可看到青蛙缓缓移动到水中。程序语句简单易懂 ~能给人意很好的视觉效果。
2. 存在的问题:由于本程序在设计过程之中画的图都是简图~无法把青蛙做的生动、逼真。另外运动控制我感觉不是太好~但我不知如何实现整体抛物运动。
3.改进意见:重新做一个生动逼真的青蛙~使其给人视觉冲击更强一些。
4. 个人评价:我感觉作品的效果不错~基本上达到了我多要的效果
七.
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
在这次MATLAB的动画课程设计的过程中~我在MATLAB~这个强大的软件之中学习了好多有用的知识。首先~ 我感觉MATLAB可以运用在多个领域~它目前已经发展成为了国际上面最流行~应用最广泛的科学与工程计算软件之一。它有着强大的数据处理功能~处理速度快~精度高~对工程研究有着非常大的帮助。另外MATLAB的语法规则简单~它是一种解释语言~即解释一条就执行一条~使我们从乏味的C和C++以及汇编语言之中解放出来~大大的提高了工作效率。其次~在动画程序的时候~最开始脑袋一片空白~但是在仔细阅读书籍和阅读程序的时候我慢慢的学会了很多画曲线的指令和函数~并且在学习的时候和C对比~对我感触最大的就是MATLAB既汲取了C语言的优点~比如说循环~又避开了C的繁复与乏味~让我们学习的时候完全可以自己掌握~因为它很多的指令都是英语~有时候在看指令的时候可以直接翻译英文的意思就知道某条指令的意思。同时在程序制作的时候我也遇到了很多的问题~走了很多的弯路~不过最后程序顺利完成的时候内心还是很喜悦的。最后~希望自己在以后的学习之中能以MATLAB为工具来解决自己在学习与工作上面遇到的问题。
八.致谢
首先在这里要感谢MATKAB的发明人Cleve Moler给我们开发了这么好的一个软件。
其次要感谢我的辅导老师程老师。在老师谆谆教导与别具一格的培养之中我学到了好多MATLAB知识~程老师注重我们自己理解程序~让自学与辅导达到平衡~达到最好的效果。另外~在我程序制作过程中经常进程老师的博客找程序进行学习~这个博客给我们创造了非常好的互动学习氛围。
最后要感谢在动画程序制作过程中给了我莫大帮助的同学 九(参考书目
1(曹弋著《MATLAB
教程
人力资源管理pdf成真迷上我教程下载西门子数控教程protel99se入门教程fi6130z安装使用教程
及实训》机械工业出版社2008.4 2.姚东等编著《MATLAB图形与动画设计》国防工业出版社 2009.6 3.吴敏•陈涛《在MATLAB 中实现动画效果》论文 广东海洋大学 2006 4.张志涌编著《MATLAB教程》北京航空航天大学出版社 2001.