#include <sstransf.h>
Public Member Functions | |
SSTransform () | |
default constructor with: $s = 1, r_o = 0, R = I$ | |
void | set_translation (double dx, double dy, double dz) |
set translation vector | |
void | set_rot_matrix (const DRotMatrix3 &rm) |
set rotation matrix | |
void | set_scale (double s) |
set scale factor | |
void | set_rot_matrix (double eps_x, double eps_y, double eps_z) |
set/get scale correction (s = 1 + m) | |
void | transform (double x1, double y1, double z1, double &x2, double &y2, double &z2) const |
transformation of position vector $r_1 r_2$ | |
void | inv_transform (double x2, double y2, double z2, double &x1, double &y1, double &z1) const |
inverse transformation of position vector $r_2 r_1$ | |
bool | read (istream &is) |
read transformation parameters: scale and translation vector Parametrisation of rotation matrix:
| |
void | print (ostream &os) const |
print transformation parameters | |
void | invert () |
invert transformation parameters | |
Private Attributes | |
double | _dx |
translation in X | |
double | _dy |
translation in Y | |
double | _dz |
translation in Z | |
DRotMatrix3 | _rot_matrix |
rotation matrix | |
double | _scale |
scale |
Also known as 7-parameter transformation or Helmert transformation. Transformation between two 3-dimensional cartesian coordinate systems in the general case by three translations, an orthogonal rotation matrix and a scale:
\[ r_2 = r_o + s R r_1 \]
and with the inverse transformation:
\[ r_1 = {1}{s} (r_2 - r_o) R^T \]
where
{tabular}{ll} $r_1 = (X_1, Y_1, Z_1)$ & position vector in system 1\ $r_2 = (X_2, Y_2, Z_2)$ & position vector in system 2\ $r_o = (X_o, Y_o, Z_o)$ & translation vector or origin \ $s$ & scale factor \ $R$ & rotation matrix. \ {tabular}
The 7 transformation parameters are dervied by a set of points common to both coordinate systems.
In geodetic applications this transformation is called Bursa-Wolf-model. See Heck: Rechenverfahren und Auswertemodelle der Landesvermessung (1980, pp. 48, 345, 378) and Torge: Geodesy (1980, pp. 189).
void GenLib2::SSTransform::set_rot_matrix | ( | double | eps_x, | |
double | eps_y, | |||
double | eps_z | |||
) |
set/get scale correction (s = 1 + m)
set rotation matrix for small rotations (Euler angles). Attention: The differential rotations have in the template class RotMatrix3 the opposite sign!
References _rot_matrix.