JEphem Informatic Trail JEphem source code SpaceConstants.java
//*********************************************************************************
// interface jephem.astro.spacetime.SpaceConstants
// Software released under the General Public License (version 2 or later), available at
// http://www.gnu.org/copyleft/gpl.html
//*********************************************************************************
package jephem.astro.spacetime;

/*********************************************************************************
Interface containing constants related with space.
Related methods can be found in class {@link Space}.

@author Thierry Graff
@history xxx xx 2001 : Creation from a part of jephem.astro.Body.java.

@todo : remove the labels from coordGroup comments
**********************************************************************************/
public interface SpaceConstants{

  //=================================================================================
  //                                CONSTANTS
  //=================================================================================

  /** Value of light velocity, (value UAI 1976 : 299792458 km.s<SUP>-1</SUP>). */
  public static final double LIGHT_VELOCITY = 299792458;

  //****************************************************
  // Constants to desingate coordinate expressions.
  // Values used for array purposes ; must be 0, 1, 2 ...
  //****************************************************
  /** Constant designating the cartesian way to express coordinates. */
  public static final int CARTESIAN = 0;
  /** Constant designating the spherical way to express coordinates. */
  public static final int SPHERICAL = 1;
  /** Array containing labels of ways to express coordinates.
  <BR>Use <CODE>SpaceConstants.CARTESIAN</CODE> or <CODE>SPHERICAL</CODE> constants to access to
  its elements. */
//  public static final String[] coordExprLabels = {"Cartesian", "Spherical"};

  //****************************************************
  // Constants to desingate frames.
  // Values used for array purposes ; must be 0, 1, 2 ...
  //****************************************************
  /** Constant to express that of a coordinate is expressed in the frame
  of the theory used to compute it. */
  public static final int FRAME_THEORY = 0;

  /** Constant designating heliocentric ecliptic reference frame,
  for geometric coordinates. */
  public static final int FRAME_EC_HELIO_GEOMETRIC = 1;

  /** Constant designating geocentric ecliptic reference frame ;
  coordinates expressed in this frame are <B>true apparent coordinates</B>.
  <BR>Reference system : FK5.
  <BR>Reference plane = mean ecliptic of date.
  <BR>Equinox = true equinox of date.
  */
  public static final int FRAME_ECLIPTIC = 2;

  /** Constant designating geocentric equatorial reference frame ;
  coordinates expressed in this frame are <B>true apparent coordinates</B>.
  <BR>Reference system : FK5.
  <BR>Reference plane = true equator of date.
  <BR>Equinox = true equinox of date.
  */
  public static final int FRAME_EQUATORIAL = 3;

  /** Constant designating equatorial topocentric reference frame. */
//  public static final int FRAME_EQUATORIAL_TOPOCENTRIC = 4;

  /** Constant designating horizontal topocentric reference frame. */
  public static final int FRAME_HORIZONTAL_TOPOCENTRIC = 5;

  /** Constant designating galactic reference frame. */
  public static final int FRAME_GALACTIC = 6;

  //******************************************************
  // Constants to desingate coordinates.
  // Values used for array purposes ; must be 0, 1, 2 ... 5
  //******************************************************

  /** Usual number of coordinates - value= 3 ; just for cleaner code. */
  public static final int NB_COORDS = 3;

  /** Constant designating the first spatial coordinate (<B>X</B> in cartesian, <B><FONT FACE="Symbol">r</FONT></B> in spherical). */
  public static final int COORD_X0 = 0;
  /** Constant designating the second spatial coordinate (<B>Y</B> in cartesian, <B><FONT FACE="Symbol">q</FONT></B> in spherical). */
  public static final int COORD_X1 = 1;
  /** Constant designating the third spatial coordinate (<B>Z</B> in cartesian, <B><FONT FACE="Symbol">j</FONT></B> in spherical). */
  public static final int COORD_X2 = 2;
  /** Constant designating the first velocity coordinate (<B>dX/dt</B> in cartesian, <B>d<FONT FACE="Symbol">r</FONT>/dt</B> in spherical). */
  public static final int COORD_V0 = 3;
  /** Constant designating the second velocity coordinate (<B>dY/dt</B> in cartesian, <B>d<FONT FACE="Symbol">q</FONT>/dt</B> in spherical). */
  public static final int COORD_V1 = 4;
  /** Constant designating the third velocity coordinate (<B>dZ/dt</B> in cartesian, <B>d<FONT FACE="Symbol">j</FONT>/dt</B> in spherical). */
  public static final int COORD_V2 = 5;

  //******************************************************
  // Constants to desingate groups of 3 coordinates.
  // Values used for array purposes ; must be 0, 1, 2 ...
  //******************************************************

  /** Constant designating the "X, Y, Z" group of coordinates.
  <BR><CODE>labels = {"X", "Y", "Z"}</CODE>. */
  public static final int COORDGROUP_XYZ = 0;

  /** Constant designating the "delta, beta, lambda" group of coordinates.
  <BR><CODE>labels = {"del", "bet", "lam"}</CODE>. */
  public static final int COORDGROUP_DELTA_BETA_LAMBDA = 1;

  /** Constant designating the "r, l, b" group of coordinates.
  <BR><CODE>labels = {"r", "l", "b"}</CODE>. */
  public static final int COORDGROUP_RLB = 2;

  /** Constant designating the "distance alpha, delta" group of coordinates.
  <BR><CODE>labels = {"dist.", "alpha", "beta"}</CODE>. */
  public static final int COORDGROUP_DIST_ALPHA_DELTA = 3;

}//end interface SpaceConstants