T
- the type of the field elements
public class FieldTransform<T extends org.hipparchus.CalculusFieldElement<T>> extends Object implements FieldTimeShiftable<FieldTransform<T>,T>, FieldStaticTransform<T>
此类表示frames
之间的变换引擎。它用于定义每个参考系与其父参考系之间的关系,并在远离彼此的参考系之间转换时将所有单独的变换汇总为一个操作。
OREKIT中使用的约定是矢量变换。这意味着变换被定义为应用于在旧参考系中表示的矢量的坐标以获得在新参考系中表示的相同矢量。
此类的实例保证是不可变的。
我们希望将FieldPVCoordinates
PVA转换为PVB:
PVA = ({1, 0, 0}, {2, 0, 0}, {3, 0, 0});
PVB = ({0, 0, 0}, {0, 0, 0}, {0, 0, 0});
然后定义要应用的变换如下:
Vector3D translation = new Vector3D(-1, 0, 0); Vector3D velocity = new Vector3D(-2, 0, 0); Vector3D acceleration = new Vector3D(-3, 0, 0); Transform R1toR2 = new Transform(date, translation, velocity, acceleration); PVB = R1toR2.transformPVCoordinate(PVA);
我们希望将FieldPVCoordinates
PVA转换为PVB:
PVA = ({1, 0, 0}, { 1, 0, 0});
PVB = ({0, 1, 0}, {-2, 1, 0});
然后定义要应用的变换如下:
Rotation rotation = new Rotation(Vector3D.PLUS_K, FastMath.PI / 2); Vector3D rotationRate = new Vector3D(0, 0, -2); Transform R1toR2 = new Transform(rotation, rotationRate); PVB = R1toR2.transformPVCoordinates(PVA);
Constructor and Description |
---|
FieldTransform(org.hipparchus.Field<T> field, Transform transform)
从常规变换构建变换。
|
FieldTransform(FieldAbsoluteDate<T> date, FieldAngularCoordinates<T> angular)
构建旋转变换。
|
FieldTransform(FieldAbsoluteDate<T> date, FieldPVCoordinates<T> cartesian)
构建带有第一时间导数的平移变换。
|
FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation)
构建旋转变换。
|
FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> rotationRate)
构建旋转变换。
|
FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> rotationRate, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> rotationAcceleration)
构建旋转变换。
|
FieldTransform(FieldAbsoluteDate<T> date, FieldTransform<T> first, FieldTransform<T> second)
通过组合两个现有变换构建变换。
|
FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> translation)
构建平移变换。
|
FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> translation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> velocity)
构建带有第一时间导数的平移变换。
|
FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> translation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> velocity, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration)
构建带有第一和第二时间导数的平移变换。
|
Modifier and Type | Method and Description |
---|---|
FieldTransform<T> |
freeze()
获取冻结的变换。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getAcceleration()
获取平移的第二时间导数。
|
FieldAngularCoordinates<T> |
getAngular()
获取基本角部分。
|
FieldPVCoordinates<T> |
getCartesian()
获取基本笛卡尔部分。
|
AbsoluteDate |
getDate()
获取日期。
|
FieldAbsoluteDate<T> |
getFieldDate()
获取日期。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
getIdentity(org.hipparchus.Field<T> field)
获取单位变换。
|
FieldTransform<T> |
getInverse()
获取实例的逆变换。
|
void |
getJacobian(CartesianDerivativesFilter selector, T[][] jacobian)
计算变换的 transformPVCoordinates(FieldPVCoordinates) 方法的雅可比矩阵。
|
org.hipparchus.geometry.euclidean.threed.FieldRotation<T> |
getRotation()
获取基本旋转部分。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getRotationAcceleration()
获取旋转的第二时间导数。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getRotationRate()
获取旋转的第一时间导数。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getTranslation()
获取基本平移部分。
|
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> |
getVelocity()
获取平移的第一时间导数。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
interpolate(FieldAbsoluteDate<T> date, CartesianDerivativesFilter cFilter, AngularDerivativesFilter aFilter, Collection<FieldTransform<T>> sample)
从现有变换的样本集插值变换。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
interpolate(FieldAbsoluteDate<T> date, CartesianDerivativesFilter cFilter, AngularDerivativesFilter aFilter, Stream<FieldTransform<T>> sample)
从现有变换的样本集插值变换。
|
static <T extends org.hipparchus.CalculusFieldElement<T>> |
interpolate(FieldAbsoluteDate<T> interpolationDate, Collection<FieldTransform<T>> sample)
从现有变换的样本集插值变换。
|
FieldTransform<T> |
shiftedBy(double dt)
获取时间偏移的实例。
|
FieldTransform<T> |
shiftedBy(T dt)
获取时间偏移的实例。
|
FieldStaticTransform<T> |
staticShiftedBy(T dt)
考虑所有速率将变换在时间上移动,然后仅返回变换的平移和旋转部分。
|
FieldStaticTransform<T> |
toStaticTransform()
从实例创建所谓的静态变换。
|
FieldPVCoordinates<T> |
transformPVCoordinates(FieldPVCoordinates<T> pv)
包括运动效应的 TimeStampedFieldPVCoordinates 变换。
|
FieldPVCoordinates<T> |
transformPVCoordinates(PVCoordinates pv)
包括运动效应的 TimeStampedPVCoordinates 变换。
|
TimeStampedFieldPVCoordinates<T> |
transformPVCoordinates(TimeStampedFieldPVCoordinates<T> pv)
包括运动效应的 TimeStampedFieldPVCoordinates 变换。
|
TimeStampedFieldPVCoordinates<T> |
transformPVCoordinates(TimeStampedPVCoordinates pv)
包括运动效应的 TimeStampedPVCoordinates 变换。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
compose, compositeRotation, compositeTranslation, of, of, of, of, transformLine, transformLine, transformPosition, transformPosition, transformVector, transformVector
durationFrom
public FieldTransform(org.hipparchus.Field<T> field, Transform transform)
field
- 元素的域
transform
- 要转换的常规变换
public FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> translation)
date
- 变换的日期
translation
- 要应用的平移(即转换原点的坐标,或旧参考系在新参考系中的原点坐标)
public FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation)
date
- 变换的日期
rotation
- 要应用的旋转(即应用于在旧参考系中表示的矢量的坐标以获得在新参考系中表示的相同矢量的旋转)
public FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> translation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> velocity)
date
- 变换的日期
translation
- 要应用的平移(即转换原点的坐标,或旧参考系在新参考系中的原点坐标)
velocity
- 平移的速度(即旧参考系原点在新参考系中的速度)
public FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> translation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> velocity, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration)
date
- 变换的日期
translation
- 要应用的平移(即转换原点的坐标,或旧参考系在新参考系中的原点坐标)
velocity
- 平移的速度(即旧参考系原点在新参考系中的速度)
acceleration
- 平移的加速度(即旧参考系原点在新参考系中的加速度)
public FieldTransform(FieldAbsoluteDate<T> date, FieldPVCoordinates<T> cartesian)
date
- 变换的日期
cartesian
- 要应用的笛卡尔部分变换(即转换原点的坐标,或旧参考系在新参考系中的原点坐标,带有它们的导数)
public FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> rotationRate)
date
- 变换的日期
rotation
- 要应用的旋转(即应用于在旧参考系中表示的矢量的坐标以获得在新参考系中表示的相同矢量的旋转)
rotationRate
- 表示新参考系中瞬时旋转轴的轴(表示角速率的范数)
public FieldTransform(FieldAbsoluteDate<T> date, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> rotationRate, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> rotationAcceleration)
date
- 变换的日期
rotation
- 要应用的旋转(即应用于在旧参考系中表示的矢量的坐标以获得在新参考系中表示的相同矢量的旋转)
rotationRate
- 瞬时旋转的轴
rotationAcceleration
- 表示新参考系中瞬时旋转轴的轴(表示角速率的范数)
public FieldTransform(FieldAbsoluteDate<T> date, FieldAngularCoordinates<T> angular)
date
- 变换的日期
angular
- 要应用的角部分变换(即应用于在旧参考系中表示的矢量的坐标以获得在新参考系中表示的相同矢量的旋转,带有其旋转速率)
public FieldTransform(FieldAbsoluteDate<T> date, FieldTransform<T> first, FieldTransform<T> second)
请注意,两个现有变换的日期被忽略,并且组合变换的日期设置为此构造函数中提供的日期,而不会尝试移动原始变换。这是一种设计选择,允许用户完全控制组合。
date
- 变换的日期
first
- 应用的第一个变换
second
- 应用的第二个变换
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldTransform<T> getIdentity(org.hipparchus.Field<T> field)
getIdentity
在接口 FieldStaticTransform<T extends org.hipparchus.CalculusFieldElement<T>>
T
- 元素的域类型
field
- 组件的域
public AbsoluteDate getDate()
getDate
在接口 TimeStamped
中
public FieldAbsoluteDate<T> getFieldDate()
public FieldTransform<T> shiftedBy(double dt)
shiftedBy
在接口 TimeShiftable<FieldTransform<T 扩展 org.hipparchus.CalculusFieldElement<T>>>
dt
- 时间偏移(秒)
public FieldTransform<T> shiftedBy(T dt)
shiftedBy
在接口 FieldTimeShiftable<FieldTransform<T 扩展 org.hipparchus.CalculusFieldElement<T>>,T 扩展 org.hipparchus.CalculusFieldElement<T>>
dt
- 时间偏移(秒)
public FieldStaticTransform<T> staticShiftedBy(T dt)
dt
- 时间偏移(秒)
shiftedBy(double)
public FieldStaticTransform<T> toStaticTransform()
FieldStaticTransform
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldTransform<T> interpolate(FieldAbsoluteDate<T> interpolationDate, Collection<FieldTransform<T>> sample)
调用此方法等效于调用 interpolate(FieldAbsoluteDate, CartesianDerivativesFilter, AngularDerivativesFilter, Collection)
,其中 cFilter
设置为 CartesianDerivativesFilter.USE_PVA
,aFilter
设置为 AngularDerivativesFilter.USE_RRA
设置为 true。
T
- 字段元素的类型
interpolationDate
- 插值日期
sample
- 应进行插值的样本点
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldTransform<T> interpolate(FieldAbsoluteDate<T> date, CartesianDerivativesFilter cFilter, AngularDerivativesFilter aFilter, Collection<FieldTransform<T>> sample)
请注意,即使可以忽略来自样本的一阶时间导数(速度和旋转速率),插值实例始终包括插值导数。可以明确使用此功能来计算这些导数,当从分析公式计算这些导数过于复杂时:只需从显式公式计算几个样本点,并在这些样本点中将导数设置为零,然后使用插值来添加与位置和旋转一致的导数。
由于此插值的实现是多项式的,因此应仅在小样本(约10-20个点)中使用,以避免 Runge现象 和数值问题(包括NaN的出现)。
T
- 字段元素的类型
date
- 插值日期
cFilter
- 用于在插值中使用的样本导数的过滤器
aFilter
- 用于在插值中使用的样本导数的过滤器
sample
- 应进行插值的样本点
public static <T extends org.hipparchus.CalculusFieldElement<T>> FieldTransform<T> interpolate(FieldAbsoluteDate<T> date, CartesianDerivativesFilter cFilter, AngularDerivativesFilter aFilter, Stream<FieldTransform<T>> sample)
请注意,即使可以忽略来自样本的一阶时间导数(速度和旋转速率),插值实例始终包括插值导数。可以明确使用此功能来计算这些导数,当从分析公式计算这些导数过于复杂时:只需从显式公式计算几个样本点,并在这些样本点中将导数设置为零,然后使用插值来添加与位置和旋转一致的导数。
由于此插值的实现是多项式的,因此应仅在小样本(约10-20个点)中使用,以避免 Runge现象 和数值问题(包括NaN的出现)。
T
- 字段元素的类型
date
- 插值日期
cFilter
- 用于在插值中使用的样本导数的过滤器
aFilter
- 用于在插值中使用的样本导数的过滤器
sample
- 应进行插值的样本点
public FieldTransform<T> getInverse()
getInverse
在接口 FieldStaticTransform<T 扩展 org.hipparchus.CalculusFieldElement<T>>
public FieldTransform<T> freeze()
此方法创建实例的副本,但在时间上被冻结,即速度、加速度和旋转速率被强制为零。
public FieldPVCoordinates<T> transformPVCoordinates(PVCoordinates pv)
TimeStampedPVCoordinates
。
为了允许用户更灵活,此方法 不 检查变换 date
和时间戳位置-速度 date
之间的一致性。返回值将始终具有与输入参数相同的 date
,而不管实例的 date
如何。
pv
- 要转换的时间戳位置-速度。
public TimeStampedFieldPVCoordinates<T> transformPVCoordinates(TimeStampedPVCoordinates pv)
TimeStampedPVCoordinates
。
为了允许用户更灵活,此方法 不 检查变换 date
和时间戳位置-速度 date
之间的一致性。返回值将始终具有与输入参数相同的 date
,而不管实例的 date
如何。
pv
- 要转换的带时间戳的位置-速度。
public FieldPVCoordinates<T> transformPVCoordinates(FieldPVCoordinates<T> pv)
TimeStampedFieldPVCoordinates
,包括运动效应。
注意!此方法通过将转换速度、加速度、旋转速率和旋转加速度与参数中的速度和加速度相结合来显式计算速度和加速度。这意味着当导数包含在field elements
中时(通常在使用DerivativeStructure
元素时,其中时间是差分参数之一),不应使用此方法,否则时间导数将在此方法中显式计算一次,在字段操作中隐式计算一次。如果时间导数包含在字段元素本身中,则应使用transformPosition
方法,以便导数在字段中计算一次。此方法预计在字段元素为DerivativeStructure
实例且差分参数不是时间(它们通常是用于计算状态转移矩阵或力模型参数的初始状态,或地面站位置等)时使用。
为了让用户更灵活,此方法不检查转换date
和带时间戳的位置-速度date
之间的一致性。返回的值将始终具有与输入参数相同的date
,而不考虑实例date
。
pv
- 要转换的带时间戳的位置-速度。
public TimeStampedFieldPVCoordinates<T> transformPVCoordinates(TimeStampedFieldPVCoordinates<T> pv)
TimeStampedFieldPVCoordinates
,包括运动效应。
注意!此方法通过将转换速度、加速度、旋转速率和旋转加速度与参数中的速度和加速度相结合来显式计算速度和加速度。这意味着当导数包含在field elements
中时(通常在使用DerivativeStructure
元素时,其中时间是差分参数之一),不应使用此方法,否则时间导数将在此方法中显式计算一次,在字段操作中隐式计算一次。如果时间导数包含在字段元素本身中,则应使用transformPosition
方法,以便导数在字段中计算一次。此方法预计在字段元素为DerivativeStructure
实例且差分参数不是时间(它们通常是用于计算状态转移矩阵或力模型参数的初始状态,或地面站位置等)时使用。
为了让用户更灵活,此方法不检查转换date
和带时间戳的位置-速度date
之间的一致性。返回的值将始终具有与输入参数相同的date
,而不考虑实例date
。
pv
- 要转换的带时间戳的位置-速度。
public void getJacobian(CartesianDerivativesFilter selector, T[][] jacobian)
transformPVCoordinates(FieldPVCoordinates)
方法的雅可比矩阵。
元素jacobian[i][j]
是转换后的FieldPVCoordinates
的笛卡尔坐标i相对于输入的FieldPVCoordinates
的笛卡尔坐标j在方法transformPVCoordinates(FieldPVCoordinates)
中的导数。
这个定义意味着如果我们定义位置-速度坐标
PV₁ = transform.transformPVCoordinates(PV₀)那么它们的微分dPV₁和dPV₀将遵守以下关系,其中J是此方法计算的矩阵:
dPV₁ = J × dPV₀
selector
- 指定必须填充的左上角大小的选择器(仅为3x3表示仅填充位置,6x6表示填充位置和速度,9x9表示填充位置、速度和加速度)
jacobian
- 占位矩阵,其左上角将填充雅可比矩阵,其余矩阵保持不变
public FieldPVCoordinates<T> getCartesian()
一个转换可以唯一地表示为一个基本平移后跟一个基本旋转。此方法返回此唯一基本平移及其导数。
getTranslation()
, getVelocity()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getTranslation()
一个转换可以唯一地表示为一个基本平移后跟一个基本旋转。此方法返回此唯一基本平移。
getTranslation
在接口 FieldStaticTransform<T extends org.hipparchus.CalculusFieldElement<T>>
getCartesian()
, getVelocity()
, getAcceleration()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getVelocity()
getCartesian()
, getTranslation()
, getAcceleration()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getAcceleration()
getCartesian()
, getTranslation()
, getVelocity()
public FieldAngularCoordinates<T> getAngular()
一个转换可以唯一地表示为一个基本平移后跟一个基本旋转。此方法返回此唯一基本旋转及其导数。
getRotation()
, getRotationRate()
, getRotationAcceleration()
public org.hipparchus.geometry.euclidean.threed.FieldRotation<T> getRotation()
一个转换可以唯一地表示为一个基本平移后跟一个基本旋转。此方法返回此唯一基本旋转。
getRotation
在接口 FieldStaticTransform<T 扩展 org.hipparchus.CalculusFieldElement<T>>
getAngular()
, getRotationRate()
, getRotationAcceleration()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getRotationRate()
范数表示角速率。
getAngular()
, getRotation()
, getRotationAcceleration()
public org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getRotationAcceleration()
getAngular()
, getRotation()
, getRotationRate()
Copyright © 2002-2023 CS GROUP. All rights reserved.