MountingPars.hpp
1 #pragma once
2 
3 #include "opals/config.hpp"
4 #include "opals/Array.hpp"
5 
6 namespace opals {
7 
8 
9  //=============================================================================
10  /// \class MountingPars
11  /// Class describing the mounting calibration parameters
12  /// \author GM, AH
13  /// \date 19.01.2011
14  //=============================================================================
15  class OPALS_API MountingPars
16  {
17  public:
18  typedef opals::Array<double,3> Vector3D; ///< 3D-point coordinate array
19  typedef opals::Array<double,9> RotMat3D; ///< 3D rotation matrix (3x3 elements
20 
21  enum ReferenceSys{
22  global = 1,
23  local };
24 
25  enum CosysAlignemnt{
26  eCA_undef = 0,
27  //
28  eCA_frontRightDown,
29  eCA_frontDownLeft,
30  eCA_frontLeftUp,
31  eCA_frontUpRight,
32  //
33  eCA_backRightUp,
34  eCA_backDownRight,
35  eCA_backLeftDown,
36  eCA_backUpLeft,
37  //
38  eCA_leftUpFront,
39  eCA_leftBackUp,
40  eCA_leftDownBack,
41  eCA_leftFrontDown,
42  //
43  eCA_rightFrontUp,
44  eCA_rightUpBack,
45  eCA_rightBackDown,
46  eCA_rightDownFront,
47  //
48  eCA_upBackRight,
49  eCA_upLeftBack,
50  eCA_upFrontLeft,
51  eCA_upRightFront,
52  //
53  eCA_downFrontRight,
54  eCA_downBackLeft,
55  eCA_downRightBack,
56  eCA_downLeftFront
57  };
58 
59  public:
60  MountingPars();
61  virtual ~MountingPars();
62 
63  /// \name time lag
64  /// timeLag = t_trj - t_laser
65  ///@{
66  void setTimeLag( const double& dt ) { timeLag = dt; }
67  double getTimeLag() const { return timeLag; }
68  ///@}
69 
70  /// \name orientation of scanner system
71  ///@{
72  void setScannerSys( const CosysAlignemnt& scnSys ) { scannerSys = scnSys; }
73  CosysAlignemnt getScannerSys() const { return scannerSys; }
74  ///@}
75 
76 
77  /// \name shift vector (mounting)
78  /// ... ...
79  ///@{
80  void setMountShift( const Vector3D& sft ) { mountShift = sft; }
81  Vector3D getMountShift() const { return mountShift; }
82  ///@}
83 
84  /// \name reference of shift vector (mounting)
85  /// ... ...
86  ///@{
87  void setRefMountShift( const unsigned& refSft ) { refMountSft = refSft; }
88  unsigned getRefMountShift() const { return refMountSft; }
89  ///@}
90 
91  /// \name Rotation matrix (mounting)
92  /// ... ...
93  ///@{
94  void setMountRotation( const RotMat3D& rotmat ) { mountRotation = rotmat; }
95  RotMat3D getMountRotation() const { return mountRotation; }
96  ///@}
97 
98  /// \name shift vector (tilted mounting)
99  /// ... ...
100  ///@{
101  void setTiltShift( const Vector3D& sft ) { tiltShift = sft; }
102  Vector3D getTiltShift() const { return tiltShift; }
103  ///@}
104 
105  /// \name reference of shift vector (tilted mounting)
106  /// ... ...
107  ///@{
108  void setRefTiltShift( const unsigned& refSft ) { refTiltSft = refSft; }
109  unsigned getRefTiltShift() const { return refTiltSft; }
110  ///@}
111 
112  /// \name Rotation matrix (tilted mounting)
113  /// ... ...
114  ///@{
115  void setTiltRotation( const RotMat3D& rotmat ) { tiltRotation = rotmat; }
116  RotMat3D getTiltRotation() const { return tiltRotation; }
117  ///@}
118 
119 
120  /// \name Query global transformation
121  /// ... ...
122  ///@{
123  void getGlobalTransformation( Vector3D& shift, RotMat3D& rotmat);
124  ///@}
125 
126 
127 
128  private:
129  double timeLag;
130  unsigned refMountSft, refTiltSft;
131  CosysAlignemnt scannerSys;
132  Vector3D mountShift, tiltShift;
133  RotMat3D mountRotation, tiltRotation;
134  };
135 }
Definition: MountingPars.hpp:15
opals::Array< double, 9 > RotMat3D
3D rotation matrix (3x3 elements
Definition: MountingPars.hpp:19
@ timeLag
sessions.trajectory group(opalsStripAdjust)
Contains the public interface of OPALS.
Definition: AbsValueOrQuantile.hpp:8
@ local
LSM for a set of patches (xy position and patch size)
opals::Array< double, 3 > Vector3D
3D-point coordinate array
Definition: MountingPars.hpp:18
@ global
LSM for entire overlap area.