From 71ab2bba1a331ec904b50cd9789304a5d3a0f6bf Mon Sep 17 00:00:00 2001 From: march3 Date: Sat, 17 Jun 2023 15:11: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 --- .../solar_system/solarsystem_planets_size.py | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/sim_scenes/solar_system/solarsystem_planets_size.py b/sim_scenes/solar_system/solarsystem_planets_size.py index 2772b65..79828a9 100644 --- a/sim_scenes/solar_system/solarsystem_planets_size.py +++ b/sim_scenes/solar_system/solarsystem_planets_size.py @@ -10,24 +10,26 @@ from bodies import Sun, Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Ne from common.consts import SECONDS_PER_HOUR, SECONDS_PER_DAY, AU from sim_scenes.func import mayavi_run, ursina_run from simulators.ursina.entities.body_timer import TimeData +from simulators.ursina.entities.entity_utils import create_directional_light from simulators.ursina.ursina_event import UrsinaEvent - +# 可以调整整体放大倍数 ,比例会保持不变 +FACTOR = 10 # 地球和月球之间的距离常量,距地距离约: 363104 至 405696 km,平均距离 384000 km -E_M_DISTANCE = 405696 -earth = Earth("地球", init_position=[0, 0, 0]) -moon = Moon("月球", init_position=[E_M_DISTANCE, 0, 0]) +E_M_DISTANCE = 405696 * FACTOR +earth = Earth("地球", size_scale=FACTOR, init_position=[0, 0, 0]) +moon = Moon("月球", size_scale=FACTOR, init_position=[E_M_DISTANCE, 0, 0]) bodies = [ earth, moon, - Mercury(name="水星"), - Venus(name="金星"), - Mars(name="火星"), - Jupiter(name="木星"), - Saturn(name="土星").show_rings(False), - Uranus(name="天王星"), - Neptune(name="海王星"), - Pluto(name="冥王星") + Mercury(name="水星", size_scale=FACTOR), + Venus(name="金星", size_scale=FACTOR), + Mars(name="火星", size_scale=FACTOR), + Jupiter(name="木星", size_scale=FACTOR), + Saturn(name="土星", size_scale=FACTOR).show_rings(False), + Uranus(name="天王星", size_scale=FACTOR), + Neptune(name="海王星", size_scale=FACTOR), + Pluto(name="冥王星", size_scale=FACTOR) ] # 从第三个星球(水星)开始 @@ -35,14 +37,21 @@ index = 2 last_total_hours = 0 if __name__ == '__main__': - last_diameter = earth.diameter / 2 + last_diameter = earth.diameter * FACTOR / 2 plant_positions = [] for i, body in enumerate(bodies): body.ignore_mass = True body.init_velocity = [0, 0, 0] if i >= 2: # 从第三个星球(水星)开始 - plant_positions.append([(body.diameter / 2) + last_diameter, 0, 0]) - last_diameter += body.diameter + plant_positions.append([(body.diameter * FACTOR / 2) + last_diameter, 0, 0]) + last_diameter += body.diameter * FACTOR + + + def on_ready(): + # 运行前触发 + # 为了较好的立体效果,可以增加太阳光线,光线直射地球(target=earth) + create_directional_light(position=(E_M_DISTANCE / 2, 0, -E_M_DISTANCE * 100), light_num=3, target=earth) + def on_timer_changed(time_data: TimeData): global index, last_total_hours @@ -58,6 +67,8 @@ if __name__ == '__main__': # 运行中,每时每刻都会触发 on_timer_changed UrsinaEvent.on_timer_changed_subscription(on_timer_changed) + # 运行前会触发 on_ready + UrsinaEvent.on_ready_subscription(on_ready) # 使用 ursina 查看的运行效果 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 -- GitLab