public class Geoid extends Object implements EarthShape
getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate)
方法专门针对地球的大地水准面。此类中的所有其他方法都是通用的,可用于任意天体。
定义大地水准面所需的几个组件[1]:
此实现还假设参考椭球体的法线与大地水准面的法线相同。此假设使方程成立:(大地水准面上的高度)=(椭球体上的高度)-(起伏),这在transform(GeodeticPoint)
和transform(Vector3D, Frame, AbsoluteDate)
中使用。
在测试中,此类计算的起伏误差不到3米,与上述假设相符。
参考文献:
Constructor and Description |
---|
Geoid(NormalizedSphericalHarmonicsProvider geopotential, ReferenceEllipsoid referenceEllipsoid)
根据给定的重力势、参考椭球体和注释中的假设,从中创建一个大地水准面 Geoid 。
|
Modifier and Type | Method and Description |
---|---|
Frame |
getBodyFrame()
获取与天体形状相关的天体框架。
|
ReferenceEllipsoid |
getEllipsoid()
获取定义纬度和经度的基础椭球体模型。
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.FieldLine<T> lineInFrame, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> closeInFrame, Frame frame, FieldAbsoluteDate<T> date)
获取线与天体表面的交点。
|
GeodeticPoint |
getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line lineInFrame, org.hipparchus.geometry.euclidean.threed.Vector3D closeInFrame, Frame frame, AbsoluteDate date)
获取线与天体表面的交点。
|
double |
getUndulation(double geodeticLatitude, double longitude, AbsoluteDate date)
获取给定位置的大地水准面起伏N。N是参考椭球体和大地水准面之间的距离。纬度和经度参数都是相对于参考椭球体定义的。对于EGM96和WGS84椭球体,起伏在-107米和+86米之间。
注意:对参数 |
TimeStampedPVCoordinates |
projectToGround(TimeStampedPVCoordinates pv, Frame frame)
将移动点投影到地面。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
projectToGround(org.hipparchus.geometry.euclidean.threed.Vector3D point, AbsoluteDate date, Frame frame)
将点投影到地面。
|
<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)
将表面相对点转换为笛卡尔点。
|
GeodeticPoint |
transform(org.hipparchus.geometry.euclidean.threed.Vector3D point, Frame frame, AbsoluteDate date)
将笛卡尔点转换为表面相对点。
|
public Geoid(NormalizedSphericalHarmonicsProvider geopotential, ReferenceEllipsoid referenceEllipsoid)
Geoid
。
geopotential
- 重力势。只使用异常势。假定geopotential
和referenceEllipsoid
在同一参考系中定义。通常使用constant geopotential
来定义不变的大地水准面。
referenceEllipsoid
- 正常重力势。
NullPointerException
- 如果geopotential == null || referenceEllipsoid == null
public Frame getBodyFrame()
BodyShape
getBodyFrame
在接口 BodyShape
public double getUndulation(double geodeticLatitude, double longitude, AbsoluteDate date)
注意:对参数geodeticLatitude
和longitude
的范围没有限制。
geodeticLatitude
- 大地纬度(本地法线与赤道平面在参考椭球体上的夹角),以弧度表示。
longitude
- 在参考椭球体上的经度,以弧度表示。
date
- 评估的日期。用于时变重力势场。
Geoid
,维基百科上的大地水准面
public ReferenceEllipsoid getEllipsoid()
EarthShape
GeodeticPoint
的高度分量,则使用椭球体将提供最快的转换。
getEllipsoid
在接口 EarthShape
this
,但绝不是null
。
public GeodeticPoint getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.Line lineInFrame, org.hipparchus.geometry.euclidean.threed.Vector3D closeInFrame, Frame frame, AbsoluteDate date)
一条线可能与封闭表面有多个交点(我们将一个点的情况视为退化的两个点的情况)。close参数用于选择应返回哪个交点。所选点是最接近close点的点。
交点是使用沿指定线的线搜索计算的。当大地水准面变化缓慢时,这是准确的。
getIntersectionPoint
在接口 BodyShape
lineInFrame
- 测试线(可能与天体相交或不相交)
closeInFrame
- 用于交点选择的点
frame
- 表达线的参考系
date
- 给定参考系中的线的日期
public org.hipparchus.geometry.euclidean.threed.Vector3D projectToGround(org.hipparchus.geometry.euclidean.threed.Vector3D point, AbsoluteDate date, Frame frame)
BodyShape
projectToGround
在接口 BodyShape
中
point
- 要投影的点
date
- 当前日期
frame
- 表示移动点的参考系
BodyShape.projectToGround(TimeStampedPVCoordinates, Frame)
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldGeodeticPoint<T> getIntersectionPoint(org.hipparchus.geometry.euclidean.threed.FieldLine<T> lineInFrame, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> closeInFrame, Frame frame, FieldAbsoluteDate<T> date)
一条线可能与封闭表面有多个交点(我们将一个交点视为退化的两个交点情况)。close参数用于选择应返回哪个交点。所选点是最接近close点的点。
交点是使用沿指定线的线搜索计算的。当大地水准面变化缓慢时,这是准确的。
getIntersectionPoint
在接口 BodyShape
中
T
- 字段元素的类型
lineInFrame
- 测试线(可能与天体相交或不相交)
closeInFrame
- 用于交点选择的点
frame
- 表示线的参考系
date
- 给定参考系中线的日期
public TimeStampedPVCoordinates projectToGround(TimeStampedPVCoordinates pv, Frame frame)
BodyShape
projectToGround
在接口 BodyShape
中
pv
- 移动点
frame
- 表示移动点的参考系
BodyShape.projectToGround(Vector3D, AbsoluteDate, Frame)
public GeodeticPoint transform(org.hipparchus.geometry.euclidean.threed.Vector3D point, Frame frame, AbsoluteDate date)
public <T extends org.hipparchus.CalculusFieldElement<T>> FieldGeodeticPoint<T> transform(org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> point, Frame frame, FieldAbsoluteDate<T> 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)
Copyright © 2002-2023 CS GROUP. All rights reserved.