public class Frame extends Object implements Serializable
这个类是OREKIT中所有参考系的基类。这些参考系在树形结构中连接在一起,其中选择某个特定的参考系作为树的根。每个参考系由与其父参考系在树结构中的任意数量的平移和旋转组合的transforms
定义。
当我们说一个从参考系A到参考系B的transform
t,我们的意思是,如果某个绝对向量的坐标(例如远处星星的方向)在参考系A中为uA,在参考系B中为uB,那么uB=t.transformVector(uA)
。
这些transforms可能是恒定的或变化的,取决于用于定义参考系的transform provider
的实现。对于简单的固定transforms,使用FixedTransformProvider
就足够了。对于变化的transforms(例如时间相关或基于遥测的transforms),可能有必要定义transform provider
的特定实现。
Constructor and Description |
---|
Frame(Frame parent, TransformProvider transformProvider, String name)
从其相对于父参考系的transform构建非惯性参考系。
|
Frame(Frame parent, TransformProvider transformProvider, String name, boolean pseudoInertial)
从其相对于父参考系的transform构建参考系。
|
Frame(Frame parent, Transform transform, String name)
从其相对于父参考系的transform构建非惯性参考系。
|
Frame(Frame parent, Transform transform, String name, boolean pseudoInertial)
从其相对于父参考系的transform构建参考系。
|
Modifier and Type | Method and Description |
---|---|
Frame |
getAncestor(int n)
获取参考系的第n个祖先。
|
int |
getDepth()
获取参考系的深度。
|
Frame |
getFrozenFrame(Frame reference, AbsoluteDate freezingDate, String frozenName)
获取实例的新版本,相对于一个参考系被冻结。
|
String |
getName()
获取名称。
|
Frame |
getParent()
获取父参考系。
|
static Frame |
getRoot()
获取唯一的根参考系。
|
StaticTransform |
getStaticTransformTo(Frame destination, AbsoluteDate date)
获取从实例到另一个参考系的transform的静态部分。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getStaticTransformTo(Frame destination, FieldAbsoluteDate<T> date)
获取从实例到另一个参考系的transform的静态部分。
|
TransformProvider |
getTransformProvider()
获取从父参考系到实例的transform的提供者。
|
Transform |
getTransformTo(Frame destination, AbsoluteDate date)
获取从实例到另一个参考系的transform。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getTransformTo(Frame destination, FieldAbsoluteDate<T> date)
获取从实例到另一个参考系的transform。
|
boolean |
isChildOf(Frame potentialAncestor)
确定一个参考系是否是另一个参考系的子参考系。
|
boolean |
isPseudoInertial()
检查参考系是否是伪惯性的。
|
String |
toString()
java.util toString()方法的新定义。
|
public Frame(Frame parent, Transform transform, String name) throws IllegalArgumentException
调用这个构造函数等同于调用Frame(parent, transform, name, false)
。
parent
- 父参考系(不能为空)
transform
- 从父参考系到实例的transform
name
- 参考系的名称
IllegalArgumentException
- 如果父参考系为空
public Frame(Frame parent, TransformProvider transformProvider, String name) throws IllegalArgumentException
调用这个构造函数等同于调用Frame(parent, transform, name, false)
。
parent
- 父参考系(不能为空)
transformProvider
- 从父参考系到实例的transform的提供者
name
- 参考系的名称
IllegalArgumentException
- 如果父参考系为空
public Frame(Frame parent, Transform transform, String name, boolean pseudoInertial) throws IllegalArgumentException
transform的约定是从父参考系到实例。这意味着以下两个参考系是相似的:
Frame frame1 = new Frame(FramesFactory.getGCRF(), new Transform(t1, t2)); Frame frame2 = new Frame(new Frame(FramesFactory.getGCRF(), t1), t2);
parent
- 父参考系(不能为空)
transform
- 从父参考系到实例的transform
name
- 参考系的名称
pseudoInertial
- 如果参考系被认为是伪惯性的(即适用于轨道的传播)
IllegalArgumentException
- 如果父参考系为空
public Frame(Frame parent, TransformProvider transformProvider, String name, boolean pseudoInertial) throws IllegalArgumentException
transform的约定是从父参考系到实例。这意味着以下两个参考系是相似的:
Frame frame1 = new Frame(FramesFactory.getGCRF(), new Transform(t1, t2)); Frame frame2 = new Frame(new Frame(FramesFactory.getGCRF(), t1), t2);
parent
- 父参考系(不能为空)
transformProvider
- 从父参考系到实例的transform的提供者
name
- 参考系的名称
pseudoInertial
- 如果参考系被认为是伪惯性的(即适用于轨道的传播)
IllegalArgumentException
- 如果父参考系为空
public String getName()
public boolean isPseudoInertial()
伪惯性参考系是具有线性运动并且不旋转或旋转速率非常低以至于惯性力可以忽略的参考系。这意味着它们适用于使用牛顿力学定义和传播轨道。不是伪惯性的参考系不适用于定义和传播轨道。
public Frame getParent()
public int getDepth()
参考系的深度是它与参考系树根之间的父参考系数量。根参考系的深度为0,参考系的深度是其父参考系的深度加一。
public Frame getAncestor(int n) throws IllegalArgumentException
n
- 祖先的索引(0是实例,1是其父参考系,2是其父参考系的父参考系...)
IllegalArgumentException
- 如果n大于实例的深度
public Transform getTransformTo(Frame destination, AbsoluteDate date)
destination
- 想要将向量转换到的目标参考系
date
- 日期(如果确定不使用日期相关的参考系则可以为空)
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldTransform<T> getTransformTo(Frame destination, FieldAbsoluteDate<T> date)
T
- 字段元素的类型
destination
- 想要将向量转换到的目标参考系
date
- 日期(如果确定不使用日期相关的参考系则可以为空)
public StaticTransform getStaticTransformTo(Frame destination, AbsoluteDate date)
当不需要速率时,这个方法通常比getTransformTo(Frame, AbsoluteDate)
更高效。
destination
- 要转换向量的目标参考系
date
- 日期(如果确定不使用依赖于日期的参考系,则可以为null)
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldStaticTransform<T> getStaticTransformTo(Frame destination, FieldAbsoluteDate<T> date)
当不需要速率时,此方法通常比getTransformTo(Frame, FieldAbsoluteDate)
更高效。
首先对FieldAbsoluteDate进行检查,因为“fielded”变换性能较低。
使用FieldElement.isZero()
检查日期字段。
如果为true,则使用未加字段的变换计算版本。
T
- 元素的类型
destination
- 要转换向量的目标参考系
date
- 日期(如果确定不使用依赖于日期的参考系,则可以为null)
public TransformProvider getTransformProvider()
public boolean isChildOf(Frame potentialAncestor)
potentialAncestor
- 假定的祖先参考系
public static Frame getRoot()
public Frame getFrozenFrame(Frame reference, AbsoluteDate freezingDate, String frozenName)
冻结一个参考系意味着在某个冻结日期计算其相对于另一个参考系的位置和方向,并固定它们,使其不再依赖于时间。这意味着冻结的参考系相对于参考参考系是固定的。
此方法的一个典型用途是通过在发射日期冻结一个地心参考系
来计算惯性发射参考系。另一个用途是在参考历元日期冻结与春分相关的天体参考系。
此方法返回的只有冻结的参考系,实例本身不受调用此方法的影响,仍然自由移动。
reference
- 将实例冻结的参考参考系
freezingDate
- 冻结日期
frozenName
- 冻结参考系的名称
Copyright © 2002-2023 CS GROUP. All rights reserved.