From 40bedd1d0f389685f7255147db5ec07945a4b5fd Mon Sep 17 00:00:00 2001 From: march3 Date: Sat, 1 Jul 2023 12:11:09 +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 --- bodies/asteroids.py | 5 +++- bodies/habitable_zone.py | 1 + sim_scenes/solar_system/solar_system_1.py | 2 +- sim_scenes/solar_system/solar_system_2.py | 6 ++--- sim_scenes/solar_system/solar_system_4.py | 27 +++++++++++-------- .../solar_system_habitable_zone.py | 3 ++- 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/bodies/asteroids.py b/bodies/asteroids.py index 7310842..1baa317 100644 --- a/bodies/asteroids.py +++ b/bodies/asteroids.py @@ -48,7 +48,10 @@ class Asteroids(Body): } super().__init__(**params) # 环状星群 - self.torus_stars = True + # self.torus_stars = True + # 环状星群带(inner_radius, outer_radius, subdivisions) + # inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度 + self.torus_zone = 2.17, 3.64, 64 def ignore_gravity_with(self, body): """ diff --git a/bodies/habitable_zone.py b/bodies/habitable_zone.py index 624d7f6..1f8309f 100644 --- a/bodies/habitable_zone.py +++ b/bodies/habitable_zone.py @@ -38,6 +38,7 @@ class HabitableZone(Body): } super().__init__(**params) # 环状宜居带(inner_radius, outer_radius, subdivisions) + # inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度 self.torus_zone = 0.95, 1.67, 64 # 使用 texture="red_green_blue.png", # self.torus_zone = 0.20, 6.00, 64 diff --git a/sim_scenes/solar_system/solar_system_1.py b/sim_scenes/solar_system/solar_system_1.py index aab8e20..db8d55b 100644 --- a/sim_scenes/solar_system/solar_system_1.py +++ b/sim_scenes/solar_system/solar_system_1.py @@ -26,7 +26,7 @@ if __name__ == '__main__': Venus(name="金星", size_scale=4e3), # 金星放大 4000 倍,距离保持不变 Earth(name="地球", size_scale=4e3), # 地球放大 4000 倍,距离保持不变 Mars(name="火星", size_scale=4e3), # 火星放大 4000 倍,距离保持不变 - Asteroids(name="小行星群", size_scale=3.2e2, + Asteroids(name="小行星群", size_scale=1e2, parent=sun), # 小行星群模拟(仅 ursina 模拟器支持) Jupiter(name="木星", size_scale=0.8e3), # 木星放大 800 倍,距离保持不变 Saturn(name="土星", size_scale=0.8e3), # 土星放大 800 倍,距离保持不变 diff --git a/sim_scenes/solar_system/solar_system_2.py b/sim_scenes/solar_system/solar_system_2.py index 1e79fcf..bccf083 100644 --- a/sim_scenes/solar_system/solar_system_2.py +++ b/sim_scenes/solar_system/solar_system_2.py @@ -28,9 +28,9 @@ if __name__ == '__main__': Mercury(size_scale=4e3, distance_scale=1.3), # 水星放大 4000 倍,距离放大 1.3 倍 Venus(size_scale=4e3, distance_scale=1.3), # 金星放大 4000 倍,距离放大 1.3 倍 Earth(size_scale=4e3, distance_scale=1.3), # 地球放大 4000 倍,距离放大 1.3 倍 - Asteroids(size_scale=3e2, parent=sun), # 小行星模拟(仅 ursina 模拟器支持) - Mars(size_scale=4e3, distance_scale=1.3), # 火星放大 4000 倍,距离放大 1.3 倍 - Jupiter(size_scale=0.68e3, distance_scale=0.65), # 木星放大 680 倍,距离缩小到真实距离的 0.65 + Mars(size_scale=4e3, distance_scale=1.2), # 火星放大 4000 倍,距离放大 1.2 倍 + Asteroids(size_scale=1e2, parent=sun), # 小行星模拟(仅 ursina 模拟器支持) + Jupiter(size_scale=0.68e3, distance_scale=0.72), # 木星放大 680 倍,距离缩小到真实距离的 0.72 Saturn(size_scale=0.68e3, distance_scale=0.52), # 土星放大 680 倍,距离缩小到真实距离的 0.52 Uranus(size_scale=0.8e3, distance_scale=0.36), # 天王星放大 800 倍,距离缩小到真实距离的 0.36 Neptune(size_scale=1e3, distance_scale=0.27), # 海王星放大 1000 倍,距离缩小到真实距离的 0.27 diff --git a/sim_scenes/solar_system/solar_system_4.py b/sim_scenes/solar_system/solar_system_4.py index d660801..d4648c8 100644 --- a/sim_scenes/solar_system/solar_system_4.py +++ b/sim_scenes/solar_system/solar_system_4.py @@ -45,19 +45,24 @@ if __name__ == '__main__': # 由于宇宙空间尺度非常大,如果按照实际的天体大小,则无法看到天体,因此需要对天体的尺寸进行放大 sun = Sun(name="太阳", size_scale=1.4e2) # 太阳放大 80 倍,距离保持不变 sun.init_velocity = [0, 2, 0] # 太阳以2km/s的速度带着其他行星一起跑 + + asteroids = Asteroids(name="小行星群", size_scale=1e2, + parent=sun) # 小行星群模拟(仅 ursina 模拟器支持) + # 环状星群带(inner_radius, outer_radius, subdivisions) + # inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度 + asteroids.torus_zone = 2.7, 3.5, 64 bodies = [ sun, - Mercury(name="水星", size_scale=4e3), # 水星放大 4000 倍,距离保持不变 - Venus(name="金星", size_scale=4e3), # 金星放大 4000 倍,距离保持不变 - Earth(name="地球", size_scale=4e3), # 地球放大 4000 倍,距离保持不变 - Mars(name="火星", size_scale=4e3), # 火星放大 4000 倍,距离保持不变 - Asteroids(name="小行星群", size_scale=3.2e2, - parent=sun), # 小行星群模拟(仅 ursina 模拟器支持) - Jupiter(name="木星", size_scale=0.6e3), # 木星放大 800 倍,距离保持不变 - Saturn(name="土星", size_scale=0.6e3), # 土星放大 800 倍,距离保持不变 + Mercury(name="水星", size_scale=4e3), # 水星放大 4000 倍,距离保持不变 + Venus(name="金星", size_scale=4e3), # 金星放大 4000 倍,距离保持不变 + Earth(name="地球", size_scale=4e3), # 地球放大 4000 倍,距离保持不变 + Mars(name="火星", size_scale=4e3), # 火星放大 4000 倍,距离保持不变 + asteroids, + Jupiter(name="木星", size_scale=0.6e3), # 木星放大 800 倍,距离保持不变 + Saturn(name="土星", size_scale=0.6e3), # 土星放大 800 倍,距离保持不变 Uranus(name="天王星", size_scale=0.8e3), # 天王星放大 800 倍,距离保持不变 - Neptune(name="海王星", size_scale=1e3), # 海王星放大 1000 倍,距离保持不变 - Pluto(name="冥王星", size_scale=10e3), # 冥王星放大 10000 倍,距离保持不变(从太阳系的行星中排除) + Neptune(name="海王星", size_scale=1e3), # 海王星放大 1000 倍,距离保持不变 + Pluto(name="冥王星", size_scale=10e3), # 冥王星放大 10000 倍,距离保持不变(从太阳系的行星中排除) ] # 真实距离 @@ -71,7 +76,7 @@ if __name__ == '__main__': # 设置为行星距离 for idx, body in enumerate(bodies): # 对于太阳和小行星群保持原来的距离 - if body.is_fixed_star or hasattr(body, "torus_stars"): + if body.is_fixed_star or hasattr(body, "torus_zone"): continue body_real_distance = body.init_position[2] # 格式:body.init_position=[0, 0, 1.12 * AU] body_real_velocity = body.init_velocity[0] # 格式:body.init_velocity=body.[-29.79, 0, 0] diff --git a/sim_scenes/solar_system/solar_system_habitable_zone.py b/sim_scenes/solar_system/solar_system_habitable_zone.py index 837c805..edd82b2 100644 --- a/sim_scenes/solar_system/solar_system_habitable_zone.py +++ b/sim_scenes/solar_system/solar_system_habitable_zone.py @@ -26,6 +26,7 @@ if __name__ == '__main__': moon = Moon(name="月球", size_scale=1.3e3, init_position=[earth_moon_d, 0, AU], init_velocity=[0, 0, 0], + rotation_speed=0.4065, ignore_mass=True, # gravity_only_for_earth=True ) @@ -34,7 +35,7 @@ if __name__ == '__main__': Venus(name="金星", size_scale=1.2e3), # 金星放大 1200 倍,距离保持不变 earth, moon, Mars(name="火星", size_scale=1.2e3), # 火星放大 1200 倍,距离保持不变 - Asteroids(name="小行星群", size_scale=3.2e2, + Asteroids(name="小行星群", size_scale=1e2, parent=sun), # 小行星群模拟(仅 ursina 模拟器支持) HabitableZone(name="宜居带", size_scale=1e2, # texture="red_green_blue.png", parent=sun), # 宜居带模拟(仅 ursina 模拟器支持) -- GitLab