public class ExtendedOneAxisEllipsoid extends Object implements EllipsoidBodyShape
Implementation of the EllipsoidBodyShape interface : this an extended spheroid model to represent celestial bodies shapes.
EllipsoidBodyShape,
Serialized FormGeometricBodyShape.MarginTypeEPS_ALTITUDE| Constructor and Description |
|---|
ExtendedOneAxisEllipsoid(double ae,
double f,
Frame bodyFrame,
String name)
Constructor for the body spheroid.
|
| Modifier and Type | Method and Description |
|---|---|
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)
|
IEllipsoid |
getEllipsoid()
Return the
spheroid object |
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.
|
GeodeticPoint |
getIntersectionPoint(Line line,
Vector3D close,
Frame frame,
AbsoluteDate date,
double altitude)
Get the intersection point of a line with the surface of the body for a given altitude.
|
Vector3D[] |
getIntersectionPoints(Line line,
Frame frame,
AbsoluteDate date)
Compute the intersection points with a line.
|
double |
getLocalRadius(Vector3D posObserver,
Frame frame,
AbsoluteDate date,
PVCoordinatesProvider occultedBody)
Compute the apparent radius (in meters) of the occulting body from the spacecraft (observer) position.
|
String |
getName() |
Frame |
getNativeFrame(AbsoluteDate date,
Frame frame)
Get the native frame, i.e.
|
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)
|
ExtendedOneAxisEllipsoid |
resize(GeometricBodyShape.MarginType marginType,
double marginValue)
Resize the geometric body shape by a margin.
|
void |
setConvergenceThreshold(double newThreshold)
Setter for Newton algorithm threshold used to compute distance to the ellipsoid using method
distanceTo(Line, Frame, AbsoluteDate). |
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.
|
public Frame getBodyFrame()
getBodyFrame in interface BodyShapepublic GeodeticPoint getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date) throws PatriusException
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.
getIntersectionPoint in interface BodyShapeline - test line (may intersect the body or not)close - point used for intersections selection expressed in the body frameframe - frame in which line is expresseddate - date of the line in given framePatriusException - if line cannot be converted to body framepublic GeodeticPoint getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date, double altitude) throws PatriusException
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.
getIntersectionPoint in interface BodyShapeline - test line (may intersect the body or not)close - point used for intersections selection expressed in the body frameframe - frame in which line is expresseddate - date of the line in given framealtitude - altitude of the intersectionPatriusException - if line cannot be converted to body framepublic GeodeticPoint transform(Vector3D point, Frame frame, AbsoluteDate date) throws PatriusException
transform in interface BodyShapepoint - cartesian pointframe - frame in which cartesian point is expresseddate - date of the computation (used for frames conversions)PatriusException - if point cannot be converted to body framepublic Vector3D transform(GeodeticPoint point)
public Vector3D[] getIntersectionPoints(Line line, Frame frame, AbsoluteDate date) throws PatriusException
getIntersectionPoints in interface GeometricBodyShapeline - the lineframe - in which line is expresseddate - date of the line in given framePatriusException - if line cannot be converted to body framepublic double distanceTo(Line line, Frame frame, AbsoluteDate date) throws PatriusException
distanceTo in interface GeometricBodyShapeline - the lineframe - in which line is expresseddate - date of the line in given framePatriusException - if line cannot be converted to body framepublic String getName()
getName in interface GeometricBodyShapepublic PVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame) throws PatriusException
PVCoordinates of the body in the selected frame.getPVCoordinates in interface PVCoordinatesProviderdate - current dateframe - the frame where to define the positionPatriusException - if position cannot be computed in given framepublic Frame getNativeFrame(AbsoluteDate date, Frame frame) throws PatriusException
getNativeFrame in interface PVCoordinatesProviderdate - a dateframe - a framePatriusException - thrown if native frame is undefined or unknownpublic double getTransverseRadius()
getTransverseRadius in interface EllipsoidBodyShapepublic double getConjugateRadius()
getConjugateRadius in interface EllipsoidBodyShapepublic double getLocalRadius(Vector3D posObserver, Frame frame, AbsoluteDate date, PVCoordinatesProvider occultedBody) throws PatriusException
Please notice that this method will for the moment be used only with an instantaneous propagation delay type.
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.
getLocalRadius in interface EllipsoidBodyShapegetLocalRadius in interface GeometricBodyShapeposObserver - the spacecraft (observer) positionframe - the reference frame in which the spacecraft (observer) position is expresseddate - the date at which the spacecraft (observer) position is expressedoccultedBody - the body which is occulted to the spacecraft (observer) by the occulting bodyPatriusException - if the PVCoordinatesProvider computation failspublic double getEquatorialRadius()
getEquatorialRadius in interface EllipsoidBodyShapepublic double getFlattening()
getFlattening in interface EllipsoidBodyShapepublic Vector3D getNormal(Vector3D point)
getNormal in interface EllipsoidBodyShapepoint - Point as a Vector3D in local basispublic void setConvergenceThreshold(double newThreshold)
distanceTo(Line, Frame, AbsoluteDate).
Method distanceTo(Line, Frame, AbsoluteDate) is used in particular in SensorModel.
Default value for this threshold is 1E-11.newThreshold - new threshold to setpublic IEllipsoid getEllipsoid()
spheroid objectgetEllipsoid in interface EllipsoidBodyShapepublic ExtendedOneAxisEllipsoid resize(GeometricBodyShape.MarginType marginType, double marginValue) throws PatriusException
resize in interface GeometricBodyShapemarginType - margin type to be usedmarginValue - margin value to be used (in meters if the margin type is DISTANCE)PatriusException - if the margin value is invalidCopyright © 2022 CNES. All rights reserved.