public abstract class AbstractEllipsoidBodyShape extends AbstractBodyShape implements EllipsoidBodyShape
AbstractBodyShape
,
EllipsoidBodyShape
,
Serialized FormBodyShape.MarginType
Modifier and Type | Field and Description |
---|---|
static double |
CLOSE_APPROACH_THRESHOLD
Close approach threshold.
|
static LLHCoordinatesSystem |
DEFAULT_LLH_COORD_SYSTEM
Ellipsodetic used as default LLH coordinates system for the computed
EllipsoidPoint . |
protected IEllipsoid |
ellipsoid
Ellipsoid geometric representation.
|
protected int |
maxIterSignalPropagation
Maximum number of iterations for signal propagation computation
|
DEFAULT_EPSILON_SIGNAL_PROPAGATION, distanceEpsilon, lLHCoordinatesSystem
DEFAULT_DISTANCE_EPSILON, DIRECTION_FACTOR
Constructor and Description |
---|
AbstractEllipsoidBodyShape(IEllipsoid ellipsoid,
CelestialBodyFrame bodyFrame,
boolean isSpherical,
String name)
Constructor for the ellipsoid.
|
AbstractEllipsoidBodyShape(IEllipsoid ellipsoid,
CelestialBodyFrame bodyFrame,
boolean spherical,
String name,
LLHCoordinatesSystem lLHCoordinatesSystem)
Constructor for the ellipsoid.
|
AbstractEllipsoidBodyShape(IEllipsoid ellipsoid,
CelestialBodyFrame bodyFrame,
String name)
Constructor for the ellipsoid.
|
Modifier and Type | Method and Description |
---|---|
EllipsoidPoint |
buildPoint(LLHCoordinatesSystem coordSystem,
double latitude,
double longitude,
double height,
String name)
Build a
BodyPoint from LLH coordinates. |
EllipsoidPoint |
buildPoint(Vector3D position,
Frame frame,
AbsoluteDate date,
String name)
Build a
BodyPoint from position in provided frame at provided date. |
EllipsoidPoint |
buildPoint(Vector3D position,
String name)
Build a
BodyPoint from position in body frame. |
EllipsoidPoint[] |
closestPointTo(Line line)
This method computes the two points, on the line and on the body, that are the closest to each other.
|
EllipsoidPoint[] |
closestPointTo(Line line,
Frame frame,
AbsoluteDate date)
This method computes the two points, on the line and on the body, that are the closest to each other.
|
EllipsoidPoint |
closestPointTo(Vector3D point)
Computes the point on body surface that is the closest to provided point.
|
EllipsoidPoint |
closestPointTo(Vector3D point,
Frame frame,
AbsoluteDate date)
Computes the point on body surface that is the closest to provided point.
|
EllipsoidPoint |
closestPointTo(Vector3D point,
String name)
Computes the point on body surface that is the closest to provided point.
|
Vector3D |
computePositionFromEllipsodeticCoordinates(double latitude,
double longitude,
double height)
Compute the position from the ellipsodetic coordinates in body frame.
|
double |
distanceTo(Line line,
Frame frame,
AbsoluteDate date)
Computes the distance to a line.
|
double |
getApparentRadius(PVCoordinatesProvider pvObserver,
AbsoluteDate date,
PVCoordinatesProvider occultedBody,
AbstractSignalPropagationDetector.PropagationDelayType propagationDelayType)
Compute the apparent radius (in meters) of the occulting body from the spacecraft (observer) position.
|
double |
getARadius()
Getter for the semi axis A.
|
double |
getBRadius()
Getter for the semi axis B.
|
double |
getCRadius()
Getter for the semi axis C.
|
IEllipsoid |
getEllipsoid()
Getter for the
spheroid object. |
double |
getEncompassingSphereRadius()
Getter for the radius, in meters, of a sphere centered on the body frame origin and encompassing the shape.
|
EllipsoidPoint |
getIntersectionPoint(Line line,
Vector3D close,
Frame frame,
AbsoluteDate date)
Getter for the intersection point of a line with the surface of the body.
|
EllipsoidPoint |
getIntersectionPoint(Line line,
Vector3D close,
Frame frame,
AbsoluteDate date,
String name)
Getwter for the intersection point of a line with the surface of the body.
|
EllipsoidPoint[] |
getIntersectionPoints(Line line,
Frame frame,
AbsoluteDate date)
Compute the intersection points with a line.
|
int |
getMaxIterSignalPropagation()
Get the maximum number of iterations for signal propagation when signal
propagation is taken into account.
|
boolean |
isDefaultLLHCoordinatesSystem()
Indicate if the current LLH coordinates system set for the body is the default one or not.
|
boolean |
isSpherical()
Indicate if the ellipsoid can be considered as a sphere.
|
void |
setConvergenceThreshold(double newThreshold)
Setter for the Newton algorithm threshold used to compute distance to the ellipsoid using method
distanceTo(Line, Frame, AbsoluteDate) . |
void |
setMaxIterSignalPropagation(int maxIterSignalPropagationIn)
Set the maximum number of iterations for signal propagation when signal propagation is taken into account.
|
getBodyFrame, getDistanceEpsilon, getEpsilonSignalPropagation, getLLHCoordinatesSystem, getName, getNativeFrame, getPVCoordinates, setDistanceEpsilon, setEpsilonSignalPropagation, setLLHCoordinatesSystem
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getConjugateRadius, getE2, getEquatorialRadius, getFlattening, getG2, getIntersectionPoint, getTransverseRadius
buildRadialPointOnShapeSurface, getBodyFrame, getDistanceEpsilon, getEpsilonSignalPropagation, getLLHCoordinatesSystem, getName, resize, setDistanceEpsilon, setEpsilonSignalPropagation, setLLHCoordinatesSystem
getNativeFrame, getPVCoordinates
public static final LLHCoordinatesSystem DEFAULT_LLH_COORD_SYSTEM
EllipsoidPoint
.public static final double CLOSE_APPROACH_THRESHOLD
protected final IEllipsoid ellipsoid
protected int maxIterSignalPropagation
public AbstractEllipsoidBodyShape(IEllipsoid ellipsoid, CelestialBodyFrame bodyFrame, String name)
By default, the DEFAULT_LLH_COORD_SYSTEM
is used and the ellipsoid isn't considered as a sphere.
ellipsoid
- Ellipsoid geometric representationbodyFrame
- Body frame related to the ellipsoidname
- Name of the ellipsoidpublic AbstractEllipsoidBodyShape(IEllipsoid ellipsoid, CelestialBodyFrame bodyFrame, boolean isSpherical, String name)
By default, the DEFAULT_LLH_COORD_SYSTEM
is used.
ellipsoid
- Ellipsoid geometric representationbodyFrame
- Body frame related to the ellipsoidisSpherical
- Indicate if the ellipsoid can be considered as a sphere or notname
- Name of the ellipsoidpublic AbstractEllipsoidBodyShape(IEllipsoid ellipsoid, CelestialBodyFrame bodyFrame, boolean spherical, String name, LLHCoordinatesSystem lLHCoordinatesSystem)
ellipsoid
- Ellipsoid geometric representationbodyFrame
- Body frame related to the ellipsoidspherical
- Indicate if the ellipsoid can be considered as a sphere or notname
- Name of the ellipsoidlLHCoordinatesSystem
- Ellipsoid coordinates systempublic double getARadius()
getARadius
in interface EllipsoidBodyShape
public double getBRadius()
getBRadius
in interface EllipsoidBodyShape
public double getCRadius()
getCRadius
in interface EllipsoidBodyShape
public boolean isSpherical()
isSpherical
in interface EllipsoidBodyShape
true
if the ellipsoid can be considered as a sphere, false
otherwisepublic double getEncompassingSphereRadius()
getEncompassingSphereRadius
in interface BodyShape
public boolean isDefaultLLHCoordinatesSystem()
isDefaultLLHCoordinatesSystem
in interface BodyShape
true
if the current LLH coordinates system is the default one, false
otherwisepublic EllipsoidPoint 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 BodyShape
getIntersectionPoint
in interface EllipsoidBodyShape
line
- 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 EllipsoidPoint getIntersectionPoint(Line line, Vector3D close, Frame frame, AbsoluteDate date, String name) 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 BodyShape
getIntersectionPoint
in interface EllipsoidBodyShape
line
- 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 framename
- name of the pointPatriusException
- if line cannot be converted to body framepublic EllipsoidPoint[] getIntersectionPoints(Line line, Frame frame, AbsoluteDate date) throws PatriusException
getIntersectionPoints
in interface BodyShape
getIntersectionPoints
in interface EllipsoidBodyShape
line
- 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 BodyShape
line
- the lineframe
- in which line is expresseddate
- date of the line in given framePatriusException
- if line cannot be converted to body framepublic IEllipsoid getEllipsoid()
spheroid
object.getEllipsoid
in interface EllipsoidBodyShape
public EllipsoidPoint[] closestPointTo(Line line, Frame frame, AbsoluteDate date) throws PatriusException
Note: calculations take the line's minimum abscissa into account.
closestPointTo
in interface BodyShape
closestPointTo
in interface EllipsoidBodyShape
line
- the original line for the shortest distance computationframe
- the line's framedate
- the current dateBodyPoint
(depending on body shape)PatriusException
- if line cannot be converted to body framepublic EllipsoidPoint[] closestPointTo(Line line)
Note: calculations take the line's minimum abscissa into account.
In this method we consider that the line's frame is the body frame, and the date is the
AbsoluteDate.J2000_EPOCH
.
closestPointTo
in interface BodyShape
closestPointTo
in interface EllipsoidBodyShape
line
- the original line for the shortest distance computationBodyPoint
(depending on body shape)public EllipsoidPoint closestPointTo(Vector3D point, Frame frame, AbsoluteDate date) throws PatriusException
closestPointTo
in interface BodyShape
closestPointTo
in interface EllipsoidBodyShape
point
- a point expressed in provided frameframe
- framedate
- datePatriusException
- if computation failedpublic EllipsoidPoint closestPointTo(Vector3D point)
closestPointTo
in interface BodyShape
closestPointTo
in interface EllipsoidBodyShape
point
- a point expressed in body framepublic EllipsoidPoint closestPointTo(Vector3D point, String name)
closestPointTo
in interface BodyShape
closestPointTo
in interface EllipsoidBodyShape
point
- a point expressed in body framename
- name of the pointpublic EllipsoidPoint buildPoint(LLHCoordinatesSystem coordSystem, double latitude, double longitude, double height, String name)
BodyPoint
from LLH coordinates. Type of returned body point depends on body.buildPoint
in interface BodyShape
buildPoint
in interface EllipsoidBodyShape
coordSystem
- LLH coordinates system in which are expressed the entered lat/long/heightlatitude
- input latitudelongitude
- input longitudeheight
- input heightname
- name of the pointpublic EllipsoidPoint buildPoint(Vector3D position, String name)
BodyPoint
from position in body frame. Type of returned body point depends on body.buildPoint
in interface BodyShape
buildPoint
in interface EllipsoidBodyShape
position
- position in body framename
- name of the pointBodyPoint
from position in body framepublic EllipsoidPoint buildPoint(Vector3D position, Frame frame, AbsoluteDate date, String name) throws PatriusException
BodyPoint
from position in provided frame at provided date. Type of returned body point depends
on body.buildPoint
in interface BodyShape
buildPoint
in interface EllipsoidBodyShape
position
- position in provided frame at provided dateframe
- framedate
- datename
- name of the pointBodyPoint
from position in provided frame at provided datePatriusException
- if failed to build pointpublic Vector3D computePositionFromEllipsodeticCoordinates(double latitude, double longitude, double height)
computePositionFromEllipsodeticCoordinates
in interface EllipsoidBodyShape
latitude
- latitude coordinatelongitude
- longitude coordinateheight
- height coordinate (signed value)Vector3D
public double getApparentRadius(PVCoordinatesProvider pvObserver, AbsoluteDate date, PVCoordinatesProvider occultedBody, AbstractSignalPropagationDetector.PropagationDelayType propagationDelayType) throws PatriusException
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.
getApparentRadius
in interface BodyShape
pvObserver
- the spacecraft (observer) position-velocitydate
- the date at which the signal is received by the observer (reception date)occultedBody
- the body which is occulted to the spacecraft (observer) by the occulting bodypropagationDelayType
- propagation delay typePatriusException
- if the PVCoordinatesProvider
computation failspublic 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 int getMaxIterSignalPropagation()
public void setMaxIterSignalPropagation(int maxIterSignalPropagationIn)
maxIterSignalPropagationIn
- maximum number of iterations for signal propagationCopyright © 2023 CNES. All rights reserved.