public class SpacecraftState extends Object implements TimeStamped, TimeShiftable<SpacecraftState>, Serializable
它包含一个Orbit
,或者如果没有明确的中心天体,则包含一个AbsolutePVCoordinates
,以及在固有AbsoluteDate
上的当前质量和姿态。这些量在日期和参考系方面保证一致。太空船状态还可以包含其他状态,这些状态简单地命名为可以容纳任何用户定义数据的双精度数组。
状态可以稍微移动到接近日期。这实际的移动在Orbit
和AbsolutePVCoordinates
之间有所不同。对于姿态,这是考虑自旋速率的线性外推,没有质量变化。它不旨在替代适当的轨道和姿态传播,但对于小时间偏移或粗略精度应该是足够的。
实例SpacecraftState
保证是不可变的。
NumericalPropagator
, Serialized Form
Modifier and Type | Field and Description |
---|---|
static double |
DEFAULT_MASS
默认质量。
|
Constructor and Description |
---|
SpacecraftState(AbsolutePVCoordinates absPva)
仅从位置-速度-加速度构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude)
从位置-速度-加速度和姿态构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, double mass)
从位置-速度-加速度、姿态和质量构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, DoubleArrayDictionary additional)
从位置-速度-加速度、姿态和其他状态构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, double mass, DoubleArrayDictionary additional)
从位置-速度-加速度、姿态、质量和其他状态构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, double mass, DoubleArrayDictionary additional, DoubleArrayDictionary additionalDot)
从位置-速度-加速度、姿态、质量和其他状态以及导数构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, double mass)
从位置-速度-加速度和质量创建一个新实例。
|
SpacecraftState(AbsolutePVCoordinates absPva, DoubleArrayDictionary additional)
从位置-速度-加速度和其他状态构建太空船状态。
|
SpacecraftState(AbsolutePVCoordinates absPva, double mass, DoubleArrayDictionary additional)
从位置-速度-加速度、质量和其他状态创建一个新实例。
|
SpacecraftState(Orbit orbit)
仅从轨道构建太空船状态。
|
SpacecraftState(Orbit orbit, Attitude attitude)
从轨道和姿态构建太空船状态。
|
SpacecraftState(Orbit orbit, Attitude attitude, double mass)
从轨道、姿态和质量构建太空船状态。
|
SpacecraftState(Orbit orbit, Attitude attitude, DoubleArrayDictionary additional)
从轨道、姿态和其他状态构建太空船状态。
|
SpacecraftState(Orbit orbit, Attitude attitude, double mass, DoubleArrayDictionary additional)
从轨道、姿态、质量和其他状态构建太空船状态。
|
SpacecraftState(Orbit orbit, Attitude attitude, double mass, DoubleArrayDictionary additional, DoubleArrayDictionary additionalDot)
从轨道、姿态、质量、其他状态和导数构建太空船状态。
|
SpacecraftState(Orbit orbit, double mass)
从轨道和质量创建一个新实例。
|
SpacecraftState(Orbit orbit, DoubleArrayDictionary additional)
从轨道和其他状态构建太空船状态。
|
SpacecraftState(Orbit orbit, double mass, DoubleArrayDictionary additional)
从轨道、质量和其他状态创建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
SpacecraftState |
addAdditionalState(String name, double... value)
添加一个额外的状态。
|
SpacecraftState |
addAdditionalStateDerivative(String name, double... value)
添加一个额外状态的导数。
|
void |
ensureCompatibleAdditionalStates(SpacecraftState state)
检查两个实例是否具有相同的可用额外状态集。
|
double |
getA()
获取半长轴。
|
AbsolutePVCoordinates |
getAbsPVA()
获取绝对位置-速度-加速度。
|
double[] |
getAdditionalState(String name)
获取一个额外状态。
|
double[] |
getAdditionalStateDerivative(String name)
获取一个额外状态的导数。
|
DoubleArrayDictionary |
getAdditionalStatesDerivatives()
获取额外状态导数的不可修改映射。
|
DoubleArrayDictionary |
getAdditionalStatesValues()
获取额外状态的不可修改映射。
|
Attitude |
getAttitude()
获取姿态。
|
AbsoluteDate |
getDate()
获取日期。
|
double |
getE()
获取离心率。
|
double |
getEquinoctialEx()
获取离心率向量的第一个分量(根据赤道参数)。
|
double |
getEquinoctialEy()
获取离心率向量的第二个分量(根据赤道参数)。
|
Frame |
getFrame()
获取定义框架。
|
double |
getHx()
获取倾斜向量的第一个分量(根据赤道参数)。
|
double |
getHy()
获取倾斜向量的第二个分量(根据赤道参数)。
|
double |
getI()
获取倾斜度。
|
double |
getKeplerianMeanMotion()
获取开普勒平均运动。
|
double |
getKeplerianPeriod()
获取开普勒周期。
|
double |
getLE()
获取离心纬度参数(根据赤道参数)。
|
double |
getLM()
获取平均经度参数(根据赤道参数)。
|
double |
getLv()
获取真纬度参数(根据赤道参数)。
|
double |
getMass()
获取当前质量。
|
double |
getMu()
获取中心引力系数。
|
Orbit |
getOrbit()
获取当前轨道。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getPosition()
获取在轨道定义框架中的位置。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getPosition(Frame outputFrame)
获取在给定输出框架中的位置。
|
TimeStampedPVCoordinates |
getPVCoordinates()
获取在轨道定义框架中的 TimeStampedPVCoordinates 。
|
TimeStampedPVCoordinates |
getPVCoordinates(Frame outputFrame)
获取在给定输出框架中的 TimeStampedPVCoordinates 。
|
boolean |
hasAdditionalState(String name)
检查额外状态是否可用。
|
boolean |
hasAdditionalStateDerivative(String name)
检查额外状态导数是否可用。
|
boolean |
isOrbitDefined()
检查状态是否包含轨道部分。
|
SpacecraftState |
shiftedBy(double dt)
获取一个时间偏移的状态。
|
StaticTransform |
toStaticTransform()
计算从状态定义框架到太空船框架的静态变换。
|
String |
toString() |
Transform |
toTransform()
计算从状态定义框架到太空船框架的变换。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
durationFrom
public static final double DEFAULT_MASS
public SpacecraftState(Orbit orbit)
姿态和质量设置为未指定的非空任意值。
orbit
- 轨道
public SpacecraftState(Orbit orbit, Attitude attitude) throws IllegalArgumentException
质量设置为未指定的非空任意值。
orbit
- 轨道
attitude
- 姿态
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(Orbit orbit, double mass)
姿态定律设置为未指定的默认姿态。
orbit
- 轨道
mass
- 质量(千克)
public SpacecraftState(Orbit orbit, Attitude attitude, double mass) throws IllegalArgumentException
orbit
- 轨道
attitude
- 姿态
mass
- 质量(千克)
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(Orbit orbit, DoubleArrayDictionary additional)
姿态和质量设置为未指定的非空任意值。
orbit
- 轨道
additional
- 其他状态
public SpacecraftState(Orbit orbit, Attitude attitude, DoubleArrayDictionary additional) throws IllegalArgumentException
质量设置为未指定的非空任意值。
orbit
- 轨道
attitude
- 姿态
additional
- 其他状态
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(Orbit orbit, double mass, DoubleArrayDictionary additional)
姿态定律设置为未指定的默认姿态。
orbit
- 轨道
mass
- 质量(千克)
additional
- 其他状态
public SpacecraftState(Orbit orbit, Attitude attitude, double mass, DoubleArrayDictionary additional) throws IllegalArgumentException
orbit
- 轨道
attitude
- 姿态
mass
- 质量(千克)
additional
- 其他状态(如果没有可用的其他状态,则可能为null)
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(Orbit orbit, Attitude attitude, double mass, DoubleArrayDictionary additional, DoubleArrayDictionary additionalDot) throws IllegalArgumentException
orbit
- 轨道
attitude
- 姿态
mass
- 质量(千克)
additional
- 额外状态(如果没有可用的额外状态,则可以为null)
additionalDot
- 额外状态导数(如果没有可用的额外状态导数,则可以为null)
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(AbsolutePVCoordinates absPva)
姿态和质量设置为未指定的非null任意值。
absPva
- 位置-速度-加速度
public SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude) throws IllegalArgumentException
质量设置为未指定的非null任意值。
absPva
- 位置-速度-加速度
attitude
- 姿态
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(AbsolutePVCoordinates absPva, double mass)
姿态定律设置为未指定的默认姿态。
absPva
- 位置-速度-加速度
mass
- 质量(千克)
public SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, double mass) throws IllegalArgumentException
absPva
- 位置-速度-加速度
attitude
- 姿态
mass
- 质量(千克)
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(AbsolutePVCoordinates absPva, DoubleArrayDictionary additional)
姿态和质量设置为未指定的非null任意值。
absPva
- 位置-速度-加速度
additional
- 额外状态
public SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, DoubleArrayDictionary additional) throws IllegalArgumentException
质量设置为未指定的非null任意值。
absPva
- 位置-速度-加速度
attitude
- 姿态
additional
- 额外状态
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(AbsolutePVCoordinates absPva, double mass, DoubleArrayDictionary additional)
姿态定律设置为未指定的默认姿态。
absPva
- 位置-速度-加速度
mass
- 质量(千克)
additional
- 额外状态
public SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, double mass, DoubleArrayDictionary additional) throws IllegalArgumentException
absPva
- 位置-速度-加速度
attitude
- 姿态
mass
- 质量(千克)
additional
- 额外状态(如果没有可用的额外状态,则可以为null)
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState(AbsolutePVCoordinates absPva, Attitude attitude, double mass, DoubleArrayDictionary additional, DoubleArrayDictionary additionalDot) throws IllegalArgumentException
absPva
- 位置-速度-加速度
attitude
- 姿态
mass
- 质量(千克)
additional
- 额外状态(如果没有可用的额外状态,则可以为null)
additionalDot
- 额外状态导数(如果没有可用的额外状态导数,则可以为null)
IllegalArgumentException
- 如果轨道和姿态的日期或参考系不相等
public SpacecraftState addAdditionalState(String name, double... value)
SpacecraftState
实例是不可变的,因此此方法不会更改实例,而是创建一个新实例,该实例具有与原始实例相同的轨道、姿态、质量和额外状态,除了还具有指定的状态。如果原始实例已经具有相同名称的额外状态,则将被覆盖。如果它没有任何具有该名称的额外状态,则新实例将比原始实例多一个额外状态。
name
- 额外状态的名称(包含任何大小写形式的“orekit”名称保留供库内部使用)
value
- 额外状态的值
hasAdditionalState(String)
, getAdditionalState(String)
, getAdditionalStatesValues()
public SpacecraftState addAdditionalStateDerivative(String name, double... value)
SpacecraftState
实例是不可变的,因此此方法不会更改实例,而是创建一个新实例,该实例具有与原始实例相同的组件,除了还具有指定的状态导数。如果原始实例已经具有相同名称的额外状态导数,则将被覆盖。如果它没有任何具有该名称的额外状态导数,则新实例将比原始实例多一个额外状态导数。
name
- 额外状态导数的名称(包含任何大小写形式的“orekit”名称保留供库内部使用)
value
- 额外状态导数的值
hasAdditionalStateDerivative(String)
, getAdditionalStateDerivative(String)
, getAdditionalStatesDerivatives()
public boolean isOrbitDefined()
状态包含绝对位置-速度-加速度
或轨道
之一。
getOrbit()
不会抛出异常),或者如果状态包含绝对位置-速度-加速度(在这种情况下getAbsPVA()
不会抛出异常),则返回true
public SpacecraftState shiftedBy(double dt)
状态可以在接近日期时稍微偏移。此偏移基于简单模型。对于轨道,如果在轨道中没有导数可用,则模型是开普勒模型,如果有导数可用,则是开普勒模型加上非开普勒加速度的二次效应。对于姿态,使用多项式模型。质量和其他状态均不变。偏移不旨在替代正确的轨道和姿态传播,但对于小时间偏移或粗略精度应该足够。
作为粗略的数量级,以下表格显示了在这种简单偏移方法和数值传播器之间获得的外推误差,用于低地球太阳同步轨道,带有20x20重力场,太阳和月球的第三体引力,阻力和太阳辐射压力。请注意,这些结果对其他轨道会有所不同。
插值时间(秒) | 无导数位置误差(米) | 有导数位置误差(米) |
---|---|---|
60 | 18 | 1.1 |
120 | 72 | 9.1 |
300 | 447 | 140 |
600 | 1601 | 1067 |
900 | 3141 | 3307 |
shiftedBy
在接口 TimeShiftable<SpacecraftState>
dt
- 以秒为单位的时间偏移
public AbsolutePVCoordinates getAbsPVA() throws OrekitIllegalStateException
状态包含一个绝对位置-速度-加速度
或一个轨道
。可以使用isOrbitDefined()
来检查哪一个存在。
OrekitIllegalStateException
- 如果位置-速度-加速度为null,这意味着状态实际包含一个轨道
isOrbitDefined()
,getOrbit()
public Orbit getOrbit() throws OrekitIllegalStateException
状态包含一个绝对位置-速度-加速度
或一个轨道
。可以使用isOrbitDefined()
来检查哪一个存在。
OrekitIllegalStateException
- 如果轨道为null,这意味着状态实际包含一个绝对位置-速度-加速度
isOrbitDefined()
,getAbsPVA()
public AbsoluteDate getDate()
getDate
在接口 TimeStamped
public Frame getFrame()
public boolean hasAdditionalState(String name)
name
- 额外状态的名称
addAdditionalState(String, double[])
,getAdditionalState(String)
,getAdditionalStatesValues()
public boolean hasAdditionalStateDerivative(String name)
name
- 额外状态导数的名称
addAdditionalStateDerivative(String, double[])
,getAdditionalStateDerivative(String)
,getAdditionalStatesDerivatives()
public void ensureCompatibleAdditionalStates(SpacecraftState state) throws org.hipparchus.exception.MathIllegalStateException
仅比较额外状态的名称和维度,而不比较它们的值。
state
- 要与实例比较的状态
org.hipparchus.exception.MathIllegalStateException
- 如果一个额外状态在两个状态中的维度不同
public double[] getAdditionalState(String name)
name
- 额外状态的名称
addAdditionalState(String, double[])
,hasAdditionalState(String)
,getAdditionalStatesValues()
public double[] getAdditionalStateDerivative(String name)
name
- 额外状态导数的名称
addAdditionalStateDerivative(String, double[])
,hasAdditionalStateDerivative(String)
,getAdditionalStatesDerivatives()
public DoubleArrayDictionary getAdditionalStatesValues()
addAdditionalState(String, double[])
,hasAdditionalState(String)
,getAdditionalState(String)
public DoubleArrayDictionary getAdditionalStatesDerivatives()
addAdditionalStateDerivative(String, double[])
, hasAdditionalStateDerivative(String)
, getAdditionalStateDerivative(String)
public Transform toTransform()
航天器参考系的原点位于轨道(或绝对位置-速度-加速度)定义的点,其方向由姿态定义。
public StaticTransform toStaticTransform()
toTransform()
public double getMu()
public double getKeplerianPeriod()
开普勒周期直接从半长轴和中心加速度常数计算。
public double getKeplerianMeanMotion()
开普勒平均运动直接从半长轴和中心加速度常数计算。
public double getA()
public double getEquinoctialEx()
getE()
public double getEquinoctialEy()
getE()
public double getHx()
getI()
public double getHy()
getI()
public double getLv()
public double getLE()
public double getLM()
public double getE()
getEquinoctialEx()
, getEquinoctialEy()
public org.hipparchus.geometry.euclidean.threed.Vector3D getPosition()
getPVCoordinates()
public TimeStampedPVCoordinates getPVCoordinates()
TimeStampedPVCoordinates
。
计算卫星的位置和速度。此方法缓存其结果,仅在使用新值mu调用该方法时重新计算。结果以对内部缓存的TimeStampedPVCoordinates
的引用形式提供,因此调用者有责任将其复制到单独的TimeStampedPVCoordinates
中,如果需要保留该值一段时间。
public org.hipparchus.geometry.euclidean.threed.Vector3D getPosition(Frame outputFrame)
outputFrame
- 应定义位置的参考系
getPVCoordinates(Frame)
public TimeStampedPVCoordinates getPVCoordinates(Frame outputFrame)
TimeStampedPVCoordinates
。
计算卫星的位置和速度。此方法缓存其结果,仅在使用新值mu调用该方法时重新计算。结果以对内部缓存的TimeStampedPVCoordinates
的引用形式提供,因此调用者有责任将其复制到单独的TimeStampedPVCoordinates
中,如果需要保留该值一段时间。
outputFrame
- 应定义坐标的参考系
public Attitude getAttitude()
public double getMass()
Copyright © 2002-2023 CS GROUP. All rights reserved.