All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
EcefTangentBasis.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Space.h"
6 #include "Streaming.h"
7 #include "VectorMath.h"
8 
9 namespace Eegeo
10 {
11  namespace Space
12  {
24  {
25  public:
27 
29 
33  EcefTangentBasis(const dv3& pointEcef, const v3& heading);
34 
35  const dv3& GetPointEcef() const { return m_pointEcef; }
36  const v3& GetRight() const { return m_basisRight; }
37  const v3& GetUp() const { return m_basisUp; }
38  const v3& GetForward() const { return m_basisForward; }
39 
41 
45  void Set(const dv3& pointEcef, const v3& heading);
46 
47  void SetPoint(const dv3& pointEcef)
48  {
49  Set(pointEcef, m_basisForward);
50  }
51 
52  void SetHeading(const v3& heading)
53  {
54  Set(m_pointEcef, heading);
55  }
56 
58  /* ! \param out. An output matrix to store the result
59  */
60  void GetBasisOrientationAsMatrix(m33& out) const;
61 
62  m44 GetEcefToTangentTransform() const;
63 
64  m44 GetTangentToEcefTransform() const;
65 
67 
70 
71  private:
72  EcefTangentBasis(dv3 point, v3 right, v3 up, v3 forward);
73 
74  dv3 m_pointEcef;
75  v3 m_basisRight;
76  v3 m_basisUp;
77  v3 m_basisForward;
78  };
79  }
80 }