提交 5c36ec37 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 2c1797db
...@@ -16,32 +16,33 @@ from simulators.ursina.ursina_event import UrsinaEvent ...@@ -16,32 +16,33 @@ from simulators.ursina.ursina_event import UrsinaEvent
import random import random
def create_comet(index, gravity_only_for): def create_comet(index, raduis, gravity_only_for):
""" """
随机生成石头(随机位置、随机初始速度、随机大小、随机旋转) 随机生成石头(随机位置、随机初始速度、随机大小、随机旋转)
@param index: 索引号 @param index: 索引号
@param raduis: 木星的半径,保证生成的石头在木星半径外
@param gravity_only_for: 指定一个天体,石头只对该天体引力有效 @param gravity_only_for: 指定一个天体,石头只对该天体引力有效
@return: @return:
""" """
# 随机生成石头的位置和初始速度信息 # 随机生成石头的位置和初始速度信息
pos = [-r * random.randint(120, 200) / 100, pos = [-raduis * random.randint(120, 200) / 100,
-r * random.randint(120, 200) / 1000, -raduis * random.randint(120, 200) / 1000,
-r * random.randint(100, 300) / 100] -raduis * random.randint(100, 300) / 100]
# 随机速度 # 随机速度
vel = [0, -random.randint(90, 200) / 30, 0] vel = [0, -random.randint(90, 200) / 30, 0]
# 石头随机大小 # 石头随机大小
size_scale = random.randint(600, 1200) size_scale = random.randint(600, 1200)
# 随机创建石头 # 随机创建石头
comet = create_rock( rock = create_rock(
no=index % 8 + 1, name=f'岩石{index + 1}', mass=4.4e10, no=index % 8 + 1, name=f'岩石{index + 1}', mass=4.4e10,
size_scale=size_scale, color=(255, 200, 0), size_scale=size_scale, color=(255, 200, 0),
init_position=pos, init_velocity=vel, gravity_only_for=[gravity_only_for], init_position=pos, init_velocity=vel, gravity_only_for=[gravity_only_for],
) )
# 给石头一个随机旋转的方向和值 # 给石头一个随机旋转的方向和值
comet.rotation = [0, 0, 0] rock.rotation = [0, 0, 0]
comet.rotation[random.randint(0, 2)] = random.randint(90, 200) / 100 rock.rotation[random.randint(0, 2)] = random.randint(90, 200) / 100
return comet return rock
if __name__ == '__main__': if __name__ == '__main__':
...@@ -54,11 +55,10 @@ if __name__ == '__main__': ...@@ -54,11 +55,10 @@ if __name__ == '__main__':
bodies = [jupiter] bodies = [jupiter]
comets = [] comets = []
r = jupiter.raduis
for i in range(20): for i in range(20):
# 随机生成石头 # 随机生成石头
comet = create_comet(i, gravity_only_for=jupiter) comet = create_comet(i, jupiter.raduis, gravity_only_for=jupiter)
bodies.append(comet) bodies.append(comet)
comets.append(comet) comets.append(comet)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册