轨道
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)