e2m2e.algorithm.coordinate.standard_origins 源代码

"""常用坐标原点实现。

提供基于 SPICE 的天体中心原点等标准原点实现。
"""

from __future__ import annotations

import numpy as np
import numpy.typing as npt

from ...data.kernels.manager import SPICEManager
from .origin import Origin


[文档] class CelestialBodyOrigin(Origin): """天体中心原点。 表示某一大天体(如地球、月球、太阳)的中心,其在 ICRF 中的绝对状态 通过 SPICE 实时查询。 """
[文档] def __init__(self, body: str, spice: SPICEManager) -> None: """初始化天体中心原点。 Args: body: 天体名称,如 ``'EARTH'``、``'MOON'``、``'SUN'``。 spice: SPICE 管理器实例,用于查询天体状态。 """ self._body = body.upper() self._spice = spice
@property def body(self) -> str: """天体名称(大写)。""" return self._body
[文档] def state(self, et: float) -> npt.NDArray[np.floating]: """返回该天体中心在 ICRF 中的绝对状态。 Args: et: SPICE 历书时(秒)。 Returns: 长度为 6 的数组,前 3 个元素为位置(km),后 3 个为速度(km/s)。 """ return self._spice.get_body_state(self._body, et, "J2000", "SOLAR SYSTEM BARYCENTER")
[文档] class InertialOrigin(Origin): """惯性原点。 表示 ICRF 原点本身,相对 ICRF 无平移。 """
[文档] def state(self, et: float) -> npt.NDArray[np.floating]: """返回零状态。""" return np.zeros(6)