1、抛射曲线及包络线1.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=alp
2、ha(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;% 确定曲线上离散点坐标数据endplot(x,y) % 同时绘出曲线簇中n-2条曲线 运行上面程序,输入 n = 20 则可以绘出图1中的18条曲线。图 1 不同发射角形成的抛射线簇1.3 抛射曲线的包络线不同发射角所形成的抛射线构成一曲线簇,如果存在一条曲线L,曲线簇中每一曲线都与L相切,则称L为该曲线簇的包络。对于参数方程,曲线族的包络曲线由消去参变量而得到。在上
3、面抛射线族的包络曲线中 由 即。求解得 代入曲线族的参数方程,便得包络曲线的参数方程为 下面程序段将绘制出曲线簇的包络曲线(又称为安全抛物线)。g=9.8;t=1/g:.001:sqrt(2)/g;x=sqrt(t.2-1/g2);y=1/g-.5*g*t.2;plot(x,y)图 2 带包络线的抛射线簇1.4 两组不同方式的抛射曲线簇图形及源程序n 高处朝低处的射击曲线簇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=v22-2*
4、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 x0xmax xmax=x0;alpha0=alpha; x1=x;y1=y; end end end plot(x1,y1,r) xmax alpha0*180/pi图3 高处朝低处的射击曲线簇n 低处朝高处的射击曲线簇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=v22-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 x0xmax xmax=x0;alpha0=alpha; x1=x;y1=y; end end end plot(x1,y1,r) xmax alpha0*180/pi图4 低处朝高处的射击曲线簇