欢迎光临散文网 会员登陆 & 注册

2020iypt摩擦振子(三)仿真动画代码

2020-07-11 20:55 作者:茤一份问候  | 我要投稿

代码允许转载,但是放在附录时一定要记得把出处和制作人标清楚!!!!!!!!!!!!!!!!!!!!!!!!!!!

思路讲解:

我们知道动画是由一张一张的图片构成的,那么根据这个,我们只需将各个时刻的位置参数求解出来,然后合成再一起,就是视频了

使用软件:Matlab2019

%%摩擦振子仿真动画

%%初步的动力学基础以及初步求解

%%制作者b战茤一分问候,时间2020/1/22

%%使用代码或引用代码请务必保留开始部分的注释

clear all

global x l p d h g 

x=0.20;%两轴的一半间距

l=0.8;%重物的长度

p=1.5*10^3;%重物的密度

d=0.05;%重物的宽度

h=0.01;%重物的高度

g=9.8;%重力加速度

m=p*h*l*d;%重物的质量

u=0.44;%动摩擦因数

%——————————————————————————

a2=zeros(10000,1);

v2=zeros(10000,1);

x2=zeros(10000,1);

x2(1,1)=0.1;%重心偏移原点的位置

t=0.001;%时间步长

G=m*g;%重力

for i=2:10000

G=m*g;%重力

N1=((x*G-G*x2(i-1,1))/2+x2(i-1,1)*G)/x;%受力分析的方程

N2=(x*G-G*x2(i-1,1))/(2*x);     %受力分析的方程

a2(i,1)=(N2*u-N1*u)/m;            %受力分析的方程

v2(i,1)=v2(i-1,1)+a2(i,1)*t;  %速度

x2(i,1)=x2(i-1,1)+v2(i,1)*t;  %位移

end

%hold on

%plot(x2,'Color','b')

%plot(v2,'Color','r')

%plot(a2,'Color','c')

%-----------------------------------------

%演示动画部分

A=size(x2);

loops = A(1,1);

F(loops) = struct('cdata',[],'colormap',[]);

v = VideoWriter('摩擦振子_摩擦系数0.44_两轴间距0.20.avi');%创建动画

v.FrameRate=60;

open(v);

for j=1:16:loops

  x2z{j}=num2str(x2(j));%数字文字化

end

for i=1:16:A(1,1)

    figure(i)

r=0.1;%底部圆的直径

hold on

axis([-0.5 0.5 -0.3 0.3])

rectangle('Position',[-l/2+x2(i,1) -h l h],'EdgeColor','r','LineWidth',1.5)%重物平板的部分

rectangle('Position',[-(x+r/2) -(r+h) r r],'Curvature',[1 1],'EdgeColor','b','LineWidth',1.5)%重物圆环左

plot(-x,-(h+r/2),'.','Color','k');%绘制圆心左

rectangle('Position',[x-r/2 -(r+h) r r],'Curvature',[1 1],'EdgeColor','b','LineWidth',1.5)%重物圆环右

plot(x,-(h+r/2),'.','Color','k');%绘制圆心右

text(x2(i,1),0.02,'圆心坐标:');%指示线数字

text(x2(i,1)+0.15,0.02,x2z{1,i});%指示线数字

axis equal  %设置坐标间隔

F(i) = getframe(gcf);%保存帧

writeVideo(v,F(i));%写入动画

close

end

close(v);


2020iypt摩擦振子(三)仿真动画代码的评论 (共 条)

分享到微博请遵守国家法律