public class CircularOrbit extends Orbit implements PositionAngleBased
内部使用的参数是圆形元素,可以与开普勒元素关联如下:
上述给出的从开普勒元素到圆形元素的转换方程仅在两侧都明确定义时有效,即轨道既不是赤道轨道也不是圆形轨道时。当轨道是圆形的(但不是赤道轨道)时,圆形参数仍然是明确定义的,而一些开普勒元素(更确切地说是ω和Ω)变得模糊。当轨道是赤道轨道时,开普勒和圆形参数都无法明确定义。赤道轨道
是表示轨道的推荐方式。
实例CircularOrbit
保证是不可变的。
Orbit
, KeplerianOrbit
, CartesianOrbit
, EquinoctialOrbit
, Serialized Form
Constructor and Description |
---|
CircularOrbit(double a, double ex, double ey, double i, double raan, double alpha, double aDot, double exDot, double eyDot, double iDot, double raanDot, double alphaDot, PositionAngleType type, Frame frame, AbsoluteDate date, double mu)
创建一个新实例。
|
CircularOrbit(double a, double ex, double ey, double i, double raan, double alpha, PositionAngleType type, Frame frame, AbsoluteDate date, double mu)
创建一个新实例。
|
CircularOrbit(Orbit op)
从任何类型的轨道参数构造函数。
|
CircularOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu)
从笛卡尔参数构造函数。
|
CircularOrbit(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 alphaE, double ex, double ey)
从偏心纬度参数计算平均纬度参数。
|
static double |
eccentricToTrue(double alphaE, double ex, double ey)
从偏心纬度参数计算真纬度参数。
|
double |
getA()
获取半长轴。
|
double |
getADot()
获取半长轴导数。
|
double |
getAlpha(PositionAngleType type)
获取纬度参数。
|
double |
getAlphaDot(PositionAngleType type)
获取纬度参数导数。
|
double |
getAlphaE()
获取偏心纬度参数。
|
double |
getAlphaEDot()
获取偏心纬度参数导数。
|
double |
getAlphaM()
获取平均纬度参数。
|
double |
getAlphaMDot()
获取平均纬度参数导数。
|
double |
getAlphaV()
获取真纬度参数。
|
double |
getAlphaVDot()
获取真纬度参数导数。
|
PositionAngleType |
getCachedPositionAngleType()
获取缓存的 PositionAngleType 。
|
double |
getCircularEx()
获取圆形偏心率向量的第一个分量。
|
double |
getCircularExDot()
获取圆形偏心率向量的第一个分量导数。
|
double |
getCircularEy()
获取圆形偏心率向量的第二个分量。
|
double |
getCircularEyDot()
获取圆形偏心率向量的第二个分量导数。
|
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 |
getLE()
获取偏心经度参数。
|
double |
getLEDot()
获取偏心经度参数导数。
|
double |
getLM()
获取平均经度参数。
|
double |
getLMDot()
获取平均经度参数导数。
|
double |
getLv()
获取真经度参数。
|
double |
getLvDot()
获取真经度参数导数。
|
double |
getRightAscensionOfAscendingNode()
获取升交点赤经。
|
double |
getRightAscensionOfAscendingNodeDot()
获取升交点赤经导数。
|
OrbitType |
getType()
获取轨道类型。
|
boolean |
hasRates()
告诉实例是否保存相关变量的速率(一阶时间导数)。
|
protected org.hipparchus.geometry.euclidean.threed.Vector3D |
initPosition()
从规范参数计算位置坐标。
|
protected TimeStampedPVCoordinates |
initPVCoordinates()
从规范参数计算位置/速度坐标。
|
static double |
meanToEccentric(double alphaM, double ex, double ey)
从平均纬度参数计算偏心纬度参数。
|
CircularOrbit |
removeRates()
创建一个新实例,使得 PositionAngleBased.hasRates() 为false。
|
CircularOrbit |
shiftedBy(double dt)
获取时间偏移的轨道。
|
String |
toString()
返回此轨道对象的字符串表示形式。
|
static double |
trueToEccentric(double alphaV, 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 CircularOrbit(double a, double ex, double ey, double i, double raan, double alpha, PositionAngleType type, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
a
- 半长轴(米)
ex
- e cos(ω),圆形偏心率向量的第一个分量
ey
- e sin(ω),圆形偏心率向量的第二个分量
i
- 倾角(弧度)
raan
- 升交点赤经(Ω,弧度)
alpha
- an + ω,平均、偏心或真纬度参数(弧度)
type
- 纬度参数类型
frame
- 定义参数的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(m³/s²)
IllegalArgumentException
- 如果偏心率等于1或更大,或者参考系不是一个伪惯性参考系
public CircularOrbit(double a, double ex, double ey, double i, double raan, double alpha, double aDot, double exDot, double eyDot, double iDot, double raanDot, double alphaDot, PositionAngleType type, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
a
- 半长轴(米)
ex
- e cos(ω),圆形偏心率向量的第一个分量
ey
- e sin(ω),圆形偏心率向量的第二个分量
i
- 倾角(弧度)
raan
- 升交点赤经(Ω,弧度)
alpha
- an + ω,平均、偏心或真纬度参数(弧度)
aDot
- 半长轴导数(m/s)
exDot
- d(e cos(ω))/dt,圆形偏心率向量的第一个分量导数
eyDot
- d(e sin(ω))/dt,圆形偏心率向量的第二个分量导数
iDot
- 倾角导数(弧度/秒)
raanDot
- 升交点赤经导数(弧度/秒)
alphaDot
- d(an + ω),平均、偏心或真纬度参数导数(弧度/秒)
type
- 纬度参数类型
frame
- 定义参数的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(m³/s²)
IllegalArgumentException
- 如果偏心率等于1或更大,或者参考系不是一个伪惯性参考系
public CircularOrbit(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
- 中心引力系数(m³/s²)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
public CircularOrbit(PVCoordinates pvCoordinates, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
The acceleration provided in pvCoordinates
is accessible using Orbit.getPVCoordinates()
and Orbit.getPVCoordinates(Frame)
. All other methods use mu
and the position to compute the acceleration, including shiftedBy(double)
and Orbit.getPVCoordinates(AbsoluteDate, Frame)
.
pvCoordinates
- the PVCoordinates
in inertial frame
frame
- the frame in which are defined the PVCoordinates
(must be a pseudo-inertial frame
)
date
- date of the orbital parameters
mu
- central attraction coefficient (m³/s²)
IllegalArgumentException
- if frame is not a pseudo-inertial frame
public CircularOrbit(Orbit op)
op
- orbital parameters to copy
public OrbitType getType()
public double getA()
Note that the semi-major axis is considered negative for hyperbolic orbits.
public double getADot()
Note that the semi-major axis is considered negative for hyperbolic orbits.
If the orbit was created without derivatives, the value returned is Double.NaN
.
getADot
in class Orbit
Orbit.hasDerivatives()
public double getEquinoctialEx()
getEquinoctialEx
in class Orbit
public double getEquinoctialExDot()
If the orbit was created without derivatives, the value returned is Double.NaN
.
getEquinoctialExDot
in class Orbit
Orbit.hasDerivatives()
public double getEquinoctialEy()
getEquinoctialEy
in class Orbit
public double getEquinoctialEyDot()
If the orbit was created without derivatives, the value returned is Double.NaN
.
getEquinoctialEyDot
in class Orbit
Orbit.hasDerivatives()
public double getCircularEx()
public double getCircularExDot()
public double getCircularEy()
public double getCircularEyDot()
public double getHx()
public double getHxDot()
If the orbit was created without derivatives, the value returned is Double.NaN
.
getHxDot
in class Orbit
Orbit.hasDerivatives()
public double getHy()
public double getHyDot()
If the orbit was created without derivatives, the value returned is Double.NaN
.
getHyDot
in class Orbit
Orbit.hasDerivatives()
public double getAlphaV()
public double getAlphaVDot()
If the orbit was created without derivatives, the value returned is Double.NaN
.
public double getAlphaE()
public double getAlphaEDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
public double getAlphaM()
public double getAlphaMDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
public double getAlpha(PositionAngleType type)
type
- 角度类型
public double getAlphaDot(PositionAngleType type)
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
type
- 角度类型
public static double eccentricToTrue(double alphaE, double ex, double ey)
alphaE
- = E + ω 偏心纬度参数(弧度)
ex
- e cos(ω),圆偏心率向量的第一个分量
ey
- e sin(ω),圆偏心率向量的第二个分量
public static double trueToEccentric(double alphaV, double ex, double ey)
alphaV
- = V + ω 真实纬度参数(弧度)
ex
- e cos(ω),圆偏心率向量的第一个分量
ey
- e sin(ω),圆偏心率向量的第二个分量
public static double meanToEccentric(double alphaM, double ex, double ey)
alphaM
- = M + ω 平均纬度参数(弧度)
ex
- e cos(ω),圆偏心率向量的第一个分量
ey
- e sin(ω),圆偏心率向量的第二个分量
public static double eccentricToMean(double alphaE, double ex, double ey)
alphaE
- = E + ω 平均纬度参数(弧度)
ex
- e cos(ω),圆偏心率向量的第一个分量
ey
- e sin(ω),圆偏心率向量的第二个分量
public double getEDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getEDot
在类中 Orbit
Orbit.hasDerivatives()
public double getIDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
getIDot
在类中 Orbit
Orbit.hasDerivatives()
public double getRightAscensionOfAscendingNode()
public double getRightAscensionOfAscendingNodeDot()
如果轨道是在没有导数的情况下创建的,则返回的值为Double.NaN
。
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 CircularOrbit 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 CircularOrbit removeRates()
PositionAngleBased.hasRates()
为 false。
removeRates
在接口中 PositionAngleBased
Copyright © 2002-2023 CS GROUP. All rights reserved.