设计题目:姓名:斯洛克进球仿真XXXXXXXX电气与电子信息工程系自动化XXXX学号:院系:专业:指导教师:2012年12月24日一.摘要
本软件设计作品使用MATLAB语言进行校斯洛克进球动画仿真。
动画较真实,能较客观反映仿真效果。
在斯洛克动画设计中使其移动产生动画效果。仿真杆运动击白
球,白球运动击中绿球,绿球运动,遇到台球桌边沿反弹改变运动轨迹,进入中腰洞口。在总菜单设计中,分别提供不同的动画仿真和退出MATLAB语言环境。一.课程设计目的
1:熟悉课程设计的基本流程。2:掌握MATLAB语法结构及调试方法。3:熟悉MATLAB函数调用,熟练二维画图。4:掌握MATLAB语言在控制方面的运用。5:学会用MATLAB进行基本仿真。6:掌握MATLAB编程技巧,提高编程水平。二.系统分析
运行程开始,先建立坐标系,除去坐标,画好台球桌与球杆,填充底座背景颜色,画D型区及球桌网络,按照指定位置放好各色桌球。球杆移动,击中白球,白球移动击中绿球,绿球移动碰到台球桌边沿,反弹,换方向移动,到中腰洞口。绿球进洞,即绿球消失。仿真结束。
2:设计的要求:
①画好台球桌,按照指定位置摆好各色球②打绿球使绿球进洞三.系统设计:系统总体框架流程
画台球桌
程序开始清除工作区清除命令区放置各色球杆击球白球运动绿球运动3:MATLAB动画源程序清单:
figure('name','李成茂学号:090408608自动化091班');%设置标题名字
title('玩转斯诺克','fontsize',28,'color','y');%设置背景色,坐标和标题
axis([0,400,0,210]);%建立坐标系axisequal;
axisoff;%除掉坐标holdon;%画球台与球杆
fill([0,385.1,385.1,0],[0,0,206.0,206.0],[0,1,0]);%填充底座背景
fill([14.1,371.0,371.0,14.1],[14.1,14.1,191.9,191.9],[0,0.5,0]);%填充底座背景
l1=line([87.8;87.8],[14.1;191.9],'color','k','linewidth',2);g1=line([1;45],[103;103],'color','k','linewidth',8);%画D区域
t=pi/2:0.01:3*pi/2;
plot(87.8+29.2*cos(t),103+29.2*sin(t),'color','k','linewidth',2)%画球网
t1=0:0.01:3*pi/2;
plot(14.1+8.5*cos(t1),191.9+8.5*sin(t1),'color','k','linewidth',2)
t2=pi/2:0.01:2*pi;
plot(14.1+8.5*cos(t2),14.1+8.5*sin(t2),'color','k','linewidth',2)
t3=pi:0.01:5*pi/2;
plot(371.0+8.5*cos(t3),14.1+8.5*sin(t3),'color','k','linewidth',2)
t4=-pi/2:0.01:pi;
plot(371.0+8.5*cos(t4),191.9+8.5*sin(t4),'color','k','linewidth',2)
t5=pi:0.01:2*pi;
plot(192.55+8.5*cos(t5),14.1+8.5*sin(t5),'color','k','linewidth',2)t6=0:0.01:pi;
plot(192.55+8.5*cos(t6),191.9+8.5*sin(t6),'color','k','linewidth',2)%放置球
t=0:pi/200:2*pi;x11=58.6-8.5*cos(t);y11=103.0-8.5*sin(t);
c11=fill(x11,y11,'w');%放置白球x12=87.8-8.5*cos(t);y12=132.2-8.5*sin(t);
c12=fill(x12,y12,'g');%放置绿球x13=87.8-8.5*cos(t);y13=103.0-8.5*sin(t);
c13=fill(x13,y13,'c');%放置青球x14=87.8-8.5*cos(t);y14=73.8-8.5*sin(t);
c14=fill(x14,y14,'y');%放置黄球x15=361.0-8.5*cos(t);y15=181.9-8.5*sin(t);
c15=fill(x15,y15,'b');%放置蓝球x16=192.5-8.5*cos(t);y16=103.0-8.5*sin(t);
c16=fill(x16,y16,'r');%放置红球x17=338.6-8.5*cos(t);y17=103.0-8.5*sin(t);
c17=fill(x17,y17,'k');%放置黑球pause(1);%暂停一秒
t1=text(200,150,'准备','fontsize',16,'color','r');pause(1.5);delete(t1);%取消t1
t1=text(200,150,'开始!!!','fontsize',16,'color','r');pause(1);%暂停一秒delete(t1);%取消t1
g2=line([14.4;50],[59;93],'color','k','linewidth',8);%球杆第一次击球delete(g1);drawnow;
fori=0:95;%设置运动速度xa=x11+0.192*i;ya=y11+0.192*i;
set(c11,'xdata',xa,'ydata',ya);%描述白球第一次运动drawnow;%刷新屏幕end;
fori=0:85;%设置运动速度xa=x12+0.597*i;ya=y12+0.597*i;
set(c12,'xdata',xa,'ydata',ya);%绿球运动轨迹drawnow;%刷新屏幕end;delete(c12);t=0:pi/200:2*pi;x121=138.5-8.5*cos(t);y121=182.9-8.5*sin(t);
c121=fill(x121,y121,'g');%放置绿球fori=0:200;%设置运动速度
xa=x121+0.2750*i;ya=y121-0.8645*i;
set(c121,'xdata',xa,'ydata',ya);%绿球运动轨迹drawnow;%刷新屏幕end;
delete(c121);
四.系统调试过程中出现的主要问题
1;未使用axisoff指令,使坐标没有消除。
2;轨迹参数设置不准确,发生球没打到洞口,球却消失了。改进方法是,准确求出参数,不断进行微调修改。
3:程序报错--原因是出现语法错误;如:未定义变量时有Error:Missingvariableorfunction.
使用非英文符号时有Error:\"EndofInput\"expected,\":\"found.4:程序无响应--原因是路径错误;如果调用M文件,要使M文件处于当前路径;5:实际与理论不符--原因是出现逻辑错误;
在动画衔接处要用MATLAB计算出临界值,如足球场罚球弧和禁区线的交接以及脚旗区与边界的交接等都需要先计算出临界值。
6:程序运行异常--原因是运行前没有清空数据区。由于数据区是覆盖作用的,所以应该养成先清空数据区的习惯。7:函数调用报错--原因是版本不同,库函数就不同。
8:动画变化单步--原因是未使用holdon语句,holdon语句可使该条语句前的所有画面覆盖合成。
五.系统调试后的效果图:
(1)绘制的台球桌面(2)绿球进洞后六.系统运行报告与结论通过调试后:
1:台球桌显示正常,说明无语法与逻辑错误。2:各色桌球摆在指定位置,说明坐标设置没有错误。3:球杆及白球运动正常,说明程序运行正常;4:绿球运动并反弹,说明轨迹及坐标设定正确;七.作品中存在的不足
台球桌与实际台球桌相比没有那么逼真,只限于编程水平还不够,所以需要更多的学习。八.总结
MATLAB语言有强大的数据处理功能,处理速度快,精度高,还有众多工具包,所以大规模用于控制领域,仿真领域,因此它有强大的生命力和广阔的发展前景;同时,MATLAB语言不同于其他计算机语言,它是一种解释语言,即解释一条就执行一条!而且严格的区分中英文!所以,在编制程序时要细心!这使我们在编制程序的过程中对MATLAB有了一个深层次的理解。
通过这次MATLAB课程设计,我学到了许多MATLAB的知识。为了了完
美的完成这次课程设计,我费了很多精力学习MATLAB,也查阅了很多关于MATLAB的书籍,同时我也掌握了很多新知识,特别是了解了许多MATLAB函数。在设计过程中,我也碰到了许多问题,走了很多弯路,主要是因为对MATLAB还较不熟练,犯了一些常规错误,但最后通我查阅相关书籍和请教老师同学,问题都迎刃而解。在解决问题过程中,学会了很多MATLAB的知识,最重要的是学会了自己解决问题的能力,受益非浅。
总之,通过MATLAB课程设计,我熟悉了课程设计的流程,掌握了MATLAB语言的基本语句,学会了独立思考和查阅资料解决问题的能力。九.致谢:
在这里特别感谢康老师在课堂上的讲解和引导,使我对MATLAB语言有强烈的兴趣,从而促使更进一步的学习MATLAB语言,并将知识应用与实际问题的解决!例如,二维图形的设计,M函数的编写,及simulikx系统仿真。十.参考书目:
1.《MATLAB教程及实训》2008.5
2.《控制系统MATLAB》社
2006.4
黄忠霖/周向明编著国防工业出版曹弋编著
机械工业出版社
因篇幅问题不能全部显示,请点此查看更多更全内容