public class EquinoctialOrbit extends Orbit implements PositionAngleBased
内部使用的参数是赤道元素,可以通过以下方式与开普勒元素相关联:
a ex = e cos(ω + Ω) ey = e sin(ω + Ω) hx = tan(i/2) cos(Ω) hy = tan(i/2) sin(Ω) lv = v + ω + Ω这里,ω代表近地点幅角,Ω代表升交点赤经。
上述给出的从开普勒元素到赤道元素的转换方程仅在两侧都明确定义时有效,即轨道既不是赤道轨道也不是圆形轨道时。当轨道是赤道轨道或圆形轨道时,赤道参数仍然是明确定义的,而某些开普勒元素(更准确地说是ω和Ω)变得模糊。因此,赤道参数是表示轨道的推荐方式。但请注意,*当前的实现不处理非椭圆情况。
实例EquinoctialOrbit
保证是不可变的。
Orbit
, KeplerianOrbit
, CircularOrbit
, CartesianOrbit
, Serialized Form
Constructor and Description |
---|
EquinoctialOrbit(double a, double ex, double ey, double hx, double hy, double l, double aDot, double exDot, double eyDot, double hxDot, double hyDot, double lDot, PositionAngleType type, Frame frame, AbsoluteDate date, double mu)
创建一个新实例。
|
EquinoctialOrbit(double a, double ex, double ey, double hx, double hy, double l, PositionAngleType type, Frame frame, AbsoluteDate date, double mu)
创建一个新实例。
|
EquinoctialOrbit(Orbit op)
从任何类型的轨道参数构造函数。
|
EquinoctialOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu)
从笛卡尔参数构造函数。
|
EquinoctialOrbit(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()
计算轨道参数相对于笛卡尔参数的真实角的雅可比矩阵。
|
static double |
eccentricToMean(double lE, double ex, double ey)
从偏心经度参数计算平均经度参数。
|
static double |
eccentricToTrue(double lE, double ex, double ey)
从偏心经度参数计算真实经度参数。
|
double |
getA()
获取半长轴。
|
double |
getADot()
获取半长轴导数。
|
PositionAngleType |
getCachedPositionAngleType()
获取缓存的 PositionAngleType 。
|
double |
getE()
获取离心率。
|
double |
getEDot()
获取离心率导数。
|
double |
getEquinoctialEx()
获取赤道离心率向量的第一个分量导数。
|
double |
getEquinoctialExDot()
获取赤道离心率向量的第一个分量。
|
double |
getEquinoctialEy()
获取赤道离心率向量的第二个分量导数。
|
double |
getEquinoctialEyDot()
获取赤道离心率向量的第二个分量。
|
double |
getHx()
获取倾角向量的第一个分量。
|
double |
getHxDot()
获取倾角向量的第一个分量导数。
|
double |
getHy()
获取倾角向量的第二个分量。
|
double |
getHyDot()
获取倾角向量的第二个分量导数。
|
double |
getI()
获取倾角。
|
double |
getIDot()
获取倾角导数。
|
double |
getL(PositionAngleType type)
获取经度参数。
|
double |
getLDot(PositionAngleType type)
获取经度参数导数。
|
double |
getLE()
获取偏心经度参数。
|
double |
getLEDot()
获取偏心经度参数导数。
|
double |
getLM()
获取平均经度参数。
|
double |
getLMDot()
获取平均经度参数导数。
|
double |
getLv()
获取真实经度参数。
|
double |
getLvDot()
获取真实经度参数导数。
|
OrbitType |
getType()
获取轨道类型。
|
boolean |
hasRates()
告诉实例是否持有依赖变量的速率(一阶时间导数)。
|
protected org.hipparchus.geometry.euclidean.threed.Vector3D |
initPosition()
从规范参数计算位置坐标。
|
protected TimeStampedPVCoordinates |
initPVCoordinates()
从规范参数计算位置/速度坐标。
|
static double |
meanToEccentric(double lM, double ex, double ey)
从平均经度参数计算偏心经度参数。
|
EquinoctialOrbit |
removeRates()
创建一个新实例,使得 PositionAngleBased.hasRates() 为false。
|
EquinoctialOrbit |
shiftedBy(double dt)
获取时间偏移的轨道。
|
String |
toString()
返回此赤道参数对象的字符串表示形式。
|
static double |
trueToEccentric(double lv, double ex, double ey)
从真实经度参数计算偏心经度参数。
|
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 EquinoctialOrbit(double a, double ex, double ey, double hx, double hy, double l, PositionAngleType type, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
a
- 半长轴(米)
ex
- e cos(ω + Ω),离心率向量的第一个分量
ey
- e sin(ω + Ω),离心率向量的第二个分量
hx
- tan(i/2) cos(Ω),倾角向量的第一个分量
hy
- tan(i/2) sin(Ω),倾角向量的第二个分量
l
- (M或E或v) + ω + Ω,平均、偏心或真实经度参数(弧度)
type
- 经度参数类型
frame
- 参数定义的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(立方米/秒²)
IllegalArgumentException
- 如果离心率等于1或更大,或者如果参考系不是伪惯性参考系
public EquinoctialOrbit(double a, double ex, double ey, double hx, double hy, double l, double aDot, double exDot, double eyDot, double hxDot, double hyDot, double lDot, PositionAngleType type, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
a
- 半长轴(米)
ex
- e cos(ω + Ω),离心率向量的第一个分量
ey
- e sin(ω + Ω),离心率向量的第二个分量
hx
- tan(i/2) cos(Ω),倾角向量的第一个分量
hy
- tan(i/2) sin(Ω),倾角向量的第二个分量
l
- (M或E或v) + ω + Ω,平均、偏心或真实经度参数(弧度)
aDot
- 半长轴导数(米/秒)
exDot
- d(e cos(ω + Ω))/dt,离心率向量的第一个分量导数
eyDot
- d(e sin(ω + Ω))/dt,离心率向量的第二个分量导数
hxDot
- d(tan(i/2) cos(Ω))/dt,倾角向量的第一个分量导数
hyDot
- d(tan(i/2) sin(Ω))/dt,倾角向量的第二个分量导数
lDot
- d(M或E或v) + ω + Ω)/dr,平均、偏心或真实经度参数导数(弧度/秒)
type
- 经度参数类型
frame
- 参数定义的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(立方米/秒²)
IllegalArgumentException
- 如果离心率等于1或更大,或者如果参考系不是伪惯性参考系
public EquinoctialOrbit(TimeStampedPVCoordinates pvCoordinates, Frame frame, double mu) throws IllegalArgumentException
在pvCoordinates
中提供的加速度可通过Orbit.getPVCoordinates()
和Orbit.getPVCoordinates(Frame)
访问。所有其他方法使用mu
和位置来计算加速度,包括shiftedBy(double)
和Orbit.getPVCoordinates(AbsoluteDate, Frame)
。
pvCoordinates
- 位置、速度和加速度
frame
- 定义PVCoordinates
的参考系(必须是一个伪惯性参考系
)
mu
- 中心引力系数(立方米/秒²)
IllegalArgumentException
- 如果离心率等于1或更大,或者如果参考系不是伪惯性参考系
public EquinoctialOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
在pvCoordinates
中提供的加速度可通过Orbit.getPVCoordinates()
和Orbit.getPVCoordinates(Frame)
访问。所有其他方法使用mu
和位置来计算加速度,包括shiftedBy(double)
和Orbit.getPVCoordinates(AbsoluteDate, Frame)
。
pvCoordinates
- 位置和速度
frame
- 定义PVCoordinates
的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(m³/s²)
IllegalArgumentException
- 如果离心率等于1或更大,或者参考系不是一个伪惯性参考系
public EquinoctialOrbit(Orbit op)
op
- 要复制的轨道参数
public double getADot()
请注意,对于双曲线轨道,半长轴被认为是负值。
如果轨道是没有导数创建的,则返回的值为Double.NaN
。
getADot
在类 Orbit
Orbit.hasDerivatives()
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()
public double getL(PositionAngleType type)
type
- 角度类型
public double getLDot(PositionAngleType type)
type
- 角度类型
public static double eccentricToTrue(double lE, double ex, double ey)
lE
- = E + ω + Ω 偏心经度参数 (rad)
ex
- 偏心率向量的第一个分量
ey
- 偏心率向量的第二个分量
public static double trueToEccentric(double lv, double ex, double ey)
lv
- = v + ω + Ω 真实经度参数 (rad)
ex
- 偏心率向量的第一个分量
ey
- 偏心率向量的第二个分量
public static double meanToEccentric(double lM, double ex, double ey)
lM
- = M + ω + Ω 平均经度参数 (rad)
ex
- 偏心率向量的第一个分量
ey
- 偏心率向量的第二个分量
public static double eccentricToMean(double lE, double ex, double ey)
lE
- = E + ω + Ω 平均经度参数 (rad)
ex
- 偏心率向量的第一个分量
ey
- 偏心率向量的第二个分量
public double getEDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getEDot
在类中 Orbit
Orbit.hasDerivatives()
public double getIDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getIDot
在类中 Orbit
Orbit.hasDerivatives()
protected org.hipparchus.geometry.euclidean.threed.Vector3D initPosition()
initPosition
在类中 Orbit
protected TimeStampedPVCoordinates initPVCoordinates()
initPVCoordinates
在类中 Orbit
public EquinoctialOrbit 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 EquinoctialOrbit removeRates()
PositionAngleBased.hasRates()
为false。
removeRates
在接口 PositionAngleBased
Copyright © 2002-2023 CS GROUP. All rights reserved.