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
DtVector32
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
DtDcmDcmRotAxis
(
const
DtDcm
& a2ref,
const
DtDcm
& b2ref,
DtVector32
& n
/* a2b */
);
105
DT_DLL_MATRIX
void
DtDcmIdentInit
(
DtDcm
& m);
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
178
DT_DLL_MATRIX
DtDirectedRotRate
DtDirectRotRate
(
const
DtVector
& pqr);
179
DT_DLL_MATRIX
DtDirectedRotRate
DtDirectRotRate
(
const
DtVector32
& pqr);
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
190
enum
generic_mm_multflag
191
{
192
TRANSPOSE_NONE
= 0,
193
TRANSPOSE_M1
= 1,
194
TRANSPOSE_M2
= 2,
195
TRANSPOSE_M1_AND_M2
= 3
196
};
197
198
DT_DLL_MATRIX
double
DtMM_Mult
(
const
DtDcm
& m1,
const
DtDcm
& m2,
DtDcm
& result,
199
generic_mm_multflag
flag=
TRANSPOSE_NONE
);
200
201
203
DT_DLL_MATRIX
void
DtDcmDump
(
const
char
*str,
const
DtDcm
& mat);
204
206
DT_DLL_MATRIX
void
DtDcmFromQuaternion
(
DtDcm
& m,
const
DtQuaternion
*q);
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 Mon Jun 22 21:18:40 EDT 2020 from SVN revision 213785
Copyright © 2005-2018 MAK Technologies. All Rights Reserved (
www.mak.com
)