@Xc-liu
2016-04-05T22:59:29.000000Z
字数 4874
阅读 2033
如下图所示,选取与抛体出射点固连的动系
注:经度全是东经,纬度全是南纬
随便选一点发射
(方位角)与X轴夹角 | 与Y轴夹角 | 与Z轴夹角 | 初速度 初始经度 | 初始纬度 | 初速度 m/s | 落点经度 | 落点纬度 | |
---|---|---|---|---|---|---|---|---|
45 | 45 | 0 | 20 | 20 | 700 | 74.44 | 160 |
轨迹图:
选极点向上发射
(方位角)与X轴夹角 | 与Y轴夹角 | 与Z轴夹角 | 初速度 初始经度 | 初始纬度 | 初速度 m/s | 落点经度 | 落点纬度 | |
---|---|---|---|---|---|---|---|---|
90 | 90 | 0 | 0 | 90 | 700 | 0.00 | 90.0 |
轨迹图:
在武汉大学发射
(方位角)与X轴夹角 | 与Y轴夹角 | 与Z轴夹角 | 初速度 初始经度 | 初始纬度 | 初速度 m/s | 落点经度 | 落点纬度 | |
---|---|---|---|---|---|---|---|---|
90 | 90 | 0 | 60 | 114 | 700 | -24 | 133 |
轨迹图:
以略大于第一宇宙速度的速度发射
轨迹图:
#coding:utf-8
#initial value
import math
t=[]
dt=0.01 #B/m=4*10-5 realy count
g=9.8
end_time=100
h_0=0.0001
B=4*10**(-5)
a=45/180.0*math.pi
b=45/180.0*math.pi
c=0/180.0*math.pi
theta=[a,b,c] #direction angle
d=20/180.0*math.pi
e=math.pi/2-20/180.0*math.pi
angle_0=[d,e] #initial longitude and latitude
t.append(0)
w=4.167*10**-3
R=6371000
#define variable
x=[]
v_x=[]
y=[]
v_y=[]
z=[]
v_z=[]
x.append(0)
y.append(0)
z.append(0)
v_x.append(700*math.cos(theta[0])) #initial speed equal 700m/s
v_y.append(700*math.cos(theta[1]))
v_z.append(700*math.cos(theta[2]))
#caulate the coordinate
for i in range(int(end_time/dt)):
m=x[i]+v_x[i]*dt
x.append(m)
n=v_x[i]+2*w*v_y[i]*math.sin(angle_0[1])*dt-B*math.e**-(((x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R)*h_0)*((v_x[i]**2+v_y[i]**2+v_z[i]**2)**0.5)*v_x[i]*dt
v_x.append(n)
o=y[i]+v_y[i]*dt
y.append(o)
p=v_y[i]-2*(v_z[i]*math.cos(angle_0[1])+v_x[i]*math.sin(angle_0[1]))*dt-B*math.e**-(((x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R)*h_0)*((v_x[i]**2+v_y[i]**2+v_z[i]**2)**0.5)*v_y[i]*dt
v_y.append(p)
r=z[i]+v_z[i]*dt
z.append(r)
s=v_z[i]+2*w*v_y[i]*math.cos(angle_0[1])*dt-g*dt-B*math.e**-(((x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R)*h_0)*((v_x[i]**2+v_y[i]**2+v_z[i]**2)**0.5)*v_z[i]*dt
v_z.append(s)
H=(x[i]**2+y[i]**2+(z[i]+R)**2)**0.5-R
if H<=0:
if H>=-3:
X=x[-1]
Y=y[-1]
Z=z[-1]
print x[-1],y[-1],z[-1]
#caulate the longitude and latitude
Delta_g=math.pi/2-math.acos(Z/((X**2+Y**2)**0.5))
g=Delta_g+angle_0[1]
# k_1=X*math.cos(angle_0[1])-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.cos(angle_0[1])**2+Z*math.sin(angle_0[1])+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1])*math.sin(angle_0[1])**2
# k_2=(X-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1])*math.cos(angle_0[1])))**2+Y**2+(Z+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.sin(angle_0[1]))**2
# k=k_1
k_1=X*math.cos(angle_0[1])-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.cos(angle_0[1])**2+Z*math.sin(angle_0[1])+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.sin(angle_0[1])**2
k_2=(X-(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1])*math.cos(angle_0[1])))**2+Y**2+(Z+(X*math.cos(angle_0[1])-Z*math.sin(angle_0[1]))*math.sin(angle_0[1]))**2
Delta_f=k_1/k_2**0.5
f=Delta_f+angle_0[0]
f_1=(f/math.pi)*180
g_1=(g/math.pi)*180
print f_1 ,"longitude"
print g_1 ,"latitude"
# print k,"X"
#draw the picture
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
mpl.rcParams['legend.fontsize'] = 10
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(x, y, z, label='parametric curve')
ax.legend()
plt.show()
经典力学(上) 王波 武汉大学出版社
计算物理教材