Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
298ed28a
宇宙模拟器
项目概览
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看板
提交
298ed28a
编写于
6月 29, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
828c78b5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
41 deletion
+23
-41
sim_scenes/fiction/parallel_earths.py
sim_scenes/fiction/parallel_earths.py
+19
-12
sim_scenes/science/sun_earth_moon.py
sim_scenes/science/sun_earth_moon.py
+4
-29
未找到文件。
sim_scenes/fiction/parallel_earths.py
浏览文件 @
298ed28a
...
...
@@ -8,12 +8,11 @@
# ==============================================================================
import
random
import
sys
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
bodies
import
Earth
from
common.consts
import
SECONDS_PER_DAY
from
sim_scenes.func
import
ursina_run
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
():
...
...
@@ -47,32 +46,40 @@ def ursina_show():
直接使用 ursina 模拟,无需考虑万有引力(性能高)
@return:
"""
from
ursina
import
Ursina
,
Entity
,
color
,
EditorCamera
,
camera
from
ursina
import
Ursina
,
Entity
,
EditorCamera
,
camera
app
=
Ursina
()
# 黑色背景的宇宙背景
SphereSky
(
texture
=
'../../textures/bg_black.png'
)
# 控制地球的数量,这里的 num 不代表数量
# 地球数量 = num_x * num_y * num_z
num
=
5
num_x
=
num
*
2
num_y
=
num
num_z
=
num
*
2
# 地球数量 = 2 * num_x * num_y * num_z
print
(
"地球数量:"
,
2
*
num_x
*
num_y
*
num_z
)
# 控制运行的速度
run_speed
=
0.1
# 控制地球之间的距离
r
=
1
0
spacing
=
2
0
def
create_earth
(
x
,
y
,
z
):
def
create_earth
(
x
,
y
,
z
,
aligned
=
False
):
"""
在指定的三维坐标上创建地球
@param x:
@param y:
@param z:
@param aligned: 排列整齐
@return:
"""
earth
=
Entity
(
model
=
"sphere"
,
texture
=
'../../textures/earth2.jpg'
,
x
=
x
*
r
*
2
,
y
=
y
*
r
,
z
=
z
*
r
*
2
,
scale
=
3
)
if
aligned
:
xr
,
yr
,
zr
=
0
,
0
,
0
else
:
xr
,
yr
,
zr
=
random
.
randint
(
20
,
800
)
/
100
,
random
.
randint
(
20
,
800
)
/
100
,
random
.
randint
(
20
,
800
)
/
100
earth
=
Entity
(
model
=
"sphere"
,
texture
=
'../../textures/earth1.jpg'
,
x
=
x
*
spacing
*
2
+
xr
,
y
=
y
*
spacing
+
yr
,
z
=
z
*
spacing
*
2
+
zr
,
scale
=
3
)
earth
.
name
=
"%s:%s:%s"
%
(
x
,
y
,
z
)
def
update
():
...
...
@@ -94,7 +101,7 @@ def ursina_show():
ed
=
EditorCamera
()
camera
.
fov
=
80
ed
.
position
=
[
0
,
0
,
r
/
2
]
ed
.
position
=
[
0
,
0
,
spacing
/
2
]
# 控制摄像机三个维度的移动方向,值为 1 和 -1
camera
.
x_d
=
1
...
...
sim_scenes/science/sun_earth_moon.py
浏览文件 @
298ed28a
# -*- coding:utf-8 -*-
# title :地
月场景模拟(观看月相变化的过程)
# description :地
月场景模拟(观看月相变化的过程)
# title :地
球年月的关系
# description :地
球年月的关系
# author :Python超人
# date :2023-0
2-1
1
# date :2023-0
7-0
1
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
...
...
@@ -17,33 +17,8 @@ import numpy as np
if
__name__
==
'__main__'
:
"""
地
月场景模拟
地
球年月的关系
"""
# # 地球的Y方向初始速度
# EARTH_INIT_VELOCITY = 0 # 0km/s
# sun = Sun(init_position=[0, 0, AU], size_scale=2e1) # 太阳放大 20 倍
# # 忽略质量的引力
# sun.ignore_mass = True
#
# # 观看月相变化的过程:分别是 新月、蛾眉月、上弦月、盈凸、满月、亏凸、下弦月、残月
# # 参考:images/moon/月相变化过程.jpeg
# # TODO: 月球在摄像机的前方(从 “新月” 开始)
# moon_pos, moon_vel = [0, 0, 384400], [-(EARTH_INIT_VELOCITY + 1.03), 0, 0]
# # TODO: 月球在摄像机的右方(从 “下弦月” 开始),将会从右方出现
# # moon_pos, moon_vel = [384400, 0, 0], [-EARTH_INIT_VELOCITY, 0, 1.03]
# # TODO: 月球在摄像机的左方(从 “上弦月” 开始)
# # moon_pos, moon_vel = [-384400, 0, 0], [EARTH_INIT_VELOCITY, 0, -1.03]
# moon = Moon(init_position=moon_pos, # 距地距离约: 363104 至 405696 km
# init_velocity=moon_vel,
# size_scale=2e1) # 月球放大 20 倍,距离保持不变
# bodies = [
# sun,
# Earth(init_position=[0, 0, 0],
# init_velocity=[0, EARTH_INIT_VELOCITY, 0],
# size_scale=1e1), # 地球放大 10 倍,距离保持不变
# moon
# ]
sun
=
Sun
(
name
=
"太阳"
,
size_scale
=
1e2
)
# 太阳放大 100 倍,距离保持不变
earth
=
Earth
(
name
=
"地球"
,
size_scale
=
1.8e3
)
# 地球放大 1800 倍,距离保持不变
earth_moon_d
=
20000000
# 因为地球放大 1800 倍,为了较好的效果,地月距离要比实际大才行
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录