public final class TopocentricFrame extends Frame implements PVCoordinatesProvider
Frame associated to a position at the surface of a body shape.
Constructor and Description |
---|
TopocentricFrame(BodyShape bodyParentShape,
GeodeticPoint geodeticPoint,
double frameOrientation,
String name)
This constructor builds a topocentric frame which Z-axis is the zenith.
|
TopocentricFrame(BodyShape bodyParentShape,
GeodeticPoint geodeticPoint,
String name)
This constructor builds an east oriented topocentric frame.
|
Modifier and Type | Method and Description |
---|---|
GeodeticPoint |
computeLimitVisibilityPoint(double radius,
double azimuth,
double elevation)
Compute the limit visibility point for a satellite in a given direction.
|
double |
getAzimuth(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Get the azimuth of a point with regards to the topocentric frame center point.
|
double |
getAzimuthRate(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Get the azimuth rate of a point.
|
Vector3D |
getEast()
Get the east direction of topocentric frame, expressed in parent shape frame.
|
double |
getElevation(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Get the elevation of a point with regards to the local point.
|
double |
getElevationRate(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Get the elevation rate of a point.
|
Vector3D |
getNadir()
Get the nadir direction of topocentric frame, expressed in parent shape frame.
|
Vector3D |
getNorth()
Get the north direction of topocentric frame, expressed in parent shape frame.
|
double |
getOrientation() |
BodyShape |
getParentShape()
Get the body shape on which the local point is defined.
|
GeodeticPoint |
getPoint()
Get the surface point defining the origin of the frame.
|
PVCoordinates |
getPVCoordinates(AbsoluteDate date,
Frame frame)
Get the
PVCoordinates of the topocentric frame origin in the selected frame. |
double |
getRange(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Get the range of a point with regards to the topocentric frame center point.
|
double |
getRangeRate(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Get the range rate of a point with regards to the topocentric frame center point.
|
Vector3D |
getSouth()
Get the south direction of topocentric frame, expressed in parent shape frame.
|
Vector3D |
getWest()
Get the west direction of topocentric frame, expressed in parent shape frame.
|
double |
getXangleCardan(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Get the Cardan x angle of a point.
|
double |
getXangleCardanRate(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Get the Cardan x angle rate.
|
double |
getYangleCardan(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Get the Cardan y angle of a point with regards to the projection point on the plane defined
by the zenith and the west axis.
|
double |
getYangleCardanRate(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Get the Cardan y angle rate.
|
Vector3D |
getZenith()
Get the zenith direction of topocentric frame, expressed in parent shape frame.
|
GeodeticPoint |
pointAtDistance(double azimuth,
double elevation,
double distance)
Compute the point observed from the station at some specified distance.
|
Vector3D |
transformFromCardanToPosition(CardanMountPosition cardan)
Transform a Cardan mounting into Cartesian coordinates (only position) expressed in this local
topocentric frame.
|
PVCoordinates |
transformFromCardanToPV(CardanMountPV cardan)
Transform a Cardan mounting into Cartesian coordinates (position and velocity) expressed in this
local topocentric frame.
|
CardanMountPosition |
transformFromPositionToCardan(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Transform a Cartesian position coordinates into Cardan mounting in this local
topocentric frame.
|
TopocentricPosition |
transformFromPositionToTopocentric(Vector3D extPoint,
Frame frame,
AbsoluteDate date)
Transform a Cartesian position coordinates into topocentric coordinates in this local
topocentric frame.
|
CardanMountPV |
transformFromPVToCardan(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Transform a Cartesian position coordinates into Cardan mounting in this local
topocentric frame.
|
TopocentricPV |
transformFromPVToTopocentric(PVCoordinates extPV,
Frame frame,
AbsoluteDate date)
Transform a Cartesian position and velocity coordinates into topocentric coordinates in this local
topocentric frame.
|
Vector3D |
transformFromTopocentricToPosition(TopocentricPosition topoCoord)
Transform topocentric set of coordinates frame into Cartesian position coordinates expressed in
this local topocentric.
|
PVCoordinates |
transformFromTopocentricToPV(TopocentricPV topoCoord)
Transform topocentric set of coordinates into Cartesian position and velocity coordinates
expressed in this local topocentric frame .
|
getAncestor, getDepth, getFrozenFrame, getName, getParent, getRoot, getTransformJacobian, getTransformProvider, getTransformTo, getTransformTo, getTransformTo, getTransformTo, isChildOf, isPseudoInertial, toString
public TopocentricFrame(BodyShape bodyParentShape, GeodeticPoint geodeticPoint, String name)
bodyParentShape
- body shape on which the local point is definedgeodeticPoint
- local surface point where topocentric frame is definedname
- the string representationpublic TopocentricFrame(BodyShape bodyParentShape, GeodeticPoint geodeticPoint, double frameOrientation, String name)
bodyParentShape
- body shape on which the local point is definedgeodeticPoint
- local surface point where topocentric frame is definedframeOrientation
- the angle in radians between the North direction and the X-axisname
- the string representationpublic double getOrientation()
public BodyShape getParentShape()
public GeodeticPoint getPoint()
public Vector3D getZenith()
The zenith direction is defined as the normal to local horizontal plane.
getNadir()
public Vector3D getNadir()
The nadir direction is the opposite of zenith direction.
getZenith()
public Vector3D getNorth()
The north direction is defined in the horizontal plane (normal to zenith direction) and following the local meridian.
getSouth()
public Vector3D getSouth()
The south direction is the opposite of north direction.
getNorth()
public Vector3D getEast()
The east direction is defined in the horizontal plane in order to complete direct triangle (east, north, zenith).
getWest()
public Vector3D getWest()
The west direction is the opposite of east direction.
getEast()
public double getElevation(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
The elevation is the angle between the local horizontal and the direction from local point to given point.
extPoint
- point for which elevation shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getElevationRate(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point for which elevation rate shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getAzimuth(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
The azimuth is the angle between the North direction at local point and the projection in local horizontal plane of the direction from local point to given point. Azimuth angles are counted clockwise, i.e positive towards the East.
extPoint
- point for which azimuth shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getAzimuthRate(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point for which the azimuth rate shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getXangleCardan(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
The x angle is angle of the rotation of the mounting around local North axis, this angle is between -PI
and PI
and counting clockwise. See Spacefight Dynamics, Part I, chapter 10.4.5.2
extPoint
- point for which the x angle shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getXangleCardanRate(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point for which the x angle rate shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getYangleCardan(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
The y angle is angle of the rotation of the mounting around y'. Y' is the image of West axis by the rotation of
angle x around North axis, this angle is between -PI/2
and PI/2
and oriented by y'. See
Spaceflight Dynamics, Part I, chapter 10.4.5.2
extPoint
- point for which the y angle shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getYangleCardanRate(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point for which the y angle rate shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getRange(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
extPoint
- point for which range shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic double getRangeRate(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point/velocity for which range rate shall be computedframe
- frame in which the point is defineddate
- computation datePatriusException
- if frames transformations cannot be computedpublic TopocentricPosition transformFromPositionToTopocentric(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
extPoint
- point in Cartesian coordinates which shall be transformedframe
- frame in which the point is defineddate
- computation datePatriusException
- OrekitException if frames transformations cannot be computedpublic TopocentricPV transformFromPVToTopocentric(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point in Cartesian coordinates which shall be transformedframe
- frame in which the point is defineddate
- computation datePatriusException
- OrekitException if frames transformations cannot be computedpublic CardanMountPosition transformFromPositionToCardan(Vector3D extPoint, Frame frame, AbsoluteDate date) throws PatriusException
extPoint
- point in Cartesian coordinates which shall be transformedframe
- frame in which the point is defineddate
- computation datePatriusException
- OrekitException if frames transformations cannot be computedpublic CardanMountPV transformFromPVToCardan(PVCoordinates extPV, Frame frame, AbsoluteDate date) throws PatriusException
extPV
- point in Cartesian coordinates which shall be transformedframe
- frame in which the point is defineddate
- computation datePatriusException
- OrekitException if frames transformations cannot be computedpublic Vector3D transformFromTopocentricToPosition(TopocentricPosition topoCoord)
topoCoord
- point in topocentric coordinates which shall be transformedpublic PVCoordinates transformFromTopocentricToPV(TopocentricPV topoCoord)
topoCoord
- point in topocentric coordinates which shall be transformedpublic Vector3D transformFromCardanToPosition(CardanMountPosition cardan)
cardan
- Cardan mounting which shall be transformedpublic PVCoordinates transformFromCardanToPV(CardanMountPV cardan)
cardan
- Cardan mounting which shall be transformedpublic GeodeticPoint computeLimitVisibilityPoint(double radius, double azimuth, double elevation) throws PatriusException
This method can be used to compute visibility circles around ground stations for example, using a simple loop on azimuth, with either a fixed elevation or an elevation that depends on azimuth to take ground masks into account.
radius
- satellite distance to Earth centerazimuth
- pointing azimuth from stationelevation
- pointing elevation from stationPatriusException
- if point cannot be foundpublic GeodeticPoint pointAtDistance(double azimuth, double elevation, double distance) throws PatriusException
azimuth
- pointing azimuth from stationelevation
- pointing elevation from stationdistance
- distance to stationPatriusException
- if point cannot be computedpublic PVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame) throws PatriusException
PVCoordinates
of the topocentric frame origin in the selected frame.getPVCoordinates
in interface PVCoordinatesProvider
date
- current dateframe
- the frame where to define the positionPatriusException
- if position cannot be computed in given frameCopyright © 2020 CNES. All rights reserved.