一、运行结果 :
目录
二、MATLAB代码部分
clc;close all;clear;
%本程序实现小球从斜面滚落模拟,程序主要分为五部分
%常量声明、斜面建立、判断运动情况、绘制小球、制作GIF;
g=9.8; R=2; %常量的声明
angle=atan(20/30);
a=g*sin(angle);
ax=a*cos(angle);
ay=a*sin(angle);
v0=2.6;
for t=0:0.05:5.65
a1=[0 0 5 35 40]; %建立斜面并加阴影
b1=[0 20 20 0 0];
plot(a1,b1,'-c')
fill(a1,b1,'c')
axis([0 40 0 40]);
hold on;
if t<=2 %判断小球运动情况
v=v0;
x=2.6*t;
y=22;
else
v=v0+a*(t-2);
x=5.6+0.5*ax*(t-2)^2;
y=22-0.5*ay*(t-2)^2;
end
text(20,30,{['斜坡高度: ' num2str(20)] ['斜坡长度: ' num2str(30)]...%添加标注
['小球半径: ' num2str(2)] ['时间 t = : ' num2str(t)]...
['小球实时速度: ' num2str(v)] ['小球实时水平位置: ' num2str(x)]...
['小球实时竖直位置: ' num2str(y)] })
title('小球滚落斜坡');
p1=linspace(0,pi); %绘制半径为R的,沿斜面运动的双色小球
p2=linspace(pi,2*pi);
x1=x+R*sin(p1+x*pi/4);y1=y+R*cos(p1+x*pi/4);
x2=x+R*sin(p2+x*pi/4);y2=y+R*cos(p2+x*pi/4);
fill(x1,y1,'w',x2,y2,'k');
axis square;
drawnow;
hold off;
%=============制作gif模块
i=1+20*t;
filename = '小球滚落斜坡.gif';
frame = getframe(gcf);
im = frame2im(frame);
[imind,cm] = rgb2ind(im,256);
if i == 1
imwrite(imind,cm,filename,'gif','WriteMode','overwrite', 'Loopcount',inf);
else
imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0);
end
%=============制作gif模块
end
(第一次发博客,如有什么不对的地方还请大家理解、指正)