python天文坐标系旋转换算程序

python天文坐标系旋转换算
处理给定坐标后,在X\Y\Z方向进行坐标旋转后的角度输出的简易函数

#《应用天体测量》课程训练
#具体请参考《球面天文学》等书目
import numpy as np


R=input('please input 旋转方向(xyz):')
θ=float(input('please input 旋转角度:'))
μ=float(input('please input 赤经μ:'))
γ=float(input('please input 赤纬γ:'))
 
x=np.cos(μ*np.pi/180)*np.cos(γ*np.pi/180)
y=np.sin(μ*np.pi/180)*np.cos(γ*np.pi/180)
z=np.sin(γ*np.pi/180)

a=np.array([x,y,z])
if R=='X' or R=='x':
    matrix=np.array([[1,0,0],
                 [0,np.cos(θ/180*np.pi),np.sin(θ/180*np.pi)],
                 [0,-np.sin(θ/180*np.pi),np.cos(θ/180*np.pi)]]) 

elif R=='Y' or R=='y':
    matrix=np.array([[1,0,0],
                 [np.cos(θ/180*np.pi),0,-np.sin(θ/180*np.pi)],
                 [np.sin(θ/180*np.pi),0,np.cos(θ/180*np.pi)]]) 
elif R=='Z' or R=='z':
    matrix=np.array([[np.cos(θ/180*np.pi),np.sin(θ/180*np.pi),0],
                 [-np.sin(θ/180*np.pi),np.cos(θ/180*np.pi),0],
                 [0,0,1]]) 
                     
else: print('oh you f*** up ! the all reust are useless!')

b=np.array([1,1,1])
b=np.dot(a, matrix)

x=b[0]
y=b[1]
z=b[2]
μ=np.arccos(x/pow(1-pow(z,2),0.5))/np.pi*180
γ=np.arccos(pow(1-pow(z,2),0.5))/np.pi*180

print('Finsh:',μ,γ)

你可能感兴趣的:(应用天体测量,python)