VR-Link API Documentation for DIS
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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 "
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
;
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
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
172
DT_DLL_MATRIX
DtDirectedRotRate
DtDirectRotRate
(
const
DtVector
& pqr);
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
183
enum
generic_mm_multflag
184
{
185
TRANSPOSE_NONE
= 0,
186
TRANSPOSE_M1
= 1,
187
TRANSPOSE_M2
= 2,
188
TRANSPOSE_M1_AND_M2
= 3
189
};
190
191
DT_DLL_MATRIX
double
DtMM_Mult
(
const
DtDcm
& m1,
const
DtDcm
& m2,
DtDcm
& result,
192
generic_mm_multflag
flag=
TRANSPOSE_NONE
);
193
194
196
DT_DLL_MATRIX
void
DtDcmDump
(
const
char
*str,
const
DtDcm
& mat);
197
199
DT_DLL_MATRIX
void
DtDcmFromQuaternion
(
DtDcm
& m,
const
DtQuaternion
*q);
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 Fri May 15 06:36:13 EDT 2015 from SVN revision 153263
Copyright © 2005-2014 VT MÄK. All Rights Reserved (
www.mak.com
)