13 #include <matrix/vlVector.h>
29 inline DtQuat(
double x,
double y,
double z,
double w);
30 inline DtQuat(
const DtVector& i,
double real);
33 inline DtQuat(
double theta_z,
double theta_y,
double theta_x);
36 inline DtQuat(
const DtVector& angles);
39 inline void set(
double x,
double y,
double z,
double w);
58 inline double length()
const;
82 inline void getMatrix4(
double matrix[16])
const;
86 inline void getMatrix3(
double matrix[9])
const;
113 inline void to_axis_angle(DtVector& axis,
double& angle)
const;
116 inline DtVector
rotate(
const DtVector& v)
const;
DtQuat operator/(const DtQuat &q) const
Definition: DtQuat.inl:108
void getMatrix4(double matrix[16]) const
casting to a 4x4 isomorphic matrix for right multiplication with vector
Definition: DtQuat.inl:231
static DtQuat squad(const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
spherical cubic interpolation
Definition: DtQuat.inl:340
void invert()
inverts this quaternion
Definition: DtQuat.inl:197
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t t(t+t)") define_sfop3(16
void getMatrix3(double matrix[9]) const
Get a 3x3 rotation matrix.
Definition: DtQuat.inl:251
double length_squared() const
gets the squared length of this quaternion
Definition: DtQuat.inl:177
static DtQuat spline(const DtQuat &qnm1, const DtQuat &qn, const DtQuat &qnp1)
Given 3 quaternions, qn-1,qn and qn+1, calculate a control point to be used in spline interpolation...
Definition: DtQuat.inl:355
double length() const
gets the length of this quaternion
Definition: DtQuat.inl:171
DtQuat operator+(const DtQuat &q) const
Definition: DtQuat.inl:87
void conjugate()
computes the conjugate of this quaternion
Definition: DtQuat.inl:192
DtQuat operator*(const DtQuat &q) const
Definition: DtQuat.inl:97
DtVector xyz
the imaginary components
Definition: DtQuat.h:24
Contains DLL export macros.
DtQuat exp() const
returns e^quaternion = exp(v*a) = [cos(a),vsin(a)]
Definition: DtQuat.inl:219
DtQuat & operator=(const DtQuat &q)
basic operations
Definition: DtQuat.inl:80
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t x *y t *t t x *y t *t *t x y *z t t *t t x *y *z t *t *t t x y z t t t t x *y z t *t t t x * y(z *w))
static DtQuat from_axis_angle(const DtVector &axis, double angle)
converts from a normalized axis - angle pair rotation to a quaternion
Definition: DtQuat.inl:362
const DtQuat & operator+=(const DtQuat &q)
Definition: DtQuat.inl:130
void to_axis_angle(DtVector &axis, double &angle) const
returns the axis and angle of this unit quaternion
Definition: DtQuat.inl:368
static DtQuat bezier(const DtQuat &q1, const DtQuat &q2, const DtQuat &a, const DtQuat &b, double t)
Shoemake-Bezier interpolation using De Castlejau algorithm.
Definition: DtQuat.inl:347
DtVector rotate(const DtVector &v) const
rotates v by this quaternion (quaternion must be unit)
Definition: DtQuat.inl:384
x y * z
Definition: exprtk.hpp:9133
const DtQuat & operator-=(const DtQuat &q)
Definition: DtQuat.inl:137
const DtQuat & operator/=(double scale)
Definition: DtQuat.inl:163
void set(double x, double y, double z, double w)
Set the quat.
Definition: DtQuat.inl:71
static DtQuat slerpNoInvert(const DtQuat &q1, const DtQuat &q2, double t)
This version of slerp, used by squad, does not check for theta > 90.
Definition: DtQuat.inl:325
static DtQuat slerp(const DtQuat &q1, const DtQuat &q2, double t)
spherical linear interpolation
Definition: DtQuat.inl:280
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t x(y+z)
double w
the real component
Definition: DtQuat.h:25
DtQuat operator-() const
Definition: DtQuat.inl:125
const DtQuat & operator*=(const DtQuat &q)
Definition: DtQuat.inl:144
A utility Quaternion class.
Definition: DtQuat.h:19
static double dot(const DtQuat &q1, const DtQuat &q2)
computes the dot product of 2 quaternions
Definition: DtQuat.inl:264
DtQuat normalized() const
returns the normalized version of this quaternion
Definition: DtQuat.inl:187
void normalize()
normalizes this quaternion
Definition: DtQuat.inl:182
Contains makVrv::DtQuat class.
static DtQuat lerp(const DtQuat &q1, const DtQuat &q2, double t)
linear quaternion interpolation
Definition: DtQuat.inl:269
DtQuat()
constructors
Definition: DtQuat.inl:19
DtQuat log() const
returns the logarithm of a quaternion = v*a where q = [cos(a),v*sin(a)]
Definition: DtQuat.inl:203
DtVector euler_angles() const
returns the euler angles from a rotation quaternion
Definition: DtQuat.inl:393