public class PVCoordinates extends Object implements TimeShiftable<PVCoordinates>, org.hipparchus.util.Blendable<PVCoordinates>, Serializable
状态可以稍微偏移以接近日期。这种偏移基于一个简单的二次模型。它不旨在替代适当的轨道传播(甚至不是开普勒的!),但应足以用于小时间偏移或粗略精度。
此类是AngularCoordinates
的角度对应物。
此类的实例保证是不可变的。
Modifier and Type | Field and Description |
---|---|
static PVCoordinates |
ZERO
原点处的固定位置/速度(p、v和a均为零向量)。
|
Constructor and Description |
---|
PVCoordinates()
简单构造函数。
|
PVCoordinates(double a, PVCoordinates pv)
乘法构造函数。
|
PVCoordinates(double a1, PVCoordinates pv1, double a2, PVCoordinates pv2)
线性构造函数。
|
PVCoordinates(double a1, PVCoordinates pv1, double a2, PVCoordinates pv2, double a3, PVCoordinates pv3)
线性构造函数。
|
PVCoordinates(double a1, PVCoordinates pv1, double a2, PVCoordinates pv2, double a3, PVCoordinates pv3, double a4, PVCoordinates pv4)
线性构造函数。
|
PVCoordinates(org.hipparchus.geometry.euclidean.threed.FieldVector3D<U> p)
从 FieldVector3D <Derivative >构建PVCoordinates三元组。
|
PVCoordinates(PVCoordinates start, PVCoordinates end)
减法构造函数。
|
PVCoordinates(org.hipparchus.geometry.euclidean.threed.Vector3D position)
使用给定位置、零速度和零加速度构建PV坐标。
|
PVCoordinates(org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Vector3D velocity)
使用零加速度构建PVCoordinates三元组。
|
PVCoordinates(org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Vector3D velocity, org.hipparchus.geometry.euclidean.threed.Vector3D acceleration)
构建PVCoordinates三元组。
|
Modifier and Type | Method and Description |
---|---|
PVCoordinates |
blendArithmeticallyWith(PVCoordinates other, double blendingValue) |
static PVCoordinates |
crossProduct(PVCoordinates pv1, PVCoordinates pv2)
计算两个实例的叉积。
|
static org.hipparchus.geometry.euclidean.threed.Vector3D |
estimateVelocity(org.hipparchus.geometry.euclidean.threed.Vector3D start, org.hipparchus.geometry.euclidean.threed.Vector3D end, double dt)
估算两个位置之间的速度。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getAcceleration()
获取加速度。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getAngularVelocity()
获取从原点看到的此点的角速度(自旋)。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getMomentum()
获取动量。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getPosition()
获取位置。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getVelocity()
获取速度。
|
PVCoordinates |
negate()
获取实例的相反数。
|
PVCoordinates |
normalize()
规范化实例的位置部分。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
positionShiftedBy(double dt)
获取经过时间偏移的位置。
|
PVCoordinates |
shiftedBy(double dt)
获取经过时间偏移的状态。
|
FieldPVCoordinates<org.hipparchus.analysis.differentiation.DerivativeStructure> |
toDerivativeStructurePV(int order)
将实例转换为 FieldPVCoordinates <DerivativeStructure >。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> |
toDerivativeStructureVector(int order)
将实例转换为 FieldVector3D <DerivativeStructure >。
|
String |
toString()
返回此位置/速度对的字符串表示形式。
|
FieldPVCoordinates<org.hipparchus.analysis.differentiation.UnivariateDerivative1> |
toUnivariateDerivative1PV()
将实例转换为 FieldPVCoordinates <UnivariateDerivative1 >。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.UnivariateDerivative1> |
toUnivariateDerivative1Vector()
将实例转换为 FieldVector3D <UnivariateDerivative1 >。
|
FieldPVCoordinates<org.hipparchus.analysis.differentiation.UnivariateDerivative2> |
toUnivariateDerivative2PV()
将实例转换为 FieldPVCoordinates <UnivariateDerivative2 >。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.UnivariateDerivative2> |
toUnivariateDerivative2Vector()
将实例转换为 FieldVector3D <UnivariateDerivative2 >。
|
public static final PVCoordinates ZERO
public PVCoordinates()
将坐标设置为默认值:(0 0 0),(0 0 0),(0 0 0)。
public PVCoordinates(org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Vector3D velocity)
加速度设置为零
position
- 位置向量(m)
velocity
- 速度向量(m/s)
public PVCoordinates(org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Vector3D velocity, org.hipparchus.geometry.euclidean.threed.Vector3D acceleration)
position
- 位置向量(m)
velocity
- 速度向量(m/s)
acceleration
- 加速度向量(m/s²)
public PVCoordinates(double a, PVCoordinates pv)
从另一个PVCoordinates和一个比例因子构建PVCoordinates。
构建的PVCoordinates将为a * pv
a
- 比例因子
pv
- 基础(未缩放)PVCoordinates
public PVCoordinates(PVCoordinates start, PVCoordinates end)
从起始位置和结束位置构建相对PVCoordinates。
构建的PVCoordinates将为end - start。
start
- 起始PVCoordinates
end
- 结束PVCoordinates
public PVCoordinates(double a1, PVCoordinates pv1, double a2, PVCoordinates pv2)
从另外两个PVCoordinates和相应的比例因子构建PVCoordinates。
构建的PVCoordinates将为a1 * u1 + a2 * u2
a1
- 第一个比例因子
pv1
- 第一个基础(未缩放)PVCoordinates
a2
- 第二个比例因子
pv2
- 第二个基础(未缩放)PVCoordinates
public PVCoordinates(double a1, PVCoordinates pv1, double a2, PVCoordinates pv2, double a3, PVCoordinates pv3)
从另外三个PVCoordinates和相应的比例因子构建PVCoordinates。
构建的PVCoordinates将为a1 * u1 + a2 * u2 + a3 * u3
a1
- 第一个比例因子
pv1
- 第一个基础(未缩放)PVCoordinates
a2
- 第二个比例因子
pv2
- 第二个基础(未缩放)PVCoordinates
a3
- 第三个比例因子
pv3
- 第三个基础(未缩放)PVCoordinates
public PVCoordinates(double a1, PVCoordinates pv1, double a2, PVCoordinates pv2, double a3, PVCoordinates pv3, double a4, PVCoordinates pv4)
从另外四个PVCoordinates和相应的比例因子构建PVCoordinates。
构建的PVCoordinates将为a1 * u1 + a2 * u2 + a3 * u3 + a4 * u4
a1
- 第一个比例因子
pv1
- 第一个基础(未缩放)PVCoordinates
a2
- 第二个比例因子
pv2
- 第二个基础(未缩放)PVCoordinates
a3
- 第三个比例因子
pv3
- 第三个基础(未缩放)PVCoordinates
a4
- 第四个比例因子
pv4
- 第四个基础(未缩放)PVCoordinates
public PVCoordinates(org.hipparchus.geometry.euclidean.threed.FieldVector3D<U> p)
FieldVector3D
<Derivative
>构建PVCoordinates三元组。
矢量分量必须将时间作为唯一的导数参数,并具有一致的导数阶数。
U
- 导数的类型
p
- 在坐标中嵌入时间导数的矢量
public PVCoordinates(org.hipparchus.geometry.euclidean.threed.Vector3D position)
position
- 位置矢量(m)
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> toDerivativeStructureVector(int order)
FieldVector3D
<DerivativeStructure
>。
DerivativeStructure
坐标对应于用户指定阶数的时间导数。
order
- 矢量分量的导数阶数(必须为0、1或2)
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.UnivariateDerivative1> toUnivariateDerivative1Vector()
FieldVector3D
<UnivariateDerivative1
>。
UnivariateDerivative1
坐标对应于阶数为1的时间导数。
toUnivariateDerivative2Vector()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.UnivariateDerivative2> toUnivariateDerivative2Vector()
FieldVector3D
<UnivariateDerivative2
>。
UnivariateDerivative2
坐标对应于阶数为2的时间导数。
toUnivariateDerivative1Vector()
public FieldPVCoordinates<org.hipparchus.analysis.differentiation.DerivativeStructure> toDerivativeStructurePV(int order)
FieldPVCoordinates
<DerivativeStructure
>。
DerivativeStructure
坐标对应于用户指定阶数的时间导数。由于实例组件position
、velocity
和acceleration
以及组件的导数都包含时间导数,因此有多种方法可以检索这些导数。例如,如果将order
设置为2,则pv.getPosition().getX().getPartialDerivative(2)
、pv.getVelocity().getX().getPartialDerivative(1)
和pv.getAcceleration().getX().getValue()
将返回完全相同的值。
如果导数阶数为1,则将计算加速度的第一导数作为仅开普勒的急加速度。如果导数阶数为2,则将计算速度的第二导数(也是加速度的第一导数)作为仅开普勒的急加速度,并将计算加速度的第二导数作为仅开普勒的急加速度。
order
- 矢量分量的导数阶数(必须为0、1或2)
public FieldPVCoordinates<org.hipparchus.analysis.differentiation.UnivariateDerivative1> toUnivariateDerivative1PV()
FieldPVCoordinates
<UnivariateDerivative1
>。
UnivariateDerivative1
坐标对应于阶数为1的时间导数。加速度的第一导数将被计算为仅开普勒的急加速度。
public FieldPVCoordinates<org.hipparchus.analysis.differentiation.UnivariateDerivative2> toUnivariateDerivative2PV()
FieldPVCoordinates
<UnivariateDerivative2
>。
UnivariateDerivative2
坐标对应于直到2阶的时间导数。由于导数阶数为2,速度的二阶导数(也是加速度的一阶导数)将被计算为仅开普勒的急加速度,而加速度的二阶导数将被计算为仅开普勒的急变加速度。
public static org.hipparchus.geometry.euclidean.threed.Vector3D estimateVelocity(org.hipparchus.geometry.euclidean.threed.Vector3D start, org.hipparchus.geometry.euclidean.threed.Vector3D end, double dt)
估算基于两个位置之间的时间间隔内的简单固定速度平移。
start
- 起始位置
end
- 结束位置
dt
- 两个位置的日期之间经过的时间
public PVCoordinates shiftedBy(double dt)
状态可以在接近日期时稍微偏移。此偏移基于简单的泰勒展开。它不旨在替代正确的轨道传播(甚至不是开普勒的!),但对于小时间偏移或粗略精度应该足够。
shiftedBy
在接口 TimeShiftable<PVCoordinates>
dt
- 以秒为单位的时间偏移
public org.hipparchus.geometry.euclidean.threed.Vector3D positionShiftedBy(double dt)
shiftedBy(double)
相同,只返回偏移的位置。
状态可以在接近日期时稍微偏移。此偏移基于简单的泰勒展开。它不旨在替代正确的轨道传播(甚至不是开普勒的!),但对于小时间偏移或粗略精度应该足够。
dt
- 以秒为单位的时间偏移
public org.hipparchus.geometry.euclidean.threed.Vector3D getPosition()
public org.hipparchus.geometry.euclidean.threed.Vector3D getVelocity()
public org.hipparchus.geometry.euclidean.threed.Vector3D getAcceleration()
public org.hipparchus.geometry.euclidean.threed.Vector3D getMomentum()
该矢量是p ⊗ v,其中p是位置,v是速度,⊗是叉乘。要获得真实的物理角动量,您需要将该矢量乘以质量。
每次调用此方法时返回的矢量都会重新计算,不会被缓存。
public org.hipparchus.geometry.euclidean.threed.Vector3D getAngularVelocity()
角速度矢量与角动量
平行,并由 ω = p × v / ||p||² 计算
public PVCoordinates negate()
public PVCoordinates normalize()
计算的坐标的第一个分量(位置)将是一个归一化矢量,第二个分量(速度)将是第一个分量的导数(因此通常不会被归一化),第三个分量(加速度)将是第二个分量的导数(因此通常不会被归一化)。
public static PVCoordinates crossProduct(PVCoordinates pv1, PVCoordinates pv2)
pv1
- 第一个实例
pv2
- 第二个实例
public PVCoordinates blendArithmeticallyWith(PVCoordinates other, double blendingValue) throws org.hipparchus.exception.MathIllegalArgumentException
blendArithmeticallyWith
在接口 org.hipparchus.util.Blendable<PVCoordinates>
org.hipparchus.exception.MathIllegalArgumentException
Copyright © 2002-2023 CS GROUP. All rights reserved.