public class AngularCoordinates extends Object implements TimeShiftable<AngularCoordinates>, Serializable
状态可以在接近日期时稍微偏移。这种偏移基于固定加速度运动的近似解。它不旨在替代正确的姿态传播,但对于小时间偏移或粗略精度应该足够。
这个类是PVCoordinates
的角度对应物。
此类的实例保证是不可变的。
Modifier and Type | Field and Description |
---|---|
static AngularCoordinates |
IDENTITY
固定方向与参考框架平行(单位旋转,零旋转速率和加速度)。
|
Constructor and Description |
---|
AngularCoordinates()
简单构造器。
|
AngularCoordinates(org.hipparchus.geometry.euclidean.threed.FieldRotation<U> r)
从 FieldRotation <Derivative >构建AngularCoordinates。
|
AngularCoordinates(PVCoordinates u, PVCoordinates v)
构建将一个pv坐标转换为另一个pv坐标的旋转之一。
|
AngularCoordinates(PVCoordinates u1, PVCoordinates u2, PVCoordinates v1, PVCoordinates v2, double tolerance)
构建将一对pv坐标转换为另一对pv坐标的旋转。
|
AngularCoordinates(org.hipparchus.geometry.euclidean.threed.Rotation rotation)
使用给定的旋转、零角速度和零角加速度构建角度坐标。
|
AngularCoordinates(org.hipparchus.geometry.euclidean.threed.Rotation rotation, org.hipparchus.geometry.euclidean.threed.Vector3D rotationRate)
构建旋转/旋转速率对。
|
AngularCoordinates(org.hipparchus.geometry.euclidean.threed.Rotation rotation, org.hipparchus.geometry.euclidean.threed.Vector3D rotationRate, org.hipparchus.geometry.euclidean.threed.Vector3D rotationAcceleration)
构建旋转/旋转速率/旋转加速度三元组。
|
Modifier and Type | Method and Description |
---|---|
AngularCoordinates |
addOffset(AngularCoordinates offset)
从实例添加偏移量。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
applyTo(FieldPVCoordinates<T> pv)
将旋转应用于pv坐标。
|
PVCoordinates |
applyTo(PVCoordinates pv)
将旋转应用于pv坐标。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
applyTo(TimeStampedFieldPVCoordinates<T> pv)
将旋转应用于pv坐标。
|
TimeStampedPVCoordinates |
applyTo(TimeStampedPVCoordinates pv)
将旋转应用于pv坐标。
|
static AngularCoordinates |
createFromModifiedRodrigues(double[][] r)
将修改的罗德里格斯矢量和导数转换为角度坐标。
|
static org.hipparchus.geometry.euclidean.threed.Vector3D |
estimateRate(org.hipparchus.geometry.euclidean.threed.Rotation start, org.hipparchus.geometry.euclidean.threed.Rotation end, double dt)
估计两个方向之间的旋转速率。
|
double[][] |
getModifiedRodrigues(double sign)
将旋转、速率和加速度转换为修改的罗德里格斯矢量和导数。
|
org.hipparchus.geometry.euclidean.threed.Rotation |
getRotation()
获取旋转。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getRotationAcceleration()
获取旋转加速度。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getRotationRate()
获取旋转速率。
|
AngularCoordinates |
revert()
恢复旋转/旋转速率/旋转加速度三元组。
|
org.hipparchus.geometry.euclidean.threed.Rotation |
rotationShiftedBy(double dt)
获取一个时间偏移的旋转。
|
AngularCoordinates |
shiftedBy(double dt)
获取一个时间偏移的状态。
|
AngularCoordinates |
subtractOffset(AngularCoordinates offset)
从实例减去偏移量。
|
org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.DerivativeStructure> |
toDerivativeStructureRotation(int order)
将实例转换为 FieldRotation <DerivativeStructure >。
|
org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.UnivariateDerivative1> |
toUnivariateDerivative1Rotation()
将实例转换为 FieldRotation <UnivariateDerivative1 >。
|
org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.UnivariateDerivative2> |
toUnivariateDerivative2Rotation()
将实例转换为 FieldRotation <UnivariateDerivative2 >。
|
public static final AngularCoordinates IDENTITY
public AngularCoordinates()
将坐标设置为默认值:单位,Ω = (0 0 0),dΩ/dt = (0 0 0)。
public AngularCoordinates(org.hipparchus.geometry.euclidean.threed.Rotation rotation, org.hipparchus.geometry.euclidean.threed.Vector3D rotationRate)
rotation
- 旋转
rotationRate
- 旋转速率 Ω(弧度/秒)
public AngularCoordinates(org.hipparchus.geometry.euclidean.threed.Rotation rotation, org.hipparchus.geometry.euclidean.threed.Vector3D rotationRate, org.hipparchus.geometry.euclidean.threed.Vector3D rotationAcceleration)
rotation
- 旋转
rotationRate
- 旋转速率 Ω(弧度/秒)
rotationAcceleration
- 旋转加速度 dΩ/dt(弧度/秒²)
public AngularCoordinates(org.hipparchus.geometry.euclidean.threed.Rotation rotation)
rotation
- 旋转
public AngularCoordinates(PVCoordinates u1, PVCoordinates u2, PVCoordinates v1, PVCoordinates v2, double tolerance)
警告!此方法对其参数有更严格的假设要求,比Rotation
类中类似的constructor
更严格。就旋转构造器而言,第二对中的v₂
向量可能略有错位。旋转构造器将补偿此错位并创建一个确保v₁ = r(u₁)
和v₂ ∈ plane (r(u₁), r(u₂))
的旋转。在此类中不再成立!由于涉及导数并且必须保留,此构造器仅在两对完全一致时有效,即如果存在一个旋转满足所有要求: v₁ = r(u₁)
,v₂ = r(u₂)
,dv₁/dt = dr(u₁)/dt
,dv₂/dt = dr(u₂)/dt
,d²v₁/dt² = d²r(u₁)/dt²
,d²v₂/dt² = d²r(u₂)/dt²
。
u1
- 原始对的第一个向量
u2
- 原始对的第二个向量
v1
- 旋转后u1的期望图像
v2
- 旋转后u2的期望图像
tolerance
- 用于检查奇异性的相对容差因子
public AngularCoordinates(PVCoordinates u, PVCoordinates v)
除了可能的比例因子外,如果将实例应用于向量u,它将产生向量v。有无限多个这样的旋转,此构造器选择与最小关联角度的旋转(即轴与(u,v)平面正交的旋转)。如果u和v共线,则选择任意旋转轴。
u
- 原始向量
v
- 旋转后u的期望图像
public AngularCoordinates(org.hipparchus.geometry.euclidean.threed.FieldRotation<U> r)
FieldRotation
<Derivative
>构建AngularCoordinates。
旋转分量必须将时间作为唯一的导数参数,并且具有一致的导数阶数。
U
- 导数的类型
r
- 带有时间导数嵌入在坐标中的旋转
public org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.DerivativeStructure> toDerivativeStructureRotation(int order)
FieldRotation
<DerivativeStructure
>。
DerivativeStructure
坐标对应于用户指定的阶数的时间导数。
order
- 矢量分量的导数阶数
public org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.UnivariateDerivative1> toUnivariateDerivative1Rotation()
FieldRotation
<UnivariateDerivative1
>。
UnivariateDerivative1
坐标对应于阶数为1的时间导数。
public org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.UnivariateDerivative2> toUnivariateDerivative2Rotation()
FieldRotation
<UnivariateDerivative2
>。
UnivariateDerivative2
坐标对应于阶数为2的时间导数。
public static org.hipparchus.geometry.euclidean.threed.Vector3D estimateRate(org.hipparchus.geometry.euclidean.threed.Rotation start, org.hipparchus.geometry.euclidean.threed.Rotation end, double dt)
估计基于两个方向之间的时间间隔内的简单固定速率旋转。
start
- 起始方向
end
- 结束方向
dt
- 两个方向的日期之间经过的时间
public AngularCoordinates revert()
public org.hipparchus.geometry.euclidean.threed.Rotation rotationShiftedBy(double dt)
shiftedBy(double)
相同,只计算偏移后的旋转。
状态可以在接近日期时稍微偏移。这种偏移基于固定加速度运动的近似解。它不旨在替代正确的姿态传播,但对于小时间偏移或粗略精度应该足够。
dt
- 以秒为单位的时间偏移
shiftedBy(double)
public AngularCoordinates shiftedBy(double dt)
状态可以在接近日期时稍微偏移。这种偏移基于固定加速度运动的近似解。它不旨在替代正确的姿态传播,但对于小时间偏移或粗略精度应该足够。
shiftedBy
在接口 TimeShiftable<AngularCoordinates>
dt
- 以秒为单位的时间偏移
public org.hipparchus.geometry.euclidean.threed.Rotation getRotation()
public org.hipparchus.geometry.euclidean.threed.Vector3D getRotationRate()
public org.hipparchus.geometry.euclidean.threed.Vector3D getRotationAcceleration()
public AngularCoordinates addOffset(AngularCoordinates offset)
在这里我们考虑偏移旋转首先应用,然后应用实例。请注意,在此操作下,角坐标不满足交换律,即a.addOffset(b)
和b.addOffset(a)
在大多数情况下会导致不同的结果。
两个方法addOffset
和subtractOffset
被设计成可以进行往返应用。这意味着ac1.subtractOffset(ac2).addOffset(ac2)
和ac1.addOffset(ac2).subtractOffset(ac2)
都会返回等于ac1的角坐标。
offset
- 要减去的偏移量
subtractOffset(AngularCoordinates)
public AngularCoordinates subtractOffset(AngularCoordinates offset)
在这里我们考虑偏移旋转首先应用,然后应用实例。请注意,在此操作下,角坐标不满足交换律,即a.subtractOffset(b)
和b.subtractOffset(a)
在大多数情况下会导致不同的结果。
两个方法addOffset
和subtractOffset
被设计成可以进行往返应用。这意味着ac1.subtractOffset(ac2).addOffset(ac2)
和ac1.addOffset(ac2).subtractOffset(ac2)
都会返回等于ac1的角坐标。
offset
- 要减去的偏移量
addOffset(AngularCoordinates)
public PVCoordinates applyTo(PVCoordinates pv)
pv
- 要应用旋转的向量
public TimeStampedPVCoordinates applyTo(TimeStampedPVCoordinates pv)
pv
- 要应用旋转的向量
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldPVCoordinates<T> applyTo(FieldPVCoordinates<T> pv)
T
- 字段元素的类型
pv
- 要应用旋转的向量
public <T extends org.hipparchus.CalculusFieldElement<T>> TimeStampedFieldPVCoordinates<T> applyTo(TimeStampedFieldPVCoordinates<T> pv)
T
- 字段元素的类型
pv
- 要应用旋转的向量
public double[][] getModifiedRodrigues(double sign)
修改的罗德里格斯向量是tan(θ/4) u,其中θ和u分别是旋转角和轴。
sign
- 用于四元数分量的乘法符号
createFromModifiedRodrigues(double[][])
public static AngularCoordinates createFromModifiedRodrigues(double[][] r)
r
- 修改的罗德里格斯向量(带有一阶和二阶导数)
getModifiedRodrigues(double)
Copyright © 2002-2023 CS GROUP. All rights reserved.