抛射曲线及包络线
1.1 抛射物体运动方程及MATLAB实现
抛射物体的运动可描述为平面上一个动点的轨迹,即抛射曲线,其参数方程为
s?t?x?v0co?? ?12
y?v0sin??t?gt??2其中g是重力加速度,物体初始速度为v0,发射角度为?。
?当发射角度在区间[0,]内变化时,不同发射角便形成不同曲线。由
21??t?g2t? 0 v0sin2 解之,得弹落点所对应的参数值
t0?2v0sin? g1.2 MATLAB实现
对发射角?,参数 t的变化范围为[0,t0]。为了简化问题,取v0?1。下面程序段可绘制曲线簇中的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条曲线。
00.040.060.050.030.020.01-0.0100.020.040.060.080.10.12图 1 不同发射角形成的抛射线簇
1.3 抛射曲线的包络线
不同发射角所形成的抛射线构成一曲线簇,如果存在一条曲线L,曲线簇中每一曲线都与L相切,则称L为该曲线簇的包络。对于参数方程,曲线族的包络曲线由
x?x(t,?),y?y(t,?),?x?y?y?x??0 ?t???t??消去参变量?而得到。在上面抛射线族的包络曲线中
?x?x?v0cos?,??v0sin??t?t??
?y?y?v0sin??gt,?v0cos??t?t??由
?x?y?y?x??0 ?t???t??即?sin??t(sin??gt)?cos??cos??t?0。求解得
?? sin1 gt代入曲线族的参数方程,便得包络曲线的参数方程为
?12?x?t?2g?, ??y?1?1gt2?g2?12?t? gg下面程序段将绘制出曲线簇的包络曲线(又称为安全抛物线)。 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)
0.030.060.050.04
0.02
0.01
0-0.0100.020.040.060.080.10.12图 2 带包络线的抛射线簇
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
0.060.050.040.030.020.010-0.01-0.02-0.0300.020.040.060.080.10.120.14图3 高处朝低处的射击曲线簇
? 低处朝高处的射击曲线簇
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
0.060.050.040.030.020.01000.010.020.030.040.050.060.070.08图4 低处朝高处的射击曲线簇
相关推荐: