From 2d83330b45b6c869fd9a23857d3b338a6e04ffeb Mon Sep 17 00:00:00 2001 From: march3 Date: Sat, 17 Jun 2023 17:05:59 +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/earth.py | 2 +- .../solar_system/solarsystem_planets_size.py | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/bodies/earth.py b/bodies/earth.py index 009a068..00f18ea 100644 --- a/bodies/earth.py +++ b/bodies/earth.py @@ -26,7 +26,7 @@ class Earth(Body): def __init__(self, name="地球", mass=5.97237e24, rotate_angle=23.44, init_position=[0, 0, 1 * AU], init_velocity=[-29.79, 0, 0], - color=(7, 0, 162), texture="earth1.jpg",text_color=None, + color=(7, 0, 162), texture="earth1.jpg", text_color=None, size_scale=1.0, distance_scale=1.0, rotation_speed=15, ignore_mass=False, trail_color=None, show_name=False, diff --git a/sim_scenes/solar_system/solarsystem_planets_size.py b/sim_scenes/solar_system/solarsystem_planets_size.py index 79828a9..ddd90b0 100644 --- a/sim_scenes/solar_system/solarsystem_planets_size.py +++ b/sim_scenes/solar_system/solarsystem_planets_size.py @@ -17,13 +17,14 @@ from simulators.ursina.ursina_event import UrsinaEvent FACTOR = 10 # 地球和月球之间的距离常量,距地距离约: 363104 至 405696 km,平均距离 384000 km E_M_DISTANCE = 405696 * FACTOR -earth = Earth("地球", size_scale=FACTOR, init_position=[0, 0, 0]) +earth1 = Earth("地球1", size_scale=FACTOR, init_position=[0, 0, 0]) moon = Moon("月球", size_scale=FACTOR, init_position=[E_M_DISTANCE, 0, 0]) - +earth2 = Earth("地球2", texture="earth2.jpg", size_scale=FACTOR) bodies = [ - earth, moon, + earth1, moon, Mercury(name="水星", size_scale=FACTOR), Venus(name="金星", size_scale=FACTOR), + earth2, Mars(name="火星", size_scale=FACTOR), Jupiter(name="木星", size_scale=FACTOR), Saturn(name="土星", size_scale=FACTOR).show_rings(False), @@ -37,20 +38,24 @@ index = 2 last_total_hours = 0 if __name__ == '__main__': - last_diameter = earth.diameter * FACTOR / 2 + last_diameter = earth1.diameter * FACTOR / 2 plant_positions = [] for i, body in enumerate(bodies): + body.rotation_speed /= 10 # 星体的旋转速度减小10倍 body.ignore_mass = True body.init_velocity = [0, 0, 0] if i >= 2: # 从第三个星球(水星)开始 plant_positions.append([(body.diameter * FACTOR / 2) + last_diameter, 0, 0]) last_diameter += body.diameter * FACTOR + # print(body) def on_ready(): # 运行前触发 # 为了较好的立体效果,可以增加太阳光线,光线直射地球(target=earth) - create_directional_light(position=(E_M_DISTANCE / 2, 0, -E_M_DISTANCE * 100), light_num=3, target=earth) + create_directional_light(position=(E_M_DISTANCE / 2, E_M_DISTANCE * 20, -E_M_DISTANCE * 100), + light_num=3, + target=earth1) def on_timer_changed(time_data: TimeData): @@ -59,6 +64,7 @@ if __name__ == '__main__': if index >= len(bodies): return total_hours = int(time_data.total_hours) + # 每间隔3个小时,将行星按顺序进行摆放在地球和月球之间 if total_hours % 3 == 0 and last_total_hours != total_hours: last_total_hours = total_hours bodies[index].init_position = plant_positions[index - 2] -- GitLab