Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
79fab0ed
宇宙模拟器
项目概览
Python_超人
/
宇宙模拟器
通知
19
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
宇宙模拟器
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
79fab0ed
编写于
6月 29, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
94d828c3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
108 addition
and
0 deletion
+108
-0
sim_scenes/earth/parallel_earths.py
sim_scenes/earth/parallel_earths.py
+108
-0
textures/bg_black.png
textures/bg_black.png
+0
-0
未找到文件。
sim_scenes/earth/parallel_earths.py
0 → 100644
浏览文件 @
79fab0ed
# -*- coding:utf-8 -*-
# title :平行宇宙的地球们
# description :平行宇宙的地球们
# author :Python超人
# date :2023-07-01
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
import
random
from
bodies
import
Earth
,
Moon
from
common.consts
import
SECONDS_PER_DAY
,
SECONDS_PER_WEEK
,
SECONDS_PER_MONTH
from
sim_scenes.func
import
ursina_run
,
camera_look_at
from
simulators.ursina.entities.sphere_sky
import
SphereSky
from
simulators.ursina.ursina_config
import
UrsinaConfig
from
simulators.ursina.ursina_event
import
UrsinaEvent
def
sim_show
():
bodies
=
[]
num
=
2
r
=
30000
for
x
in
range
(
-
num
,
num
):
for
y
in
range
(
-
num
,
num
):
for
z
in
range
(
-
num
,
num
):
earth
=
Earth
(
init_position
=
[
r
*
x
,
r
*
y
,
r
*
z
],
rotation_speed
=
0
,
rotate_angle
=
0
,
init_velocity
=
[
0
,
0
,
0
],
size_scale
=
1
,
ignore_mass
=
True
)
# earth.rotation_speed /= 50 # 地球的转速降低50倍
bodies
.
append
(
earth
)
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
0
,
0
,
-
r
*
num
*
6
),
show_grid
=
False
)
def
ursina_show
():
from
ursina
import
Ursina
,
Entity
,
color
,
EditorCamera
,
camera
app
=
Ursina
()
SphereSky
(
texture
=
'../../textures/bg_black.png'
)
num
=
5
num_x
=
num
*
2
num_y
=
num
num_z
=
num
*
2
r
=
10
def
create_sphere
(
x
,
y
,
z
):
sphere
=
Entity
(
model
=
"sphere"
,
texture
=
'../../textures/earth2.jpg'
,
x
=
x
*
r
*
2
,
y
=
y
*
r
,
z
=
z
*
r
*
2
,
scale
=
3
)
sphere
.
name
=
"%s:%s:%s"
%
(
x
,
y
,
z
)
def
update
():
def
inner
(
s
,
b
):
if
not
hasattr
(
s
,
"initial_y"
):
s
.
rotation_y
-=
1
# print(s.name, s.rotation_y)
return
inner
(
sphere
,
y
)
sphere
.
update
=
update
for
x
in
range
(
-
num_x
,
num_x
):
for
y
in
range
(
-
num_y
,
num_y
):
for
z
in
range
(
-
num_z
,
num_z
):
create_sphere
(
x
,
y
,
z
)
ed
=
EditorCamera
()
camera
.
fov
=
80
ed
.
position
=
[
0
,
0
,
r
/
2
]
import
sys
camera
.
x_d
=
1
camera
.
y_d
=
1
camera
.
z_d
=
1
def
camera_update
():
camera
.
world_rotation_y
+=
0.05
camera
.
world_rotation_z
+=
0.01
# camera.x += ((random.randint(100, 300) - 100) / 3000) * camera.x_d
camera
.
y
+=
((
random
.
randint
(
100
,
300
)
-
100
)
/
5000
)
*
camera
.
y_d
# camera.z += ((random.randint(100, 300) - 100) / 3000) * camera.z_d
range_val
=
5
# if camera.x > range_val:
# camera.x_d = -1
# elif camera.x < -range_val:
# camera.x_d = 1
if
camera
.
y
>
range_val
:
camera
.
y_d
=
-
1
elif
camera
.
y
<
-
range_val
:
camera
.
y_d
=
1
# if camera.z > range_val:
# camera.z_d = -1
# elif camera.z < -range_val:
# camera.z_d = 1
sys
.
modules
[
"__main__"
].
update
=
camera_update
app
.
run
()
if
__name__
==
'__main__'
:
"""
平行宇宙的地球们
"""
# sim_show()
ursina_show
()
textures/bg_black.png
0 → 100644
浏览文件 @
79fab0ed
2.8 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录