Package com.luciad.geometry.cartesian
Class TLcdXYZRotation
java.lang.Object
com.luciad.geometry.cartesian.TLcdXYZRotation
- All Implemented Interfaces:
ILcdXYZRotation
,Serializable
Implements
ILcdXYZRotation
(3D rotation in a cartesian coordinate system),
forward and inverse rotations.
An ILcdXYZRotation
is a cartesian 3D rotation defined by three
Eulerian angles (a, b, g).
The angles are in decimal degrees and measured counterclockwise
around the X, Y, and Z axes of a cartesian coordinate system.
- rotation a around the X-axis
- rotation b around the Y-axis
- rotation g around the Z-axis
For geodetic projections with an origin of the projection (l0,j0) and with an oblique central meridianin an azimuthal direction Az the rotations are applied in following order:
- l0 around Z-axis
- -j0 around Y-axis
- -Az around X-axis
Note that for the assigned cartesian coordinate axes to an ellipsoid angles are measured:
- l0 is positive counterclockwise
- j0 is positive clockwise
- Az is positive clockwise and measured from the north
- See Also:
-
Constructor Summary
ConstructorDescriptionDefault constructor creates a no-rotation.TLcdXYZRotation
(double aAlpha, double aBeta, double aGamma) Constructor creates a rotation with the three given angles. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Two 3D rotations are equal if they have the same rotation angles around the three cartesian axes (applied in the same order).double
getAlpha()
Gets the eulerian angle a around the X-axis in decimal degrees and positive counterclockwise (right hand rule).double
getBeta()
Gets the eulerian angle b around the Y-axis in decimal degrees and positive counterclockwise (right hand rule).double
getGamma()
Gets the eulerian angle g around the Z-axis in decimal degrees and positive counterclockwise (right hand rule).int
hashCode()
void
inverseRotateSFCT
(ILcdPoint aXYZPoint, ILcd3DEditablePoint aXYZPointOut) Application of the 3D inverse rotation toaXYZPoint
results in theILcd3DEditablePoint
aXYZPointOut
.void
rotateSFCT
(ILcdPoint aXYZPoint, ILcd3DEditablePoint aXYZPointOut) Apply the three rotations a, b, and g to the cartesianILcdPoint
aXYZPoint
.void
setAlpha
(double aAlpha) Sets the Eulerian angle a around the X-axis toaAlpha
.void
setBeta
(double aBeta) Sets the Eulerian angle b around the Y-axis toaBeta
.void
setGamma
(double aGamma) Sets the Eulerian angle g around the Z-axis toaGamma
.
-
Constructor Details
-
TLcdXYZRotation
public TLcdXYZRotation()Default constructor creates a no-rotation. -
TLcdXYZRotation
public TLcdXYZRotation(double aAlpha, double aBeta, double aGamma) Constructor creates a rotation with the three given angles.- Parameters:
aAlpha
- rotation a around the X-axis (decimal degrees).aBeta
- rotation b around the Y-axis (decimal degrees).aGamma
- rotation g around the Z-axis (decimal degrees).- See Also:
-
-
Method Details
-
setAlpha
public void setAlpha(double aAlpha) Description copied from interface:ILcdXYZRotation
Sets the Eulerian angle a around the X-axis toaAlpha
. The angle is in decimal degrees and positive counterclockwise (right hand rule).- Specified by:
setAlpha
in interfaceILcdXYZRotation
- Parameters:
aAlpha
- the Eulerian angle a around the X-axis.- See Also:
-
getAlpha
public double getAlpha()Description copied from interface:ILcdXYZRotation
Gets the eulerian angle a around the X-axis in decimal degrees and positive counterclockwise (right hand rule).- Specified by:
getAlpha
in interfaceILcdXYZRotation
- Returns:
- the eulerian angle a around the X-axis in decimal degrees and positive counterclockwise (right hand rule).
- See Also:
-
setBeta
public void setBeta(double aBeta) Description copied from interface:ILcdXYZRotation
Sets the Eulerian angle b around the Y-axis toaBeta
. The angle is in decimal degrees and positive counterclockwise (right hand rule).- Specified by:
setBeta
in interfaceILcdXYZRotation
- Parameters:
aBeta
- the Eulerian angle b around the Y-axis.- See Also:
-
getBeta
public double getBeta()Description copied from interface:ILcdXYZRotation
Gets the eulerian angle b around the Y-axis in decimal degrees and positive counterclockwise (right hand rule).- Specified by:
getBeta
in interfaceILcdXYZRotation
- Returns:
- the eulerian angle b around the Y-axis in decimal degrees and positive counterclockwise (right hand rule).
- See Also:
-
setGamma
public void setGamma(double aGamma) Description copied from interface:ILcdXYZRotation
Sets the Eulerian angle g around the Z-axis toaGamma
. The angle is in decimal degrees and positive counterclockwise (right hand rule).- Specified by:
setGamma
in interfaceILcdXYZRotation
- Parameters:
aGamma
- the Eulerian angle g around the Z-axis.- See Also:
-
getGamma
public double getGamma()Description copied from interface:ILcdXYZRotation
Gets the eulerian angle g around the Z-axis in decimal degrees and positive counterclockwise (right hand rule).- Specified by:
getGamma
in interfaceILcdXYZRotation
- Returns:
- the eulerian angle g around the Z-axis in decimal degrees and positive counterclockwise (right hand rule).
- See Also:
-
rotateSFCT
Description copied from interface:ILcdXYZRotation
Apply the three rotations a, b, and g to the cartesianILcdPoint
aXYZPoint
. The resulting cartesian coordinate isaXYZPointOut
.- Specified by:
rotateSFCT
in interfaceILcdXYZRotation
- Parameters:
aXYZPoint
- the point to be rotated.aXYZPointOut
- the resulting point of the rotation as side effect.
-
inverseRotateSFCT
Description copied from interface:ILcdXYZRotation
Application of the 3D inverse rotation toaXYZPoint
results in theILcd3DEditablePoint
aXYZPointOut
.- Specified by:
inverseRotateSFCT
in interfaceILcdXYZRotation
- Parameters:
aXYZPoint
- the point to be rotated.aXYZPointOut
- the resulting point of the rotation as side effect.
-
equals
Two 3D rotations are equal if they have the same rotation angles around the three cartesian axes (applied in the same order).- Specified by:
equals
in interfaceILcdXYZRotation
- Overrides:
equals
in classObject
-
hashCode
public int hashCode()
-