提交 347fd4fe 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 096dfd7a
...@@ -11,6 +11,7 @@ import os ...@@ -11,6 +11,7 @@ import os
import numpy as np import numpy as np
import sys import sys
from bodies import Earth from bodies import Earth
from objs import Satellite, Satellite2
from common.consts import SECONDS_PER_HOUR from common.consts import SECONDS_PER_HOUR
from sim_scenes.func import ursina_run from sim_scenes.func import ursina_run
from simulators.ursina.entities.body_timer import TimeData from simulators.ursina.entities.body_timer import TimeData
...@@ -19,6 +20,28 @@ from simulators.ursina.ursina_config import UrsinaConfig ...@@ -19,6 +20,28 @@ from simulators.ursina.ursina_config import UrsinaConfig
from simulators.ursina.ursina_event import UrsinaEvent from simulators.ursina.ursina_event import UrsinaEvent
def create_satellites():
# 卫星位置和初始速度信息
satellite_infos = [
# {"position": [0, 0, 10002], "velocity": [6.3, 0, 0]},
# {"position": [0, 0, -12000], "velocity": [5.75, 0, 0]},
# {"position": [0, 8000, 0], "velocity": [7.05, 0, 0]},
# {"position": [0, -12002, 0], "velocity": [5.75, 0, 0]},
{"position": [0, 0, 14000], "velocity": [0, 5, 0]},
# {"position": [0, 0, -10000], "velocity": [0, 6.3, 0]},
]
satellites = []
for i, info in enumerate(satellite_infos):
# Satellite Satellite2
satellite = Satellite(name=f'卫星{i + 1}', mass=4.4e10,
size_scale=1e2, color=(255, 200, 0),
init_position=info["position"],
init_velocity=info["velocity"])
# info["satellite"] = satellite
satellites.append(satellite)
return satellites
def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False): def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False):
trans_texture = transformed_texture.replace(".jpg", "_trans.png") trans_texture = transformed_texture.replace(".jpg", "_trans.png")
# texture = transformed_texture # texture = transformed_texture
...@@ -39,14 +62,14 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False) ...@@ -39,14 +62,14 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False)
rotate_angle=0, rotate_angle=0,
init_position=[0, 0, 0], init_position=[0, 0, 0],
init_velocity=[0, 0, 0], init_velocity=[0, 0, 0],
size_scale=0.999) size_scale=0.9996).set_ignore_gravity(True)
trans_mars = Earth( trans_mars = Earth(
texture=os.path.join("transformed", trans_texture), texture=os.path.join("transformed", trans_texture),
rotate_angle=0, rotate_angle=0,
init_position=[0, 0, 0], init_position=[0, 0, 0],
init_velocity=[0, 0, 0], init_velocity=[0, 0, 0],
size_scale=0.995) size_scale=0.9990).set_ignore_gravity(True)
bodies = [mars, transformed_mars, trans_mars] bodies = [mars, transformed_mars, trans_mars]
...@@ -55,23 +78,27 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False) ...@@ -55,23 +78,27 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False)
rotate_angle=0, rotate_angle=0,
size_scale=1.001, parent=mars) size_scale=1.001, parent=mars)
satellites = create_satellites()
bodies = bodies + satellites
bodies.append(clouds) bodies.append(clouds)
init_pos = (1.45 * mars.radius, init_pos = (1.45 * mars.radius,
0, 0,
-30000) -38000)
if camera3d: if camera3d:
init_pos = np.array(init_pos) * UrsinaConfig.SCALE_FACTOR init_pos = np.array(init_pos) * UrsinaConfig.SCALE_FACTOR
Camera3d.init(init_pos) Camera3d.init(init_pos)
init_pos = (0, 0, 0) init_pos = (0, 0, 0)
def on_ready(): def on_ready():
pass for satellite in satellites:
satellite.planet.enabled = False
def on_timer_changed(time_data: TimeData): def on_timer_changed(time_data: TimeData):
# mars.planet.opacity = 0.01 # mars.planet.opacity = 0.01
opacity = round((time_data.total_hours - 1) / 10, 2) opacity = round((time_data.total_hours - 1) / 10, 2)
clouds_opacity = round(opacity - 0.5, 2) clouds_opacity = round(opacity - 0.5, 2)
show_satellites = False
if opacity > 1.0: if opacity > 1.0:
opacity = 1.0 opacity = 1.0
elif opacity < 0.0: elif opacity < 0.0:
...@@ -82,11 +109,17 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False) ...@@ -82,11 +109,17 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False)
if clouds_opacity > 1.0: if clouds_opacity > 1.0:
clouds_opacity = 1.0 clouds_opacity = 1.0
show_satellites = True
elif clouds_opacity < 0.0: elif clouds_opacity < 0.0:
clouds_opacity = 0.0 clouds_opacity = 0.0
clouds.planet.alpha = clouds_opacity # 火星云层渐渐显示 clouds.planet.alpha = clouds_opacity # 火星云层渐渐显示
mars.planet.alpha = 1 - opacity # 原火星渐渐消失 mars.planet.alpha = 1 - opacity # 原火星渐渐消失
# show_satellites = True
if show_satellites:
for satellite in satellites:
satellite.planet.enabled = True
satellite.planet.look_at(mars.planet)
# if time_data.total_hours > 10: # if time_data.total_hours > 10:
# trans_mars.planet.enabled = True # trans_mars.planet.enabled = True
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册