public class CartesianOrbit extends Orbit
内部使用的参数是笛卡尔坐标:
PVCoordinates
中。
请注意,这个类的实现将所有非笛卡尔相关的计算(getA()
,getEquinoctialEx()
,...)委托给 EquinoctialOrbit
类的基础实例。这意味着仅仅基于非笛卡尔参数进行的解析计算可以完全使用这个类,但效率可能略有下降。
CartesianOrbit
实例是不可变的。
Orbit
, KeplerianOrbit
, CircularOrbit
, EquinoctialOrbit
, Serialized Form
Constructor and Description |
---|
CartesianOrbit(Orbit op)
从任何类型的轨道参数构造函数。
|
CartesianOrbit(PVCoordinates pvaCoordinates, Frame frame, AbsoluteDate date, double mu)
从笛卡尔参数构造函数。
|
CartesianOrbit(TimeStampedPVCoordinates pvaCoordinates, 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 |
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()
获取真经参数导数。
|
OrbitType |
getType()
获取轨道类型。
|
boolean |
hasDerivatives()
检查轨道是否包含导数。
|
protected org.hipparchus.geometry.euclidean.threed.Vector3D |
initPosition()
从规范参数计算位置坐标。
|
protected TimeStampedPVCoordinates |
initPVCoordinates()
从规范参数计算位置/速度坐标。
|
CartesianOrbit |
shiftedBy(double dt)
获取时间偏移的轨道。
|
String |
toString()
返回此轨道对象的字符串表示形式。
|
fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, fillHalfRow, getDate, getFrame, getJacobianWrtCartesian, getJacobianWrtParameters, getKeplerianMeanMotion, getKeplerianPeriod, getMeanAnomalyDotWrtA, getMu, getPosition, getPosition, getPVCoordinates, getPVCoordinates, getPVCoordinates, hasNonKeplerianAcceleration, isElliptical
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
durationFrom
getPosition
public CartesianOrbit(TimeStampedPVCoordinates pvaCoordinates, Frame frame, double mu) throws IllegalArgumentException
在 pvCoordinates
中提供的加速度可通过 Orbit.getPVCoordinates()
和 Orbit.getPVCoordinates(Frame)
访问。所有其他方法使用 mu
和位置来计算加速度,包括 shiftedBy(double)
和 Orbit.getPVCoordinates(AbsoluteDate, Frame)
。
pvaCoordinates
- 卫星的位置、速度和加速度。
frame
- 定义 PVCoordinates
的参考系(必须是一个伪惯性参考系
)
mu
- 中心引力系数(m³/s²)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
public CartesianOrbit(PVCoordinates pvaCoordinates, Frame frame, AbsoluteDate date, double mu) throws IllegalArgumentException
在 pvCoordinates
中提供的加速度可通过 Orbit.getPVCoordinates()
和 Orbit.getPVCoordinates(Frame)
访问。所有其他方法使用 mu
和位置来计算加速度,包括 shiftedBy(double)
和 Orbit.getPVCoordinates(AbsoluteDate, Frame)
。
pvaCoordinates
- 卫星的位置和速度。
frame
- 定义 PVCoordinates
的参考系(必须是一个伪惯性参考系
)
date
- 轨道参数的日期
mu
- 中心引力系数(m³/s²)
IllegalArgumentException
- 如果参考系不是一个伪惯性参考系
public CartesianOrbit(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 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 boolean hasDerivatives()
hasDerivatives
在类 Orbit
Orbit.getADot()
, Orbit.getEquinoctialExDot()
, Orbit.getEquinoctialEyDot()
, Orbit.getHxDot()
, Orbit.getHyDot()
, Orbit.getLEDot()
, Orbit.getLvDot()
, Orbit.getLMDot()
, Orbit.getEDot()
, Orbit.getIDot()
protected org.hipparchus.geometry.euclidean.threed.Vector3D initPosition()
initPosition
在类 Orbit
protected TimeStampedPVCoordinates initPVCoordinates()
initPVCoordinates
在类 Orbit
public CartesianOrbit shiftedBy(double dt)
轨道可以稍微偏移以接近日期。如果轨道中没有导数,则偏移模型是开普勒模型,如果有导数,则是开普勒模型加上非开普勒加速度的二次效应。偏移不是用来替代正确的轨道传播,但对于小时间偏移或粗略精度应该足够。
shiftedBy
在接口 TimeShiftable<Orbit>
shiftedBy
在类 Orbit
dt
- 时间偏移(秒)
protected double[][] computeJacobianMeanWrtCartesian()
Orbit
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应于笛卡尔坐标x、y、z、xDot、yDot和zDot。
此方法返回的数组不会被修改。
computeJacobianMeanWrtCartesian
在类 Orbit
Orbit.computeJacobianEccentricWrtCartesian()
, Orbit.computeJacobianTrueWrtCartesian()
protected double[][] computeJacobianEccentricWrtCartesian()
Orbit
元素jacobian[i][j]
是轨道参数i相对于笛卡尔坐标j的导数。这意味着每行对应一个轨道参数,而列0到5对应于笛卡尔坐标x、y、z、xDot、yDot和zDot。
此方法返回的数组不会被修改。
computeJacobianEccentricWrtCartesian
在类 Orbit
Orbit.computeJacobianMeanWrtCartesian()
, Orbit.computeJacobianTrueWrtCartesian()
protected double[][] computeJacobianTrueWrtCartesian()
Orbit
元素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
- 包含要更新的轨道状态导数的数组(开普勒部分必须添加到数组分量中,因为数组可能已经包含一些非零元素,对应于非开普勒部分)
Copyright © 2002-2023 CS GROUP. All rights reserved.