org.orekit.frames
Class TopocentricFrame

java.lang.Object
  extended by org.orekit.frames.Frame
      extended by org.orekit.frames.TopocentricFrame
All Implemented Interfaces:
Serializable, PVCoordinatesProvider

public final class TopocentricFrame
extends Frame
implements PVCoordinatesProvider

Topocentric frame.

Frame associated to a position at the surface of a body shape.

Author:
Véronique Pommier-Maurussane
See Also:
Serialized Form

Constructor Summary
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.
 
Method Summary
 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 .
 
Methods inherited from class org.orekit.frames.Frame
getAncestor, getDepth, getFrozenFrame, getName, getParent, getRoot, getTransformJacobian, getTransformProvider, getTransformTo, getTransformTo, getTransformTo, getTransformTo, isChildOf, isPseudoInertial, isQuasiInertial, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TopocentricFrame

public TopocentricFrame(BodyShape bodyParentShape,
                        GeodeticPoint geodeticPoint,
                        String name)
This constructor builds an east oriented topocentric frame. Its axis are (East, North, Zenith).

Parameters:
bodyParentShape - body shape on which the local point is defined
geodeticPoint - local surface point where topocentric frame is defined
name - the string representation

TopocentricFrame

public TopocentricFrame(BodyShape bodyParentShape,
                        GeodeticPoint geodeticPoint,
                        double frameOrientation,
                        String name)
