提交 68e733fd 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 91a8e795
# -*- coding:utf-8 -*-
# title :带有云层地球模拟
# description :带有云层地球模拟
# author :Python超人
# date :2023-05-01
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from bodies import Earth
from common.consts import SECONDS_PER_HOUR, SECONDS_PER_DAY
from sim_scenes.func import ursina_run, create_sphere_sky
from sim_scenes.universe_sim_scenes import UniverseSimScenes
from simulators.ursina.ursina_event import UrsinaEvent
if __name__ == '__main__':
"""
带有云层地球模拟
"""
mars = Earth(texture="transformed/mars.jpg", rotate_angle=0,
init_position=[0, 0, 0], init_velocity=[0, 0, 0],
size_scale=1).set_ignore_gravity() # 忽略引力
# 创建带有云层的地球
earth = Earth(texture="earth_hd.jpg", rotate_angle=0,
init_position=[1.5 * mars.diameter, 0, 0],
init_velocity=[0, 0, 0],
size_scale=1)
# 创建云层(texture纹理图使用了透明云层的图片,云层的 size_scale 要稍微比火星大一点)
mars_clouds = Earth(name="火星云层", rotate_angle=0, texture="transparent_clouds.png",
size_scale=1.001, parent=mars)
# 创建云层(texture纹理图使用了透明云层的图片,云层的 size_scale 要稍微比地球大一点)
earth_clouds = Earth(name="地球云层", rotate_angle=0, texture="transparent_clouds.png",
size_scale=1.001, parent=earth)
bodies = [mars, earth, earth_clouds, mars_clouds]
current_angle = 0
def on_ready():
global current_angle
from ursina import camera
# camera.fov = 30
# 运行前触发
# create_sphere_sky(scale=10000).rotation_y = 220
current_angle = earth.planet.rotation_y
def on_timer_changed(time_data):
global current_angle
if abs(earth.planet.rotation_y - current_angle) > 400:
exit(0)
UniverseSimScenes.set_window_size((1920, 1079), False)
# 订阅事件后,上面的函数功能才会起作用
# 运行前会触发 on_ready
UrsinaEvent.on_ready_subscription(on_ready)
UrsinaEvent.on_timer_changed_subscription(on_timer_changed)
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run(bodies, SECONDS_PER_HOUR / 2,
position=(1.5 * earth.radius, 0, -30000),
show_grid=False,
cosmic_bg='',
show_camera_info=False,
show_control_info=False,
timer_enabled=True,
view_closely=0.001) # 近距离观看 view_closely=True或0.001
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册