Matlab实现振动弹簧的实时动画

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Matlab实现振动弹簧的实时动画摘要:Matlab是当前应用最广泛的科学与工程计算软件之一,本次课设将Matlab引入到图形学动画设计.本次课设主要可分为两大步骤:一、应用Matlab对弹簧振子进行建模;二、应用Matlab实现弹簧振动的实时动画。其中建模部分包括对天花板的建模、对连接直线的建模、对弹簧的建模、对振动小球的建模。模拟弹簧振动的过程主要包括:①更新小球和弹簧的位置。②更新水平线的位置和长度。③实时地画出弹簧高度与时间的关系曲线。关键字:Matlab,振动弹簧,建模,实时动画目录1绪论.....................................................................................................11.1matlab基本功能介绍.......................................................................11.2matlab的动画制作...................................................................22振动弹簧的实时动画.................................................................42.1程序功能分析............................................................................42.2弹簧振子的matlab建模.........................................................62.2.1天花板的建模.......................................................................72.2.2直线的建模.............................................................................82.2.3弹簧的建模.............................................................................92.2.4球的建模...............................................................................102.2.5利用set函数返回句柄值改变来当前坐标轴....................112.3弹簧振动的实时动画..............................................................132.3.1弹簧振子简谐振动的物理模型...........................................132.3.2利用matlab实现弹簧的实时振动.......................................142.4调试结果..................................................................................193设计总结...................................................................................23参考文献.......................................................................................24致谢.......................................................................................................25附录-弹簧阻尼振动程序......................................................................262.1程序功能分析以下是利用matlab实现振动弹簧的事实动画的程序。rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);axis([0,15,-1,10]);%画顶板holdonplot([13,13],[7,8.5],'r','linewidth',2);%画直线y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);%弹簧C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');%球set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');H1=plot([0,13],[3.3,3.3],'y');%句柄[黄线]Q=plot(0,3.8,'color','r');%运动曲线;td=[];yd=[];T=0;5text(2,9,'理想中的弹簧振子简谐振动','fontsize',16);set(gcf,'doublebuffer','on');whileT12;pause(0.2);Dy=(3/2-1/2*sin(pi*T))*1/2;Y=-(y-2)*Dy+7;Yf=Y(end)+t1;td=[td,T];yd=[yd,Y(end)];set(D,'ydata',Y);set(F1,'ydata',Yf,'facecolor',rand(1,3));set(H1,'xdata',[T,13],'ydata',[Y(end),Y(end)]);set(Q,'xdata',td,'ydata',yd);T=T+0.1;end程序功能介绍:模拟弹簧振子简谐运动的过程,同时画出相应圆球质心随时间变化的曲线。上面的程序为模拟弹簧振子的简谐振动,若要模拟弹簧阻尼振动过程的程序,可见附录。2.2弹簧振子的matlab建模图2-1弹簧振子建模图上图所示的图形即为在matlab环境下的弹簧振子的建模图形。实现程序为:rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);axis([0,15,-1,10]);%画顶板holdonplot([13,13],[7,8.5],'r','linewidth',2);%画直线y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);%弹簧C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');%球set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');下面分步介绍它的建模过程。2.2.1天花板的建模2-2天花板建模图如上图所示,为在matlab环境下天花板的建模图形。实现程序为:rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);程序功能介绍:rectangle的功能就是画一个矩形,12,8.5为矩形的一个点,他的长和宽分别为2、0.3。'FaceColor',[0.5,0.3,0.4]是用来设置它的颜色的。2.2.2直线的建模2-3直线的建模图如上图所示,为在matlab下的直线建模图形。实现程序为:plot([13,13],[7,8.5],'r','linewidth',2)程序功能介绍:plot是一个常用的画图函数,[13,13],[7,8.5]确定的直线的位置,'r'设置直线颜色为红色。linewidth',2,直线的粗细设置。2.2.3弹簧的建模2-4弹簧的建模图如上图所示,为在matlab环境下弹簧的建模图形。实现程序为:y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);程序功能介绍:y=2:.2:7,2到7之间0.2为步长生成向量。M=length(y),M=y向量的长度。length为求向量长度的函数。M=26。x=12+mod(1:M,2)*2,生成1412这样的重复数据26个。mod(x,y)为x模除y。mod(1::26,2)ans=1010等26个。x(1)=13,令初始值为13。x(end-3:end)=13,令最后4个数为13。D=plot(x,y),画出该图。Plot函数介绍:plot(X,Y)绘制所有由Xn和Yn数据对定义的曲线。如果仅Xn或者仅Yn是一个矩阵,plot函数绘制向量对矩阵的行或者列的曲线图,取决于是向量的行还是列的尺寸与矩阵相匹配。2.2.4球的建模2-5球的建模图如上图所示,为在matlab环境下球的建模图形。实现程序为:C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');程序功能介绍:C=0:.1:2*pi;r=0.35,0到2之间0.1步长生成向量,r=0.35.t1=r*sin(C),返回r乘以C中每个元素的正弦值的值。F1=fill(13+r*cos(C),2+t1,'r'),画出多边形小球。Fill函数介绍;函数fill用于创建彩色的多边形。格式;fill(X,Y,C)从X和Y中的数据出发创建填充的多边形,顶点颜色为C。C十一哥向量或者矩阵,它是指向色图的指标。如果C是一个行向量,则length(C)必须等于size(X,2)和size(Y,2);如果C是一个列向量,则length(C)必须等于size(X,1)和size(Y,1)。如果有必要,fill将通过最后一个顶点与第一个顶点连接来封闭多边形。2.2.5利用set函数返回当前坐标轴通过上几步的建模我们可以得到如下所示的图形2-6未重新设置轴建模图为下一步实时动画做好准备我们需要重新设定一下坐标。在matlab中可以利用set函数返回句柄值改变来当前坐标轴。得到如下所示的图形。2-7设置后建模图2-8初步设置轴的建模图实现程序为:set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');程序功能介绍:gca未返回当前axes对象的句柄值,ytick为控制Y轴坐标刻度记号的位置,即控制坐标轴上刻度记号的位置以及每隔多少值会到下一个刻度记号的位置,同时还需配合yticklabel属性来调整。set(gca,'ytick',[0:2:9]);将坐标轴从0开始以2为间隔到9设置Y坐标。而下一句程序set(gca,'yticklabels',num2str([-1:3]'))就是通过yticklabel来改变Y轴属性,即由0、2、4、6、8变为-1、0、1、2、3。上面是对Y轴的设置。对平衡位置轴的设置为:plot([0,15],[3.3,3.3],'black'),plot为画直线的常用函数[0,15],[3.3,3.3]定义了平衡位置轴的位置。'black',定义平衡位置轴的颜色为黑。2.3弹簧振动的实时动画2.3

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功