Public Member Functions | Static Public Attributes | Protected Attributes | List of all members
gnsstk::HelmertTransform Class Reference

Detailed Description

Helmert transformations, which are 7-parameter transformations between reference frames (i.e. ECEF position coordinates). A Helmert tranformation is defined by 7 parameters: a rotation(3), a translation(3) and scale factor(1).

Deprecated:
This enum is deprecated as of Dec 2022 and should not be used. Use TransformLibrary or HelmertTransformer instead.

Definition at line 63 of file HelmertTransform.hpp.

#include <HelmertTransform.hpp>

Public Member Functions

std::string asString () const noexcept
 
CommonTime getEpoch () const noexcept
 Get the time at which this transform becomes valid. More...
 
ReferenceFrame getFromFrame () const noexcept
 Get the reference frame this transform can convert from (or to). More...
 
ReferenceFrame getToFrame () const noexcept
 Get the reference frame this transform can convert to (or from). More...
 
 HelmertTransform () noexcept
 Default constructor. More...
 
 HelmertTransform (ReferenceFrame from, ReferenceFrame to, double irx, double iry, double irz, double itx, double ity, double itz, double sc, const std::string &desc, const CommonTime &refEpoch)
 
void transform (const Position &pos, Position &result)
 
void transform (const Triple &vec, ReferenceFrame frame, Triple &result)
 
void transform (const Vector< double > &vec, ReferenceFrame frame, Vector< double > &result)
 
void transform (const Xvt &xvt, Xvt &result)
 
void transform (double x, double y, double z, ReferenceFrame frame, double &rx, double &ry, double &rz)
 

Static Public Attributes

static const GNSSTK_EXPORT CommonTime PZ90Epoch
 Epoch at which GLONASS transitions from PZ90 to PZ90.02. More...
 
static const GNSSTK_EXPORT int stdCount = 5
 length of array of pre-defined HelmertTransforms More...
 
static const GNSSTK_EXPORT HelmertTransform stdTransforms [stdCount]
 array of all pre-defined HelmertTransforms More...
 

Protected Attributes

std::string description
 
CommonTime epoch
 epoch at which transform is first applicable More...
 
ReferenceFrame fromFrame
 Reference frame to which *this is applied. More...
 
Matrix< double > rotation
 the transform 3x3 rotation matrix (w/o scale) More...
 
double rx
 X axis rotation in radians. More...
 
double ry
 Y axis rotation in radians. More...
 
double rz
 Z axis rotation in radians. More...
 
double scale
 scale factor, dimensionless, 0=no scale More...
 
ReferenceFrame toFrame
 Reference frame resulting from *this transform. More...
 
Vector< double > translation
 the transform 3-vector in meters More...
 
double tx
 X axis translation in meters. More...
 
double ty
 Y axis translation in meters. More...
 
double tz
 Z axis translation in meters. More...
 

Constructor & Destructor Documentation

◆ HelmertTransform() [1/2]

gnsstk::HelmertTransform::HelmertTransform ( )
noexcept

Default constructor.

Definition at line 53 of file HelmertTransform.cpp.

◆ HelmertTransform() [2/2]

gnsstk::HelmertTransform::HelmertTransform ( ReferenceFrame  from,
ReferenceFrame  to,
double  irx,
double  iry,
double  irz,
double  itx,
double  ity,
double  itz,
double  sc,
const std::string &  desc,
const CommonTime refEpoch 
)

Explicit constructor, from the 7 parameters. All the inputs are unchanged.

This constructor and class are for data to be used with the transformation of the either of the two following forms (view via doxygen).

Warning
If the transformation parameters you wish to use use the transposed version of the rotation matrix (i.e. the signs on the rotation angles are reversed from what is shown below), make sure to flip the sign on the irx,iry,irz parameters to the constructor.

\[ \left[ {\begin{array}{c} X_{tgt} \\ Y_{tgt} \\ Z_{tgt} \\ \end{array} } \right] = \left[ {\begin{array}{c} T_x \\ T_y \\ T_z \\ \end{array} } \right] + (1 + S_c) \left[ {\begin{array}{ccc} 1 & R_z & -R_y \\ -R_z & 1 & R_x \\ R_y & -R_x & 1 \\ \end{array} } \right] \left[ {\begin{array}{c} X_{src} \\ Y_{src} \\ Z_{src} \\ \end{array} } \right] \]

