Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
a1947921
宇宙模拟器
项目概览
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看板
提交
a1947921
编写于
10月 28, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
7387b622
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
613 addition
and
72 deletion
+613
-72
common/celestial_data_service.py
common/celestial_data_service.py
+25
-5
sim_scenes/solar_system/halley_comet_sim_02.py
sim_scenes/solar_system/halley_comet_sim_02.py
+96
-67
simulators/ursina/entities/orbit_line.py
simulators/ursina/entities/orbit_line.py
+449
-0
simulators/ursina/ursina_mesh.py
simulators/ursina/ursina_mesh.py
+43
-0
未找到文件。
common/celestial_data_service.py
浏览文件 @
a1947921
...
@@ -14,6 +14,7 @@ from astropy.coordinates import get_body_barycentric_posvel
...
@@ -14,6 +14,7 @@ from astropy.coordinates import get_body_barycentric_posvel
from
astropy.time
import
Time
from
astropy.time
import
Time
from
bodies
import
Body
,
Sun
,
Asteroids
,
Moon
,
Earth
from
bodies
import
Body
,
Sun
,
Asteroids
,
Moon
,
Earth
from
common.consts
import
G
,
AU
,
SECONDS_PER_DAY
from
common.consts
import
G
,
AU
,
SECONDS_PER_DAY
from
simulators.ursina.ursina_config
import
UrsinaConfig
def
calc_solar_acceleration
(
body_or_pos
,
big_body
):
def
calc_solar_acceleration
(
body_or_pos
,
big_body
):
...
@@ -362,6 +363,24 @@ def init_bodies_pos_vels(bodies):
...
@@ -362,6 +363,24 @@ def init_bodies_pos_vels(bodies):
body
.
init_velocity
=
pos_vels
[
'vel'
]
body
.
init_velocity
=
pos_vels
[
'vel'
]
def
get_reality_orbit_points
(
body_name
,
start_time
=
None
,
days
=
365
,
segments
=
100
,
scale_factor
=
1
):
if
start_time
is
None
:
start_time
=
Time
.
now
()
if
days
<
segments
:
s
=
1
else
:
s
=
int
(
round
(
days
/
segments
))
points
=
[]
for
d
in
range
(
0
,
days
,
s
):
dt
=
d
+
start_time
pos
,
vel
=
get_body_barycentric_posvel
(
body_name
,
dt
)
x
,
y
,
z
=
pos
.
x
.
value
*
AU
*
scale_factor
,
pos
.
z
.
value
*
AU
*
scale_factor
,
pos
.
y
.
value
*
AU
*
scale_factor
points
.
append
((
x
,
y
,
z
))
return
points
def
init_bodies_reality_pos_vels
(
bodies
,
dt
=
None
):
def
init_bodies_reality_pos_vels
(
bodies
,
dt
=
None
):
from
astropy.coordinates
import
solar_system_ephemeris
as
sse
from
astropy.coordinates
import
solar_system_ephemeris
as
sse
if
dt
is
None
:
if
dt
is
None
:
...
@@ -391,13 +410,14 @@ def init_bodies_reality_pos_vels(bodies, dt=None):
...
@@ -391,13 +410,14 @@ def init_bodies_reality_pos_vels(bodies, dt=None):
# if pos_vels is None:
# if pos_vels is None:
# continue
# continue
pos
,
vel
=
[
pos
.
x
.
value
*
AU
,
pos
.
z
.
value
*
AU
,
pos
.
y
.
value
*
AU
],
\
pos
,
vel
=
[
pos
.
x
.
value
*
AU
,
pos
.
z
.
value
*
AU
,
pos
.
y
.
value
*
AU
],
\
[
vel
.
x
.
value
*
AU
/
SECONDS_PER_DAY
,
[
vel
.
x
.
value
*
AU
/
SECONDS_PER_DAY
,
vel
.
z
.
value
*
AU
/
SECONDS_PER_DAY
,
vel
.
z
.
value
*
AU
/
SECONDS_PER_DAY
,
vel
.
y
.
value
*
AU
/
SECONDS_PER_DAY
]
vel
.
y
.
value
*
AU
/
SECONDS_PER_DAY
]
body
.
init_position
=
pos
body
.
init_position
=
pos
body
.
init_velocity
=
vel
body
.
init_velocity
=
vel
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
from
astropy.time
import
Time
# 时间
from
astropy.time
import
Time
# 时间
...
@@ -421,5 +441,5 @@ if __name__ == '__main__':
...
@@ -421,5 +441,5 @@ if __name__ == '__main__':
# # show_bodies_posvels(dt)
# # show_bodies_posvels(dt)
# bs = gen_real_pos_vel_bodies('sun,Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune',dt)
# bs = gen_real_pos_vel_bodies('sun,Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune',dt)
# print(bs)
# print(bs)
print
(
get_reality_orbit_points
(
'earth'
))
print
(
get_init_pos_vels
()[
'sun'
])
#
print(get_init_pos_vels()['sun'])
sim_scenes/solar_system/halley_comet_sim_02.py
浏览文件 @
a1947921
...
@@ -11,7 +11,7 @@ import math
...
@@ -11,7 +11,7 @@ import math
from
ursina
import
camera
,
application
from
ursina
import
camera
,
application
from
bodies
import
Sun
,
Mercury
,
Venus
,
Earth
,
Mars
,
Jupiter
,
Saturn
,
Uranus
,
Neptune
,
Pluto
from
bodies
import
Sun
,
Mercury
,
Venus
,
Earth
,
Mars
,
Jupiter
,
Saturn
,
Uranus
,
Neptune
,
Pluto
from
common.celestial_data_service
import
get_init_pos_vels
,
init_bodies_reality_pos_vels
from
common.celestial_data_service
import
get_init_pos_vels
,
init_bodies_reality_pos_vels
,
get_reality_orbit_points
from
common.color_utils
import
trail_color_brightest
from
common.color_utils
import
trail_color_brightest
from
common.consts
import
SECONDS_PER_YEAR
,
AU
from
common.consts
import
SECONDS_PER_YEAR
,
AU
from
common.func
import
calculate_distance
from
common.func
import
calculate_distance
...
@@ -21,7 +21,7 @@ from sim_scenes.func import ursina_run, create_sphere_sky
...
@@ -21,7 +21,7 @@ from sim_scenes.func import ursina_run, create_sphere_sky
from
simulators.ursina.entities.world_grid
import
WorldGrid
from
simulators.ursina.entities.world_grid
import
WorldGrid
from
simulators.ursina.ursina_config
import
UrsinaConfig
from
simulators.ursina.ursina_config
import
UrsinaConfig
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
simulators.ursina.ursina_mesh
import
create_orbit_line
from
simulators.ursina.ursina_mesh
import
create_orbit_line
,
create_orbit_by_points
class
HalleyCometSim
:
class
HalleyCometSim
:
...
@@ -34,7 +34,7 @@ class HalleyCometSim:
...
@@ -34,7 +34,7 @@ class HalleyCometSim:
def
build_solar_system
(
self
):
def
build_solar_system
(
self
):
# region 构建太阳系
# region 构建太阳系
show_trail
=
Tru
e
show_trail
=
Fals
e
self
.
sun
=
Sun
(
size_scale
=
0.8e2
,
show_trail
=
show_trail
)
self
.
sun
=
Sun
(
size_scale
=
0.8e2
,
show_trail
=
show_trail
)
self
.
mercury
=
Mercury
(
size_scale
=
5e3
,
show_trail
=
show_trail
)
self
.
mercury
=
Mercury
(
size_scale
=
5e3
,
show_trail
=
show_trail
)
self
.
venus
=
Venus
(
size_scale
=
5e3
,
show_trail
=
show_trail
)
self
.
venus
=
Venus
(
size_scale
=
5e3
,
show_trail
=
show_trail
)
...
@@ -57,11 +57,20 @@ class HalleyCometSim:
...
@@ -57,11 +57,20 @@ class HalleyCometSim:
self
.
neptune
,
# 海王星
self
.
neptune
,
# 海王星
# self.pluto, # 冥王星
# self.pluto, # 冥王星
]
]
self
.
bodies
=
[
self
.
mercury
.
orbital_days
=
87.9691
self
.
sun
,
# 太阳
self
.
venus
.
orbital_days
=
224.701
self
.
mars
,
# 火星
self
.
earth
.
orbital_days
=
365.24219
self
.
neptune
,
# 海王星
self
.
mars
.
orbital_days
=
686.971
]
self
.
jupiter
.
orbital_days
=
11.862
*
365.24219
self
.
saturn
.
orbital_days
=
29.4571
*
365.24219
self
.
uranus
.
orbital_days
=
84.0205
*
365.24219
self
.
neptune
.
orbital_days
=
164.8
*
365.24219
# self.bodies = [
# self.sun, # 太阳
# self.mars, # 火星
# self.neptune, # 海王星
# ]
# endregion
# endregion
trail_color_brightest
(
self
.
bodies
)
trail_color_brightest
(
self
.
bodies
)
init_bodies_reality_pos_vels
(
self
.
bodies
)
init_bodies_reality_pos_vels
(
self
.
bodies
)
...
@@ -88,40 +97,48 @@ class HalleyCometSim:
...
@@ -88,40 +97,48 @@ class HalleyCometSim:
def
build
(
self
):
def
build
(
self
):
self
.
build_solar_system
()
self
.
build_solar_system
()
#
self.build_halley_comet()
self
.
build_halley_comet
()
def
calculate_
rotation_
angles
(
self
,
point1
,
point2
):
def
calculate_angles
(
self
,
point1
,
point2
):
dx
=
point2
.
x
-
point1
.
x
dx
=
point2
.
x
-
point1
.
x
dy
=
point2
.
y
-
point1
.
y
dy
=
point2
.
y
-
point1
.
y
dz
=
point2
.
z
-
point1
.
z
dz
=
point2
.
z
-
point1
.
z
roll
=
math
.
atan2
(
dy
,
dz
)
roll
=
math
.
degrees
(
math
.
atan2
(
dy
,
dz
)
)
pitch
=
math
.
atan2
(
dx
,
math
.
sqrt
(
dy
**
2
+
dz
**
2
))
pitch
=
math
.
degrees
(
math
.
atan2
(
dx
,
math
.
sqrt
(
dy
**
2
+
dz
**
2
)
))
yaw
=
math
.
atan2
(
math
.
sin
(
roll
),
math
.
cos
(
roll
))
yaw
=
math
.
degrees
(
math
.
atan2
(
math
.
sin
(
roll
),
math
.
cos
(
roll
)
))
return
roll
,
pitch
,
yaw
return
roll
,
pitch
,
yaw
def
calculate_angles
(
self
,
point1
,
point2
):
#
import
numpy
as
np
# def calculate_angles(self, point1, point2):
# 计算向量AB
# import numpy as np
AB
=
point1
-
point2
# # 计算向量AB
# AB = point1 - point2
# 计算向量AB与x轴、y轴和z轴之间的夹角
#
angle_x
=
np
.
arctan2
(
AB
.
y
,
AB
.
x
)
*
180
/
np
.
pi
# # 计算向量AB与x轴、y轴和z轴之间的夹角
angle_y
=
np
.
arctan2
(
AB
.
z
,
np
.
sqrt
(
AB
.
x
**
2
+
AB
.
y
**
2
))
*
180
/
np
.
pi
# angle_x = np.arctan2(AB.y, AB.x) * 180 / np.pi
angle_z
=
np
.
arctan2
(
np
.
sqrt
(
AB
.
x
**
2
+
AB
.
y
**
2
),
AB
.
z
)
*
180
/
np
.
pi
# angle_y = np.arctan2(AB.z, np.sqrt(AB.x ** 2 + AB.y ** 2)) * 180 / np.pi
# angle_z = np.arctan2(np.sqrt(AB.x ** 2 + AB.y ** 2), AB.z) * 180 / np.pi
return
angle_x
,
angle_y
,
angle_z
#
# return angle_x, angle_y, angle_z
def
calculate_angles
(
self
,
point1
,
point2
):
# def calculate_angles(self, point1, point2):
# 计算向量AB
#
AB
=
point2
-
point1
# # 计算向量AB
# 计算向量AB与x轴、y轴和z轴之间的夹角
# AB = point2 - point1
angle_x
=
math
.
degrees
(
math
.
atan2
(
AB
.
z
,
AB
.
y
))
# # 计算向量AB与x轴、y轴和z轴之间的夹角
angle_y
=
math
.
degrees
(
math
.
atan2
(
AB
.
z
,
AB
.
x
))
# angle_x = -math.degrees(-math.atan2(AB.z, AB.y))
angle_z
=
math
.
degrees
(
math
.
atan2
(
AB
.
y
,
AB
.
x
))
# angle_y = -math.degrees(-math.atan2(AB.z, AB.x))
return
angle_x
,
angle_y
,
angle_z
# angle_z = math.degrees(math.atan2(AB.y, AB.x))
# return angle_x, angle_y, angle_z
def
create_orbit_line
(
self
,
center_body
,
body
):
orbital_days
=
int
(
math
.
ceil
(
body
.
orbital_days
*
1.02
))
points
=
get_reality_orbit_points
(
type
(
body
).
__name__
.
lower
(),
days
=
orbital_days
,
segments
=
100
)
# print(points)
orbit_line
=
create_orbit_by_points
(
center_body
.
position
,
points
,
line_color
=
body
.
trail_color
)
return
orbit_line
def
on_ready
(
self
):
def
on_ready
(
self
):
"""
"""
...
@@ -132,16 +149,16 @@ class HalleyCometSim:
...
@@ -132,16 +149,16 @@ class HalleyCometSim:
from
ursina
import
scene
from
ursina
import
scene
UrsinaConfig
.
trail_type
=
"line"
UrsinaConfig
.
trail_type
=
"line"
UrsinaConfig
.
trail_length
=
91
UrsinaConfig
.
trail_length
=
91
UrsinaConfig
.
trail_length
=
1000
#
UrsinaConfig.trail_length = 1000
UrsinaConfig
.
trail_thickness_factor
=
3
UrsinaConfig
.
trail_thickness_factor
=
3
# camera.clip_plane_near = 0.1
# camera.clip_plane_near = 0.1
camera
.
clip_plane_far
=
1000000
camera
.
clip_plane_far
=
1000000
create_sphere_sky
(
scale
=
200000
)
create_sphere_sky
(
scale
=
200000
)
WorldGrid
().
draw_axises
(
10
)
#
WorldGrid().draw_axises(10)
application
.
time_scale
=
5
application
.
time_scale
=
5
self
.
orbit_lines
=
[]
#
self.orbit_lines = []
for
body
in
self
.
bodies
[
1
:]:
for
body
in
self
.
bodies
[
1
:]:
if
isinstance
(
body
,
HalleComet
):
if
isinstance
(
body
,
HalleComet
):
continue
continue
...
@@ -160,28 +177,42 @@ body.position - sun.position
...
@@ -160,28 +177,42 @@ body.position - sun.position
"""
"""
orbit_line
=
create_orbit_line
(
self
.
sun
,
body
)
orbit_line
=
self
.
create_orbit_line
(
self
.
sun
,
body
)
# # orbit_line.enabled = False
angle_x
,
angle_y
,
angle_z
=
self
.
calculate_angles
(
self
.
sun
.
planet
.
position
,
body
.
planet
.
position
)
# angle_x, angle_y, angle_z = self.calculate_angles(self.sun.planet.position, body.planet.position)
# # 获取body相对于self.sun的位置向量
# # # 获取body相对于self.sun的位置向量
# relative_position = body.planet.position - self.sun.planet.position
# # relative_position = body.planet.position - self.sun.planet.position
#
# rotation_x = -math.degrees(
# math.atan2(relative_position.y, math.sqrt(relative_position.x ** 2 + relative_position.z ** 2)))
# rotation_y = math.degrees(math.atan2(relative_position.x, relative_position.z))
# # 计算旋转角度
# orbit_line.rotation_x = rotation_x + 90
# orbit_line.rotation_z = 0
# orbit_line.rotation_y = rotation_y + 120
# #
# #
# angle = math.atan2(relative_position.y, relative_position.x)
# # rotation_x = -math.degrees(
orbit_line
.
rotation_x
=
angle_x
# # math.atan2(relative_position.y, math.sqrt(relative_position.x ** 2 + relative_position.z ** 2)))
orbit_line
.
rotation_y
=
angle_y
# - 50
# # rotation_y = math.degrees(math.atan2(relative_position.x, relative_position.z))
orbit_line
.
rotation_z
=
-
angle_z
# # # 计算旋转角度
# # orbit_line.rotation_x = rotation_x + 90
# # orbit_line.rotation_z = 0
# # orbit_line.rotation_y = rotation_y + 120
# # #
# # angle = math.atan2(relative_position.y, relative_position.x)
# #
# # orbit_line.rotation_x = angle_x - 110 # angle_x+90 # angle_x # angle_x
# # orbit_line.rotation_y = angle_y # angle_y+90 # angle_y # - 50
# # orbit_line.rotation_z = angle_z - 90 # angle_z# angle_z # angle_z
#
# # print(body.name,angle_x,angle_y,angle_z)
# # print(body.name, orbit_line.rotation_x, orbit_line.rotation_y, orbit_line.rotation_z)
# # orbit_line.look_at(body.planet)
# # print(body.name, orbit_line.rotation_x, orbit_line.rotation_y, orbit_line.rotation_z)
# # 火星 -90.0 -90.0 0.0
# # 火星 -0.0 -0.0 0.0
# # 火星 113.2222958819701 137.6691000401162 -158.65250912389882
# # 火星 16.115840911865234 -132.33090209960938 104.18995666503906
#
# # 海王星 -90.0 -90.0 0.0
# # 海王星 -0.0 -0.0 0.0
# # 海王星 131.3906379192235 3.0188762268681826 -2.6611704409164667
# # 海王星 2.6574795246124268 93.01887512207031 -90.14009857177734
orbit_line
.
body
=
body
#
orbit_line.body = body
self
.
orbit_lines
.
append
(
orbit_line
)
#
self.orbit_lines.append(orbit_line)
self
.
text_panel
=
create_text_panel
()
self
.
text_panel
=
create_text_panel
()
...
@@ -191,7 +222,7 @@ body.position - sun.position
...
@@ -191,7 +222,7 @@ body.position - sun.position
@param time_data:
@param time_data:
@return:
@return:
"""
"""
if
hasattr
(
self
,
"
self.
halley_comet"
):
if
hasattr
(
self
,
"halley_comet"
):
# 哈雷彗星飞行的翻转效果
# 哈雷彗星飞行的翻转效果
if
self
.
halley_comet
.
planet
.
enabled
:
if
self
.
halley_comet
.
planet
.
enabled
:
self
.
halley_comet
.
planet
.
rotation_x
+=
0.1
self
.
halley_comet
.
planet
.
rotation_x
+=
0.1
...
@@ -201,13 +232,13 @@ body.position - sun.position
...
@@ -201,13 +232,13 @@ body.position - sun.position
d
=
calculate_distance
(
self
.
halley_comet
.
position
,
self
.
sun
.
position
)
d
=
calculate_distance
(
self
.
halley_comet
.
position
,
self
.
sun
.
position
)
self
.
text_panel
.
text
=
"哈雷彗星距离太阳:%.3f AU"
%
(
d
/
AU
)
self
.
text_panel
.
text
=
"哈雷彗星距离太阳:%.3f AU"
%
(
d
/
AU
)
for
i
,
orbit_line
in
enumerate
(
self
.
orbit_lines
):
#
for i, orbit_line in enumerate(self.orbit_lines):
if
i
<
4
:
#
if i < 4:
adj_scale
=
False
#
adj_scale = False
else
:
#
else:
adj_scale
=
True
#
adj_scale = True
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
#
# 由于天体运行不是标准的圆形,则需要动态调整轨道的大小,保证轨道线始终在天体的中心位置
orbit_line
.
auto_adjust
(
adj_scale
=
adj_scale
)
#
orbit_line.auto_adjust(adj_scale=adj_scale)
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
...
@@ -217,8 +248,6 @@ if __name__ == '__main__':
...
@@ -217,8 +248,6 @@ if __name__ == '__main__':
sim
=
HalleyCometSim
()
sim
=
HalleyCometSim
()
sim
.
build
()
sim
.
build
()
# 订阅事件后,上面2个函数功能才会起作用
# 订阅事件后,上面2个函数功能才会起作用
# 运行中,每时每刻都会触发 on_timer_changed
# 运行中,每时每刻都会触发 on_timer_changed
UrsinaEvent
.
on_timer_changed_subscription
(
sim
.
on_timer_changed
)
UrsinaEvent
.
on_timer_changed_subscription
(
sim
.
on_timer_changed
)
...
...
simulators/ursina/entities/orbit_line.py
0 → 100644
浏览文件 @
a1947921
# -*- coding:utf-8 -*-
# title :创建一个圆圈
# description :创建一个圆圈
# author :Python超人
# date :2023-06-24
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from
ursina
import
*
import
math
class
OrbitLine
(
Entity
):
def
__init__
(
self
,
points
,
position
=
[
0
,
0
,
0
],
thickness
=
0.1
,
color
=
color
.
white
,
alpha
=
1
):
super
().
__init__
()
self
.
points
=
points
self
.
thickness
=
thickness
self
.
color
=
color
self
.
alpha
=
alpha
if
position
is
None
:
position
=
(
0
,
0
,
0
)
self
.
position
=
position
self
.
create_orbit_line
()
# self.scale = 1
def
create_orbit_line
(
self
):
first_point
=
self
.
points
[
0
]
last_point
=
self
.
points
[
-
1
]
x
,
y
,
z
=
self
.
position
[
0
],
self
.
position
[
1
],
self
.
position
[
2
]
for
i
,
point
in
enumerate
(
self
.
points
):
pos_x
,
pos_y
,
pos_z
=
point
[
0
],
point
[
1
],
point
[
2
]
if
i
==
0
:
next_pos
=
last_point
continue
elif
i
==
len
(
self
.
points
)
-
1
:
next_pos
=
first_point
# continue
else
:
next_pos
=
self
.
points
[
i
+
1
]
next_x
,
next_y
,
next_z
=
next_pos
[
0
],
next_pos
[
1
],
next_pos
[
2
]
line
=
Entity
(
parent
=
self
,
model
=
Mesh
(
vertices
=
((
pos_x
+
x
,
pos_y
+
y
,
pos_z
+
z
),
(
next_x
+
x
,
next_y
+
y
,
next_z
+
z
)),
mode
=
'line'
,
thickness
=
self
.
thickness
),
color
=
self
.
color
,
alpha
=
self
.
alpha
)
line
.
set_light_off
(
True
)
# angle_step = 360 / self.segments
# r = self.radius # * 1.4363
# for i in range(self.segments):
# angle = math.radians(i * angle_step)
# next_angle = math.radians((i + 1) * angle_step)
#
# # print(i/self.segments)
# #
# # if i/self.segments < 0.5:
# # continue
#
# x = r * math.cos(angle)
# y = r * math.sin(angle)
# next_x = r * math.cos(next_angle)
# next_y = r * math.sin(next_angle)
# pos_x, pos_y, pos_z = self.position
# line = Entity(parent=self,
# model=Mesh(vertices=((pos_x + x, pos_y + y, pos_z), (pos_x + next_x, pos_y + next_y, pos_z)),
# mode='line',
# thickness=self.thickness),
# color=self.color, alpha=self.alpha)
if
__name__
==
'__main__'
:
app
=
Ursina
()
window
.
borderless
=
False
window
.
fullscreen
=
False
window
.
title
=
"Circle Line"
window
.
color
=
color
.
black
points
=
[(
-
21.94488100961654
,
-
24.37979762447657
,
-
10.77849304138368
),
(
-
20.69949684741718
,
-
25.3794063092057
,
-
11.441480487068922
),
(
-
19.39182354309401
,
-
26.300852969859726
,
-
12.069169771638345
),
(
-
18.02674048253467
,
-
27.142426945109925
,
-
12.660141327813111
),
(
-
16.60907867415109
,
-
27.902574020255674
,
-
13.213064176389562
),
(
-
15.14362861113562
,
-
28.579882998788193
,
-
13.726687937876116
),
(
-
13.635148960039274
,
-
29.17307421068511
,
-
14.199835793087948
),
(
-
12.088375946965746
,
-
29.68098983779498
,
-
14.631398342127286
),
(
-
10.508033342708808
,
-
30.102585956714165
,
-
15.02032831877129
),
(
-
8.89884297148763
,
-
30.436926220426948
,
-
15.365636126019467
),
(
-
7.265535687141621
,
-
30.683177120707214
,
-
15.666386167634117
),
(
-
5.6128627748491144
,
-
30.840604794444
,
-
15.921693960342393
),
(
-
3.9456077473908135
,
-
30.908573358343435
,
-
16.130724021604074
),
(
-
2.2685985115160583
,
-
30.886544778289252
,
-
16.292688538835176
),
(
-
0.586719883821686
,
-
30.77408030196499
,
-
16.406846837500602
),
(
1.0950735651642898
,
-
30.57084350649222
,
-
16.47250567793171
),
(
2.771744363581749
,
-
30.276605036937724
,
-
16.489020423968835
),
(
4.438158721007912
,
-
29.891249136809293
,
-
16.45579714091797
),
(
6.08907288771184
,
-
29.41478209828403
,
-
16.372295695862626
),
(
7.719119355782047
,
-
28.84734278786997
,
-
16.23803395028385
),
(
9.322792992713207
,
-
28.189215432695672
,
-
16.05259315330845
),
(
10.894437232000922
,
-
27.440844883239368
,
-
15.815624663781122
),
(
12.428230488715087
,
-
26.602854599886534
,
-
15.526858150725593
),
(
13.918173023497674
,
-
25.67606764250662
,
-
15.186111444498174
),
(
15.358074548664657
,
-
24.661530972958428
,
-
14.793302234626063
),
(
16.741542957357876
,
-
23.56054340870636
,
-
14.348461834471822
),
(
18.061974665504962
,
-
22.37468758836479
,
-
13.851751256233962
),
(
19.312547189010015
,
-
21.10586632426604
,
-
13.303479861171981
),
(
20.48621474123325
,
-
19.756343716467363
,
-
12.704126866436606
),
(
21.575707830201477
,
-
18.32879138168197
,
-
12.054365998852784
),
(
22.573538067098934
,
-
16.82634009805203
,
-
11.355093581977755
),
(
23.47200966805035
,
-
15.252637071656174
,
-
10.607460320026666
),
(
24.263239441641613
,
-
13.611908875707691
,
-
9.81290699166583
),
(
24.93918740029395
,
-
11.909029879517561
,
-
8.973204177561405
),
(
25.491700505087035
,
-
10.149595646121947
,
-
8.090496003419563
),
(
25.912572430486158
,
-
8.340000307804578
,
-
7.167347668417841
),
(
26.193622584555193
,
-
6.487516296022832
,
-
6.206796227110711
),
(
26.326797888611907
,
-
4.600373977132903
,
-
5.212403679933729
),
(
26.30430093090024
,
-
2.6878377045393194
,
-
4.188310882914239
),
(
26.11874795525543
,
-
0.7602735327107313
,
-
3.1392900954155394
),
(
25.76335958923175
,
1.170797628173282
,
-
2.070793143561363
),
(
25.23218608955924
,
3.092669239410753
,
-
0.9889912048413321
),
(
24.520367003293426
,
4.99145015975521
,
0.09919882718125834
),
(
23.624422340882834
,
6.8521082470857415
,
1.1861074560535447
),
(
22.54256852675394
,
8.658568096402977
,
2.2633320472008704
),
(
21.275047562449068
,
10.39387424333678
,
3.321789894998355
),
(
19.82445226238634
,
12.040429405016774
,
4.351811781917988
),
(
18.196024669622055
,
13.580313566260228
,
5.343281505089151
),
(
16.39789975826046
,
14.99568363788025
,
6.285824115359243
),
(
14.441263529685058
,
16.269245076045834
,
7.169041470726426
),
(
12.340395001250481
,
17.384776878812648
,
7.982788337958673
),
(
10.11256655526105
,
18.327681062054772
,
8.717476251490464
),
(
7.777787196905585
,
19.08551894715255
,
9.364386608977702
),
(
5.358387910330151
,
19.648491512186265
,
9.915970251400221
),
(
2.8784656633315953
,
20.00982150168267
,
10.366109212984883
),
(
0.36321976864786865
,
20.166001835774956
,
10.71031820495936
),
(
-
2.1617720937171296
,
20.11688756001358
,
10.945868772481012
),
(
-
4.6712837019570586
,
19.865625109039684
,
11.071827150603035
),
(
-
7.1411221649785706
,
19.418429991745754
,
11.089006176758769
),
(
-
9.548716240292915
,
18.784238948433018
,
10.999840449542353
),
(
-
11.87357917516475
,
17.974272713460227
,
10.808200727732686
),
(
-
14.097630306706685
,
17.001549591305498
,
10.519167414757419
),
(
-
16.205375234826104
,
15.880388399598262
,
10.138783704649164
),
(
-
18.183957027457616
,
14.62593332115373
,
9.673807064840286
),
(
-
20.023099378046236
,
13.253724729127423
,
9.131474079133424
),
(
-
21.714966750734394
,
11.779330950905965
,
8.519289240311833
),
(
-
23.25396695782603
,
10.218047637885025
,
7.844843891210241
),
(
-
24.636519368670594
,
8.584664752406985
,
7.115667724763344
),
(
-
25.860808163667656
,
6.893296474882457
,
6.339112346052557
),
(
-
26.92653567371258
,
5.157266482432186
,
5.522264422716854
),
(
-
27.834686570557604
,
3.389039737054159
,
4.671884805439541
),
(
-
28.587309911931857
,
1.6001917433840749
,
3.794369515292248
),
(
-
29.18732298633967
,
-
0.1985931957588598
,
2.8957284811644475
),
(
-
29.638338578231778
,
-
1.9975022098882875
,
1.9815781973802875
),
(
-
29.944515620242278
,
-
3.7875588950254255
,
1.0571449231856562
),
(
-
30.110432106478633
,
-
5.560578290263954
,
0.12727556228497394
),
(
-
30.140978486956822
,
-
7.309115841477003
,
-
0.8035461227619651
),
(
-
30.041269434221846
,
-
9.026413439984076
,
-
1.731179829382695
),
(
-
29.816571771259866
,
-
10.706344820595417
,
-
2.651807016561835
),
(
-
29.47224639777052
,
-
12.343361951692902
,
-
3.5619082854845048
),
(
-
29.013702191152564
,
-
13.932443536007113
,
-
4.458240646585258
),
(
-
28.446360047139304
,
-
15.46904634504916
,
-
5.337815249404152
),
(
-
27.775625434129118
,
-
16.949059812806492
,
-
6.197875971134596
),
(
-
27.00686804578578
,
-
18.368764096793043
,
-
7.0358791217280485
),
(
-
26.145407336973662
,
-
19.724791659320704
,
-
7.84947441972057
),
(
-
25.19650291220216
,
-
21.014092314854846
,
-
8.636487316701892
),
(
-
24.165348900192242
,
-
22.233901619374436
,
-
9.394902693941335
),
(
-
23.057071592644412
,
-
23.381712434623584
,
-
10.122849916722984
),
(
-
21.876729749979507
,
-
24.45524947753456
,
-
10.81858920694202
),
(
-
20.629317083774875
,
-
25.45244665649841
,
-
11.480499278832571
),
(
-
19.31976651579737
,
-
26.371426998272472
,
-
12.107066174480224
),
(
-
17.952955890017147
,
-
27.210484977825015
,
-
12.696873232390855
),
(
-
16.533714877244847
,
-
27.9680710773236
,
-
13.24859212326067
),
(
-
15.066832865234222
,
-
28.64277841685554
,
-
13.760974890328718
),
(
-
13.55706767086893
,
-
29.2333313180628
,
-
14.23284693708925
),
(
-
12.009154946728776
,
-
29.738575681668195
,
-
14.663100912017619
),
(
-
10.42781818406783
,
-
30.157471079956984
,
-
15.05069144761191
),
(
-
8.817779237553646
,
-
30.48908448609274
,
-
15.39463071975492
),
(
-
7.183769316055346
,
-
30.732585582922045
,
-
15.693984802536873
),
(
-
5.530540397926251
,
-
30.88724361506492
,
-
15.94787080350579
),
(
-
3.8628770400430756
,
-
30.952425769390544
,
-
16.155454774571528
),
(
-
2.18560855627794
,
-
30.92759709082886
,
-
16.31595040479727
),
(
-
0.5036215448234908
,
-
30.812321962783727
,
-
16.428618512845357
),
(
1.1781272570405819
,
-
30.606267204598176
,
-
16.492767369315498
),
(
2.854597815692511
,
-
30.309206862654143
,
-
16.507753892472227
),
(
4.520653375436303
,
-
29.921028796977673
,
-
16.47298577530617
),
(
6.171046810994123
,
-
29.44174319188224
,
-
16.387924617431697
),
(
7.800406824200331
,
-
28.87149314721803
,
-
16.25209015229856
),
(
9.403224076541365
,
-
28.21056753625436
,
-
16.065065678591232
),
(
10.973837383082055
,
-
27.45941634694761
,
-
15.826504824617844
),
(
12.506420137195818
,
-
26.618668754945496
,
-
15.536139795916995
),
(
13.994967191539224
,
-
25.689154208377893
,
-
15.193791279051903
),
(
15.433282491070607
,
-
24.671926835326747
,
-
14.799380198329342
),
(
16.814967842163394
,
-
23.568293512819064
,
-
14.352941546259308
),
(
18.133413310863354
,
-
22.379845958930975
,
-
13.85464053201861
),
(
19.38178987739886
,
-
21.1084972231426
,
-
13.304791313315457
),
(
20.553045137048162
,
-
19.756522949307815
,
-
12.703878593531268
),
(
21.639903033301973
,
-
18.326607763642453
,
-
12.052582374581782
),
(
22.634868842347245
,
-
16.82189708662963
,
-
11.35180615151596
),
(
23.530240899674414
,
-
15.246054571112873
,
-
10.602708811420014
),
(
24.31813087113227
,
-
13.603325211982156
,
-
9.806740447684136
),
(
24.990494717521393
,
-
11.898603936125157
,
-
8.965682210167165
),
(
25.539176873780104
,
-
10.137509139796
,
-
8.081690167906071
),
(
25.955970540624772
,
-
8.32646016617523
,
-
7.157342946657811
),
(
26.23269733404947
,
-
6.472757078039512
,
-
6.195692598839064
),
(
26.3613098031624
,
-
4.584660249079574
,
-
5.200317746778991
),
(
26.334020431382253
,
-
2.671466249544952
,
-
4.175377491267205
),
(
26.14346057254827
,
-
0.7435752305332493
,
-
3.125663881274313
),
(
25.782872202586347
,
1.18745646166574
,
-
2.056649894721359
),
(
25.246334220867677
,
3.1088863127409017
,
-
0.9745289050304365
),
(
24.529023130392066
,
5.00678777299953
,
0.11375943990850972
),
(
23.627505093847407
,
6.866095307272919
,
1.2005230132706488
),
(
22.540052500118392
,
8.670703934941352
,
2.2773375731288716
),
(
21.266973317201355
,
10.40363456320212
,
3.335100947868034
),
(
19.810935916244492
,
12.047274605856346
,
4.364127908609831
),
(
18.177266304805254
,
13.583699549366544
,
5.354291143416605
),
(
16.374189746179955
,
14.995074974949148
,
6.295210975317589
),
(
14.412985822879385
,
16.264130144979195
,
7.1764922811678185
),
(
12.30802651541831
,
17.374684255125604
,
7.988001669494753
),
(
10.076671987896901
,
18.31219615395574
,
8.720171942691843
),
(
7.739009005234556
,
19.06429963986386
,
9.364315165062925
),
(
5.317431664931192
,
19.621281505777347
,
9.912921489992307
),
(
2.836081531671903
,
19.97646013112301
,
10.359919431553406
),
(
0.3201813654872296
,
20.126429459449593
,
10.700875253485295
),
(
-
2.204689922986222
,
20.071146054304588
,
10.933114621912363
),
(
-
4.713326493038292
,
19.813853532609677
,
11.055757817732077
),
(
-
7.181575304255377
,
19.36085598555883
,
11.069669148544705
),
(
-
9.586921093991878
,
18.72116682677589
,
10.977329993000684
),
(
-
11.908945142448367
,
17.906069420351642
,
10.782651636553934
),
(
-
14.129642551906253
,
16.928629732838303
,
10.49074781403587
),
(
-
16.233598289452026
,
15.803199442368225
,
10.107687515934249
),
(
-
18.208034775489025
,
14.544941822163866
,
9.640246647122032
),
(
-
20.042752129272664
,
13.16940419121137
,
9.095673436239364
),
(
-
21.729986173214698
,
11.69215163109899
,
8.48147804962687
),
(
-
23.26420961032611
,
10.128468408076436
,
7.805252483637207
),
(
-
24.64189948044275
,
8.493126939132871
,
7.07452304399873
),
(
-
25.861290183495758
,
6.80021949146178
,
6.296634841521143
),
(
-
26.922126978651644
,
5.063045004166385
,
5.478665783487524
),
(
-
27.825430602701644
,
3.2940421486850697
,
4.627366418280784
),
(
-
28.573279908711037
,
1.5047595941533065
,
3.749121522643523
),
(
-
29.16861638858044
,
-
0.2941449700716349
,
2.849929319209709
),
(
-
29.615072140458935
,
-
2.092884506013642
,
1.935394505604362
),
(
-
29.916821206439725
,
-
3.882507275071369
,
1.0107317313905146
),
(
-
30.0784531282681
,
-
5.6548515668692625
,
0.08077667662413653
),
(
-
30.10486692637688
,
-
7.4024945229839245
,
-
0.8499975982862481
),
(
-
30.001183386739708
,
-
9.118698116892686
,
-
1.777460886052639
),
(
-
29.772673443768234
,
-
10.797354552651113
,
-
2.697804087186791
),
(
-
29.424700499018265
,
-
12.432932697672031
,
-
3.6075165727175382
),
(
-
28.962674656862212
,
-
14.020426654393145
,
-
4.503363454368126
),
(
-
28.392017047994376
,
-
15.555307183270559
,
-
5.382363332359457
),
(
-
27.718132620939905
,
-
17.033476395251995
,
-
6.241766912105139
),
(
-
26.94638999231876
,
-
18.451225915835927
,
-
7.0790367438258555
),
(
-
26.08210714660992
,
-
19.805198569751624
,
-
7.891828236610946
),
(
-
25.130541959803278
,
-
21.09235352935445
,
-
8.677972022828728
),
(
-
24.09688668516151
,
-
22.309934800908128
,
-
9.435457694986546
),
(
-
22.98626568318689
,
-
23.455442880617845
,
-
10.162418899630222
),
(
-
21.803735802071813
,
-
24.526609390138525
,
-
10.857119748173542
),
(
-
20.55428892132058
,
-
25.52137449310772
,
-
11.517942489153198
),
(
-
19.242856260969532
,
-
26.43786689661808
,
-
12.143376378366822
),
(
-
17.874314134861976
,
-
27.274386250273903
,
-
12.732007680135089
),
(
-
16.453490889472032
,
-
28.029387769407826
,
-
13.282510733837487
),
(
-
14.985174822607998
,
-
28.701468925584816
,
-
13.7936400232368
),
(
-
13.474122919646003
,
-
29.289358066230015
,
-
14.264223191611748
),
(
-
11.925070280947274
,
-
29.791904844785776
,
-
14.693154952439626
),
(
-
10.342740142934185
,
-
30.20807236326696
,
-
15.07939185331486
),
(
-
8.731854419112032
,
-
30.536930949597302
,
-
15.42194785928068
),
(
-
7.097144705647395
,
-
30.77765351309863
,
-
15.71989073106301
),
(
-
5.44336371051937
,
-
30.929512442537348
,
-
15.972339183439676
),
(
-
3.7752970755462387
,
-
30.991878032538366
,
-
16.178460819345627
),
(
-
2.0977755674068037
,
-
30.964218445960192
,
-
16.337470846246234
),
(
-
0.41568761673621024
,
-
30.84610124223122
,
-
16.44863159297245
),
(
1.2660078156820496
,
-
30.63719652480965
,
-
16.51125285759214
),
(
2.942268071292068
,
-
30.33728178512029
,
-
16.524693130298893
),
(
4.60795335864535
,
-
29.946248545647894
,
-
16.488361749687922
),
(
6.2578130982208116
,
-
29.46411093155174
,
-
16.40172206644218
),
(
7.886472113749149
,
-
28.891016328264538
,
-
16.264295705444646
),
(
9.488416762603253
,
-
28.227258312030553
,
-
16.075668035782382
),
(
11.057981131982856
,
-
27.47329207110799
,
-
15.835494978085835
),
(
12.58933347185152
,
-
26.629752566957766
,
-
15.543511300110904
),
(
14.076463091952341
,
-
25.69747571646506
,
-
15.199540574260645
),
(
15.51316802115217
,
-
24.677522907002764
,
-
14.80350699452719
),
(
16.893043816157988
,
-
23.571209183999045
,
-
14.3554492744177
),
(
18.20947401636866
,
-
22.380135473202184
,
-
13.855536870835001
),
(
19.455622876491415
,
-
21.106225213071653
,
-
13.304088799932837
),
(
20.62443117255558
,
-
19.75176577137886
,
-
12.701595327244778
),
(
21.708616073862952
,
-
18.319454997366396
,
-
12.048742822649002
),
(
22.700676307693726
,
-
16.812453206166982
,
-
11.346442065820469
),
(
23.592904116514664
,
-
15.234440794151977
,
-
10.595860263740303
),
(
24.377405820373912
,
-
13.589681524604838
,
-
9.798456989182457
),
(
25.04613314475705
,
-
11.883091283791883
,
-
8.956024157275777
),
(
25.59092784678037
,
-
10.120311762255119
,
-
8.070730011426932
),
(
26.00358254915857
,
-
8.30778803724571
,
-
7.145166873084488
),
(
26.27592103741464
,
-
6.452848388667978
,
-
6.182402101904724
),
(
26.39990153726024
,
-
4.563783843403656
,
-
5.186031292584043
),
(
26.367746587339177
,
-
2.649923887665426
,
-
4.160232181107273
),
(
26.172102948790442
,
-
0.7217035092076534
,
-
3.109817032540067
),
(
25.8062344072354
,
1.2092847475214568
,
-
2.0402804318262584
),
(
25.26424915570592
,
3.1302616354846386
,
-
0.9578384205441786
),
(
24.541361515813833
,
5.027264479778774
,
0.13054612651704203
),
(
23.63418489154242
,
6.885193720189724
,
1.2171580014398702
),
(
22.54104895504181
,
8.687914305671535
,
2.293550953735472
),
(
21.262329176901044
,
10.418423215351922
,
3.350603026361399
),
(
19.800771205951765
,
12.059092514902552
,
4.3786127766700025
),
(
18.161786864439183
,
13.591993457735564
,
5.367441733541845
),
(
16.353693604916987
,
14.999300914248975
,
6.306705625768824
),
(
14.387866440364883
,
16.263768948611055
,
7.186012689229037
),
(
12.278771998360162
,
17.369258321947953
,
7.995241930414798
),
(
10.043859625173821
,
18.301286418259075
,
8.724848184197105
),
(
7.703294854560048
,
19.047561479505113
,
9.366175127547685
),
(
5.27953543247004
,
19.598458243352095
,
9.911753308669718
),
(
2.796767535883519
,
19.947392897316654
,
10.355558880892692
),
(
0.2802368662790735
,
20.09106249884588
,
10.69321082971422
),
(
-
2.2444774194851647
,
20.029527020186453
,
10.922090054339895
),
(
-
4.752191244011166
,
19.766128856530347
,
11.041371877406402
),
(
-
7.218793091517313
,
19.307261918869536
,
11.051972911291042
),
(
-
9.621825527270794
,
18.66201714395288
,
10.956421960237465
),
(
-
11.940939771347658
,
17.841740991296138
,
10.758671282812875
),
(
-
14.1582085557003
,
16.85954720141226
,
10.463868198284665
),
(
-
16.258297955702016
,
15.729820120032691
,
10.078107571021551
),
(
-
18.22851130466336
,
14.467741672172536
,
9.608183670786095
),
(
-
20.058726492589894
,
13.088865500328295
,
9.061356178046829
),
(
-
21.74125181489532
,
11.6087526932619
,
8.445140649231032
),
(
-
23.27062575087321
,
10.042675312734024
,
7.767129388377437
),
(
-
24.64338367958625
,
8.405387382775379
,
7.0348449306279015
),
(
-
25.85781069235312
,
6.710958416360196
,
6.255625492286006
),
(
-
26.913695275488926
,
4.972661806612817
,
5.436539819792117
),
(
-
27.81209438242012
,
3.2029091779774976
,
4.584327771028205
),
(
-
28.55511669114883
,
1.4132216714362453
,
3.705362511660376
),
(
-
29.14572782856216
,
-
0.3857702591447405
,
2.805630218913448
),
(
-
29.587579061925226
,
-
2.1843059569390517
,
1.8907234858936488
),
(
-
29.884859341405505
,
-
3.973458824273209
,
0.9658450778411328
),
(
-
30.042169515002602
,
-
5.745090806260923
,
0.03581921011002458
),
(
-
30.06441690650605
,
-
7.491801078674849
,
-
0.8948919672300807
),
(
-
29.95672813455267
,
-
9.206871974175113
,
-
1.8221685189278902
),
(
-
29.724377960345482
,
-
10.884214387418222
,
-
2.7422109344181154
),
(
-
29.372732006737802
,
-
12.518314256303269
,
-
3.651517474871953
),
(
-
28.90720133488792
,
-
14.104181210474502
,
-
4.546861449026946
),
(
-
28.33320705543823
,
-
15.637300088795035
,
-
5.425268981601892
),
(
-
27.656153360851725
,
-
17.11358573597095
,
-
6.28399766063232
),
(
-
26.881407575849455
,
-
18.529341274945708
,
-
7.120516314180275
),
(
-
26.014286022714273
,
-
19.881219899708324
,
-
7.9324860649758895
),
(
-
25.060044681097946
,
-
21.16619012912206
,
-
8.717742737018279
),
(
-
24.023873785305867
,
-
22.381504394110646
,
-
9.474280634763627
),
(
-
22.91089564534744
,
-
23.52467078895981
,
-
10.200237678464209
),
(
-
21.726165101642177
,
-
24.593427795952962
,
-
10.893881854903926
),
(
-
20.47467212897231
,
-
25.585721784919176
,
-
11.553598927740033
),
(
-
19.16134619496576
,
-
26.499687091504953
,
-
12.177881343556779
),
(
-
17.7910620534659
,
-
27.33362848741607
,
-
12.765318266996347
),
(
-
16.36864671645597
,
-
28.0860058694152
,
-
13.314586679003115
),
(
-
14.898887399984265
,
-
28.755421011033505
,
-
13.824443476024236
),
(
-
13.386540283475277
,
-
29.34060623915545
,
-
14.29371851317865
),
(
-
11.836339956700572
,
-
29.8404149177624
,
-
14.72130854154207
),
(
-
10.253009458070018
,
-
30.25381364120463
,
-
15.106171997378192
),
(
-
8.641270830922831
,
-
30.57987606017589
,
-
15.447324609875391
),
(
-
7.0058561432262705
,
-
30.817778284364316
,
-
15.743835803117149
),
(
-
5.3515189298508465
,
-
30.966795826954453
,
-
15.99482587791421
),
(
-
3.6830460271536367
,
-
31.026302077456265
,
-
16.199463969411475
),
(
-
2.005269776034576
,
-
30.995768311203587
,
-
16.356966787395894
),
(
-
0.3230805727303798
,
-
30.87476526626488
,
-
16.466598157877183
),
(
1.3585602540179265
,
-
30.662966341701605
,
-
16.527669396968705
),
(
3.0346072650023688
,
-
30.36015249532571
,
-
16.539540561467142
),
(
4.69991746624465
,
-
29.966218944487377
,
-
16.501622635009248
),
(
6.3492366464488015
,
-
29.481183800093383
,
-
16.413380724343806
),
(
7.977185563268204
,
-
28.90519879227949
,
-
16.274338357298717
),
(
9.578246072151726
,
-
28.238562275593573
,
-
16.08408299251564
),
(
11.146747325625084
,
-
27.481734732424652
,
-
15.842272871051813
),
(
12.676852215741931
,
-
26.635357024909716
,
-
15.548645361427047
),
(
14.162544288809121
,
-
25.700271677442487
,
-
15.203026972572209
),
(
15.597615433499238
,
-
24.67754750231404
,
-
14.805345232842257
),
(
16.975654732142488
,
-
23.568507909130457
,
-
14.35564265746664
),
(
18.29003897618526
,
-
22.374763260499684
,
-
13.854093050005721
),
(
19.5339254819013
,
-
21.098247649698198
,
-
13.301020404444913
),
(
20.70024800763803
,
-
19.741260474038338
,
-
12.696920690616993
),
(
21.781716772063245
,
-
18.306513153850574
,
-
12.042486813466091
),
(
22.77082380789144
,
-
16.797181291667222
,
-
11.338637031467934
),
(
23.659855160268933
,
-
15.216962465913648
,
-
10.586547094422269
),
(
24.440911752602442
,
-
13.570139692551153
,
-
9.787686307403222
),
(
25.105941091502064
,
-
11.861650345454521
,
-
8.94385763418386
),
(
25.646782355417173
,
-
10.097159977554108
,
-
8.057241805795318
),
(
26.055227787782034
,
-
8.283140001116326
,
-
7.130445180506149
),
(
26.323103659753
,
-
6.426947536447216
,
-
6.16655079044336
),
(
26.44237432531076
,
-
4.5369048941560965
,
-
5.169171585839343
),
(
26.40527298297386
,
-
2.6223750943226616
,
-
4.142504330157472
),
(
26.204462574096812
,
-
0.6938285407526031
,
-
3.0913818937157687
),
(
25.83322964630002
,
1.2371055148685677
,
-
2.0213208386725046
),
(
25.28571282247306
,
3.1576106918890767
,
-
0.9385602062208114
),
(
24.55716555776763
,
5.053687940820556
,
0.14991363290562287
),
(
23.644249973035517
,
6.910203625299165
,
1.2363622099185467
),
(
22.54535462566689
,
8.710992818314221
,
2.312317204072807
),
(
21.260924164168873
,
10.439029054394306
,
3.3686369579948643
),
(
19.793783190704396
,
12.076669857223878
,
4.395604072707328
),
(
18.149430926531615
,
13.605983392795327
,
5.3830693661736015
),
(
16.336278400523177
,
15.009155298940406
,
6.320644619348313
),
(
14.365797134404106
,
16.26896621563744
,
7.197942263534556
),
(
12.252549066968841
,
17.369320469630356
,
8.004854703314017
),
(
10.01407289180563
,
18.295796105678775
,
8.73185992473207
),
(
7.670612527679701
,
19.036177934374482
,
9.370334392862148
),
(
5.24468843233358
,
19.580930625536453
,
9.912850209896536
),
(
2.7605299524653812
,
19.923569891501337
,
10.353432235389079
),
(
0.24340387730282564
,
20.060897237864815
,
10.687753081808165
),
(
-
2.28111252300855
,
19.99307692105629
,
10.91324957046932
),
(
-
4.7878591955332706
,
19.723550498973253
,
11.029152505693107
),
(
-
7.252768386526647
,
19.258801608545713
,
11.036430986556523
),
(
-
9.653442568466271
,
18.60799818939644
,
10.93766118060082
),
(
-
11.969604718139925
,
17.782548929908582
,
10.736836044961459
),
(
-
14.18340668355668
,
16.79561422683218
,
10.43913604033054
),
(
-
16.27959677290355
,
15.661609822230423
,
10.05068134238044
),
(
-
18.245559995576258
,
14.39573495815452
,
9.578283951785922
),
(
-
20.071252439305017
,
13.01354827816581
,
9.02921433857036
),
(
-
21.74905500444579
,
11.530605626690779
,
8.41099279426736
),
(
-
23.27357183346558
,
9.962165721269072
,
7.731211309915596
),
(
-
24.641396338632553
,
8.322963190005758
,
6.997388082433197
),
(
-
25.850863853906407
,
6.627043936922913
,
6.216853930359744
),
(
-
26.901805546366287
,
4.887655103956426
,
5.396668005776613
),
(
-
27.795313980748645
,
3.1171807067150885
,
4.54355911301341
),
(
-
28.53352702750502
,
1.327113928618621
,
3.6638885115247213
),
(
-
29.119433814026227
,
-
0.4719423227943447
,
2.7636301011115783
),
(
-
29.55670415927588
,
-
2.2702539790909495
,
1.848364195439651
),
(
-
29.84954133499103
,
-
4.058919702302065
,
0.9232815509524747
),
(
-
30.00255694933961
,
-
5.829825137977894
,
-
0.006805162559097177
),
(
-
30.020666129727775
,
-
7.575591480598035
,
-
0.9374447491539986
),
(
-
29.909000877225726
,
-
9.28952135826367
,
-
1.8645275585168035
),
(
-
29.672839380125986
,
-
10.965544254929299
,
-
2.7842636566202468
),
(
-
29.317549132815664
,
-
12.598163049467013
,
-
3.6931601621658285
),
(
-
28.848541851673705
,
-
14.182402748888308
,
-
4.587998532458493
),
(
-
28.271238371391888
,
-
15.713762106949055
,
-
5.465812356249192
),
(
-
27.591041915018312
,
-
17.188168530577812
,
-
6.323866035054244
),
(
-
26.81331834129269
,
-
18.601936464873805
,
-
7.159634599580472
),
(
-
25.943382171906006
,
-
19.951729297848157
,
-
7.970784807350811
),
(
-
24.98648738394169
,
-
21.234524722488594
,
-
8.755157593357792
),
(
-
23.947822115289576
,
-
22.447583426958268
,
-
9.510751893058032
),
(
-
22.832506573478728
,
-
23.588420942815024
,
-
10.235709820373627
),
(
-
21.64559356145595
,
-
24.654782460010765
,
-
10.928303159324216
),
# (-20.392071139114123, -25.644620410102693, -11.586921113086897),
# (-19.076867028233274, -26.556074621937885, -12.210059246583814),
# (-17.704854443684653, -27.387454863193295, -12.796309555776181),
# (-16.280859096103654, -28.137225595328914, -13.344351597953759),
# (-14.809667163258837, -28.803992786319675, -13.85294462089545),
# (-13.296034070562884, -29.38649264411157, -14.320920634223222),
# (-11.744693956167277, -29.88358215368191, -14.747178373292922),
# (-10.160369724956372, -30.294231320839895, -15.130678113794152),
# (-8.547783619061688, -30.617517046551036, -15.470437303845863),
# (-6.91166825041581, -30.85261857658755, -15.765526989747054),
# (-5.256778055250306, -30.998814492288478, -16.015069021259926),
# (-3.587901140281036, -31.055481229693438, -16.218234032757472)
]
orbit_line
=
OrbitLine
(
points
,
thickness
=
10
,
color
=
color
.
yellow
,
alpha
=
0.1
)
EditorCamera
()
app
.
run
()
simulators/ursina/ursina_mesh.py
浏览文件 @
a1947921
...
@@ -17,6 +17,7 @@ import math
...
@@ -17,6 +17,7 @@ import math
from
common.color_utils
import
conv_to_vec4_color
from
common.color_utils
import
conv_to_vec4_color
from
common.func
import
calculate_distance
from
common.func
import
calculate_distance
from
simulators.ursina.entities.circle_line
import
CircleLine
from
simulators.ursina.entities.circle_line
import
CircleLine
from
simulators.ursina.entities.orbit_line
import
OrbitLine
from
simulators.ursina.ursina_config
import
UrsinaConfig
from
simulators.ursina.ursina_config
import
UrsinaConfig
...
@@ -136,6 +137,22 @@ def create_circle_line(parent=None, radius=1, position=None, segments=100, thick
...
@@ -136,6 +137,22 @@ def create_circle_line(parent=None, radius=1, position=None, segments=100, thick
return
circle_line
return
circle_line
def
create_orbit_line
(
parent
=
None
,
position
=
None
,
points
=
100
,
thickness
=
0.1
,
color
=
color
.
white
,
alpha
=
1
):
if
isinstance
(
color
,
tuple
)
or
isinstance
(
color
,
list
):
color
=
conv_to_vec4_color
(
color
)
if
alpha
<
1
:
color
[
3
]
=
alpha
orbit_line
=
OrbitLine
(
position
=
position
,
points
=
points
,
thickness
=
thickness
,
color
=
color
,
alpha
=
alpha
)
orbit_line
.
set_light_off
(
True
)
if
parent
is
not
None
:
if
hasattr
(
parent
,
"planet"
):
parent
=
parent
.
planet
orbit_line
.
parent
=
parent
return
orbit_line
def
create_arrow_line
(
from_pos
,
to_pos
,
parent
=
None
,
label
=
None
,
def
create_arrow_line
(
from_pos
,
to_pos
,
parent
=
None
,
label
=
None
,
set_light_off
=
True
,
alpha
=
1.0
,
len_scale
=
0.5
,
set_light_off
=
True
,
alpha
=
1.0
,
len_scale
=
0.5
,
color
=
color
.
white
,
thickness
=
2
,
color
=
color
.
white
,
thickness
=
2
,
...
@@ -263,6 +280,32 @@ def create_orbit_line(center_obj, orbiting_obj, thickness=5, line_color=None, al
...
@@ -263,6 +280,32 @@ def create_orbit_line(center_obj, orbiting_obj, thickness=5, line_color=None, al
return
orbit_line
return
orbit_line
def
create_orbit_by_points
(
center_pos
,
orbiting_points
,
thickness
=
5
,
line_color
=
color
.
white
,
alpha
=
0.6
,
scale_factor
=
None
):
if
isinstance
(
line_color
,
tuple
)
or
isinstance
(
line_color
,
list
):
line_color
=
conv_to_vec4_color
(
line_color
)
if
alpha
<
1
:
line_color
[
3
]
=
alpha
if
scale_factor
is
None
:
scale_factor
=
UrsinaConfig
.
SCALE_FACTOR
if
scale_factor
!=
1
:
center_pos
=
center_pos
*
scale_factor
for
i
,
point
in
enumerate
(
orbiting_points
):
orbiting_points
[
i
]
=
np
.
array
([
point
[
0
]
*
scale_factor
,
point
[
1
]
*
scale_factor
,
point
[
2
]
*
scale_factor
])
orbit_line
=
OrbitLine
(
points
=
orbiting_points
,
position
=
center_pos
,
thickness
=
thickness
,
color
=
line_color
,
alpha
=
alpha
)
orbit_line
.
set_light_off
(
True
)
# if parent is not None:
# if hasattr(parent, "planet"):
# parent = parent.planet
# circle_line.parent = parent
return
orbit_line
def
create_orbit_line2
(
center_obj
,
orbiting_obj
,
line_color
=
color
.
white
,
alpha
=
0.3
):
def
create_orbit_line2
(
center_obj
,
orbiting_obj
,
line_color
=
color
.
white
,
alpha
=
0.3
):
if
isinstance
(
line_color
,
tuple
)
or
isinstance
(
line_color
,
list
):
if
isinstance
(
line_color
,
tuple
)
or
isinstance
(
line_color
,
list
):
line_color
=
color
.
rgba
(
line_color
[
0
]
/
255
,
line_color
[
1
]
/
255
,
line_color
[
2
]
/
255
,
alpha
)
line_color
=
color
.
rgba
(
line_color
[
0
]
/
255
,
line_color
[
1
]
/
255
,
line_color
[
2
]
/
255
,
alpha
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录