29 #ifndef __DualQuaternion_H__
30 #define __DualQuaternion_H__
52 : w(1), x(0), y(0), z(0), dw(1), dx(0), dy(0), dz(0)
59 : w(fW), x(fX), y(fY), z(fZ), dw(fdW), dx(fdX), dy(fdY), dz(fdZ)
66 this->fromTransformationMatrix(rot);
72 this->fromRotationTranslation(q, trans);
78 memcpy(&w, valptr,
sizeof(
Real)*8);
82 inline Real operator [] (
const size_t i )
const
90 inline Real& operator [] (
const size_t i )
113 return (rhs.
w == w) && (rhs.
x == x) && (rhs.
y == y) && (rhs.
z == z) &&
114 (rhs.
dw == dw) && (rhs.
dx == dx) && (rhs.
dy == dy) && (rhs.
dz == dz);
161 void fromTransformationMatrix (
const Matrix4& kTrans);
164 void toTransformationMatrix (
Matrix4& kTrans)
const;
172 inline _OgreExport friend std::ostream&
operator <<
175 o <<
"DualQuaternion(" << q.w <<
", " << q.x <<
", " << q.y <<
", " << q.z <<
", " << q.dw <<
", " << q.dx <<
", " << q.dy <<
", " << q.dz <<
")";
Class encapsulating a standard 4x4 homogeneous matrix.
float Real
Software floating point type.
Implementation of a Quaternion, i.e.
DualQuaternion(const Quaternion &q, const Vector3 &trans)
Construct a dual quaternion from a unit quaternion and a translation vector.
DualQuaternion(Real *valptr)
Construct a dual quaternion from 8 manual w/x/y/z/dw/dx/dy/dz values.
DualQuaternion()
Default constructor, initializes to identity rotation (aka 0°), and zero translation (0...
DualQuaternion(const Matrix4 &rot)
Construct a dual quaternion from a transformation matrix.
const Real * ptr() const
Pointer accessor for direct copying.
void swap(Ogre::SmallVectorImpl< T > &LHS, Ogre::SmallVectorImpl< T > &RHS)
Implement std::swap in terms of SmallVector swap.
Standard 3-dimensional vector.
DualQuaternion(Real fW, Real fX, Real fY, Real fZ, Real fdW, Real fdX, Real fdY, Real fdZ)
Construct from an explicit list of values.
void swap(DualQuaternion &other)
Exchange the contents of this dual quaternion with another.
static bool isNaN(Real f)
Implementation of a dual quaternion, i.e.
Real * ptr()
Pointer accessor for direct copying.
bool isNaN() const
Check whether this dual quaternion contains valid values.
bool operator==(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator, (ISO C++)
bool operator!=(STLAllocator< T, P > const &, STLAllocator< T2, P > const &)
determine equality, can memory from another allocator be released by this allocator, (ISO C++)