This constructor builds a topocentric frame which Z-axis is the zenith. The X-Axis is the image of the North direction by the rotation of angle "orientation" (ie the angle between the North direction and the X-axis will be orientation, counterclockwise. If this angle is 0, then the frame's unit vectors are (North, West, Zenith).

Parameters:
bodyParentShape - body shape on which the local point is defined
geodeticPoint - local surface point where topocentric frame is defined
frameOrientation - the angle in radians between the North direction and the X-axis
name - the string representation
Method Detail

getOrientation

public double getOrientation()
Returns:
the oriented angle between the local north and the x axis (counterclockwise).

getParentShape

public BodyShape getParentShape()
Get the body shape on which the local point is defined.

Returns:
body shape on which the local point is defined

getPoint

public GeodeticPoint getPoint()
Get the surface point defining the origin of the frame.

Returns:
surface point defining the origin of the frame

getZenith

public Vector3D getZenith()
Get the zenith direction of topocentric frame, expressed in parent shape frame.

The zenith direction is defined as the normal to local horizontal plane.

Returns:
unit vector in the zenith direction
See Also:
getNadir()

getNadir

public Vector3D getNadir()
Get the nadir direction of topocentric frame, expressed in parent shape frame.

The nadir direction is the opposite of zenith direction.

Returns:
unit vector in the nadir direction
See Also:
getZenith()

getNorth

public Vector3D getNorth()
Get the north direction of topocentric frame, expressed in parent shape frame.

The north direction is defined in the horizontal plane (normal to zenith direction) and following the local meridian.

Returns:
unit vector in the north direction
See Also:
getSouth()

getSouth

public Vector3D getSouth()
Get the south direction of topocentric frame, expressed in parent shape frame.

The south direction is the opposite of north direction.

Returns:
unit vector in the south direction
See Also:
getNorth()

getEast

public Vector3D getEast()
Get the east direction of topocentric frame, expressed in parent shape frame.

The east direction is defined in the horizontal plane in order to complete direct triangle (east, north, zenith).

Returns:
unit vector in the east direction
See Also:
getWest()

getWest

public Vector3D getWest()
Get the west direction of topocentric frame, expressed in parent shape frame.

The west direction is the opposite of east direction.

Returns:
unit vector in the west direction
See Also:
getEast()

getElevation

public double getElevation(Vector3D extPoint,
                           Frame frame,
                           AbsoluteDate date)
                    throws OrekitException
Get the elevation of a point with regards to the local point.

The elevation is the angle between the local horizontal and the direction from local point to given point.

Parameters:
extPoint - point for which elevation shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
elevation of the point
Throws:
OrekitException - if frames transformations cannot be computed

getElevationRate

public double getElevationRate(PVCoordinates extPV,
                               Frame frame,
                               AbsoluteDate date)
                        throws OrekitException
Get the elevation rate of a point.

Parameters:
extPV - point for which elevation rate shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
elevation rate of the point
Throws:
OrekitException - if frames transformations cannot be computed

getAzimuth

public double getAzimuth(Vector3D extPoint,
                         Frame frame,
                         AbsoluteDate date)
                  throws OrekitException
Get the azimuth of a point with regards to the topocentric frame center point.

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.

Parameters:
extPoint - point for which azimuth shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
azimuth of the point
Throws:
OrekitException - if frames transformations cannot be computed

getAzimuthRate

public double getAzimuthRate(PVCoordinates extPV,
                             Frame frame,
                             AbsoluteDate date)
                      throws OrekitException
Get the azimuth rate of a point.

Parameters:
extPV - point for which the azimuth rate shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
azimuth rate of the point
Throws:
OrekitException - if frames transformations cannot be computed

getXangleCardan

public double getXangleCardan(Vector3D extPoint,
                              Frame frame,
                              AbsoluteDate date)
                       throws OrekitException
Get the Cardan x angle of a point.

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

Parameters:
extPoint - point for which the x angle shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
x angle of the point.
Throws:
OrekitException - if frames transformations cannot be computed

getXangleCardanRate

public double getXangleCardanRate(PVCoordinates extPV,
                                  Frame frame,
                                  AbsoluteDate date)
                           throws OrekitException
Get the Cardan x angle rate. See Spaceflight Dynamics, Part I, chapter 10.4.5.2

Parameters:
extPV - point for which the x angle rate shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
x angle rate of the point.
Throws:
OrekitException - if frames transformations cannot be computed

getYangleCardan

public double getYangleCardan(Vector3D extPoint,
                              Frame frame,
                              AbsoluteDate date)
                       throws OrekitException
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.

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

Parameters:
extPoint - point for which the y angle shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
y angle of the point.
Throws:
OrekitException - if frames transformations cannot be computed

getYangleCardanRate

public double getYangleCardanRate(PVCoordinates extPV,
                                  Frame frame,
                                  AbsoluteDate date)
                           throws OrekitException
Get the Cardan y angle rate. See Spaceflight Dynamics, Part I, chapter 10.4.5.2

Parameters:
extPV - point for which the y angle rate shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
y angle rate of the point.
Throws:
OrekitException - if frames transformations cannot be computed

getRange

public double getRange(Vector3D extPoint,
                       Frame frame,
                       AbsoluteDate date)
                throws OrekitException
Get the range of a point with regards to the topocentric frame center point.

Parameters:
extPoint - point for which range shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
range (distance) of the point
Throws:
OrekitException - if frames transformations cannot be computed

getRangeRate

public double getRangeRate(PVCoordinates extPV,
                           Frame frame,
                           AbsoluteDate date)
                    throws OrekitException
Get the range rate of a point with regards to the topocentric frame center point.

Parameters:
extPV - point/velocity for which range rate shall be computed
frame - frame in which the point is defined
date - computation date
Returns:
range rate of the point (positive if point departs from frame)
Throws:
OrekitException - if frames transformations cannot be computed

transformFromPositionToTopocentric

public TopocentricPosition transformFromPositionToTopocentric(Vector3D extPoint,
                                                              Frame frame,
                                                              AbsoluteDate date)
                                                       throws OrekitException
Transform a Cartesian position coordinates into topocentric coordinates in this local topocentric frame.

Parameters:
extPoint - point in Cartesian coordinates which shall be transformed
frame - frame in which the point is defined
date - computation date
Returns:
topocentic coordinates of the point
Throws:
OrekitException - OrekitException if frames transformations cannot be computed

transformFromPVToTopocentric

public TopocentricPV transformFromPVToTopocentric(PVCoordinates extPV,
                                                  Frame frame,
                                                  AbsoluteDate date)
                                           throws OrekitException
Transform a Cartesian position and velocity coordinates into topocentric coordinates in this local topocentric frame.

Parameters:
extPV - point in Cartesian coordinates which shall be transformed
frame - frame in which the point is defined
date - computation date
Returns:
topocentic coordinates of the point
Throws:
OrekitException - OrekitException if frames transformations cannot be computed

transformFromPositionToCardan

public CardanMountPosition transformFromPositionToCardan(Vector3D extPoint,
                                                         Frame frame,
                                                         AbsoluteDate date)
                                                  throws OrekitException
Transform a Cartesian position coordinates into Cardan mounting in this local topocentric frame.

Parameters:
extPoint - point in Cartesian coordinates which shall be transformed
frame - frame in which the point is defined
date - computation date
Returns:
Cardan mounting of the point
Throws:
OrekitException - OrekitException if frames transformations cannot be computed

transformFromPVToCardan

public CardanMountPV transformFromPVToCardan(PVCoordinates extPV,
                                             Frame frame,
                                             AbsoluteDate date)
                                      throws OrekitException
Transform a Cartesian position coordinates into Cardan mounting in this local topocentric frame.

Parameters:
extPV - point in Cartesian coordinates which shall be transformed
frame - frame in which the point is defined
date - computation date
Returns:
Cardan mounting of the point
Throws:
OrekitException - OrekitException if frames transformations cannot be computed

transformFromTopocentricToPosition

public Vector3D transformFromTopocentricToPosition(TopocentricPosition topoCoord)
Transform topocentric set of coordinates frame into Cartesian position coordinates expressed in this local topocentric.

Parameters:
topoCoord - point in topocentric coordinates which shall be transformed
Returns:
Cartesian coordinates of the point (only the position)

transformFromTopocentricToPV

public PVCoordinates transformFromTopocentricToPV(TopocentricPV topoCoord)
Transform topocentric set of coordinates into Cartesian position and velocity coordinates expressed in this local topocentric frame .

Parameters:
topoCoord - point in topocentric coordinates which shall be transformed
Returns:
Cartesian coordinates of the point (position and velocity)

transformFromCardanToPosition

public Vector3D transformFromCardanToPosition(CardanMountPosition cardan)
Transform a Cardan mounting into Cartesian coordinates (only position) expressed in this local topocentric frame.

Parameters:
cardan - Cardan mounting which shall be transformed
Returns:
cartesian coordinates (only the position)

transformFromCardanToPV

public PVCoordinates transformFromCardanToPV(CardanMountPV cardan)
Transform a Cardan mounting into Cartesian coordinates (position and velocity) expressed in this local topocentric frame.

Parameters:
cardan - Cardan mounting which shall be transformed
Returns:
cartesian coordinates (position and velocity)

computeLimitVisibilityPoint

public GeodeticPoint computeLimitVisibilityPoint(double radius,
                                                 double azimuth,
                                                 double elevation)
                                          throws OrekitException
Compute the limit visibility point for a satellite in a given direction.

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.

Parameters:
radius - satellite distance to Earth center
azimuth - pointing azimuth from station
elevation - pointing elevation from station
Returns:
limit visibility point for the satellite
Throws:
OrekitException - if point cannot be found

pointAtDistance

public GeodeticPoint pointAtDistance(double azimuth,
                                     double elevation,
                                     double distance)
                              throws OrekitException
Compute the point observed from the station at some specified distance.

Parameters:
azimuth - pointing azimuth from station
elevation - pointing elevation from station
distance - distance to station
Returns:
observed point
Throws:
OrekitException - if point cannot be computed

getPVCoordinates

public PVCoordinates getPVCoordinates(AbsoluteDate date,
                                      Frame frame)
                               throws OrekitException
Get the PVCoordinates of the topocentric frame origin 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 topocentric frame origin (m and m/s)
Throws:
OrekitException - if position cannot be computed in given frame


Copyright © 2017 CNES. All Rights Reserved.