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

Python超人-宇宙模拟器

上级 40bedd1d
......@@ -11,6 +11,7 @@ from bodies.uranus import Uranus
from bodies.venus import Venus
from bodies.moon import Moon
from bodies.asteroid import Asteroid
from bodies.torus_zone import TorusZone
from bodies.asteroids import Asteroids
from bodies.habitable_zone import HabitableZone
......
......@@ -7,9 +7,10 @@
# python_version :3.8
# ==============================================================================
from bodies.body import Body, AU
from bodies.torus_zone import TorusZone
class Asteroids(Body):
class Asteroids(TorusZone):
"""
小行星群
质量 (kg):~4.1×1010 kg
......@@ -29,7 +30,11 @@ class Asteroids(Body):
def __init__(self, name="小行星群", mass=1.9891e30,
init_position=[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,
rotation_speed=0.002, # 小行星绕太阳转一圈的时间在数年到几十年之间不等。
parent=None):
......@@ -38,8 +43,9 @@ class Asteroids(Body):
"mass": mass,
"init_position": init_position,
"init_velocity": init_velocity,
"density": 1.408e3,
"color": (179, 231, 255),
"inner_radius": inner_radius,
"outer_radius": outer_radius,
"subdivisions": subdivisions,
"texture": texture,
"size_scale": size_scale,
"distance_scale": distance_scale,
......@@ -51,7 +57,7 @@ class Asteroids(Body):
# self.torus_stars = True
# 环状星群带(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):
"""
......
......@@ -7,9 +7,10 @@
# python_version :3.8
# ==============================================================================
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亿千米)的范围为宜居带,
......@@ -19,7 +20,11 @@ class HabitableZone(Body):
def __init__(self, name="宜居带", mass=1.9891e30,
init_position=[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,
rotation_speed=0,
parent=None):
......@@ -28,8 +33,9 @@ class HabitableZone(Body):
"mass": mass,
"init_position": init_position,
"init_velocity": init_velocity,
"density": 1.408e3,
"color": (179, 231, 255),
"inner_radius": inner_radius,
"outer_radius": outer_radius,
"subdivisions": subdivisions,
"texture": texture,
"size_scale": size_scale,
"distance_scale": distance_scale,
......@@ -39,7 +45,7 @@ class HabitableZone(Body):
super().__init__(**params)
# 环状宜居带(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",
# 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.
先完成此消息的编辑!
想要评论请 注册