VR-Link API Documentation for DIS
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 DtVector 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 */);
105 
106 
108 DT_DLL_MATRIX void DtDcmFixMatrix(DtDcm& mat, int axis);
109 
110 DT_DLL_MATRIX double DtDcmDeterminant(const DtDcm& m);
111 DT_DLL_MATRIX void DtDcmAdd(const DtDcm& m1, const DtDcm& m2, DtDcm& result); /* result = m1 + m2 */
112 DT_DLL_MATRIX void DtDcmSub(const DtDcm& m1, const DtDcm& m2, DtDcm& result); /* result = m1 - m2 */
113 DT_DLL_MATRIX void DtDcmDcmMul(const DtDcm& m1, const DtDcm& m2, DtDcm& result); /* result = m1 x m2 */
114 DT_DLL_MATRIX void DtDcmTranspose(const DtDcm& m, DtDcm& result);
115 DT_DLL_MATRIX void DtDcmAdjugate(const DtDcm& m, DtDcm& result);
116 DT_DLL_MATRIX void DtDcmInverse(const DtDcm& m, DtDcm& result);
117 DT_DLL_MATRIX double DtDcmDcmRotAngle(const DtDcm& a, const DtDcm& b);
118 
120 DT_DLL_MATRIX void DtM_Init(const DtDcm& input,DtDcm& result,int flag);
121 DT_DLL_MATRIX void DtSetSym(DtDcm& v,double aa,double ab,double ac,double bb,double bc,double cc);
122 
123 DT_DLL_MATRIX void DtCreateCross(const DtVector& r,DtDcm& ans);
124 DT_DLL_MATRIX void DtM(const DtVector& v,DtDcm& m);
125 DT_DLL_MATRIX void DtRotate(DtDcm& ans,const DtVector& direction,double theta);
126 
127 
129 DT_DLL_MATRIX void DtDcmScale(const DtDcm& mat, double scale_factor, DtDcm& result);
130 DT_DLL_MATRIX void DtDcmVecMul(const DtDcm& m, const DtVector& v, DtVector& result);
131 
134 DT_DLL_MATRIX void DtDcmRotInit(DtDcm& m, double theta, int rot_axis);
135 
139 DT_DLL_MATRIX void DtDcmRotInit2(DtDcm& m, double sin_theta, int rot_axis);
140 
144 DT_DLL_MATRIX void DtDcmTrigInit(DtDcm& m, double sin_theta,
145  double cos_theta, int rot_axis);
146 
149 DT_DLL_MATRIX void DtDcmForm(const double *axis, double angle,
150  DtDcm& c, double *sin_ang, double *cos_ang);
151 
153 DT_DLL_MATRIX void DtTbToMat(const DtTaitBryan &tb, DtDcm& HcW);
154 
159 DT_DLL_MATRIX void DtDcmLevelInit (DtDcm& m, const DtVector& v);
160 
168 DT_DLL_MATRIX void DtBodyToMat(DtBodyRates av, const DtDcm& HcW, DtDcm& cDot);
169 
171 
173 DT_DLL_MATRIX void DtMakeRotationDcm(const DtDirectedRotRate& drr, double dt, DtDcm& m);
174 
180 DT_DLL_MATRIX double DtDcmDcmRotTrace(const DtDcm& a, const DtDcm& b);
181 
184 {
189 };
190 
191 DT_DLL_MATRIX double DtMM_Mult( const DtDcm& m1, const DtDcm& m2, DtDcm& result,
193 
194 
196 DT_DLL_MATRIX void DtDcmDump(const char *str, const DtDcm& mat);
197 
200 
202 DT_DLL_MATRIX int DtDcmCheck(const DtDcm& m);
203 
205 DT_DLL_MATRIX void DtDcmCopy(const DtDcm& src, DtDcm& dest);
206 
208 DT_DLL_MATRIX void DtDcmInit(DtDcm& m);
209 
211 typedef const DtDcm &DtConstDcm;
212 
214 typedef DtDcm &DtDcmRef;
215 
216 
218 #define vlDcm_inl
219 #include "vlDcm.inl"
220 #undef vlDcm_inl
221 
222 #ifdef DtUSE_UTILITIES_NAMESPACE
223 }
224 #endif
225 
226 
227 #endif
228 
229 

Document ID: Generated on Wed Oct 23 22:25:48 EDT 2013 from SVN revision 132765
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)