public interface BodyShape extends PVCoordinatesProvider
Modifier and Type | Interface and Description |
---|---|
static class |
BodyShape.MarginType
Margin type.
|
Modifier and Type | Field and Description |
---|---|
static double |
DEFAULT_DISTANCE_EPSILON
Default value of distance epsilon below which the height coordinate is neglected: below this value,the method
getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate) will be automatically used instead of
getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate, double) . |
static double |
DIRECTION_FACTOR
Factor to be multiplied to the direction in order to improve the accuracy of the line creation by increasing the
distance between the origin and the second point.
|
Modifier and Type | Method and Description |
---|---|
BodyPoint |
buildPoint(LLHCoordinatesSystem coordSystem,
double latitude,
double longitude,
double height,
String name)
Build a
BodyPoint from LLH coordinates. |
BodyPoint |
buildPoint(Vector3D position,
Frame frame,
AbsoluteDate date,
String name)
Build a
BodyPoint from position in provided frame at provided date. |
BodyPoint |
buildPoint(Vector3D position,
String name)
Build a
BodyPoint from position in body frame. |
default BodyPoint |
buildRadialPointOnShapeSurface(double bodycentricLatitude,
double bodycentricLongitude)
Build a body point on the radial direction corresponding to entered bodycentric latitude and longitude: if more
than one intersection, the method considers the one farthest to the body frame origin (having the largest norm).
|
BodyPoint[] |
closestPointTo(Line line)
This method computes the two points, on the line and on the body, that are the closest to each other.
|
BodyPoint[] |
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.
|
BodyPoint |
closestPointTo(Vector3D point)
Computes the point on body surface that is the closest to provided point.
|
BodyPoint |
closestPointTo(Vector3D point,
Frame frame,
AbsoluteDate date)
Computes the point on body surface that is the closest to provided point.
|
BodyPoint |
closestPointTo(Vector3D point,
String name)
Computes the point on body surface that is the closest to provided point.
|
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.
|
CelestialBodyFrame |
getBodyFrame()
Getter for the body frame related to body shape.
|
double |
getDistanceEpsilon()
Return the distance epsilon below which the height coordinate is neglected.
|
double |
getEncompassingSphereRadius()
Getter for the radius, in meters, of a sphere centered on the body frame origin and encompassing the shape.
|
double |
getEpsilonSignalPropagation()
Getter for the epsilon for signal propagation used in
#getApparentRadius(PVCoordinatesProvider, AbsoluteDate, PVCoordinatesProvider, PropagationDelayType)
method. |
BodyPoint |
getIntersectionPoint(Line line,
Vector3D close,
Frame frame,
AbsoluteDate date)
Getter for the intersection point of a line with the surface of the body.
|
BodyPoint |
getIntersectionPoint(Line line,
Vector3D close,
Frame frame,
AbsoluteDate date,
double altitude)
Getter for the intersection point of a line with the surface of the body for a given altitude.
|
BodyPoint |
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.
|
BodyPoint[] |
getIntersectionPoints(Line line,
Frame frame,
AbsoluteDate date)
Compute the intersection points with a line.
|
LLHCoordinatesSystem |
getLLHCoordinatesSystem()
Getter for the LLH coordinates system used by the computed
BodyPoint . |
String |
getName()
Getter for the name of the shape.
|
boolean |
isDefaultLLHCoordinatesSystem()
Indicate if the current LLH coordinates system set for the body is the default one or not.
|
BodyShape |
resize(BodyShape.MarginType marginType,
double marginValue)
Resize the geometric body shape by a margin.
|
void |
setDistanceEpsilon(double epsilon)
Setter for the distance epsilon below which the height coordinate is neglected.
|
void |
setEpsilonSignalPropagation(double epsilon)
Setter for the epsilon for signal propagation used in
#getApparentRadius(PVCoordinatesProvider, AbsoluteDate, PVCoordinatesProvider, PropagationDelayType)
method. |
void |
setLLHCoordinatesSystem(LLHCoordinatesSystem coordSystem)
Setter for the LLH coordinates system to be used by the computed
BodyPoint . |
getNativeFrame, getPVCoordinates
static final double DEFAULT_DISTANCE_EPSILON
getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate)
will be automatically used instead of
getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate, double)
. This distance epsilon is also used to
assess if a body point is on the shape surface or not (method BodyPoint.isOnShapeSurface()
.static final double DIRECTION_FACTOR
String getName()
CelestialBodyFrame getBodyFrame()
BodyPoint 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.
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 frameBodyPoint 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.
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 frameBodyPoint 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.
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 framealtitude
- altitude of the intersectionPatriusException
- if line cannot be converted to body frameBodyPoint[] getIntersectionPoints(Line line, Frame frame, AbsoluteDate date) throws PatriusException
line
- the lineframe
- in which line is expresseddate
- date of the line in given framePatriusException
- if line cannot be converted to body framedouble distanceTo(Line line, Frame frame, AbsoluteDate date) throws PatriusException
line
- the lineframe
- in which line is expresseddate
- date of the line in given framePatriusException
- if line cannot be converted to body framedouble getApparentRadius(PVCoordinatesProvider pvObserver, AbsoluteDate date, PVCoordinatesProvider occultedBody, AbstractSignalPropagationDetector.PropagationDelayType propagationDelayType) throws PatriusException
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 failsBodyShape resize(BodyShape.MarginType marginType, double marginValue) throws PatriusException
marginType
- margin type to be usedmarginValue
- margin value to be used (in meters if the margin type is DISTANCE)PatriusException
- if the margin value is invalidBodyPoint[] closestPointTo(Line line, Frame frame, AbsoluteDate date) throws PatriusException
Note: calculations take the line's minimum abscissa into account.
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 frameBodyPoint[] 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
.
line
- the original line for the shortest distance computationBodyPoint
(depending on body shape)BodyPoint closestPointTo(Vector3D point, Frame frame, AbsoluteDate date) throws PatriusException
point
- a point expressed in provided frameframe
- framedate
- datePatriusException
- if computation failedBodyPoint closestPointTo(Vector3D point)
point
- a point expressed in body frameBodyPoint closestPointTo(Vector3D point, String name)
point
- a point expressed in body framename
- name of the pointBodyPoint buildPoint(LLHCoordinatesSystem coordSystem, double latitude, double longitude, double height, String name)
BodyPoint
from LLH coordinates. Type of returned body point depends on body.coordSystem
- LLH coordinates system in which are expressed the entered lat/long/heightlatitude
- input latitudelongitude
- input longitudeheight
- input heightname
- name of the pointBodyPoint buildPoint(Vector3D position, String name)
BodyPoint
from position in body frame. Type of returned body point depends on body.position
- position in body framename
- name of the pointBodyPoint
from position in body frameBodyPoint 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.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 pointdefault BodyPoint buildRadialPointOnShapeSurface(double bodycentricLatitude, double bodycentricLongitude)
bodycentricLatitude
- bodycentric latitudebodycentricLongitude
- bodycentric longitudedouble getDistanceEpsilon()
getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate)
will be automatically used instead of getIntersectionPoint(Line, Vector3D, Frame, AbsoluteDate, double)
,
BodyPoint.isOnShapeSurface()
will return true if the absolute value of its normal height
is lower than this distance epsilon.void setDistanceEpsilon(double epsilon)
epsilon
- distance epsilon to be setLLHCoordinatesSystem getLLHCoordinatesSystem()
BodyPoint
.void setLLHCoordinatesSystem(LLHCoordinatesSystem coordSystem)
BodyPoint
.coordSystem
- LLH coordinates system to be setboolean isDefaultLLHCoordinatesSystem()
true
if the current LLH coordinates system is the default one, false
otherwisedouble getEncompassingSphereRadius()
double getEpsilonSignalPropagation()
#getApparentRadius(PVCoordinatesProvider, AbsoluteDate, PVCoordinatesProvider, PropagationDelayType)
method. This epsilon (in s) directly reflect the accuracy of signal propagation (1s of accuracy = 3E8m of
accuracy on distance between emitter and receiver).void setEpsilonSignalPropagation(double epsilon)
#getApparentRadius(PVCoordinatesProvider, AbsoluteDate, PVCoordinatesProvider, PropagationDelayType)
method. This epsilon (in s) directly reflect the accuracy of signal propagation (1s of accuracy = 3E8m of
accuracy on distance between emitter and receiver).epsilon
- epsilon for signal propagationCopyright © 2023 CNES. All rights reserved.