提交 64e2ac9b 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 40bedd1d
...@@ -11,6 +11,7 @@ from bodies.uranus import Uranus ...@@ -11,6 +11,7 @@ from bodies.uranus import Uranus
from bodies.venus import Venus from bodies.venus import Venus
from bodies.moon import Moon from bodies.moon import Moon
from bodies.asteroid import Asteroid from bodies.asteroid import Asteroid
from bodies.torus_zone import TorusZone
from bodies.asteroids import Asteroids from bodies.asteroids import Asteroids
from bodies.habitable_zone import HabitableZone from bodies.habitable_zone import HabitableZone
......
...@@ -7,9 +7,10 @@ ...@@ -7,9 +7,10 @@
# python_version :3.8 # python_version :3.8
# ============================================================================== # ==============================================================================
from bodies.body import Body, AU from bodies.body import Body, AU
from bodies.torus_zone import TorusZone
class Asteroids(Body): class Asteroids(TorusZone):
""" """
小行星群 小行星群
质量 (kg):~4.1×1010 kg 质量 (kg):~4.1×1010 kg
...@@ -29,7 +30,11 @@ class Asteroids(Body): ...@@ -29,7 +30,11 @@ class Asteroids(Body):
def __init__(self, name="小行星群", mass=1.9891e30, def __init__(self, name="小行星群", mass=1.9891e30,
init_position=[0, 0, 0], init_position=[0, 0, 0],
init_velocity=[0, 0, 0], init_velocity=[0, 0, 0],
texture="asteroids.png", size_scale=1.0, texture="asteroids.png",
inner_radius=2.17,
outer_radius=3.64,
subdivisions=64,
size_scale=1.0,
distance_scale=1.0, distance_scale=1.0,
rotation_speed=0.002, # 小行星绕太阳转一圈的时间在数年到几十年之间不等。 rotation_speed=0.002, # 小行星绕太阳转一圈的时间在数年到几十年之间不等。
parent=None): parent=None):
...@@ -38,8 +43,9 @@ class Asteroids(Body): ...@@ -38,8 +43,9 @@ class Asteroids(Body):
"mass": mass, "mass": mass,
"init_position": init_position, "init_position": init_position,
"init_velocity": init_velocity, "init_velocity": init_velocity,
"density": 1.408e3, "inner_radius": inner_radius,
"color": (179, 231, 255), "outer_radius": outer_radius,
"subdivisions": subdivisions,
"texture": texture, "texture": texture,
"size_scale": size_scale, "size_scale": size_scale,
"distance_scale": distance_scale, "distance_scale": distance_scale,
...@@ -51,7 +57,7 @@ class Asteroids(Body): ...@@ -51,7 +57,7 @@ class Asteroids(Body):
# self.torus_stars = True # self.torus_stars = True
# 环状星群带(inner_radius, outer_radius, subdivisions) # 环状星群带(inner_radius, outer_radius, subdivisions)
# inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度 # inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度
self.torus_zone = 2.17, 3.64, 64 # self.torus_zone = 2.17, 3.64, 64
def ignore_gravity_with(self, body): def ignore_gravity_with(self, body):
""" """
......
...@@ -7,9 +7,10 @@ ...@@ -7,9 +7,10 @@
# python_version :3.8 # python_version :3.8
# ============================================================================== # ==============================================================================
from bodies.body import Body, AU from bodies.body import Body, AU
from bodies.torus_zone import TorusZone
class HabitableZone(Body): class HabitableZone(TorusZone):
""" """
模拟太阳系宜居带: 模拟太阳系宜居带:
目前认为 太阳系 的宜居带范围是从距离太阳0.95个天文单位 (约1.42亿千米)到 2.4个天文单位(约3.59亿千米)的范围为宜居带, 目前认为 太阳系 的宜居带范围是从距离太阳0.95个天文单位 (约1.42亿千米)到 2.4个天文单位(约3.59亿千米)的范围为宜居带,
...@@ -19,7 +20,11 @@ class HabitableZone(Body): ...@@ -19,7 +20,11 @@ class HabitableZone(Body):
def __init__(self, name="宜居带", mass=1.9891e30, def __init__(self, name="宜居带", mass=1.9891e30,
init_position=[0, 0, 0], init_position=[0, 0, 0],
init_velocity=[0, 0, 0], init_velocity=[0, 0, 0],
texture="green_alpha_1.png", size_scale=1.0, texture="green_alpha_1.png",
inner_radius=0.95,
outer_radius=1.67,
subdivisions=64,
size_scale=1.0,
distance_scale=1.0, distance_scale=1.0,
rotation_speed=0, rotation_speed=0,
parent=None): parent=None):
...@@ -28,8 +33,9 @@ class HabitableZone(Body): ...@@ -28,8 +33,9 @@ class HabitableZone(Body):
"mass": mass, "mass": mass,
"init_position": init_position, "init_position": init_position,
"init_velocity": init_velocity, "init_velocity": init_velocity,
"density": 1.408e3, "inner_radius": inner_radius,
"color": (179, 231, 255), "outer_radius": outer_radius,
"subdivisions": subdivisions,
"texture": texture, "texture": texture,
"size_scale": size_scale, "size_scale": size_scale,
"distance_scale": distance_scale, "distance_scale": distance_scale,
...@@ -39,7 +45,7 @@ class HabitableZone(Body): ...@@ -39,7 +45,7 @@ class HabitableZone(Body):
super().__init__(**params) super().__init__(**params)
# 环状宜居带(inner_radius, outer_radius, subdivisions) # 环状宜居带(inner_radius, outer_radius, subdivisions)
# inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度 # inner_radius:内圆半径 outer_radius:外圆半径,subdivisions:细分数,控制圆环的细节和精度
self.torus_zone = 0.95, 1.67, 64 # self.torus_zone = 0.95, 1.67, 64
# 使用 texture="red_green_blue.png", # 使用 texture="red_green_blue.png",
# self.torus_zone = 0.20, 6.00, 64 # self.torus_zone = 0.20, 6.00, 64
......
# -*- coding:utf-8 -*-
# title :小行星
# description :小行星
# author :Python超人
# date :2023-07-01
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from bodies.body import Body, AU
class TorusZone(Body):
"""
模拟环形区域:
"""
def __init__(self, name="宜居带", mass=1.9891e30,
init_position=[0, 0, 0],
init_velocity=[0, 0, 0],
texture="green_alpha_1.png",
inner_radius=0.95,
outer_radius=1.67,
subdivisions=64,
size_scale=1.0,
distance_scale=1.0,
rotation_speed=0,
parent=None):
"""
@param name: 天体名称
@param mass: 天体质量 (kg)
@param init_position: 初始位置 (km)
@param init_velocity: 初始速度 (km/s)
@param texture: 纹理图片
@param inner_radius: 内圆半径
@param outer_radius: 外圆半径
@param subdivisions: 细分数,控制圆环的细节和精度
@param size_scale: 尺寸缩放
@param distance_scale: 距离缩放
@param rotation_speed: 自旋速度(度/小时)
@param parent: 天体的父对象
"""
params = {
"name": name,
"mass": mass,
"init_position": init_position,
"init_velocity": init_velocity,
"density": 1.408e3,
"color": (179, 231, 255),
"texture": texture,
"size_scale": size_scale,
"distance_scale": distance_scale,
"rotation_speed": rotation_speed,
"parent": parent
}
super().__init__(**params)
# 环状带(inner_radius, outer_radius, subdivisions)
self.torus_zone = inner_radius, outer_radius, subdivisions
def ignore_gravity_with(self, body):
"""
是否忽略指定天体的引力
@param body:
@return:
"""
# 小行星只对恒星有引力,忽略其他行星的引力
# if body.is_fixed_star:
return True
# return True
if __name__ == '__main__':
habitable_zone = HabitableZone()
print(habitable_zone)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册