提交 ddffc122 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 968c1e39
...@@ -206,32 +206,33 @@ def set_earth_rotation(earth, dt): ...@@ -206,32 +206,33 @@ def set_earth_rotation(earth, dt):
earth.planet.rotation_y = -total_hours * 15 - angle_of_day + 15 # 精确调整 earth.planet.rotation_y = -total_hours * 15 - angle_of_day + 15 # 精确调整
def get_astropy_time(str_time): def conv_to_astropy_time(str_time):
# 安装 astropy 包
# pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy
from astropy.time import Time # 时间
from datetime import datetime from datetime import datetime
return Time(datetime.strptime(str_time + '+0800', '%Y-%m-%d %H:%M:%S%z'), format='datetime') return Time(datetime.strptime(str_time + '+0800', '%Y-%m-%d %H:%M:%S%z'), format='datetime')
# pip install Astropysics def get_earth_pos_vel(dt):
"""
if __name__ == '__main__': 根据日期时间获取地球的
# 安装天文包 @param dt:
@return:
"""
# 安装 astropy 包
# pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy # pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com astropy
from astropy.coordinates import get_body_barycentric_posvel # 获取天体的坐标pos和速度vel from astropy.coordinates import get_body_barycentric_posvel # 获取天体的坐标pos和速度vel
from astropy.time import Time # 时间
from astropy.coordinates import solar_system_ephemeris from astropy.coordinates import solar_system_ephemeris
import astropy.units as u # 单位 import astropy.units as u # 单位
import pytz import pytz
print('----------------------------------------')
# 获取当前时间 print("北京时间:", dt.to_datetime(timezone=pytz.timezone('Asia/Shanghai')))
t = Time.now()
# 指定日期时间
# t = get_astropy_time('2050-01-01 12:00:00')
print("北京时间:", t.to_datetime(timezone=pytz.timezone('Asia/Shanghai')))
# 打印天体名 # 打印天体名
# print("天体名:", solar_system_ephemeris.bodies) # print("天体名:", solar_system_ephemeris.bodies)
# ('earth', 'sun', 'moon', 'mercury', 'venus', 'earth-moon-barycenter', 'mars', 'jupiter', 'saturn', 'uranus', 'neptune')
# 获取地球的坐标和速度 # 获取地球的坐标和速度
earth_pos_vel = get_body_barycentric_posvel('earth', t) earth_pos_vel = get_body_barycentric_posvel('earth', dt)
print("地球坐标(公里):", [earth_pos_vel[0].x.to(u.km), print("地球坐标(公里):", [earth_pos_vel[0].x.to(u.km),
earth_pos_vel[0].y.to(u.km), earth_pos_vel[0].y.to(u.km),
earth_pos_vel[0].z.to(u.km)]) earth_pos_vel[0].z.to(u.km)])
...@@ -239,5 +240,15 @@ if __name__ == '__main__': ...@@ -239,5 +240,15 @@ if __name__ == '__main__':
[earth_pos_vel[1].x.to(u.km / u.second), [earth_pos_vel[1].x.to(u.km / u.second),
earth_pos_vel[1].y.to(u.km / u.second), earth_pos_vel[1].y.to(u.km / u.second),
earth_pos_vel[1].z.to(u.km / u.second)]) earth_pos_vel[1].z.to(u.km / u.second)])
print('----------------------------------------')
# print("速度(公里/秒):", posvel[1] * AU / SECONDS_PER_DAY) # print("速度(公里/秒):", posvel[1] * AU / SECONDS_PER_DAY)
if __name__ == '__main__':
from astropy.time import Time # 时间
# 获取当前时间
dt = Time.now()
# 指定未来的日期时间
# dt = conv_to_astropy_time('2050-01-01 12:00:00')
get_earth_pos_vel(dt)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册