22 #ifndef _vctQuaternionBase_h
23 #define _vctQuaternionBase_h
48 template <
class _containerType>
101 const_reference
R(
void)
const {
102 return *(this->Pointer(3));
109 return *(this->Pointer(3));
115 template <
class __containerTypeOther>
117 this->X() = - otherQuaternion.X();
118 this->Y() = - otherQuaternion.Y();
119 this->Z() = - otherQuaternion.Z();
120 this->
R() = otherQuaternion.
R();
127 this->X() = - this->X();
128 this->Y() = - this->Y();
129 this->Z() = - this->Z();
138 result.ConjugateOf(*
this);
148 template <
class __containerType1,
class __containerType2>
151 this->X() = quat1.
R() * quat2.X() + quat1.X() * quat2.
R() + quat1.Y() * quat2.Z() - quat1.Z() * quat2.Y();
152 this->Y() = quat1.
R() * quat2.Y() - quat1.X() * quat2.Z() + quat1.Y() * quat2.
R() + quat1.Z() * quat2.X();
153 this->Z() = quat1.
R() * quat2.Z() + quat1.X() * quat2.Y() - quat1.Y() * quat2.X() + quat1.Z() * quat2.
R();
154 this->
R() = quat1.
R() * quat2.
R() - quat1.X() * quat2.X() - quat1.Y() * quat2.Y() - quat1.Z() * quat2.Z();
160 template <
class __containerType1,
class __containerType2>
163 const value_type quat2Norm = value_type(quat2.Norm());
165 quat2I.Assign(-quat2.X() / quat2Norm, -quat2.Y() / quat2Norm, -quat2.Z() / quat2Norm, quat2.
R() / quat2Norm);
166 this->X() = quat1.
R() * quat2I.X() + quat1.X() * quat2.
R() + quat1.Y() * quat2I.Z() - quat1.Z() * quat2I.Y();
167 this->Y() = quat1.
R() * quat2I.Y() - quat1.X() * quat2I.Z() + quat1.Y() * quat2.
R() + quat1.Z() * quat2I.X();
168 this->Z() = quat1.
R() * quat2I.Z() + quat1.X() * quat2I.Y() - quat1.Y() * quat2I.X() + quat1.Z() * quat2.
R();
169 this->
R() = quat1.
R() * quat2.
R() - quat1.X() * quat2I.X() - quat1.Y() * quat2I.Y() - quat1.Z() * quat2I.Z();
176 template <
class __containerTypeOther>
187 template <
class __containerTypeOther>
196 template <
class __containerTypeOther>
199 result.QuotientOf(*
this, other);
237 template <
class _containerType>
253 template <
class _containerType>
263 #endif // _vctQuaternionBase_h
Define a quaternion container.
Definition: vctForwardDeclarations.h:205
ThisType & QuotientOf(const vctQuaternionBase< __containerType1 > &quat1, const vctQuaternionBase< __containerType2 > &quat2)
Definition: vctQuaternionBase.h:161
ThisType & PreMultiply(const vctQuaternionBase< __containerTypeOther > &other)
Definition: vctQuaternionBase.h:188
ThisType & ConjugateSelf(void)
Definition: vctQuaternionBase.h:126
ThisType & Divide(const vctQuaternionBase< __containerTypeOther > &other)
Definition: vctQuaternionBase.h:197
void Allocate(void)
Definition: vctQuaternionBase.h:56
ThisType & ProductOf(const vctQuaternionBase< __containerType1 > &quat1, const vctQuaternionBase< __containerType2 > &quat2)
Definition: vctQuaternionBase.h:149
_containerType ContainerType
Definition: vctQuaternionBase.h:61
VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type)
ThisType & Divide(const value_type s)
Definition: vctQuaternionBase.h:208
Declaration of vctDynamicVector.
vctQuaternionBase< _containerType > operator*(const vctQuaternionBase< _containerType > &quat1, const vctQuaternionBase< _containerType > &quat2)
Definition: vctQuaternionBase.h:239
Declaration of the class cmnTypeTraits.
Basic traits for the cisstVector containers.
Definition: vctQuaternionBase.h:59
_containerType BaseType
Definition: vctQuaternionBase.h:60
vctQuaternionBase(const value_type &x, const value_type &y, const value_type &z, const value_type &r)
Definition: vctQuaternionBase.h:83
vctQuaternionBase< _containerType > operator/(const vctQuaternionBase< _containerType > &quat1, const vctQuaternionBase< _containerType > &quat2)
Definition: vctQuaternionBase.h:255
const_reference R(void) const
Definition: vctQuaternionBase.h:101
ThisType Conjugate(void) const
Definition: vctQuaternionBase.h:136
reference R(void)
Definition: vctQuaternionBase.h:108
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeConstVectorBase.h:107
cmnTypeTraits< value_type > TypeTraits
Definition: vctQuaternionBase.h:66
ThisType & ConjugateOf(const vctQuaternionBase< __containerTypeOther > &otherQuaternion)
Definition: vctQuaternionBase.h:116
Macros to export the symbols of cisstVector (in a Dll).
A collection of useful information about the C++ basic types, represented in a generic programming wa...
Definition: cmnTypeTraits.h:155
ThisType & PostMultiply(const vctQuaternionBase< __containerTypeOther > &other)
Definition: vctQuaternionBase.h:177
vctQuaternionBase< _containerType > ThisType
Definition: vctQuaternionBase.h:62
vctQuaternionBase(void)
Definition: vctQuaternionBase.h:70