VR-Link API Documentation for HLA 1.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vlDcm.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
7 #ifndef vlDcm_H_
8 #define vlDcm_H_
9 
10 #include "vlVector.h"
11 #include "directedRotRate.h"
12 
16 
17 
18 #ifdef DtUSE_UTILITIES_NAMESPACE
19 namespace DtUSE_UTILITIES_NAMESPACE
20 {
21 #endif
22 
23 class DtQuaternion;
24 class DtTaitBryan;
26 
27 
29 typedef DtVector32 DtBodyRates;
30 
40 {
41  public:
42 
44  DtDcm();
45 
47  DtDcm(double a, double b, double c,
48  double d, double e, double f,
49  double g, double h, double i);
50 
52  DtDcm(const DtVector& a, const DtVector& b, const DtVector& c);
53 
55  DtDcm(const DtDcm &other);
56 
58  DtDcm(const DtQuaternion &quat);
59 
61  DtDcm(const DtTaitBryan &tb);
62 
64  DtDcm &operator=(const DtDcm &other);
65 
68  int operator==(const DtDcm& other) const;
69 
72  int operator!=(const DtDcm& other) const;
73 
75  bool isOrthonormal() const;
76 
78  operator DtVector* ();
79  operator const DtVector* () const;
80 
82  DtVector &operator[](int i);
83  const DtVector &operator[](int i) const;
84 
86  void print() const;
87 
89  void setToZero();
90 
91 public:
92  static const DtDcm& zero();
93  static const DtDcm& identity();
94 
95 protected:
96  DtVector rep[3];
97 };
98 
102 
103 DT_DLL_MATRIX void DtDcmDcmRotAxis(const DtDcm& a2ref, const DtDcm& b2ref, DtVector& n /* a2b */);
104 DT_DLL_MATRIX void DtDcmDcmRotAxis(const DtDcm& a2ref, const DtDcm& b2ref, DtVector32& n /* a2b */);
106 
107 
109 DT_DLL_MATRIX void DtDcmFixMatrix(DtDcm& mat, int axis);
110 
111 DT_DLL_MATRIX double DtDcmDeterminant(const DtDcm& m);
112 DT_DLL_MATRIX void DtDcmAdd(const DtDcm& m1, const DtDcm& m2, DtDcm& result); /* result = m1 + m2 */
113 DT_DLL_MATRIX void DtDcmSub(const DtDcm& m1, const DtDcm& m2, DtDcm& result); /* result = m1 - m2 */
114 DT_DLL_MATRIX void DtDcmDcmMul(const DtDcm& m1, const DtDcm& m2, DtDcm& result); /* result = m1 x m2 */
115 DT_DLL_MATRIX void DtDcmTranspose(const DtDcm& m, DtDcm& result);
116 DT_DLL_MATRIX void DtDcmAdjugate(const DtDcm& m, DtDcm& result);
117 DT_DLL_MATRIX void DtDcmInverse(const DtDcm& m, DtDcm& result);
118 DT_DLL_MATRIX double DtDcmDcmRotAngle(const DtDcm& a, const DtDcm& b, double precision=1e-12);
119 
121 DT_DLL_MATRIX void DtM_Init(const DtDcm& input,DtDcm& result,int flag);
122 DT_DLL_MATRIX void DtSetSym(DtDcm& v,double aa,double ab,double ac,double bb,double bc,double cc);
123 
124 DT_DLL_MATRIX void DtCreateCross(const DtVector& r,DtDcm& ans);
125 DT_DLL_MATRIX void DtCreateCross(const DtVector32& r,DtDcm& ans);
126 DT_DLL_MATRIX void DtM(const DtVector& v,DtDcm& m);
127 DT_DLL_MATRIX void DtM(const DtVector32& v,DtDcm& m);
128 DT_DLL_MATRIX void DtRotate(DtDcm& ans,const DtVector& direction,double theta);
129 DT_DLL_MATRIX void DtRotate(DtDcm& ans,const DtVector32& direction,double theta);
130 
131 
133 DT_DLL_MATRIX void DtDcmScale(const DtDcm& mat, double scale_factor, DtDcm& result);
134 DT_DLL_MATRIX void DtDcmVecMul(const DtDcm& m, const DtVector& v, DtVector& result);
135 DT_DLL_MATRIX void DtDcmVecMul(const DtDcm& m, const DtVector32& v, DtVector32& result);
136 
139 DT_DLL_MATRIX void DtDcmRotInit(DtDcm& m, double theta, int rot_axis);
140 
144 DT_DLL_MATRIX void DtDcmRotInit2(DtDcm& m, double sin_theta, int rot_axis);
145 
149 DT_DLL_MATRIX void DtDcmTrigInit(DtDcm& m, double sin_theta,
150  double cos_theta, int rot_axis);
151 
154 DT_DLL_MATRIX void DtDcmForm(const double *axis, double angle,
155  DtDcm& c, double *sin_ang, double *cos_ang);
156 
158 DT_DLL_MATRIX void DtTbToMat(const DtTaitBryan &tb, DtDcm& HcW);
159 
164 DT_DLL_MATRIX void DtDcmLevelInit (DtDcm& m, const DtVector& v);
165 DT_DLL_MATRIX void DtDcmLevelInit (DtDcm& m, const DtVector32& v);
166 
174 DT_DLL_MATRIX void DtBodyToMat(DtBodyRates av, const DtDcm& HcW, DtDcm& cDot);
175 
177 
180 DT_DLL_MATRIX void DtMakeRotationDcm(const DtDirectedRotRate& drr, double dt, DtDcm& m);
181 
187 DT_DLL_MATRIX double DtDcmDcmRotTrace(const DtDcm& a, const DtDcm& b);
188 
191 {
196 };
197 
198 DT_DLL_MATRIX double DtMM_Mult( const DtDcm& m1, const DtDcm& m2, DtDcm& result,
200 
201 
203 DT_DLL_MATRIX void DtDcmDump(const char *str, const DtDcm& mat);
204 
207 
209 DT_DLL_MATRIX int DtDcmCheck(const DtDcm& m);
210 
212 DT_DLL_MATRIX void DtDcmCopy(const DtDcm& src, DtDcm& dest);
213 
215 DT_DLL_MATRIX void DtDcmInit(DtDcm& m);
216 
218 typedef const DtDcm &DtConstDcm;
219 
221 typedef DtDcm &DtDcmRef;
222 
223 
225 #define vlDcm_inl
226 #include "vlDcm.inl"
227 #undef vlDcm_inl
228 
229 #ifdef DtUSE_UTILITIES_NAMESPACE
230 }
231 #endif
232 
233 
234 #endif
235 
236 

Document ID: Generated on Fri Dec 2 02:42:08 EST 2016 from SVN revision 171416
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)