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

Python超人-宇宙模拟器

上级 d28fe8b2
......@@ -12,7 +12,7 @@ import numpy as np
from bodies import Sun, Mercury, Venus, Earth, Mars, Asteroids, Jupiter, Saturn, Uranus, Neptune, Moon
from common.celestial_data_service import get_body_posvel, recalc_moon_position, calc_solar_acceleration, \
set_solar_system_celestial_position, set_earth_rotation
from common.consts import SECONDS_PER_WEEK, SECONDS_PER_DAY, SECONDS_PER_HOUR, AU
from common.consts import SECONDS_PER_MONTH, SECONDS_PER_WEEK, SECONDS_PER_DAY, SECONDS_PER_HOUR, AU
from sim_scenes.func import ursina_run, create_sphere_sky, two_bodies_colliding
from sim_scenes.universe_sim_scenes import UniverseSimScenes
from simulators.ursina.entities.body_timer import TimeData
......@@ -150,11 +150,14 @@ class SolarSystemRealitySim(UniverseSimScenes):
# 需要按照时间和日期来控制地球的自转,所以删除控制地球自转的属性
delattr(self.earth.planet, "rotation_speed")
delattr(self.earth.planet, "rotspeed")
self.ship.planet.update = lambda: None
# 设置后,可以调整鼠标键盘的控制速度
application.time_scale = 1
application.time_scale = 0.01
self.ship.planet.position = self.earth.planet.position
self.ship.planet.update = lambda :None
camera.update = lambda :None
def ship_go_target(self):
from ursina import distance
......@@ -170,7 +173,7 @@ class SolarSystemRealitySim(UniverseSimScenes):
# r = d * 10
# if r<100:
# r = 100
r = 500
r = 20
self.ship.planet.look_at(planet)
self.ship.planet.position += self.ship.planet.forward * r
......@@ -181,14 +184,23 @@ class SolarSystemRealitySim(UniverseSimScenes):
self.target_index += 1
planet.arrived = True
def on_timer_changed(self, time_data: TimeData):
"""
事件绑定后,时时刻刻都会触发
@param time_data:
@return:
"""
from ursina import Vec3
self.ship_go_target()
target = self.targets[self.target_index]
planet = target.planet.main_entity
camera.look_at(planet)
camera.position = self.ship.planet.position + Vec3(10, 10, 10)
dt = time_data.get_datetime(str(self.start_time))
# 设置天体的位置(包含速度和加速度的信息)
self.set_bodies_position(time_data)
......@@ -272,7 +284,7 @@ if __name__ == '__main__':
sim.run(
# debug_mode=True, # 是否调试模式
dt=SECONDS_PER_DAY , # 1秒=1天
# dt=SECONDS_PER_HOUR, # 1秒=1小时
# dt=SECONDS_PER_WEEK, # 1秒=1周
# dt=SECONDS_PER_HOUR, # 1秒=1小时
start_time='2149-12-10 12:00:00', # 九(八)星连珠的时间 # https://baijiahao.baidu.com/s?id=1654160345900112362
# show_asteroids=True, # 是否显示小行星带(图片模拟)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册