org.orekit.bodies
Class ExtendedOneAxisEllipsoid

java.lang.Object
  extended by org.orekit.bodies.ExtendedOneAxisEllipsoid
All Implemented Interfaces:
Serializable, BodyShape, GeometricBodyShape, PVCoordinatesProvider
Direct Known Subclasses:
ProjectionEllipsoid

public class ExtendedOneAxisEllipsoid
extends Object
implements GeometricBodyShape

implementation of the PatriusBodyShape interface : this an extended spheroid model to represent celestial bodies shapes.

Since:
1.2
Version:
$Id: ExtendedOneAxisEllipsoid.java 17582 2017-05-10 12:58:16Z bignon $
Author:
Thomas Trapier
See Also:
GeometricBodyShape, Serialized Form
Concurrency :
not thread-safe
Concurrency comment :
the use of frames makes this class not thread-safe

Constructor Summary
ExtendedOneAxisEllipsoid(double ae, double f, Frame bodyFrame, String name)
          Constructor for the body spheroid.
 
Method Summary
 double distanceTo(Line line, Frame frame, AbsoluteDate date)
          Computes the distance to a line.
 Frame getBodyFrame()
          Get body frame related to body shape.
 double getConjugateRadius()
          Return conjugate radius (minor semi axis)
 double getEquatorialRadius()
          Get the equatorial radius of the body.
 double getFlattening()
          Return the flattening
 GeodeticPoint getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date)
          Get the intersection point of a line with the surface of the body.
 Vector3D[] getIntersectionPoints(Line line, Frame frame, AbsoluteDate date)
          Compute the intersection points with a line.
 double getLocalRadius(Vector3D position, Frame frame, AbsoluteDate date, PVCoordinatesProvider occultedBody)
          Calculate the apparent radius.
 String getName()
           
 Vector3D getNormal(Vector3D point)
          Return the normal vector to the surface from the ellipsoid
 PVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame)
          Get the PVCoordinates of the body in the selected frame.
 double getTransverseRadius()
          Return transverse radius (major semi axis)
 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 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ExtendedOneAxisEllipsoid

public ExtendedOneAxisEllipsoid(double ae,
                                double f,
                                Frame bodyFrame,
                                String name)
Constructor for the body spheroid.

Parameters:
ae - equatorial radius
f - the flattening (f = (a-b)/a)
bodyFrame - body frame related to body shape
name - the name of this shape
Method Detail

getBodyFrame

public Frame getBodyFrame()
Description copied from interface: BodyShape
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
Description copied from interface: BodyShape
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 GeodeticPoint transform(Vector3D point,
                               Frame frame,
                               AbsoluteDate date)
                        throws OrekitException
Description copied from interface: BodyShape
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

transform

public Vector3D transform(GeodeticPoint point)
Description copied from interface: BodyShape
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

getIntersectionPoints

public Vector3D[] getIntersectionPoints(Line line,
                                        Frame frame,
                                        AbsoluteDate date)
                                 throws OrekitException
Description copied from interface: GeometricBodyShape
Compute the intersection points with a line.

Specified by:
getIntersectionPoints in interface GeometricBodyShape
Parameters:
line - the line
frame - in which line is expressed
date - date of the line in given frame
Returns:
the intersection points if they exist. If no intersection is found, the dimension is zero
Throws:
OrekitException - if line cannot be converted to body frame

distanceTo

public double distanceTo(Line line,
                         Frame frame,
                         AbsoluteDate date)
                  throws OrekitException
Description copied from interface: GeometricBodyShape
Computes the distance to a line.

Specified by:
distanceTo in interface GeometricBodyShape
Parameters:
line - the line
frame - in which line is expressed
date - date of the line in given frame
Returns:
the shortest distance between the the line and the shape
Throws:
OrekitException - if line cannot be converted to body frame

getName

public String getName()
Specified by:
getName in interface GeometricBodyShape
Returns:
the name of the shape

getPVCoordinates

public PVCoordinates getPVCoordinates(AbsoluteDate date,
                                      Frame frame)
                               throws OrekitException
Description copied from interface: PVCoordinatesProvider
Get the PVCoordinates of the body in the selected frame.

Specified by:
getPVCoordinates in interface PVCoordinatesProvider
Parameters:
date - current date
frame - the frame where to define the position
Returns:
position/velocity of the body (m and m/s)
Throws:
OrekitException - if position cannot be computed in given frame

getTransverseRadius

public double getTransverseRadius()
Return transverse radius (major semi axis)

Returns:
transverse radius

getConjugateRadius

public double getConjugateRadius()
Return conjugate radius (minor semi axis)

Returns:
conjugate radius

getLocalRadius

public double getLocalRadius(Vector3D position,
                             Frame frame,
                             AbsoluteDate date,
                             PVCoordinatesProvider occultedBody)
                      throws OrekitException
Calculate the apparent radius. Warning: When used with earth ellipsoid, the computation of sight axis local elevation on earth uses a rapid algorithm with limited accuracy : typically 1.3e-4 degrees (worst case, satellite altitude 250 Km, latitude 45 deg., East sight direction) if sight axis is 25 degrees above horizon, and 1.4e-6 degrees (worst case) if sight axis is 0,25 degrees above horizon.

Specified by:
getLocalRadius in interface GeometricBodyShape
Parameters:
position - spacecraft position
frame - frame in which position is expressed
date - date of position
occultedBody - body occulted by this
Returns:
apparent radius
Throws:
OrekitException - if PVCoordinatesProvider computation fails

getEquatorialRadius

public double getEquatorialRadius()
Get the equatorial radius of the body.

Returns:
equatorial radius of the body (m)

getFlattening

public double getFlattening()
Return the flattening

Returns:
fIn

getNormal

public Vector3D getNormal(Vector3D point)
Return the normal vector to the surface from the ellipsoid

Parameters:
point - Point as a Vector3D in local basis
Returns:
the normal vector in local basis


Copyright © 2017 CNES. All Rights Reserved.