moon.py 1.7 KB
Newer Older
M
march3 已提交
1
# -*- coding:utf-8 -*-
M
march3 已提交
2 3
# title           :月球
# description     :月球
M
march3 已提交
4
# author          :Python超人
M
march3 已提交
5 6
# date            :2023-02-11
# link            :https://gitcode.net/pythoncr/
M
march3 已提交
7 8 9
# python_version  :3.8
# ==============================================================================
from bodies.body import Body, AU
三月三net's avatar
三月三net 已提交
10
from bodies import Earth
M
march3 已提交
11 12 13 14 15 16


class Moon(Body):
    """
    月球
    ------------------------
三月三net's avatar
三月三net 已提交
17 18
     自转周期: 27.32 地球日,自转角速度约为 0.5487 度/小时 = 360/(27.32*24)
    距地距离约: 363104 至 405696 km
三月三net's avatar
三月三net 已提交
19 20 21 22
     逃逸速度: 2.4 km/s
     公转速度: 1.023 km/s + (地球)29.79 km/s
     天体质量: 7.342✕10²² kg
     平均密度: 3.344 g/cm³ -> 3.344✕10³ kg/m³
M
march3 已提交
23 24 25 26 27
    """

    def __init__(self, name="Moon", mass=7.342e22,
                 init_position=[363104 + 1.12 * AU, 0, 0],
                 init_velocity=[0, 29.79 + 1.023, 0],
三月三net's avatar
三月三net 已提交
28 29
                 texture="moon.jpg", size_scale=1.0, distance_scale=1.0,
                 rotation_speed=0.5487):
M
march3 已提交
30 31 32 33 34 35 36 37 38
        params = {
            "name": name,
            "mass": mass,
            "init_position": init_position,
            "init_velocity": init_velocity,
            "density": 3.344e3,
            "color": (162, 162, 162),
            "texture": texture,
            "size_scale": size_scale,
三月三net's avatar
三月三net 已提交
39 40
            "distance_scale": distance_scale,
            "rotation_speed": rotation_speed
M
march3 已提交
41 42 43
        }
        super().__init__(**params)

三月三net's avatar
三月三net 已提交
44 45 46 47 48 49 50 51 52 53 54 55
    def ignore_gravity(self, body):
        """
        是否忽略引力
        :param body:
        :return:
        """
        # 月球只对地球有引力,忽略其他的引力
        if isinstance(body, Earth):
            return False

        return True

M
march3 已提交
56 57

if __name__ == '__main__':
M
march3 已提交
58 59
    moon = Moon()
    print(moon)