编辑: 牛牛小龙人 | 2019-09-19 |
1 抛射物体运动方程及MATLAB实现 抛射物体的运动可描述为平面上一个动点的轨迹,即抛射曲线,其参数方程为 其中g是重力加速度,物体初始速度为,发射角度为. 当发射角度在区间内变化时,不同发射角便形成不同曲线.由 ?解之,得弹落点所对应的参数值 1.2 MATLAB实现 对发射角,参数 t的变化范围为.为了简化问题,取.下面程序段可绘制曲线簇中的n-2条曲线. n=input('input n:输入数据n,确定所绘曲线簇曲线数 alpha=(2:n-1)*pi/(2*n);
% 确定不同曲线所对应的发射角 for k=1:n-2 % 开始计算n-2条曲线上的离散点数据 a=alpha(k)选取角度值 v1=cos(a);
v2=sin(a);
% 计算初始速度分量 t0=v2/4.9;
t=(0:16)*t0/16;
确定参数值 x(k,:)=v1*t;
y(k,:)=v2*t-4.9*t.^2;
% 确定曲线上离散点坐标数据 end plot(x',y'同时绘出曲线簇中n-2条曲线? ??? 运行上面程序,输入 n =
20 则可以绘出图1中的18条曲线. ? 1.3 抛射曲线的包络线 不同发射角所形成的抛射线构成一曲线簇,如果存在一条曲线L,曲线簇中每一曲线都与L相切,则称L为该曲线簇的包络.对于参数方程,曲线族的包络曲线由 消去参变量而得到.在上面抛射线族的包络曲线中 由即.求解得 代入曲线族的参数方程,便得包络曲线的参数方程为 下面程序段将绘制出曲线簇的包络曲线(又称为安全抛物线). g=9.8;
t=1/g:.001:sqrt(2)/g;
x=sqrt(t.^2-1/g^2);
y=1/g-.5*g*t.^2;
plot(x,y) 1.4 两组不同方式的抛射曲线簇图形及源程序 高处朝低处的射击曲线簇 g=9.8;
xmax=0;
alpha0=0;
h=0;
H=-0.02;
a=0:pi/60:pi/2;
for k=1:31 alpha=a(k);
v1=cos(alpha);
v2=sin(alpha);
d0=v2^2-2*g*(H-h);
if d0>=0 t0=(v2+sqrt(d0))/g;
t=0:t0/16:t0;
x=v1*t;
x0=x(17);
y=v2*t-0.5*g*t.^2;
plot(x,y,'k') hold on if x0>xmax xmax=x0;
alpha0=alpha;
x1=x;
y1=y;
end end end plot(x1,y1,'r') xmax alpha0*180/pi 低处朝高处的射击曲线簇 g=9.8;
xmax=0;
alpha0=0;
h=0;
H=0.02;
a=0:pi/60:pi/2;
for k=1:31 alpha=a(k);
v1=cos(alpha);
v2=sin(alpha);
d0=v2^2-2*g*(H-h);
if d0>=0 t0=(v2+sqrt(d0))/g;
t=0:t0/16:t0;
x=v1*t;
x0=x(17);
y=v2*t-0.5*g*t.^2;
plot(x,y,'k') hold on if x0>xmax xmax=x0;
alpha0=alpha;
x1=x;
y1=y;
end end end plot(x1,y1,'r') xmax alpha0*180/pi