public class KeplerianOrbit extends Orbit implements PositionAngleBased
内部使用的参数是经典的开普勒元素:
a e i ω Ω v其中,ω代表近地点幅角,Ω代表升交点赤经,v代表真近点角。
此类支持双曲线轨道,使用半长轴为负值表示这种轨道(当然离心率大于1)。
当轨道是赤道轨道或圆形轨道时,一些开普勒元素(更准确地说是ω和Ω)变得模糊,因此不应该用此类表示这种轨道。出于这个原因,推荐使用赤道轨道
来表示轨道。
实例KeplerianOrbit
保证是不可变的。
Orbit
, CircularOrbit
, CartesianOrbit
, EquinoctialOrbit
, Serialized Form
Constructor and Description |
---|
KeplerianOrbit(double a, double e, double i, double pa, double raan, double anomaly, double aDot, double eDot, double iDot, double paDot, double raanDot, double anomalyDot, PositionAngleType type, Frame frame, AbsoluteDate date, double mu)
创建一个新实例。
|
KeplerianOrbit(double a, double e, double i, double pa, double raan, double anomaly, PositionAngleType type, Frame frame, AbsoluteDate date, double mu)
创建一个新实例。
|
KeplerianOrbit(Orbit op)
从任何类型的轨道参数构造。
|
KeplerianOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu)
从笛卡尔参数构造。
|
KeplerianOrbit(TimeStampedPVCoordinates pvCoordinates, Frame frame, double mu)
从笛卡尔参数构造。
|
Modifier and Type | Method and Description |
---|---|
void |
addKeplerContribution(PositionAngleType type, double gm, double[] pDot)
将开普勒运动对参数导数的贡献添加进去
|
protected double[][] |
computeJacobianEccentricWrtCartesian()
计算轨道参数相对于笛卡尔参数的偏心角的雅可比矩阵。
|
protected double[][] |
computeJacobianMeanWrtCartesian()
计算轨道参数相对于笛卡尔参数的平均角的雅可比矩阵。
|
protected double[][] |
computeJacobianTrueWrtCartesian()
计算轨道参数相对于笛卡尔参数的真角的雅可比矩阵。
|
double |
getA()
获取半长轴。
|
double |
getADot()
获取半长轴导数。
|
double |
getAnomaly(PositionAngleType type)
获取异常。
|
double |
getAnomalyDot(PositionAngleType type)
获取异常导数。
|
PositionAngleType |
getCachedPositionAngleType()
获取缓存的 PositionAngleType 。
|
double |
getE()
获取离心率。
|
double |
getEccentricAnomaly()
获取离心率异常。
|
double |
getEccentricAnomalyDot()
获取离心率异常导数。
|
double |
getEDot()
获取离心率导数。
|
double |
getEquinoctialEx()
获取赤道离心率向量的第一个分量导数。
|
double |
getEquinoctialExDot()
获取赤道离心率向量的第一个分量。
|
double |
getEquinoctialEy()
获取赤道离心率向量的第二个分量导数。
|
double |
getEquinoctialEyDot()
获取赤道离心率向量的第二个分量。
|
double |
getHx()
获取倾角向量的第一个分量。
|
double |
getHxDot()
获取倾角向量的第一个分量导数。
|
double |
getHy()
获取倾角向量的第二分量。
|
double |
getHyDot()
获取倾角向量的第二分量导数。
|
double |
getI()
获取倾角。
|
double |
getIDot()
获取倾角导数。
|
double |
getLE()
获取离心经参数。
|
double |
getLEDot()
获取离心经参数导数。
|
double |
getLM()
获取平均经参数。
|
double |
getLMDot()
获取平均经参数导数。
|
double |
getLv()
获取真经参数。
|
double |
getLvDot()
获取真经参数导数。
|
double |
getMeanAnomaly()
获取平近点角。
|
double |
getMeanAnomalyDot()
获取平近点角导数。
|
double |
getPerigeeArgument()
获取近地点幅角。
|
double |
getPerigeeArgumentDot()
获取近地点幅角导数。
|
double |
getRightAscensionOfAscendingNode()
获取升交点赤经。
|
double |
getRightAscensionOfAscendingNodeDot()
获取升交点赤经导数。
|
double |
getTrueAnomaly()
获取真近点角。
|
double |
getTrueAnomalyDot()
获取真近点角导数。
|
OrbitType |
getType()
获取轨道类型。
|
boolean |
hasRates()
告诉实例是否保存了相关变量的速率(一阶时间导数)。
|
protected org.hipparchus.geometry.euclidean.threed.Vector3D |
initPosition()
从规范参数计算位置坐标。
|
protected TimeStampedPVCoordinates |
initPVCoordinates()
从规范参数计算位置/速度坐标。
|
KeplerianOrbit |
removeRates()
创建一个新实例,使得 PositionAngleBased.hasRates() 为false。
|
KeplerianOrbit |
shiftedBy(double dt)
获取时间偏移的轨道。
|
String |
toString()
返回此开普勒参数对象的字符串表示。
|
fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, getDate, getFrame, getJacobianWrtCartesian, getJacobianWrtParameters, getKeplerianMeanMotion, getKeplerianPeriod, getMeanAnomalyDotWrtA, getMu, getPosition, getPosition, getPVCoordinates, getPVCoordinates, getPVCoordinates, hasDerivatives, hasNonKeplerianAcceleration, isElliptical
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
durationFrom
getPosition
public KeplerianOrbit(double a, double e, double i, double pa, double raan, double anomaly, PositionAngleType type, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
a
- 半长轴(米),双曲线轨道为负值
e
- 离心率(大于等于0)
i
- 倾角(弧度)
pa
- 近地点幅角(ω,弧度)
raan
- 升交点赤经(Ω,弧度)
anomaly
- 平近点角、离心近点角或真近点角(弧度)
type
- 角度类型
frame
- 参数定义的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(立方米/平方秒)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
,或者双曲线轨道的a和e不匹配,或者双曲线轨道的v超出范围
public KeplerianOrbit(double a, double e, double i, double pa, double raan, double anomaly, double aDot, double eDot, double iDot, double paDot, double raanDot, double anomalyDot, PositionAngleType type, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
a
- 半长轴(米),双曲线轨道为负值
e
- 离心率(大于等于0)
i
- 倾角(弧度)
pa
- 近地点幅角(ω,弧度)
raan
- 升交点赤经(Ω,弧度)
anomaly
- 平近点角、离心近点角或真近点角(弧度)
aDot
- 半长轴导数(米/秒)
eDot
- 离心率导数
iDot
- 倾角导数(弧度/秒)
paDot
- 近地点幅角导数(弧度/秒)
raanDot
- 升交点赤经导数(弧度/秒)
anomalyDot
- 平近点角、离心近点角或真近点角导数(弧度/秒)
type
- 角度类型
frame
- 参数定义的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(立方米/平方秒)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
,或者双曲线轨道的a和e不匹配,或者双曲线轨道的v超出范围
public KeplerianOrbit(TimeStampedPVCoordinates pvCoordinates, Frame frame, double mu) throws IllegalArgumentException
在pvCoordinates
中提供的加速度可通过Orbit.getPVCoordinates()
和Orbit.getPVCoordinates(Frame)
访问。所有其他方法使用mu
和位置来计算加速度,包括shiftedBy(double)
和Orbit.getPVCoordinates(AbsoluteDate, Frame)
。
pvCoordinates
- 卫星的PVCoordinates
frame
- 定义PVCoordinates
的参考系(必须是一个伪惯性参考系
)
mu
- 中心引力系数(立方米/平方秒)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
public KeplerianOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
在pvCoordinates
中提供的加速度可通过Orbit.getPVCoordinates()
和Orbit.getPVCoordinates(Frame)
访问。所有其他方法使用mu
和位置来计算加速度,包括shiftedBy(double)
和Orbit.getPVCoordinates(AbsoluteDate, Frame)
。
pvCoordinates
- 卫星的PVCoordinates
frame
- 定义PVCoordinates
的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(立方米/平方秒)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
public KeplerianOrbit(Orbit op)
op
- 要复制的轨道参数
public double getADot()
请注意,对于双曲线轨道,半长轴被认为是负值。
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
getADot
在类中 Orbit
Orbit.hasDerivatives()
public double getEDot()
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
getEDot
在类中 Orbit
Orbit.hasDerivatives()
public double getIDot()
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
getIDot
在类中 Orbit
Orbit.hasDerivatives()
public double getPerigeeArgument()
public double getPerigeeArgumentDot()
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
public double getRightAscensionOfAscendingNode()
public double getRightAscensionOfAscendingNodeDot()
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
public double getTrueAnomaly()
public double getTrueAnomalyDot()
public double getEccentricAnomaly()
public double getEccentricAnomalyDot()
public double getMeanAnomaly()
public double getMeanAnomalyDot()
public double getAnomaly(PositionAngleType type)
type
- 角度类型
public double getAnomalyDot(PositionAngleType type)
type
- 角度类型
public double getEquinoctialEx()
getEquinoctialEx
在类中 Orbit
public double getEquinoctialExDot()
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
getEquinoctialExDot
在类中 Orbit
Orbit.hasDerivatives()
public double getEquinoctialEy()
getEquinoctialEy
在类中 Orbit
public double getEquinoctialEyDot()
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
getEquinoctialEyDot
在类中 Orbit
Orbit.hasDerivatives()
public double getHxDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getHxDot
在类 Orbit
Orbit.hasDerivatives()
public double getHyDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getHyDot
在类 Orbit
Orbit.hasDerivatives()
public double getLvDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getLvDot
在类 Orbit
Orbit.hasDerivatives()
public double getLEDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getLEDot
在类 Orbit
Orbit.hasDerivatives()
public double getLMDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getLMDot
在类 Orbit
Orbit.hasDerivatives()
protected org.hipparchus.geometry.euclidean.threed.Vector3D initPosition()
initPosition
在类 Orbit
protected TimeStampedPVCoordinates initPVCoordinates()
initPVCoordinates
在类 Orbit
public KeplerianOrbit shiftedBy(double dt)
轨道可以在接近日期时略微偏移。如果轨道中没有导数可用,则偏移模型是一个开普勒模型,如果有导数可用,则是开普勒模型加上非开普勒加速度的二次效应。偏移不是用来替代正确的轨道传播,但对于小时间偏移或粗略精度应该足够。
shiftedBy
在接口 TimeShiftable<Orbit>
shiftedBy
在类 Orbit
dt
- 时间偏移(秒)
protected double[][] computeJacobianMeanWrtCartesian()
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应笛卡尔坐标x、y、z、xDot、yDot和zDot。
此方法返回的数组不会被修改。
computeJacobianMeanWrtCartesian
在类 Orbit
Orbit.computeJacobianEccentricWrtCartesian()
, Orbit.computeJacobianTrueWrtCartesian()
protected double[][] computeJacobianEccentricWrtCartesian()
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应笛卡尔坐标x、y、z、xDot、yDot和zDot。
此方法返回的数组不会被修改。
computeJacobianEccentricWrtCartesian
在类 Orbit
Orbit.computeJacobianMeanWrtCartesian()
, Orbit.computeJacobianTrueWrtCartesian()
protected double[][] computeJacobianTrueWrtCartesian()
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每一行对应一个轨道参数,而列0到5对应笛卡尔坐标x、y、z、xDot、yDot和zDot。
此方法返回的数组不会被修改。
computeJacobianTrueWrtCartesian
在类 Orbit
Orbit.computeJacobianMeanWrtCartesian()
, Orbit.computeJacobianEccentricWrtCartesian()
public void addKeplerContribution(PositionAngleType type, double gm, double[] pDot)
此方法由基于积分的传播器用于评估开普勒运动对轨道状态演变的部分。
addKeplerContribution
在类 Orbit
type
- 状态中位置角的类型
gm
- 要使用的引力系数
pDot
- 包含要更新的轨道状态导数的数组(开普勒部分必须添加到数组分量中,因为数组可能已经包含一些非零元素,对应于非开普勒部分)
public PositionAngleType getCachedPositionAngleType()
PositionAngleType
。
getCachedPositionAngleType
在接口 PositionAngleBased
public boolean hasRates()
hasRates
在接口 PositionAngleBased
public KeplerianOrbit removeRates()
PositionAngleBased.hasRates()
为false。
removeRates
在接口 PositionAngleBased
Copyright © 2002-2023 CS GROUP. All rights reserved.