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