VR-Link API Documentation for HLA 1516
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 "directRotRate.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 #define ZERO 0
121 #define IDENTITY 1;
122 DT_DLL_MATRIX void DtM_Init(const DtDcm& input,DtDcm& result,int flag);
123 DT_DLL_MATRIX void DtSetSym(DtDcm& v,double aa,double ab,double ac,double bb,double bc,double cc);
124 
125 DT_DLL_MATRIX void DtCreateCross(const DtVector& r,DtDcm& ans);
126 DT_DLL_MATRIX void DtM(const DtVector& v,DtDcm& m);
127 DT_DLL_MATRIX void DtRotate(DtDcm& ans,const DtVector& direction,double theta);
128 
129 
131 DT_DLL_MATRIX void DtDcmScale(const DtDcm& mat, double scale_factor, DtDcm& result);
132 DT_DLL_MATRIX void DtDcmVecMul(const DtDcm& m, const DtVector& v, DtVector& result);
133 
136 DT_DLL_MATRIX void DtDcmRotInit(DtDcm& m, double theta, int rot_axis);
137 
141 DT_DLL_MATRIX void DtDcmRotInit2(DtDcm& m, double sin_theta, int rot_axis);
142 
146 DT_DLL_MATRIX void DtDcmTrigInit(DtDcm& m, double sin_theta,
147  double cos_theta, int rot_axis);
148 
151 DT_DLL_MATRIX void DtDcmForm(const double *axis, double angle,
152  DtDcm& c, double *sin_ang, double *cos_ang);
153 
155 DT_DLL_MATRIX void DtTbToMat(const DtTaitBryan &tb, DtDcm& HcW);
156 
161 DT_DLL_MATRIX void DtDcmLevelInit (DtDcm& m, const DtVector& v);
162 
170 DT_DLL_MATRIX void DtBodyToMat(DtBodyRates av, const DtDcm& HcW, DtDcm& cDot);
171 
173 
175 DT_DLL_MATRIX void DtMakeRotationDcm(const DtDirectedRotRate& drr, double dt, DtDcm& m);
176 
182 DT_DLL_MATRIX double DtDcmDcmRotTrace(const DtDcm& a, const DtDcm& b);
183 
186 {
191 };
192 
193 DT_DLL_MATRIX double DtMM_Mult( const DtDcm& m1, const DtDcm& m2, DtDcm& result,
195 
196 
198 DT_DLL_MATRIX void DtDcmDump(const char *str, const DtDcm& mat);
199 
202 
204 DT_DLL_MATRIX int DtDcmCheck(const DtDcm& m);
205 
207 DT_DLL_MATRIX void DtDcmCopy(const DtDcm& src, DtDcm& dest);
208 
210 DT_DLL_MATRIX void DtDcmInit(DtDcm& m);
211 
213 typedef const DtDcm &DtConstDcm;
214 
216 typedef DtDcm &DtDcmRef;
217 
218 
220 #define vlDcm_inl
221 #include "vlDcm.inl"
222 #undef vlDcm_inl
223 
224 #ifdef DtUSE_UTILITIES_NAMESPACE
225 }
226 #endif
227 
228 
229 #endif
230 
231 

Document ID: Generated on Wed Aug 14 15:35:11 EDT 2013 from SVN revision 130445
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)