提交 90a4758f 编写于 作者: 三月三net's avatar 三月三net

太阳系三体模拟器

上级 00341327
......@@ -32,6 +32,8 @@ class UrsinaConfig:
# 拖尾球体的数量
trail_length = 200
__body_size_factor = 1.0
@property
@classmethod
def run_speed_factor(cls):
......@@ -52,6 +54,16 @@ class UrsinaConfig:
def body_spin_factor(cls, value):
cls.__body_spin_factor = value
@property
@classmethod
def body_size_factor(cls):
return cls.__body_size_factor
@body_size_factor.setter
@classmethod
def body_spin_factor(cls, value):
cls.__body_size_factor = value
@classmethod
def on_reset_subscription(cls, fun):
cls.__on_reset_funcs.append(fun)
......@@ -65,6 +77,7 @@ class UrsinaConfig:
# 初始化
UrsinaConfig.run_speed_factor = 1.0
UrsinaConfig.body_spin_factor = 1.0
UrsinaConfig.body_size_factor = 1.0
if __name__ == '__main__':
UrsinaConfig.run_speed_factor = 2.0
......
......@@ -22,10 +22,12 @@ class UrsinaUI:
Text.default_font = 'simsun.ttc'
application.time_scale = 0.5
self.slider_body_spin_factor = UiSlider(text='自转速度', min=0.01, max=30, default=1)
self.slider_body_size_factor = UiSlider(text='天体缩放', min=0.01, max=10, default=1)
self.slider_run_speed_factor = UiSlider(text="运行速度", min=0.01, max=800, default=1)
self.slider_control_speed_factor = UiSlider(text="控制速度", min=0.01, max=30, default=application.time_scale)
self.slider_trail_length = UiSlider(text="拖尾长度", min=30, max=500, default=UrsinaConfig.trail_length)
self.slider_body_size_factor.on_value_changed = self.on_slider_body_size_changed
self.slider_body_spin_factor.on_value_changed = self.on_slider_body_spin_changed
self.slider_run_speed_factor.on_value_changed = self.on_slider_run_speed_changed
self.slider_control_speed_factor.on_value_changed = self.on_slider_control_speed_changed
......@@ -54,6 +56,7 @@ class UrsinaUI:
self.on_off_switch,
self.on_off_trail,
self.slider_trail_length,
self.slider_body_size_factor,
self.slider_body_spin_factor,
self.slider_run_speed_factor,
self.slider_control_speed_factor
......@@ -112,6 +115,9 @@ class UrsinaUI:
def on_slider_body_spin_changed(self):
UrsinaConfig.body_spin_factor = self.slider_body_spin_factor.value
def on_slider_body_size_changed(self):
UrsinaConfig.body_size_factor = self.slider_body_size_factor.value
def on_slider_run_speed_changed(self):
UrsinaConfig.run_speed_factor = self.slider_run_speed_factor.value
......
......@@ -87,7 +87,7 @@ class Planet(Entity):
pos = body_view.position * body_view.body.distance_scale * UrsinaConfig.SCALE_FACTOR
scale = body_view.body.diameter * body_view.body.size_scale * UrsinaConfig.SCALE_FACTOR
self.init_scale = scale
if hasattr(body_view, "texture"):
texture = load_texture(body_view.texture)
else:
......@@ -200,6 +200,9 @@ class Planet(Entity):
return trail
def turn(self):
self.scale = self.init_scale * UrsinaConfig.body_size_factor
pos = self.body_view.position * UrsinaConfig.SCALE_FACTOR
if self.body_view.body.parent is None:
self.x = -pos[1]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册