VR-Vantage API Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Tutorials
File List
File Members
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
/******************************************************************************
6
** $RCSfile: $ $Revision: $ $State: $
7
******************************************************************************/
8
12
13
#pragma once
14
#include <
vrvUtil/vrvUtil.h
>
15
16
namespace
makVrv
17
{
20
class
DtQuat
21
{
22
public
:
23
24
25
DtVector
xyz
;
26
double
w
;
27
29
inline
DtQuat
();
30
inline
DtQuat
(
double
x,
double
y,
double
z,
double
w
);
31
inline
DtQuat
(
const
DtVector& i,
double
real);
32
34
inline
DtQuat
(
double
theta_z,
double
theta_y,
double
theta_x);
35
37
inline
DtQuat
(
const
DtVector& angles);
38
40
inline
void
set
(
double
x,
double
y,
double
z,
double
w
);
41
43
inline
DtQuat
&
operator=
(
const
DtQuat
& q);
44
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/
(
const
DtQuat
& q)
const
;
49
inline
DtQuat
operator*
(
double
scale)
const
;
50
inline
DtQuat
operator/
(
double
scale)
const
;
51
inline
DtQuat
operator-
()
const
;
52
inline
const
DtQuat
&
operator+=
(
const
DtQuat
& q);
53
inline
const
DtQuat
&
operator-=
(
const
DtQuat
& q);
54
inline
const
DtQuat
&
operator*=
(
const
DtQuat
& q);
55
inline
const
DtQuat
&
operator*=
(
double
scale);
56
inline
const
DtQuat
&
operator/=
(
double
scale);
57
59
inline
double
length
()
const
;
60
62
inline
double
length_squared
()
const
;
63
65
inline
void
normalize
();
66
68
inline
DtQuat
normalized
()
const
;
69
71
inline
void
conjugate
();
72
74
inline
void
invert
();
75
77
inline
DtQuat
log
()
const
;
78
80
inline
DtQuat
exp
()
const
;
81
83
inline
void
getMatrix4
(
double
matrix[16])
const
;
84
87
inline
void
getMatrix3
(
double
matrix[9])
const
;
88
90
static
inline
double
dot
(
const
DtQuat
& q1,
const
DtQuat
& q2);
91
93
static
inline
DtQuat
lerp
(
const
DtQuat
& q1,
const
DtQuat
& q2,
double
t);
94
96
static
inline
DtQuat
slerp
(
const
DtQuat
& q1,
const
DtQuat
& q2,
double
t);
97
99
static
inline
DtQuat
slerpNoInvert
(
const
DtQuat
& q1,
const
DtQuat
& q2,
double
t);
100
102
static
inline
DtQuat
squad
(
const
DtQuat
& q1,
const
DtQuat
& q2,
const
DtQuat
& a,
const
DtQuat
& b,
double
t);
103
105
static
inline
DtQuat
bezier
(
const
DtQuat
& q1,
const
DtQuat
& q2,
const
DtQuat
& a,
const
DtQuat
& b,
double
t);
106
108
static
inline
DtQuat
spline
(
const
DtQuat
& qnm1,
const
DtQuat
& qn,
const
DtQuat
& qnp1);
109
111
static
inline
DtQuat
from_axis_angle
(
const
DtVector& axis,
double
angle);
112
114
inline
void
to_axis_angle
(DtVector& axis,
double
& angle)
const
;
115
117
inline
DtVector
rotate
(
const
DtVector& v)
const
;
118
120
inline
DtVector
euler_angles
()
const
;
121
};
122
123
124
}
125
126
#define DtQuat_INL_
127
#include <
vrvUtil/DtQuat.inl
>
128
#undef DtQuat_INL_
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (
www.mak.com
)