T
- type of the field elements
public abstract class FieldOrbit<T extends org.hipparchus.CalculusFieldElement<T>> extends Object implements FieldPVCoordinatesProvider<T>, FieldTimeStamped<T>, FieldTimeShiftable<FieldOrbit<T>,T>
为了用户方便起见,无论派生类中实现的规范表示是什么(例如可能是经典的开普勒元素),此类都提供笛卡尔元素和赤道元素。
参数在用户指定的参考系中定义。确保此参考系一致很重要:它可能是惯性的,并且以中心天体为中心。例如,一些力模型使用此信息。
此类的实例保证是不可变的。
Modifier | Constructor and Description |
---|---|
protected |
FieldOrbit(Frame frame, FieldAbsoluteDate<T> date, T mu)
默认构造函数。
|
protected |
FieldOrbit(TimeStampedFieldPVCoordinates<T> FieldPVCoordinates, Frame frame, T mu)
从笛卡尔参数设置轨道。
|
Modifier and Type | Method and Description |
---|---|
abstract void |
addKeplerContribution(PositionAngleType type, T gm, T[] pDot)
将开普勒运动的贡献添加到参数导数中
|
protected abstract T[][] |
computeJacobianEccentricWrtCartesian()
计算轨道参数相对于笛卡尔参数的偏心角的雅可比矩阵。
|
protected abstract T[][] |
computeJacobianMeanWrtCartesian()
计算轨道参数相对于笛卡尔参数的平均角的雅可比矩阵。
|
protected abstract T[][] |
computeJacobianTrueWrtCartesian()
计算轨道参数相对于笛卡尔参数的真实角的雅可比矩阵。
|
protected void |
fillHalfRow(T a, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v, T[] row, int j)
用单个向量填充雅可比矩阵的半行。
|
protected void |
fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T[] row, int j)
用向量的线性组合填充雅可比矩阵的半行。
|
protected void |
fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T[] row, int j)
用向量的线性组合填充雅可比矩阵的半行。
|
protected void |
fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T a4, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v4, T[] row, int j)
用向量的线性组合填充雅可比矩阵的半行。
|
protected void |
fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T a4, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v4, T a5, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v5, T[] row, int j)
用向量的线性组合填充雅可比矩阵的半行。
|
protected void |
fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T a4, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v4, T a5, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v5, T a6, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v6, T[] row, int j)
用向量的线性组合填充雅可比矩阵的半行。
|
abstract T |
getA()
获取半长轴。
|
abstract T |
getADot()
获取半长轴导数。
|
FieldAbsoluteDate<T> |
getDate()
获取轨道参数的日期。
|
abstract T |
getE()
获取偏心率。
|
abstract T |
getEDot()
获取偏心率导数。
|
abstract T |
getEquinoctialEx()
获取赤道偏心率向量的第一个分量。
|
abstract T |
getEquinoctialExDot()
获取赤道偏心率向量的第一个分量。
|
abstract T |
getEquinoctialEy()
获取赤道偏心率向量的第二个分量。
|
abstract T |
getEquinoctialEyDot()
获取赤道偏心率向量的第二个分量。
|
protected org.hipparchus.Field<T> |
getField()
Field的Getter。
|
Frame |
getFrame()
获取定义轨道参数的参考系。
|
abstract T |
getHx()
获取倾斜向量的第一个分量。
|
abstract T |
getHxDot()
获取倾斜向量的第一个分量导数。
|
abstract T |
getHy()
获取倾斜向量的第二个分量。
|
abstract T |
getHyDot()
获取倾斜向量的第二个分量导数。
|
abstract T |
getI()
获取倾斜度。
|
abstract T |
getIDot()
获取倾斜度导数。
|
void |
getJacobianWrtCartesian(PositionAngleType type, T[][] jacobian)
计算轨道参数相对于笛卡尔参数的雅可比矩阵。
|
void |
getJacobianWrtParameters(PositionAngleType type, T[][] jacobian)
计算笛卡尔参数相对于轨道参数的雅可比矩阵。
|
T |
getKeplerianMeanMotion()
获取开普勒平均运动。
|
T |
getKeplerianPeriod()
获取开普勒周期。
|
abstract T |
getLE()
获取偏心经度参数。
|
abstract T |
getLEDot()
获取偏心经度参数导数。
|
abstract T |
getLM()
获取平均经度参数。
|
abstract T |
getLMDot()
获取平均经度参数导数。
|
abstract T |
getLv()
获取真实经度参数。
|
abstract T |
getLvDot()
获取真实经度参数导数。
|
T |
getMeanAnomalyDotWrtA()
获取平近点角对半长轴的导数。
|
T |
getMu()
获取用于位置和速度转换的中心引力系数(m³/s²)。
|
protected T |
getOne()
Field值为一的Getter。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getPosition()
获取定义参考系中的位置。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getPosition(Frame outputFrame)
获取指定参考系中的位置。
|
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates()
获取定义参考系中的 TimeStampedPVCoordinates 。
|
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates(FieldAbsoluteDate<T> otherDate, Frame otherFrame)
获取所选参考系中的 FieldPVCoordinates 的主体。
|
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates(Frame outputFrame)
获取指定参考系中的 TimeStampedPVCoordinates 。
|
abstract OrbitType |
getType()
获取轨道类型。
|
protected T |
getZero()
Field值为零的Getter。
|
abstract boolean |
hasDerivatives()
检查轨道是否包含导数。
|
protected static <T extends org.hipparchus.CalculusFieldElement<T>> |
hasNonKeplerianAcceleration(FieldPVCoordinates<T> pva, T mu)
检查笛卡尔坐标是否包含非开普勒加速度。
|
protected abstract org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
initPosition()
从规范参数计算位置坐标。
|
protected abstract TimeStampedFieldPVCoordinates<T> |
initPVCoordinates()
从规范参数计算位置/速度坐标。
|
boolean |
isElliptical()
如果且仅当轨道是椭圆的时返回true。
|
abstract FieldOrbit<T> |
shiftedBy(T dt)
获取时间偏移的轨道。
|
abstract Orbit |
toOrbit()
将FieldOrbit实例转换为Orbit实例。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getPosition
durationFrom
shiftedBy
protected FieldOrbit(Frame frame, FieldAbsoluteDate<T> date, T mu) throws IllegalArgumentException
frame
- 参数定义的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(m^3/s^2)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
protected FieldOrbit(TimeStampedFieldPVCoordinates<T> FieldPVCoordinates, Frame frame, T mu) throws IllegalArgumentException
在getPVCoordinates()
和getPVCoordinates(Frame)
中提供的加速度可通过FieldPVCoordinates
访问。所有其他方法使用mu
和位置来计算加速度,包括shiftedBy(CalculusFieldElement)
和getPVCoordinates(FieldAbsoluteDate, Frame)
。
FieldPVCoordinates
- 惯性参考系中的位置和速度
frame
- TimeStampedPVCoordinates
定义的参考系(必须是一个伪惯性参考系
)
mu
- 中心引力系数(m^3/s^2)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
protected static <T extends org.hipparchus.CalculusFieldElement<T>> boolean hasNonKeplerianAcceleration(FieldPVCoordinates<T> pva, T mu)
T
- 字段元素的类型
pva
- 笛卡尔坐标
mu
- 中心引力系数
public boolean isElliptical()
public abstract OrbitType getType()
public Frame getFrame()
public abstract Orbit toOrbit()
public abstract T getA()
请注意,对于双曲线轨道,半长轴被认为是负的。
public abstract T getADot()
请注意,对于双曲线轨道,半长轴被认为是负的。
如果轨道是没有导数创建的,则返回的值为null。
public abstract T getEquinoctialEx()
public abstract T getEquinoctialExDot()
如果轨道是没有导数创建的,则返回的值为null。
public abstract T getEquinoctialEy()
public abstract T getEquinoctialEyDot()
如果轨道是没有导数创建的,则返回的值为null。
public abstract T getHx()
public abstract T getHxDot()
如果轨道是没有导数创建的,则返回的值为null。
public abstract T getHy()
public abstract T getHyDot()
public abstract T getLE()
public abstract T getLEDot()
如果轨道是在没有导数的情况下创建的,则返回的值为null。
public abstract T getLv()
public abstract T getLvDot()
如果轨道是在没有导数的情况下创建的,则返回的值为null。
public abstract T getLM()
public abstract T getLMDot()
如果轨道是在没有导数的情况下创建的,则返回的值为null。
public abstract T getE()
public abstract T getEDot()
如果轨道是在没有导数的情况下创建的,则返回的值为null。
public abstract T getI()
如果轨道是在没有导数的情况下创建的,则返回的值为null。
public abstract T getIDot()
public abstract boolean hasDerivatives()
getADot()
, getEquinoctialExDot()
, getEquinoctialEyDot()
, getHxDot()
, getHyDot()
, getLEDot()
, getLvDot()
, getLMDot()
, getEDot()
, getIDot()
public T getMu()
public T getKeplerianPeriod()
开普勒周期直接从半长轴和中心加速度常数计算得出。
public T getKeplerianMeanMotion()
开普勒平均运动直接从半长轴和中心加速度常数计算得出。
public T getMeanAnomalyDotWrtA()
public FieldAbsoluteDate<T> getDate()
getDate
在接口 FieldTimeStamped<T extends org.hipparchus.CalculusFieldElement<T>>
public TimeStampedFieldPVCoordinates<T> getPVCoordinates(Frame outputFrame)
TimeStampedPVCoordinates
。
outputFrame
- 应计算位置/速度坐标的参考系
getPVCoordinates()
public TimeStampedFieldPVCoordinates<T> getPVCoordinates(FieldAbsoluteDate<T> otherDate, Frame otherFrame)
FieldPVCoordinates
。
getPVCoordinates
在接口 FieldPVCoordinatesProvider<T extends org.hipparchus.CalculusFieldElement<T>>
otherDate
- 当前日期
otherFrame
- 定义位置的参考系
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getPosition(Frame outputFrame)
outputFrame
- 应计算位置坐标的参考系
getPosition()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getPosition()
getPVCoordinates()
public TimeStampedFieldPVCoordinates<T> getPVCoordinates()
TimeStampedPVCoordinates
。
getPVCoordinates(Frame)
protected T getOne()
protected T getZero()
protected org.hipparchus.Field<T> getField()
protected abstract org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> initPosition()
protected abstract TimeStampedFieldPVCoordinates<T> initPVCoordinates()
public abstract FieldOrbit<T> shiftedBy(T dt)
轨道可以稍微偏移以接近日期。此偏移基于简单的开普勒模型。它不旨在替代正确的轨道和姿态传播,但对于小时间偏移或粗略精度应该足够。
shiftedBy
在接口 FieldTimeShiftable<FieldOrbit<T 扩展 org.hipparchus.CalculusFieldElement<T>>,T 扩展 org.hipparchus.CalculusFieldElement<T>>
dt
- 以秒为单位的时间偏移
public void getJacobianWrtCartesian(PositionAngleType type, T[][] jacobian)
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应于笛卡尔坐标x、y、z、xDot、yDot和zDot。
type
- 要使用的位置角类型
jacobian
- 占位符6x6(或更大)矩阵,用雅可比矩阵填充,如果矩阵大于6x6,则只会修改左上角的6x6部分
public void getJacobianWrtParameters(PositionAngleType type, T[][] jacobian)
元素jacobian[i][j]
是轨道的笛卡尔坐标i相对于轨道参数j的导数。这意味着每行对应一个笛卡尔坐标x、y、z、xDot、yDot和zDot,而列0到5对应于轨道参数。
type
- 要使用的位置角类型
jacobian
- 占位符6x6(或更大)矩阵,用雅可比矩阵填充,如果矩阵大于6x6,则只会修改左上角的6x6部分
protected abstract T[][] computeJacobianMeanWrtCartesian()
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应于笛卡尔坐标x、y、z、xDot、yDot和zDot。
computeJacobianEccentricWrtCartesian()
, computeJacobianTrueWrtCartesian()
protected abstract T[][] computeJacobianEccentricWrtCartesian()
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应于笛卡尔坐标x、y、z、xDot、yDot和zDot。
computeJacobianMeanWrtCartesian()
, computeJacobianTrueWrtCartesian()
protected abstract T[][] computeJacobianTrueWrtCartesian()
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应于笛卡尔坐标x、y、z、xDot、yDot和zDot。
computeJacobianMeanWrtCartesian()
, computeJacobianEccentricWrtCartesian()
public abstract void addKeplerContribution(PositionAngleType type, T gm, T[] pDot)
这个方法被基于积分的传播器用于评估开普勒运动对轨道状态演变的部分。
type
- 状态中位置角的类型
gm
- 要使用的引力系数
pDot
- 包含要更新的轨道状态导数的数组(开普勒部分必须添加到数组分量中,因为数组可能已经包含一些非零元素,对应于非开普勒部分)
protected void fillHalfRow(T a, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v, T[] row, int j)
a
- 向量的系数
v
- 向量
row
- 雅可比矩阵行
j
- 要设置的第一个元素的索引(row[j]、row[j+1]和row[j+2]都将被设置)
protected void fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T[] row, int j)
a1
- 第一个向量的系数
v1
- 第一个向量
a2
- 第二个向量的系数
v2
- 第二个向量
row
- 雅可比矩阵行
j
- 要设置的第一个元素的索引(row[j]、row[j+1]和row[j+2]都将被设置)
protected void fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T[] row, int j)
a1
- 第一个向量的系数
v1
- 第一个向量
a2
- 第二个向量的系数
v2
- 第二个向量
a3
- 第三个向量的系数
v3
- 第三个向量
row
- 雅可比矩阵行
j
- 要设置的第一个元素的索引(row[j]、row[j+1]和row[j+2]都将被设置)
protected void fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T a4, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v4, T[] row, int j)
a1
- 第一个向量的系数
v1
- 第一个向量
a2
- 第二个向量的系数
v2
- 第二个向量
a3
- 第三个向量的系数
v3
- 第三个向量
a4
- 第四个向量的系数
v4
- 第四个向量
row
- 雅可比矩阵行
j
- 要设置的第一个元素的索引(row[j]、row[j+1]和row[j+2]都将被设置)
protected void fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T a4, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v4, T a5, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v5, T[] row, int j)
a1
- 第一个向量的系数
v1
- 第一个向量
a2
- 第二个向量的系数
v2
- 第二个向量
a3
- 第三个向量的系数
v3
- 第三个向量
a4
- 第四个向量的系数
v4
- 第四个向量
a5
- 第五个向量的系数
v5
- 第五个向量
row
- 雅可比矩阵行
j
- 要设置的第一个元素的索引(row[j]、row[j+1]和row[j+2]都将被设置)
protected void fillHalfRow(T a1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v1, T a2, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v2, T a3, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v3, T a4, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v4, T a5, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v5, T a6, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> v6, T[] row, int j)
a1
- 第一个向量的系数
v1
- 第一个向量
a2
- 第二个向量的系数
v2
- 第二个向量
a3
- 第三个向量的系数
v3
- 第三个向量
a4
- 第四个向量的系数
v4
- 第四个向量
a5
- 第五个向量的系数
v5
- 第五个向量
a6
- 第六个向量的系数
v6
- 第六个向量
row
- 雅可比矩阵行
j
- 要设置的第一个元素的索引(row[j]、row[j+1]和row[j+2]都将被设置)
Copyright © 2002-2023 CS GROUP. All rights reserved.