org.orekit.bodies

Class OneAxisEllipsoid

• All Implemented Interfaces:
Serializable, BodyShape

```public class OneAxisEllipsoid
extends Ellipsoid
implements BodyShape```
Modeling of a one-axis ellipsoid.

One-axis ellipsoids is a good approximate model for most planet-size and larger natural bodies. It is the equilibrium shape reached by a fluid body under its own gravity field when it rotates. The symmetry axis is the rotation or polar axis.

Author:
Luc Maisonobe
Serialized Form
• Constructor Summary

Constructors
Constructor and Description
```OneAxisEllipsoid(double ae, double f, Frame bodyFrame)```
Simple constructor.
• Method Summary

Methods
Modifier and Type Method and Description
`Frame` `getBodyFrame()`
Get body frame related to body shape.
`double` `getEquatorialRadius()`
Get the equatorial radius of the body.
`double` `getFlattening()`
Get the flattening of the body: f = (a-b)/a.
`GeodeticPoint` ```getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date)```
Get the intersection point of a line with the surface of the body.
`TimeStampedPVCoordinates` ```projectToGround(TimeStampedPVCoordinates pv, Frame frame)```
Project a moving point to the ground.
`Vector3D` ```projectToGround(Vector3D point, AbsoluteDate date, Frame frame)```
Project a point to the ground.
`void` `setAngularThreshold(double angularThreshold)`
Set the angular convergence threshold.
`Vector3D` `transform(GeodeticPoint point)`
Transform a surface-relative point to a cartesian point.
`GeodeticPoint` ```transform(Vector3D point, Frame frame, AbsoluteDate date)```
Transform a cartesian point to a surface-relative point.
• Methods inherited from class org.orekit.bodies.Ellipsoid

`getA, getB, getC, getFrame, getPlaneSection`
• Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• Constructor Detail

• OneAxisEllipsoid

```public OneAxisEllipsoid(double ae,
double f,
Frame bodyFrame)```
Simple constructor.

The following table provides conventional parameters for global Earth models:

modelae (m) f
GRS 806378137.01.0 / 298.257222101
WGS846378137.01.0 / 298.257223563
Parameters:
`ae` - equatorial radius
`f` - the flattening (f = (a-b)/a)
`bodyFrame` - body frame related to body shape
`FramesFactory.getITRF(org.orekit.utils.IERSConventions, boolean)`
• Method Detail

• setAngularThreshold

`public void setAngularThreshold(double angularThreshold)`
Set the angular convergence threshold.

The angular threshold is used both to identify points close to the ellipse axes and as the convergence threshold used to stop the iterations in the ```transform(Vector3D, Frame, AbsoluteDate)``` method.

If this method is not called, the default value is set to 10-12.

Parameters:
`angularThreshold` - angular convergence threshold (rad)

`public double getEquatorialRadius()`
Get the equatorial radius of the body.
Returns:
equatorial radius of the body (m)
• getFlattening

`public double getFlattening()`
Get the flattening of the body: f = (a-b)/a.
Returns:
the flattening
• getBodyFrame

`public Frame getBodyFrame()`
Get body frame related to body shape.
Specified by:
`getBodyFrame` in interface `BodyShape`
Returns:
body frame related to body shape
• getIntersectionPoint

```public GeodeticPoint getIntersectionPoint(Line line,
Vector3D close,
Frame frame,
AbsoluteDate date)
throws OrekitException```
Get the intersection point of a line with the surface of the body.

A line may have several intersection points with a closed surface (we consider the one point case as a degenerated two points case). The close parameter is used to select which of these points should be returned. The selected point is the one that is closest to the close point.

Specified by:
`getIntersectionPoint` in interface `BodyShape`
Parameters:
`line` - test line (may intersect the body or not)
`close` - point used for intersections selection
`frame` - frame in which line is expressed
`date` - date of the line in given frame
Returns:
intersection point at altitude zero or null if the line does not intersect the surface
Throws:
`OrekitException` - if line cannot be converted to body frame
• transform

`public Vector3D transform(GeodeticPoint point)`
Transform a surface-relative point to a cartesian point.
Specified by:
`transform` in interface `BodyShape`
Parameters:
`point` - surface-relative point
Returns:
point at the same location but as a cartesian point
• projectToGround

```public Vector3D projectToGround(Vector3D point,
AbsoluteDate date,
Frame frame)
throws OrekitException```
Project a point to the ground.
Specified by:
`projectToGround` in interface `BodyShape`
Parameters:
`point` - point to project
`date` - current date
`frame` - frame in which moving point is expressed
Returns:
ground point exactly at the local vertical of specified point, in the same frame as specified point
Throws:
`OrekitException` - if point cannot be converted to body frame
`BodyShape.projectToGround(TimeStampedPVCoordinates, Frame)`
• projectToGround

```public TimeStampedPVCoordinates projectToGround(TimeStampedPVCoordinates pv,
Frame frame)
throws OrekitException```
Project a moving point to the ground.
Specified by:
`projectToGround` in interface `BodyShape`
Parameters:
`pv` - moving point
`frame` - frame in which moving point is expressed
Returns:
ground point exactly at the local vertical of specified point, in the same frame as specified point
Throws:
`OrekitException` - if point cannot be converted to body frame
`BodyShape.projectToGround(Vector3D, AbsoluteDate, Frame)`
• transform

```public GeodeticPoint transform(Vector3D point,
Frame frame,
AbsoluteDate date)
throws OrekitException```
Transform a cartesian point to a surface-relative point.
Specified by:
`transform` in interface `BodyShape`
Parameters:
`point` - cartesian point
`frame` - frame in which cartesian point is expressed
`date` - date of the computation (used for frames conversions)
Returns:
point at the same location but as a surface-relative point
Throws:
`OrekitException` - if point cannot be converted to body frame