From 6c8b3e0cd220be83d20448a2155b20546c03d71e Mon Sep 17 00:00:00 2001 From: march3 Date: Tue, 5 Mar 2024 10:56:41 +0800 Subject: [PATCH] =?UTF-8?q?Python=E8=B6=85=E4=BA=BA-=E5=AE=87=E5=AE=99?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sim_scenes/featured/solar_system_explorer.py | 58 ++++++++++++++++---- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/sim_scenes/featured/solar_system_explorer.py b/sim_scenes/featured/solar_system_explorer.py index 969879e..6bb3f89 100644 --- a/sim_scenes/featured/solar_system_explorer.py +++ b/sim_scenes/featured/solar_system_explorer.py @@ -39,9 +39,11 @@ class SolarSystemExplorer(UniverseSimScenes): def build_solar_system(self): # region 构建太阳系 show_trail = False - self.SIZE_FACTOR = 0.01 - self.init_pos = [2 * AU, 2 * AU, -10 * AU] - self.sun = Sun(size_scale=20e2 * self.SIZE_FACTOR, show_trail=show_trail, + self.SIZE_FACTOR = 0.1 # 0.01 + # self.init_pos = [2 * AU, 2 * AU, 5 * AU] + # self.init_pos = [1.8 * AU, 1.8 * AU, 4.5 * AU] + self.init_pos = [1.8 * AU, 1.8 * AU, 4.5 * AU] + self.sun = Sun(size_scale=2e2 * self.SIZE_FACTOR, show_trail=show_trail, # color=(255, 250, 245), # texture="", texture="sun_light.jpg" @@ -62,20 +64,36 @@ class SolarSystemExplorer(UniverseSimScenes): # init_position=[0, 0, 0], init_position=self.init_pos, init_velocity=[0, 0, 0], + texture='transparent.png', size_scale=1e3 * self.SIZE_FACTOR).set_ignore_gravity(True) + # self.bodies = [ + # self.sun, # 太阳 + # self.mercury, # 水星 + # self.venus, # 金星 + # self.earth, # 地球 + # self.mars, # 火星 + # self.jupiter, # 木星 + # self.saturn, # 土星 + # self.uranus, # 天王星 + # self.neptune, # 海王星 + # self.pluto, # 冥王星 + # self.camera_target + # ] + self.bodies = [ - self.sun, # 太阳 + self.camera_target, + self.saturn, # 土星 + self.mars, # 火星 + self.earth, # 地球 self.mercury, # 水星 + self.sun, # 太阳 self.venus, # 金星 - self.earth, # 地球 - self.mars, # 火星 self.jupiter, # 木星 - self.saturn, # 土星 self.uranus, # 天王星 self.neptune, # 海王星 - self.pluto, # 冥王星 - self.camera_target + # self.pluto, # 冥王星 + ] self.sun.target_offset = [1, 1, 1.1] @@ -100,7 +118,18 @@ class SolarSystemExplorer(UniverseSimScenes): self.neptune.dd_factor = 1.5 self.pluto.dd_factor = 1.5 - init_bodies_pos_vels(self.bodies, init_pos_vels_fun=self.get_init_pos_vels) + self.init_pos_vels() + # init_bodies_pos_vels(self.bodies, init_pos_vels_fun=self.get_init_pos_vels) + + def init_pos_vels(self): + from astropy.time import Time + from datetime import datetime + start_time = Time(datetime.strptime('2149-02-01 12:00:00+0800', '%Y-%m-%d %H:%M:%S%z'), + format='datetime') + # set_solar_system_celestial_position(self.bodies, start_time, True) + + init_bodies_reality_pos_vels(self.bodies, start_time) + def get_init_pos_vels(self): init_pos_vels = {} @@ -234,7 +263,7 @@ class SolarSystemExplorer(UniverseSimScenes): value_conv=self.s_f, smooth=1) def get_target(self): - for body in self.bodies: + for body in self.bodies[1:]: if hasattr(body, "is_arrived"): continue return body @@ -258,11 +287,15 @@ class SolarSystemExplorer(UniverseSimScenes): camera.speed = 4e2 self.camera_target.planet.update = lambda: None # 显示网格以及坐标线 - # self.show_grid_axises() + # self.show_grid_axises(scale_factor=50) + target = self.get_target() + camera_look_at(self.saturn, rotation_z=0) def go_target(self): from ursina import distance target = self.get_target() + if target is None: + return target_scale = target.planet.scale_x target_offset = target.target_offset @@ -302,6 +335,7 @@ class SolarSystemExplorer(UniverseSimScenes): @param time_data: @return: """ + # return self.go_target() # self.camera_move(time_data) # self.current_stage() -- GitLab