\[ \left[ {\begin{array}{c} X_{tgt} \\ Y_{tgt} \\ Z_{tgt} \\ \end{array} } \right] = \left[ {\begin{array}{c} X_{src} \\ Y_{src} \\ Z_{src} \\ \end{array} } \right] + \left[ {\begin{array}{c} T_x \\ T_y \\ T_z \\ \end{array} } \right] + \left[ {\begin{array}{ccc} S_c & R_z & -R_y \\ -R_z & S_c & R_x \\ R_y & -R_x & S_c \\ \end{array} } \right] \left[ {\begin{array}{c} X_{src} \\ Y_{src} \\ Z_{src} \\ \end{array} } \right] \]

Parameters
[in]fromTransform takes "from" -> "to"
[in]toTransform takes "from" -> "to"
[in]irxX axis rotation angle in degrees
[in]iryY axis rotation angle in degrees
[in]irzZ axis rotation angle in degrees
[in]itxX axis translation in meters
[in]ityY axis translation in meters
[in]itzZ axis translation in meters
[in]scscale factor (dimensionless)
[in]descdescription of the transform, should include
[in]refEpochtime when transform became applicable (default=BOT) reference frames and an indication of the source (e.g. literature citation).
Exceptions
InvalidRequestif the transform is invalid.
Note
small angle approximation is used.
by construction, transpose(rotation) == inverse(rotation) (given small angle approximation).

Definition at line 68 of file HelmertTransform.cpp.

Member Function Documentation

◆ asString()

string gnsstk::HelmertTransform::asString ( ) const
noexcept

Dump the object to a multi-line string including reference frames, the 7 parameters and description.

Definition at line 119 of file HelmertTransform.cpp.

◆ getEpoch()

CommonTime gnsstk::HelmertTransform::getEpoch ( ) const
inlinenoexcept

Get the time at which this transform becomes valid.

Definition at line 205 of file HelmertTransform.hpp.

◆ getFromFrame()

ReferenceFrame gnsstk::HelmertTransform::getFromFrame ( ) const
inlinenoexcept

Get the reference frame this transform can convert from (or to).

Definition at line 197 of file HelmertTransform.hpp.

◆ getToFrame()

ReferenceFrame gnsstk::HelmertTransform::getToFrame ( ) const
inlinenoexcept

Get the reference frame this transform can convert to (or from).

Definition at line 201 of file HelmertTransform.hpp.

◆ transform() [1/5]

void gnsstk::HelmertTransform::transform ( const Position pos,
Position result 
)

Transform Position to another frame using this transform or its inverse.

Parameters
[in]posposition to be transformed; unchanged on output.
[out]resultposition after transformation.
Exceptions
InvalidRequestif transformation, or inverse, cannot act on ReferenceFrame of input.

Definition at line 151 of file HelmertTransform.cpp.

◆ transform() [2/5]

void gnsstk::HelmertTransform::transform ( const Triple vec,
ReferenceFrame  frame,
Triple result 
)

Transform a Triple using this Helmert transformation or its inverse.

Parameters
[in]veccontaining position and frame to be transformed.
[in]frameTransform takes "frame" -> "new-frame"
[out]resultwith position in new frame
Exceptions
InvalidRequestif transformation, or inverse, cannot act on ReferenceFrame of input.

Definition at line 220 of file HelmertTransform.cpp.

◆ transform() [3/5]

void gnsstk::HelmertTransform::transform ( const Vector< double > &  vec,
ReferenceFrame  frame,
Vector< double > &  result 
)

Transform a 3-vector, in the given frame, using this Helmert transformation.

Parameters
[in]vec3-vector of position coordinates in "from" frame.
[in]frameTransform takes "frame" -> "new-frame"
[out]result3-vector in "new-frame" frame.
Exceptions
InvalidRequestif transformation, or inverse, cannot act on ReferenceFrame of input.

