VR-Link API Documentation for HLA Evolved
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
include
matrix
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
;
25
class
DT_DLL_MATRIX
DtDcm
;
26
27
29
typedef
DtVector
DtBodyRates
;
30
39
class
DT_DLL_MATRIX
DtDcm
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
DtDcmIdentInit
(
DtDcm
& m);
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
174
DT_DLL_MATRIX
DtDirectedRotRate
DtDirectRotRate
(
const
DtVector
& pqr);
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
185
enum
generic_mm_multflag
186
{
187
TRANSPOSE_NONE
= 0,
188
TRANSPOSE_M1
= 1,
189
TRANSPOSE_M2
= 2,
190
TRANSPOSE_M1_AND_M2
= 3
191
};
192
193
DT_DLL_MATRIX
double
DtMM_Mult
(
const
DtDcm
& m1,
const
DtDcm
& m2,
DtDcm
& result,
194
generic_mm_multflag
flag=
TRANSPOSE_NONE
);
195
196
198
DT_DLL_MATRIX
void
DtDcmDump
(
const
char
*str,
const
DtDcm
& mat);
199
201
DT_DLL_MATRIX
void
DtDcmFromQuaternion
(
DtDcm
& m,
const
DtQuaternion
*q);
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
)