VR-Forces 4.1 Class Documentation
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 
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_

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)