public class OneAxisEllipsoid extends Ellipsoid implements BodyShape
一轴椭球是大多数行星大小及更大的天然天体的良好近似模型。当一个流体体在自身的重力场中旋转时,它是达到的平衡形状。对称轴是旋转或极轴。
Constructor and Description |
---|
OneAxisEllipsoid(double ae, double f, Frame bodyFrame)
简单构造函数。
|
Modifier and Type | Method and Description |
---|---|
<T extends org.hipparchus.CalculusFieldElement<T>> |
azimuthBetweenPoints(FieldGeodeticPoint<T> origin, FieldGeodeticPoint<T> destination)
计算两点之间的本地北方方位角。
|
double |
azimuthBetweenPoints(GeodeticPoint origin, GeodeticPoint destination)
计算两点之间的本地北方方位角。
|
double |
geodeticToIsometricLatitude(double geodeticLatitude)
计算与提供的纬度对应的等距纬度。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
geodeticToIsometricLatitude(T geodeticLatitude)
计算与提供的纬度对应的等距纬度。
|
Frame |
getBodyFrame()
获取与体形相关的体坐标系。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getCartesianIntersectionPoint(org.hipparchus.geometry.euclidean.threed.FieldLine<T> line, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> close, Frame frame, FieldAbsoluteDate<T> date)
获取线与体表面的交点。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getCartesianIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line line, org.hipparchus.geometry.euclidean.threed.Vector3D close, Frame frame, AbsoluteDate date)
获取线与体表面的交点。
|
double |
getEccentricity()
获取椭球的第一离心率:e = sqrt(f * (2.0 - f))。
|
double |
getEccentricitySquared()
获取椭球的第一离心率平方:e^2 = f * (2.0 - f)。
|
double |
getEquatorialRadius()
获取天体的赤道半径。
|
double |
getFlattening()
获取天体的扁率:f = (a-b)/a。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.FieldLine<T> line, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> close, Frame frame, FieldAbsoluteDate<T> date)
获取线与体表面的交点。
|
GeodeticPoint |
getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line line, org.hipparchus.geometry.euclidean.threed.Vector3D close, Frame frame, AbsoluteDate date)
获取线与体表面的交点。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
lowestAltitudeIntermediate(org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> endpoint1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> endpoint2)
在两个端点之间的直线上找到最低高度的中间点。
|
GeodeticPoint |
lowestAltitudeIntermediate(org.hipparchus.geometry.euclidean.threed.Vector3D endpoint1, org.hipparchus.geometry.euclidean.threed.Vector3D endpoint2)
在两个端点之间的直线上找到最低高度的中间点。
|
TimeStampedPVCoordinates |
projectToGround(TimeStampedPVCoordinates pv, Frame frame)
将移动点投影到地面。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
projectToGround(org.hipparchus.geometry.euclidean.threed.Vector3D point, AbsoluteDate date, Frame frame)
将点投影到地面。
|
void |
setAngularThreshold(double angularThreshold)
设置角收敛阈值。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
transform(FieldGeodeticPoint<T> point)
将相对于表面的点转换为笛卡尔点。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
transform(org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> point, Frame frame, FieldAbsoluteDate<T> date)
将笛卡尔点转换为相对于表面的点。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
transform(GeodeticPoint point)
将相对于表面的点转换为笛卡尔点。
|
FieldGeodeticPoint<org.hipparchus.analysis.differentiation.DerivativeStructure> |
transform(PVCoordinates point, Frame frame, AbsoluteDate date)
将笛卡尔点转换为相对于表面的点。
|
GeodeticPoint |
transform(org.hipparchus.geometry.euclidean.threed.Vector3D point, Frame frame, AbsoluteDate date)
将笛卡尔点转换为相对于表面的点。
|
getA, getB, getC, getFrame, getPlaneSection, getPlaneSection, isInside, isInside, pointOnLimb, pointOnLimb
public OneAxisEllipsoid(double ae, double f, Frame bodyFrame)
地球模型的标准值可以在Constants
类中找到:
ae
- 赤道半径
f
- 扁率 (f = (a-b)/a)
bodyFrame
- 与体形相关的体坐标系
FramesFactory.getITRF(org.orekit.utils.IERSConventions, boolean)
public void setAngularThreshold(double angularThreshold)
角度阈值既用于识别接近椭圆轴的点,也用作在transform(Vector3D, Frame, AbsoluteDate)
方法中停止迭代的收敛阈值。
如果未调用此方法,则默认值设置为10-12。
angularThreshold
- 角收敛阈值 (弧度)
public double getEquatorialRadius()
public double getFlattening()
public double getEccentricitySquared()
public double getEccentricity()
public Frame getBodyFrame()
getBodyFrame
在接口 BodyShape
中
public org.hipparchus.geometry.euclidean.threed.Vector3D getCartesianIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line line, org.hipparchus.geometry.euclidean.threed.Vector3D close, Frame frame, AbsoluteDate date)
一条线可能与封闭表面有多个交点(我们将一个点的情况视为退化的两个点的情况)。close参数用于选择应返回哪个交点。所选点是最接近close点的点。
line
- 测试线(可能与体相交或不相交)
close
- 用于交点选择的点
frame
- 表达线的参考系
date
- 给定参考系中的线的日期
public GeodeticPoint getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line line, org.hipparchus.geometry.euclidean.threed.Vector3D close, Frame frame, AbsoluteDate date)
一条线可能与封闭表面有多个交点(我们将一个点的情况视为退化的两个点的情况)。close参数用于选择应返回哪个交点。所选点是最接近close点的点。
getIntersectionPoint
在接口 BodyShape
中
line
- 测试线(可能与体相交或不相交)
close
- 用于交点选择的点
frame
- 表达线的参考系
date
- 给定参考系中的线的日期
public <T extends org.hipparchus.CalculusFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getCartesianIntersectionPoint(org.hipparchus.geometry.euclidean.threed.FieldLine<T> line, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> close, Frame frame, FieldAbsoluteDate<T> date)
一条线可能与封闭表面有多个交点(我们将一个点的情况视为退化的两个点的情况)。close参数用于选择应返回哪个交点。所选点是最接近close点的点。
T
- 字段元素的类型
line
- 测试线(可能与体相交或不相交)
close
- 用于交点选择的点
frame
- 表达线的参考系
date
- 给定参考系中的线的日期
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldGeodeticPoint<T> getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.FieldLine<T> line, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> close, Frame frame, FieldAbsoluteDate<T> date)
一条线可能与封闭表面有多个交点(我们将一个点的情况视为退化的两个点的情况)。close参数用于选择应返回哪个交点。所选点是最接近close点的点。
getIntersectionPoint
在接口 BodyShape
中
T
- 字段元素的类型
line
- 测试线(可能与物体相交也可能不相交)
close
- 用于交点选择的点
frame
- 表示线的参考系
date
- 给定参考系中的线的日期
public org.hipparchus.geometry.euclidean.threed.Vector3D transform(GeodeticPoint point)
public <T extends org.hipparchus.CalculusFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> transform(FieldGeodeticPoint<T> point)
public org.hipparchus.geometry.euclidean.threed.Vector3D projectToGround(org.hipparchus.geometry.euclidean.threed.Vector3D point, AbsoluteDate date, Frame frame)
projectToGround
在接口 BodyShape
中
point
- 要投影的点
date
- 当前日期
frame
- 表达移动点的参考系
BodyShape.projectToGround(TimeStampedPVCoordinates, Frame)
public TimeStampedPVCoordinates projectToGround(TimeStampedPVCoordinates pv, Frame frame)
projectToGround
在接口 BodyShape
中
pv
- 移动点
frame
- 表达移动点的参考系
BodyShape.projectToGround(Vector3D, AbsoluteDate, Frame)
public GeodeticPoint transform(org.hipparchus.geometry.euclidean.threed.Vector3D point, Frame frame, AbsoluteDate date)
此方法基于Toshio Fukushima的算法,使用Halley's方法。 由Halley's方法加速的从笛卡尔到大地坐标的转换,Toshio Fukushima,2006年2月地球测量杂志9(12):689-693
对原始方法进行了一些更改:
在一些罕见情况下(例如非常扁平的椭球体,或者靠近椭球体中心的点),循环可能无法收敛。由于这似乎只发生在退化情况下,设计选择是返回对应于最后一次迭代的近似点。这个点可能是不正确的,并且如果通过调用transform(GeodeticPoint)
进行往返调用时无法返回初始点。这个设计选择是为了避免出现NaN,例如在两颗卫星几乎在地球对面时进行卫星间可见性检查时。地球内部的中间点不应该阻止检测算法找到可见性的起始/结束。
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldGeodeticPoint<T> transform(org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> point, Frame frame, FieldAbsoluteDate<T> date)
此方法基于Toshio Fukushima的算法,使用Halley's方法。 由Halley's方法加速的从笛卡尔到大地坐标的转换,Toshio Fukushima,2006年2月地球测量杂志9(12):689-693
对原始方法进行了一些更改:
在一些罕见情况下(例如非常扁平的椭球体,或者靠近椭球体中心的点),循环可能无法收敛。由于这似乎只发生在退化情况下,设计选择是返回对应于最后一次迭代的近似点。这个点可能是不正确的,并且如果通过调用transform(GeodeticPoint)
进行往返调用时无法返回初始点。这个设计选择是为了避免出现NaN,例如在两颗卫星几乎在地球对面时进行卫星间可见性检查。地球内部的中间点不应该阻止检测算法找到可见性的起始/结束。
public FieldGeodeticPoint<org.hipparchus.analysis.differentiation.DerivativeStructure> transform(PVCoordinates point, Frame frame, AbsoluteDate date)
point
- 笛卡尔点
frame
- 表达笛卡尔点的参考系
date
- 计算的日期(用于参考系转换)
public double azimuthBetweenPoints(GeodeticPoint origin, GeodeticPoint destination)
origin
- 要计算方位角的原点(非null
)
destination
- 角度定义的目标点(非null
)
[0-2pi)
)
public <T extends org.hipparchus.CalculusFieldElement<T>> T azimuthBetweenPoints(FieldGeodeticPoint<T> origin, FieldGeodeticPoint<T> destination)
T
- 字段元素的类型
origin
- 原点,将计算方位角的点(非null
)
destination
- 目标点,定义角度的点(非null
)
[0-2pi)
)
public double geodeticToIsometricLatitude(double geodeticLatitude)
geodeticLatitude
- 纬度(弧度,在区间[-pi/2, +pi/2]
内)
public <T extends org.hipparchus.CalculusFieldElement<T>> T geodeticToIsometricLatitude(T geodeticLatitude)
T
- 字段元素的类型
geodeticLatitude
- 纬度(弧度,在区间[-pi/2, +pi/2]
内)
public GeodeticPoint lowestAltitudeIntermediate(org.hipparchus.geometry.euclidean.threed.Vector3D endpoint1, org.hipparchus.geometry.euclidean.threed.Vector3D endpoint2)
endpoint1
- 第一个端点,在本体坐标系中
endpoint2
- 第二个端点,在本体坐标系中
endpoint1
和endpoint2
之间具有最低高度的点。
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldGeodeticPoint<T> lowestAltitudeIntermediate(org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> endpoint1, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> endpoint2)
T
- 字段元素的类型
endpoint1
- 第一个端点,在本体坐标系中
endpoint2
- 第二个端点,在本体坐标系中
endpoint1
和endpoint2
之间具有最低高度的点。
Copyright © 2002-2023 CS GROUP. All rights reserved.