投篮儿时篮球儿的轨迹大多算是斜上抛运动,给球儿一个初始儿的斜儿上方的初速度,球儿自己做斜上抛运动,但考虑到空气儿阻力,球儿的实际轨迹会与理想轨迹有一定误差,本次将球儿的理想曲线儿和实际曲线儿放到一个图里进行对比,直观感受一下空气阻力的作用,由于时间关系本次没有考虑刮风的情况,有时间再把带风儿的加上。(数学好的投篮时可以快速算一下投出的角度和速度,保证百发百中,
仿真大致思路:首先定义好每个固定的变量,比如球儿的质量,大小,空气密度等,定义时间间隔为0.01s,通过每0.01s选取一个坐标点连起来就是大致的轨迹。由于速度的矢量方向和水平面夹角会随着时间的变化变化,因此要将速度矢量方向、阻力方向和速度大小联系起来,同时,阻力大小也和速度有关,这里将其关系设为阻力和速度大小的平方成正比。同时,球儿的速度和位置采用递归的方式表示。光用文字表达可能越说越迷糊,直接上代码。
代码:
clc
clear
g=9.8;%重力加速度
m=0.145;%重量
k=0.05;%空气阻力系数
r=0.0366;%半径
S=pi*r^2;%阻力面积
rou=1.29;%空气密度
deltat=0.01;
theta=(35/180*pi);%初速度与地面夹角
x(1)=0;
y(1)=0;%初始位置坐标
V(1)=50;%初始速度
Vx(1)=V(1)*cos(theta);
Vy(1)=V(1)*sin(theta);
t=1:700;
for n=1:length(t)
V(n)=sqrt(Vx(n)^2+Vy(n)^2);%合速度
D=rou*k*S.*(V(n).^2);%阻力
ax(n)=-(D/m)*Vx(n)/V(n);%水平加速度
ay(n)=-g-(D/m)*Vy(n)/V(n);%垂直加速度
Vx(n+1)=Vx(n)+ax(n)*deltat;%水平速度
Vy(n+1)=Vy(n)+ay(n)*deltat;%垂直速度
x(n+1)=x(n)+Vx(n)*deltat+0.5*ax(n)*deltat^2;%水平坐标
y(n+1)=y(n)+Vy(n)*deltat+0.5*ay(n)*deltat^2;%垂直坐标
px(n)=Vx(1)*n*deltat;%无阻力水平坐标
py(n)=Vy(1)*n*deltat-0.5*g*(n*deltat)^2;%无阻力垂直坐标
end
plot(x,y,'r',px,py,'g');%红的有阻力,绿的无阻力
grid on
xlabel('x'),ylabel('y');
通过结果基本可以比较直观的看出阻力的作用。