# -*- coding:utf-8 -*- # title :显示所有的天体 # description :显示所有的天体 # author :Python超人 # date :2023-10-06 # link :https://gitcode.net/pythoncr/ # python_version :3.9 # ============================================================================== import random from bodies import * from common.consts import SECONDS_PER_DAY from sim_scenes.func import ursina_run # 对距离整体进行调整 r = 60000 # 天体类型 bodies_type = [ Mercury, # 水星 Venus, # 金星 Earth, # 地球 Moon, # 月球 Mars, # 火星 Jupiter, # 木星 Callisto, # 木卫四又称为卡里斯托 Europa, # 木卫二欧罗巴 Ganymede, # 木卫三盖尼米得 Saturn, # 土星 Uranus, # 天王星 Neptune, # 海王星 Pluto, # 冥王星 Sun, # 太阳 Sirius, # 天狼星A Pollux, # 北河三 Procyon, # 南河三 Bellatrix, # 参宿五 Alcyone, # 昴宿六 Arcturus, # 大角星 Aldebaran, # 毕宿五 Rigel, # 参宿七 YCanumVenaticorum, # 猎犬座Y EtaCarinae, # 海山二 Antares, # 心宿二 CarinaeV382, # 船底座V382 Betelgeuse, # 参宿四 VYCanisMajoris, # 大犬座VY UYScuti, # 盾牌座 UY Stephenson_2_18 # 史蒂文森2-18 ] def get_bodies(): new_bodies = [] body_idx = 0 for x in range(-3, 4): for y in range(0, 1): for z in range(-2, 3): if body_idx > len(bodies_type) - 1: return new_bodies body = bodies_type[body_idx](ignore_mass=True, init_velocity=[0, 0, 0], rotation_speed=0) body_idx += 1 if body.is_fixed_star: body.light_on = False # 关闭恒星的灯光效果 # 调整天体大小一致 body.size_scale = r / 2 / body.diameter body.init_position = [r * x, r * y, r * z] body.rotation_speed = random.randint(5, 20) / 10 # 随机自转转速 new_bodies.append(body) return new_bodies if __name__ == '__main__': # 使用 ursina 查看的运行效果 # 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹 # position = 左-右+、上+下-、前+后- ursina_run(get_bodies(), SECONDS_PER_DAY, position=(0, 0, -r * 10), show_camera_info=False, show_control_info=False, show_grid=False )