1 问题
本周无意间刷到了德国豹2A5坦克的火控介绍,想自己编写一个不考虑空气阻力以及测风影响的简易弹道计算机(大口径火炮)。
2 方法
由高中物理知识了解到,炮弹出膛之后基本就是抛物线列个抛物线方程就好了;
百度得火炮的弹道方程:
其中,ρ为空气密度,v为速度,A是以弹径为基准的横截面积,CD 为阻力系数,范围在0到2之间,当速度低于300m/s时为常量,这里设0.4。
在11000m以下,空气密度的经验公式为:
设ρ0=1.29kg/m3,T0=10℃=283K,令y为炮弹所在高度,则;
所以阻力加速度为:
记为a=C(y)v2则其运动方程为:
以45度发射炮弹,得到的弹道曲线为:
以85°角发射炮弹,得到的弹道曲线为:
以70°角发射炮弹,得到的弹道曲线为:
以55°角发射炮弹,得到的弹道曲线为:
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
import numpy as np import matplotlib.pyplot as plt dt = 0.001 def C(y,T0): return 1.63764/10000*(1-0.00649*y/T0)**4.25588 def pathway(v0,theta,T0): x,y = 0,0 xs,ys = [],[] vx = v0*np.cos(theta) vy = v0*np.sin(theta) while(y>=0): xs.append(x) ys.append(y) vx -= (C(y,T0)*vx**2)*dt vy -= (C(y,T0)*vy**2+9.81)*dt x += vx*dt y += vy*dt return xs,ys if __name__ == "__main__": xs,ys = pathway(196,np.pi/4,283) plt.plot(xs,ys) plt.show() |
3 结语
针对制作简易的弹道计算机问题,提出该方法,通过计算不同角度得到的抛物线实验,证明该方法是有效的,本文的方法未考虑战场的复杂环境及其时间复杂度,未来可以继续向函数中加入提前量计算器、横风矫正以及不同炮弹对应的风阻系数等。