提交 0ab2d9f7 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 39013a21
# -*- coding:utf-8 -*-
# title :太阳、地球场景模拟
# description :太阳、地球场景模拟
# author :Python超人
# date :2023-02-11
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from bodies import Sun, Earth, Sirius
from common.consts import SECONDS_PER_WEEK, SECONDS_PER_DAY, AU
from sim_scenes.func import ursina_run
from simulators.ursina.entities.body_timer import TimeData
from simulators.ursina.ursina_event import UrsinaEvent
from ursina import camera
if __name__ == '__main__':
"""
太阳、地球
"""
bodies = [
Sun(size_scale=5e1, texture="transparent.png"), # 太阳透明
Earth(name="中国春天", size_scale=2e3, texture="earth_hd.jpg",
init_position=[-1 * AU, 0, 0], init_velocity=[0, 0, -29.79]),
Earth(name="中国夏天", size_scale=2e3, texture="earth_hd.jpg",
init_position=[0, 0, -1 * AU], init_velocity=[29.79, 0, 0]),
Earth(name="中国秋天", size_scale=2e3, texture="earth_hd.jpg",
init_position=[1 * AU, 0, 0], init_velocity=[0, 0, 29.79]),
Earth(name="中国冬天", size_scale=2e3, texture="earth_hd.jpg",
init_position=[0, 0, 1 * AU], init_velocity=[-29.79, 0, 0]),
]
sun = bodies[0]
earth_1 = bodies[1]
earth_2 = bodies[2]
earth_3 = bodies[3]
earth_4 = bodies[4]
def on_ready():
# 摄像机跟随地球(模拟在地球上看到的效果)
# camera.position = earth.planet.position
# camera.forward = -10 * AU
# # camera.x = camera.x - AU / 100
# camera.look_at(earth.planet)
earth_1.planet.rotation_y -= 205 # 春天
earth_2.planet.rotation_y -= 0 # 夏天
earth_3.planet.rotation_y -= 100 # 秋天
earth_4.planet.rotation_y -= 175 # 冬天
camera.parent = sun.planet
camera.look_at(earth_2.planet)
# camera.position=[0,0,0]
pass
# if hasattr(camera, "sky"):
# # 摄像机跟随地球后,需要对深空背景进行调整,否则看到的是黑色背景
# camera.sky.scale = 800
# camera.clip_plane_near = 0.1
# camera.clip_plane_far = 1000000
# # camera.fov = 40
def on_timer_changed(time_data: TimeData):
# 时时刻刻的让地球看向太阳(摄像机跟随地球看向太阳)
# earth.planet.look_at(sun.planet)
# earth.planet.rotation_z = 0
# camera.look_at(earth.planet)
pass
UrsinaEvent.on_ready_subscription(on_ready)
UrsinaEvent.on_timer_changed_subscription(on_timer_changed)
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, 1, position=(0, 0, 0),
show_name=True,
show_trail=True)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册