Definition at line 194 of file HelmertTransform.cpp.

◆ transform() [4/5]

void gnsstk::HelmertTransform::transform ( const Xvt xvt,
Xvt result 
)

Transform an Xvt using this Helmert transformation or its inverse.

Parameters
[in]xvtcontaining position and frame to be transformed.
[out]resultwith position in new frame
Exceptions
InvalidRequestif transformation, or inverse, cannot act on ReferenceFrame of input.

Definition at line 239 of file HelmertTransform.cpp.

◆ transform() [5/5]

void gnsstk::HelmertTransform::transform ( double  x,
double  y,
double  z,
ReferenceFrame  frame,
double &  rx,
double &  ry,
double &  rz 
)

Transform 3 doubles, in the given frame, using this Helmert transformation.

Parameters
[in]x,y,z3-vector of position coordinates in "from" frame.
[in]frameTransform takes "frame" -> "new-frame"
[out]rx,ry,rzresult 3-vector in "new-frame" frame.
Exceptions
InvalidRequestif transformation, or inverse, cannot act on ReferenceFrame of input.

Definition at line 260 of file HelmertTransform.cpp.

Member Data Documentation

◆ description

std::string gnsstk::HelmertTransform::description
protected

an arbitrary string describing the transform; it should include the source.

Definition at line 242 of file HelmertTransform.hpp.

◆ epoch

CommonTime gnsstk::HelmertTransform::epoch
protected

epoch at which transform is first applicable

Definition at line 238 of file HelmertTransform.hpp.

◆ fromFrame

ReferenceFrame gnsstk::HelmertTransform::fromFrame
protected

Reference frame to which *this is applied.

Definition at line 221 of file HelmertTransform.hpp.

◆ PZ90Epoch

const CommonTime gnsstk::HelmertTransform::PZ90Epoch
static

Epoch at which GLONASS transitions from PZ90 to PZ90.02.

Definition at line 209 of file HelmertTransform.hpp.

◆ rotation

Matrix<double> gnsstk::HelmertTransform::rotation
protected

the transform 3x3 rotation matrix (w/o scale)

Definition at line 234 of file HelmertTransform.hpp.

◆ rx

double gnsstk::HelmertTransform::rx
protected

X axis rotation in radians.

Definition at line 225 of file HelmertTransform.hpp.

◆ ry

double gnsstk::HelmertTransform::ry
protected

Y axis rotation in radians.

Definition at line 226 of file HelmertTransform.hpp.

◆ rz

double gnsstk::HelmertTransform::rz
protected

Z axis rotation in radians.

Definition at line 227 of file HelmertTransform.hpp.

◆ scale

double gnsstk::HelmertTransform::scale
protected

scale factor, dimensionless, 0=no scale

Definition at line 231 of file HelmertTransform.hpp.

◆ stdCount

const GNSSTK_EXPORT int gnsstk::HelmertTransform::stdCount = 5
static

length of array of pre-defined HelmertTransforms

Definition at line 212 of file HelmertTransform.hpp.

◆ stdTransforms

const HelmertTransform gnsstk::HelmertTransform::stdTransforms
static

array of all pre-defined HelmertTransforms

Definition at line 215 of file HelmertTransform.hpp.

◆ toFrame

ReferenceFrame gnsstk::HelmertTransform::toFrame
protected

Reference frame resulting from *this transform.

Definition at line 222 of file HelmertTransform.hpp.

◆ translation

Vector<double> gnsstk::HelmertTransform::translation
protected

the transform 3-vector in meters

Definition at line 235 of file HelmertTransform.hpp.

◆ tx

double gnsstk::HelmertTransform::tx
protected

X axis translation in meters.

Definition at line 228 of file HelmertTransform.hpp.

◆ ty

double gnsstk::HelmertTransform::ty
protected

Y axis translation in meters.

Definition at line 229 of file HelmertTransform.hpp.

◆ tz

double gnsstk::HelmertTransform::tz
protected

Z axis translation in meters.

Definition at line 230 of file HelmertTransform.hpp.


The documentation for this class was generated from the following files:


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:45