gistoolkit.projection.ellipsoid.transform
Class CoordinateFrameRotation

java.lang.Object
  extended bygistoolkit.projection.ellipsoid.transform.EllipsoidTransform
      extended bygistoolkit.projection.ellipsoid.transform.PositionVectorTransform
          extended bygistoolkit.projection.ellipsoid.transform.CoordinateFrameRotation

public class CoordinateFrameRotation
extends PositionVectorTransform

Although being common practice in particularly the European E&P industry Position Vector Transformation sign convention is not universally accepted. A variation on this formula is also used, particularly in the USA E&P industry. That formula is based on the same definition of translation and scale parameters, but a different definition of the rotation parameters. The associated convention is known as the "Coordinate Frame Rotation" convention. The formula is:

 (X’)         (  1      +Rz     -Ry)   (X)     (dX)
 (Y’)  =  M * ( -Rz      1      +Rx) * (Y)  +  (dY)
 (Z’)         ( +Ry   -Rx       1 )    (Z)     (dZ)
 
and the parameters are defined as: (dX, dY, dZ) : Translation vector, to be added to the point's position vector in coordinate system 'A' in order to transform from system 'A' to system 'B'; also: the coordinates of the origin of system 'A' in the 'B' frame. (Rx, Ry, Rz) : Rotations to be applied to the coordinate frame. The sign convention is such that a positive rotation of the frame about an axis is defined as a clockwise rotation of the coordinate frame when viewed from the origin of the Cartesian coordinate system in the positive direction of that axis, that is a positive rotation about the Z-axis only from system 'A' to system 'B' will result in a smaller longitude value for the point in system 'B'. M : The scale factor to be applied to the position vector in coordinate system 'A' in order to obtain the correct scale of coordinate system 'B'. M = (1+S*10 6), whereby S is the scale correction expressed in parts per million. In the absence of rotations the two formulas are identical; the difference is solely in the rotations. The name of the second method reflects this. Note that the same rotation that is defined as positive in the first method is consequently negative in the second and vice versa. It is therefore crucial that the convention underlying the definition of the rotation parameters is clearly understood and is communicated when exchanging datum transformation parameters, so that the parameters may be associated with the correct coordinate transformation method (algorithm).

Author:
ithaqua

Nested Class Summary
 
Nested classes inherited from class gistoolkit.projection.ellipsoid.transform.PositionVectorTransform
PositionVectorTransform.EditPanel
 
Field Summary
 
Fields inherited from class gistoolkit.projection.ellipsoid.transform.PositionVectorTransform
myScale, myXr, myXt, myYr, myYt, myZr, myZt
 
Constructor Summary
CoordinateFrameRotation()
          Creates a new CoordinateFrameRotation
CoordinateFrameRotation(Ellipsoid inFromEllipsoid, Ellipsoid inToEllipsoid, double inXTranslation, double inYTranslation, double inZTranslation, double inXRotation, double inYRotation, double inZRotation, double inScaleDifference)
          Creates new CoordinateFrameRotation.
 
Method Summary
protected  void doForward(Point inPoint)
          Transform the coordinates in the forward direction
protected  void doReverse(Point inPoint)
          Transform the coordinates in the reverse direction
static void main(java.lang.String[] inargs)
          Test this transform
 
Methods inherited from class gistoolkit.projection.ellipsoid.transform.PositionVectorTransform
getEditPanel, getScale, getXRotation, getXTranslation, getYRotation, getYTranslation, getZRotation, getZTranslation, setParameter, setScale, setXRotation, setXTranslation, setYRotation, setYTranslation, setZRotation, setZTranslation
 
Methods inherited from class gistoolkit.projection.ellipsoid.transform.EllipsoidTransform
forward, getFromEllipsoid, getIsReversed, getName, getToEllipsoid, reverse, setFromEllipsoid, setIsReversed, setName, setToEllipsoid, toCartesian, toPolar, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CoordinateFrameRotation

public CoordinateFrameRotation()
Creates a new CoordinateFrameRotation


CoordinateFrameRotation

public CoordinateFrameRotation(Ellipsoid inFromEllipsoid,
                               Ellipsoid inToEllipsoid,
                               double inXTranslation,
                               double inYTranslation,
                               double inZTranslation,
                               double inXRotation,
                               double inYRotation,
                               double inZRotation,
                               double inScaleDifference)
Creates new CoordinateFrameRotation. The To and From ellipsoids provide the reference frame. The STranslation and YTranslation are in the units of measure of the ellipsoids The Rotation parameters must be epxressed in decimal degreese. The scale difference is expressed in parts per million or ppm.

Method Detail

doForward

protected void doForward(Point inPoint)
Transform the coordinates in the forward direction

Overrides:
doForward in class PositionVectorTransform

doReverse

protected void doReverse(Point inPoint)
Transform the coordinates in the reverse direction

Overrides:
doReverse in class PositionVectorTransform

main

public static void main(java.lang.String[] inargs)
Test this transform