轨道

e2m2e 的轨道数据结构与操作。

Orbit 类

Orbit 是最基本的轨道数据容器,用于存储、计算和持久化一条 CR3BP 轨道的全部信息。

核心属性:

  • states: 状态序列 [x, y, z, vx, vy, vz],形状 (n, 6)

  • times: 时间序列,形状 (n,)

  • system: 关联的 CR3BP_System 对象

计算属性(property):

  • period: 轨道周期

  • amplitudes: x/y/z 方向振幅

  • extrema: 各分量极值

  • center: 轨道中心

  • monodromy_matrix: 单周期转移矩阵

  • eigenvalues: 特征值

  • stability_index: 稳定性指标

from e2m2e.core.orbit import Orbit
from e2m2e.core.system import CR3BP_System
import numpy as np

system = CR3BP_System.from_known_system("earth_moon")

# 从状态序列创建轨道
states = np.array([...])  # (n, 6)
times = np.linspace(0, 2 * np.pi, 100)
orbit = Orbit(states, times, system)

# 访问计算属性
print(f"周期: {orbit.period}")
print(f"x 振幅: {orbit.amplitudes['x']}")

轨道族类型

支持的轨道族:

  • halo: Halo 轨道

  • lyapunov: Lyapunov 轨道

  • vertical: 垂直轨道

  • axial: 轴向轨道

  • butterfly: 蝴蝶轨道

  • dragonfly: 蜻蜓轨道

# 设置轨道族类型
orbit.family_type = "halo"
orbit.parameters = {"L": 1, "amplitude_z": 0.01}

序列化

Orbit 支持 JSON 序列化/反序列化:

# 保存轨道
orbit.save("my_orbit.json")

# 加载轨道
orbit2 = Orbit.load("my_orbit.json")

OrbitFamily 类

OrbitFamily 是轨道族容器,用于存储和管理多条同族轨道。

from e2m2e.core.orbit import OrbitFamily

family = OrbitFamily("halo_L1", system)
family.append(orbit1)
family.append(orbit2)

# 访问族内所有轨道
for orbit in family:
    print(orbit.period)