VR-Vantage 3.0.3 API Documentation
Home
Modules
Namespaces
Classes
Files
Libraries
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
vrvUtil
DtQuat.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 2010 MAK Technologies, Inc.
3
** All rights reserved.
4
******************************************************************************/
5
9
10
#pragma once
11
#include <
vrvUtil/vrvUtil.h
>
12
13
#include <matrix/vlVector.h>
14
15
namespace
makVrv
16
{
19
class
DtQuat
20
{
21
public
:
22
23
24
DtVector
xyz
;
25
double
w
;
26
28
inline
DtQuat
();
29
inline
DtQuat
(
double
x
,
double
y
,
double
z
,
double
w
);
30
inline
DtQuat
(
const
DtVector& i,
double
real);
31
33
inline
DtQuat
(
double
theta_z,
double
theta_y,
double
theta_x);
34
36
inline
DtQuat
(
const
DtVector& angles);
37
39
inline
void
set
(
double
x
,
double
y
,
double
z
,
double
w
);
40
42
inline
DtQuat
&
operator=
(
const
DtQuat
&
q
);
43
44
inline
DtQuat
operator+
(
const
DtQuat
&
q
)
const
;
45
inline
DtQuat
operator-
(
const
DtQuat
&
q
)
const
;
46
inline
DtQuat
operator*
(
const
DtQuat
&
q
)
const
;
47
inline
DtQuat
operator/
(
const
DtQuat
&
q
)
const
;
48
inline
DtQuat
operator*
(
double
scale
)
const
;
49
inline
DtQuat
operator/
(
double
scale
)
const
;
50
inline
DtQuat
operator-
()
const
;
51
inline
const
DtQuat
&
operator+=
(
const
DtQuat
&
q
);
52
inline
const
DtQuat
&
operator-=
(
const
DtQuat
&
q
);
53
inline
const
DtQuat
&
operator*=
(
const
DtQuat
&
q
);
54
inline
const
DtQuat
&
operator*=
(
double
scale
);
55
inline
const
DtQuat
&
operator/=
(
double
scale
);
56
58
inline
double
length
()
const
;
59
61
inline
double
length_squared
()
const
;
62
64
inline
void
normalize
();
65
67
inline
DtQuat
normalized
()
const
;
68
70
inline
void
conjugate
();
71
73
inline
void
invert
();
74
76
inline
DtQuat
log
()
const
;
77
79
inline
DtQuat
exp
()
const
;
80
82
inline
void
getMatrix4
(
double
matrix
[16])
const
;
83
86
inline
void
getMatrix3
(
double
matrix
[9])
const
;
87
89
static
inline
double
dot
(
const
DtQuat
& q1,
const
DtQuat
& q2);
90
92
static
inline
DtQuat
lerp
(
const
DtQuat
& q1,
const
DtQuat
& q2,
double
t
);
93
95
static
inline
DtQuat
slerp
(
const
DtQuat
& q1,
const
DtQuat
& q2,
double
t
);
96
98
static
inline
DtQuat
slerpNoInvert
(
const
DtQuat
& q1,
const
DtQuat
& q2,
double
t
);
99
101
static
inline
DtQuat
squad
(
const
DtQuat
& q1,
const
DtQuat
& q2,
const
DtQuat
&
a
,
const
DtQuat
&
b
,
double
t
);
102
104
static
inline
DtQuat
bezier
(
const
DtQuat
& q1,
const
DtQuat
& q2,
const
DtQuat
&
a
,
const
DtQuat
&
b
,
double
t
);
105
107
static
inline
DtQuat
spline
(
const
DtQuat
& qnm1,
const
DtQuat
& qn,
const
DtQuat
& qnp1);
108
110
static
inline
DtQuat
from_axis_angle
(
const
DtVector& axis,
double
angle
);
111
113
inline
void
to_axis_angle
(DtVector& axis,
double
&
angle
)
const
;
114
116
inline
DtVector
rotate
(
const
DtVector&
v
)
const
;
117
119
inline
DtVector
euler_angles
()
const
;
120
};
121
122
123
}
124
125
#define DtQuat_INL_
126
#include <
vrvUtil/DtQuat.inl
>
127
#undef DtQuat_INL_
Copyright © 2005-2023 MAK Technologies. All Rights Reserved (
www.mak.com
)