20#ifndef _vctQuaternionRotation3Base_h
21#define _vctQuaternionRotation3Base_h
40template <
class _quaternionType,
class _matrixType>
62template <
class _containerType>
87 cmnThrow(std::runtime_error(
"vctQuaternionRotation3Base: This rotation is not normalized"));
95 template <
class _inputType>
97 if (! input.IsNormalized()) {
98 cmnThrow(std::runtime_error(
"vctQuaternionRotation3Base: Input is not normalized"));
126 this->Assign(quaternionRotation);
131 this->Assign(quaternionRotation);
161 this->
From(x, y, z, r);
168 template <
class __containerType>
173 this->
From(matrixRotation);
184 this->
From(axisAngleRotation);
191 template <
class __containerType>
196 this->
From(rodriguezRotation);
235 if (normalizeInput) {
238 this->
FromRaw(quaternionRotation);
257 if (normalizeInput) {
269 template <
class __containerType>
275 if (normalizeInput) {
292 if (normalizeInput) {
295 this->
FromRaw(axisAngleRotation);
305 template <
class __containerType>
311 if (normalizeInput) {
314 this->
FromRaw(rodriguezRotation);
343 this->Assign(x, y, z, r);
352 return FromRaw(axisAngleRotation);
356 template <
class __containerType>
360 return this->
FromRaw(rodriguezRotation);
364 template <
class __containerType>
368 return FromRaw(matrixRotation);
387 template <
class __containerType>
399 this->Assign(x, y, z, r);
411 template <
class __containerType>
426 template <
class __containerType>
448 template <
class __containerType>
457 this->Assign(x, y, z, r);
464 typedef typename AxisAngleType::AxisType AxisType;
466 const AngleType angle = axisAngleRotation.
Angle();
467 const AxisType axis = axisAngleRotation.
Axis();
469 const AngleType halfAngle = angle * 0.5;
473 this->Assign(s * axis[0], s * axis[1], s * axis[2], c);
478 template <
class __containerType>
493 template <
class __containerType>
507 return reinterpret_cast<ThisType &
>(this->Assign(otherRotation));
514 CMN_ASSERT(otherQuaternion.Pointer() != this->Pointer());
515 this->Assign(otherQuaternion);
523 BaseType::NormalizedSelf();
570 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
577 input.
X(), input.
Y(), input.
Z(), output);
581 template <
class __vectorOwnerType, str
ide_type __str
ide,
class __dataPtrType>
589 input.X(), input.Y(), input.Z(), output);
601 template <str
ide_type __str
ide,
class __dataPtrType>
610 template <
class __vectorOwnerType>
623 template <size_type __cols, stride_type __rowStride1, stride_type __colStride1,
class __dataPtrType1,
624 stride_type __rowStride2, stride_type __colStride2,
class __dataPtrType2>
629 const size_type numCols = input.
cols();
631 for (col = 0; col < numCols; ++col) {
634 this->
ApplyTo(inputCol, outputCol);
640 template <
class __matrixOwnerType1,
class __matrixOwnerType2>
646 const size_type numCols = input.cols();
648 for (col = 0; col < numCols; ++col) {
651 this->
ApplyTo(inputCol, outputCol);
664 CMN_ASSERT(input.Pointer() != output.Pointer());
688 template <
class _vectorOwnerType1,
class _vectorOwnerType2>
698 input.X(), input.Y(), input.Z(), tmpOutput);
699 output.
X() = tmpOutput.
X();
700 output.
Y() = tmpOutput.
Y();
701 output.
Z() = tmpOutput.
Z();
712 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
719 input.
X(), input.
Y(), input.
Z(), output);
723 template <
class __vectorOwnerType, str
ide_type __str
ide,
class __dataPtrType>
731 input.X(), input.Y(), input.Z(), output);
743 template <str
ide_type __str
ide,
class __dataPtrType>
752 template <
class __vectorOwnerType>
765 template <size_type __cols, stride_type __rowStride1, stride_type __colStride1,
class __dataPtrType1,
766 stride_type __rowStride2, stride_type __colStride2,
class __dataPtrType2>
771 const size_type numCols = input.
cols();
773 for (col = 0; col < numCols; ++col) {
788 CMN_ASSERT(input.Pointer() != output.Pointer());
812 template <
class _vectorOwnerType1,
class _vectorOwnerType2>
822 input.X(), input.Y(), input.Z(), tmpOutput);
823 output.
X() = tmpOutput.
X();
824 output.
Y() = tmpOutput.
Y();
825 output.
Z() = tmpOutput.
Z();
830 template <
class __matrixOwnerType1,
class __matrixOwnerType2>
836 const size_type numCols = input.cols();
838 for (col = 0; col < numCols; ++col) {
860 differenceVector.DifferenceOf(*
this, other);
861 differenceVector.AbsSelf();
862 if (differenceVector.Lesser(tolerance)) {
865 differenceVector.SumOf(*
this, other);
866 differenceVector.AbsSelf();
867 if (differenceVector.Lesser(tolerance)) {
882 CMN_ASSERT(input.Pointer() != this->Pointer());
904 template <str
ide_type __str
ide,
class __dataPtrType>
907 const AngleType & angle) {
910 const double halfAngle = angle * 0.5;
913 this->ConcatenationOf(s * axis, c);
931 template <str
ide_type __str
ide,
class __dataPtrType>
936 const double angle = (fabs(axisLength) < axisTolerance) ? 0.0 : axisLength;
939 return this->
From(axis, angle);
953 template <str
ide_type __str
ide,
class __dataPtrType>
960 axis.
X() = this->
X() / sinAngle;
961 axis.
Y() = this->
Y() / sinAngle;
962 axis.
Z() = this->
Z() / sinAngle;
964 axis.
X() = this->
X();
965 axis.
Y() = this->
Y();
966 axis.
Z() = this->
Z();
975template <
class _containerType,
class _elementType, vct::str
ide_type _str
ide,
class _dataPtrType>
980 rotationQuaternion.
ApplyTo(vector, result);
984template <
class _containerType,
class _elementType,
class _vectorOwnerType>
989 rotationQuaternion.
ApplyTo(vector, result);
1000template <
class _elementType, vct::str
ide_type __str
ideOut,
class __dataPtrTypeOut>
1002 const _elementType qX,
const _elementType qY,
const _elementType qZ,
const _elementType qR,
1003 const _elementType vX,
const _elementType vY,
const _elementType vZ,
1010 const value_type tR = - vX * qX - vY * qY - vZ * qZ;
1011 const value_type tX = - vX * qR + vY * qZ - vZ * qY;
1012 const value_type tY = - vY * qR + vZ * qX - vX * qZ;
1013 const value_type tZ = - vZ * qR + vX * qY - vY * qX;
1018 output.
X() = - qR * tX - qX * tR - qY * tZ + qZ * tY;
1019 output.
Y() = - qR * tY - qY * tR - qZ * tX + qX * tZ;
1020 output.
Z() = - qR * tZ - qZ * tR - qX * tY + qY * tX;
1025template <
class _quaternionType,
class _matrixType>
1030 typedef typename _quaternionType::value_type
value_type;
1031 typedef typename _quaternionType::NormType NormType;
1033 const NormType a0 = 1.0 + matrixRotation.Element(0, 0) + matrixRotation.Element(1, 1) + matrixRotation.Element(2, 2);
1034 const NormType a1 = 1.0 + matrixRotation.Element(0, 0) - matrixRotation.Element(1, 1) - matrixRotation.Element(2, 2);
1035 const NormType a2 = 1.0 - matrixRotation.Element(0, 0) + matrixRotation.Element(1, 1) - matrixRotation.Element(2, 2);
1036 const NormType a3 = 1.0 - matrixRotation.Element(0, 0) - matrixRotation.Element(1, 1) + matrixRotation.Element(2, 2);
1039 unsigned char index = 0;
1055 quaternionRotation.
R() =
static_cast<value_type>(sqrt(a0) * 0.5);
1056 ratio = 0.25 / quaternionRotation.
R();
1057 quaternionRotation.X() =
static_cast<value_type>((matrixRotation.Element(2, 1) - matrixRotation.Element(1, 2)) * ratio);
1058 quaternionRotation.Y() =
static_cast<value_type>((matrixRotation.Element(0, 2) - matrixRotation.Element(2, 0)) * ratio);
1059 quaternionRotation.Z() =
static_cast<value_type>((matrixRotation.Element(1, 0) - matrixRotation.Element(0, 1)) * ratio);
1062 quaternionRotation.X() =
static_cast<value_type>(sqrt(a1) * 0.5);
1063 ratio = 0.25 / quaternionRotation.X();
1064 quaternionRotation.
R() =
static_cast<value_type>((matrixRotation.Element(2, 1) - matrixRotation.Element(1, 2)) * ratio);
1065 quaternionRotation.Y() =
static_cast<value_type>((matrixRotation.Element(1, 0) + matrixRotation.Element(0, 1)) * ratio);
1066 quaternionRotation.Z() =
static_cast<value_type>((matrixRotation.Element(2, 0) + matrixRotation.Element(0, 2)) * ratio);
1069 quaternionRotation.Y() =
static_cast<value_type>(sqrt(a2) * 0.5);
1070 ratio = 0.25 / quaternionRotation.Y();
1071 quaternionRotation.
R() =
static_cast<value_type>((matrixRotation.Element(0, 2) - matrixRotation.Element(2, 0)) * ratio);
1072 quaternionRotation.X() =
static_cast<value_type>((matrixRotation.Element(1, 0) + matrixRotation.Element(0, 1)) * ratio);
1073 quaternionRotation.Z() =
static_cast<value_type>((matrixRotation.Element(2, 1) + matrixRotation.Element(1, 2)) * ratio);
1076 quaternionRotation.Z() =
static_cast<value_type>(sqrt(a3) * 0.5);
1077 ratio = 0.25 / quaternionRotation.Z();
1078 quaternionRotation.
R() =
static_cast<value_type>((matrixRotation.Element(1, 0) - matrixRotation.Element(0, 1)) * ratio);
1079 quaternionRotation.X() =
static_cast<value_type>((matrixRotation.Element(0, 2) + matrixRotation.Element(2, 0)) * ratio);
1080 quaternionRotation.Y() =
static_cast<value_type>((matrixRotation.Element(2, 1) + matrixRotation.Element(1, 2)) * ratio);
A collection of useful information about the C++ basic types, represented in a generic programming wa...
Definition cmnTypeTraits.h:155
static Type Tolerance(void)
Definition cmnTypeTraits.h:170
_elementType value_type
Definition mtsGenericObjectProxy.h:329
Define a rotation based on an axis and an angle for a space of dimension 3.
Definition vctAxisAngleRotation3.h:93
const AxisType & Axis(void) const
Definition vctAxisAngleRotation3.h:312
ThisType Normalized(void) const
Definition vctAxisAngleRotation3.h:540
const AngleType & Angle(void) const
Definition vctAxisAngleRotation3.h:322
Definition vctForwardDeclarations.h:145
Definition vctForwardDeclarations.h:119
Dynamic vector referencing existing memory (const).
Definition vctDynamicConstVectorRef.h:79
Definition vctDynamicMatrixBase.h:43
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition vctDynamicMatrixBase.h:143
ColumnRefType Column(size_type index) CISST_THROW(std
Definition vctDynamicMatrixBase.h:233
Definition vctDynamicVectorBase.h:62
pointer Pointer(index_type index=0)
Definition vctDynamicVectorBase.h:155
value_type & X(void)
Definition vctDynamicVectorBase.h:497
value_type & Y(void)
Definition vctDynamicVectorBase.h:510
value_type & Z(void)
Definition vctDynamicVectorBase.h:523
Dynamic vector referencing existing memory.
Definition vctDynamicVectorRef.h:78
A template for a fixed size matrix with fixed spacing in memory.
Definition vctFixedSizeConstMatrixBase.h:104
const_pointer Pointer(size_type rowIndex, size_type colIndex) const
Definition vctFixedSizeConstMatrixBase.h:329
size_type cols() const
Definition vctFixedSizeConstMatrixBase.h:282
ConstColumnRefType Column(size_type index) const
Definition vctFixedSizeConstMatrixBase.h:406
A template for a fixed length vector with fixed spacing in memory.
Definition vctFixedSizeConstVectorBase.h:108
const value_type & Y(void) const
Definition vctFixedSizeConstVectorBase.h:306
const value_type & X(void) const
Definition vctFixedSizeConstVectorBase.h:298
NormType Norm(void) const
Definition vctFixedSizeConstVectorBase.h:453
const value_type & Z(void) const
Definition vctFixedSizeConstVectorBase.h:314
const_pointer Pointer(size_type index=0) const
Definition vctFixedSizeConstVectorBase.h:268
Definition vctForwardDeclarations.h:86
A template for a fixed size matrix with fixed spacings in memory.
Definition vctFixedSizeMatrixBase.h:60
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition vctFixedSizeMatrixBase.h:161
ColumnRefType Column(size_type index)
Definition vctFixedSizeMatrixBase.h:249
A template for a fixed length vector with fixed spacing in memory.
Definition vctFixedSizeVectorBase.h:77
value_type & Y(void)
Definition vctFixedSizeVectorBase.h:572
value_type & Z(void)
Definition vctFixedSizeVectorBase.h:585
pointer Pointer(size_type index=0)
Definition vctFixedSizeVectorBase.h:226
value_type & X(void)
Definition vctFixedSizeVectorBase.h:559
Implementation of a fixed-size vector using template metaprogramming.
Definition vctFixedSizeVector.h:54
Definition vctForwardDeclarations.h:89
Define a rotation matrix for a space of dimension 3.
Definition vctMatrixRotation3Base.h:71
ThisType Conjugate(void) const
Definition vctQuaternionBase.h:136
ThisType & ConjugateSelf(void)
Definition vctQuaternionBase.h:126
ThisType & ProductOf(const vctQuaternionBase< __containerType1 > &quat1, const vctQuaternionBase< __containerType2 > &quat2)
Definition vctQuaternionBase.h:149
const_reference R(void) const
Definition vctQuaternionBase.h:101
vctQuaternionBase(void)
Definition vctQuaternionBase.h:70
ThisType & ConjugateOf(const vctQuaternionBase< __containerTypeOther > &otherQuaternion)
Definition vctQuaternionBase.h:116
Define a rotation quaternion for a space of dimension 3.
Definition vctQuaternionRotation3Base.h:64
vctQuaternionRotation3Base(const value_type &x, const value_type &y, const value_type &z, const value_type &r, bool normalizeInput)
Definition vctQuaternionRotation3Base.h:252
bool AlmostEquivalent(const ThisType &other, value_type tolerance=TypeTraits::Tolerance()) const
Definition vctQuaternionRotation3Base.h:857
ThisType ApplyInverseTo(const ThisType &input) const
Definition vctQuaternionRotation3Base.h:801
ThisType & From(const ThisType &otherRotation)
Definition vctQuaternionRotation3Base.h:506
void ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input, vctFixedSizeVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &output) const
Definition vctQuaternionRotation3Base.h:725
vctQuaternionRotation3Base(const vctMatrixRotation3Base< __containerType > &matrixRotation) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:170
ThisType & NormalizedOf(const ThisType &otherQuaternion)
Definition vctQuaternionRotation3Base.h:513
ThisType & FromNormalized(value_type x, value_type y, value_type z, value_type r)
Definition vctQuaternionRotation3Base.h:398
ThisType & FromNormalized(const vctMatrixRotation3Base< __containerType > &matrixRotation)
Definition vctQuaternionRotation3Base.h:428
vctQuaternionRotation3Base(const value_type &x, const value_type &y, const value_type &z, const value_type &r) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:157
ThisType & FromNormalized(const vctQuaternionRotation3Base< __containerType > &other)
Definition vctQuaternionRotation3Base.h:389
void ApplyTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition vctQuaternionRotation3Base.h:690
vctQuaternionRotation3Base(void)
Definition vctQuaternionRotation3Base.h:112
vctFixedSizeVector< value_type, DIMENSION > ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition vctQuaternionRotation3Base.h:603
void ApplyTo(const ThisType &input, ThisType &output) const
Definition vctQuaternionRotation3Base.h:663
void ApplyTo(const vctDynamicConstMatrixBase< __matrixOwnerType1, value_type > &input, vctDynamicMatrixBase< __matrixOwnerType2, value_type > &output) const
Definition vctQuaternionRotation3Base.h:641
ContainerType ContainerType
Definition vctQuaternionRotation3Base.h:75
ThisType & FromRaw(const vctMatrixRotation3Base< __containerType > &matrixRotation)
Definition vctQuaternionRotation3Base.h:494
ThisType & InverseOf(const ThisType &otherRotation)
Definition vctQuaternionRotation3Base.h:549
vctQuaternionRotation3Base(const vctAxisAngleRotation3< value_type > &axisAngleRotation, bool normalizeInput)
Definition vctQuaternionRotation3Base.h:288
void Allocate(void)
Definition vctQuaternionRotation3Base.h:106
vctQuaternionRotation3Base(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:193
vctQuaternionRotation3Base(const vctAxisAngleRotation3< value_type > &axisAngleRotation) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:181
void ThrowUnlessIsNormalized(void) const CISST_THROW(std
Definition vctQuaternionRotation3Base.h:85
@ SIZE
Definition vctQuaternionRotation3Base.h:66
ThisType Inverse(void) const
Definition vctQuaternionRotation3Base.h:557
vctFixedSizeVector< value_type, DIMENSION > ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition vctQuaternionRotation3Base.h:745
ThisType & NormalizedSelf(void)
Definition vctQuaternionRotation3Base.h:522
@ DIMENSION
Definition vctQuaternionRotation3Base.h:67
void ThrowUnlessIsNormalized(const _inputType &input) const CISST_THROW(std
Definition vctQuaternionRotation3Base.h:96
void ApplyInverseTo(const vctDynamicConstMatrixBase< __matrixOwnerType1, value_type > &input, vctDynamicMatrixBase< __matrixOwnerType2, value_type > &output) const
Definition vctQuaternionRotation3Base.h:831
cmnTypeTraits< value_type > TypeTraits
Definition vctQuaternionRotation3Base.h:80
CISST_DEPRECATED void GetAxisAngle(vctFixedSizeVectorBase< 3, __stride, value_type, __dataPtrType > &axis, value_type &angle)
Definition vctQuaternionRotation3Base.h:955
ThisType & From(value_type x, value_type y, value_type z, value_type r) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:342
void ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input, vctFixedSizeVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &output) const
Definition vctQuaternionRotation3Base.h:583
vctQuaternionRotation3Base(const ThisType &quaternionRotation)
Definition vctQuaternionRotation3Base.h:122
void ApplyInverseTo(const ThisType &input, ThisType &output) const
Definition vctQuaternionRotation3Base.h:787
void ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition vctQuaternionRotation3Base.h:572
ThisType & FromRaw(const vctQuaternionRotation3Base< __containerType > &other)
Definition vctQuaternionRotation3Base.h:450
ThisType Normalized(void) const
Definition vctQuaternionRotation3Base.h:532
ThisType & FromRaw(value_type x, value_type y, value_type z, value_type r)
Definition vctQuaternionRotation3Base.h:456
ThisType & FromNormalized(const vctAxisAngleRotation3< value_type > axisAngleRotation)
Definition vctQuaternionRotation3Base.h:406
vctFixedSizeVector< value_type, DIMENSION > ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input) const
Definition vctQuaternionRotation3Base.h:754
ThisType & FromRaw(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation)
Definition vctQuaternionRotation3Base.h:480
ThisType ApplyTo(const ThisType &input) const
Definition vctQuaternionRotation3Base.h:677
void ApplyTo(const vctFixedSizeConstMatrixBase< DIMENSION, __cols, __rowStride1, __colStride1, value_type, __dataPtrType1 > &input, vctFixedSizeMatrixBase< DIMENSION, __cols, __rowStride2, __colStride2, value_type, __dataPtrType2 > &output) const
Definition vctQuaternionRotation3Base.h:625
vctFixedSizeVector< value_type, DIMENSION > ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input) const
Definition vctQuaternionRotation3Base.h:612
ThisType & From(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:358
ThisType & operator=(const ThisType &quaternionRotation)
Definition vctQuaternionRotation3Base.h:129
ThisType operator*(const ThisType &input) const
Definition vctQuaternionRotation3Base.h:881
ThisType & FromNormalized(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation)
Definition vctQuaternionRotation3Base.h:413
vctQuaternionRotation3Base(const vctMatrixRotation3Base< __containerType > &matrixRotation, bool normalizeInput)
Definition vctQuaternionRotation3Base.h:271
void ApplyInverseTo(const vctFixedSizeConstMatrixBase< DIMENSION, __cols, __rowStride1, __colStride1, value_type, __dataPtrType1 > &input, vctFixedSizeMatrixBase< DIMENSION, __cols, __rowStride2, __colStride2, value_type, __dataPtrType2 > &output) const
Definition vctQuaternionRotation3Base.h:767
ThisType & From(const vctAxisAngleRotation3< value_type > axisAngleRotation) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:350
ThisType & From(const vctMatrixRotation3Base< __containerType > &matrixRotation) CISST_THROW(std
Definition vctQuaternionRotation3Base.h:366
ThisType & FromRaw(const vctAxisAngleRotation3< value_type > axisAngleRotation)
Definition vctQuaternionRotation3Base.h:462
void ApplyInverseTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition vctQuaternionRotation3Base.h:814
vctQuaternionRotation3Base(const ThisType &quaternionRotation, bool normalizeInput)
Definition vctQuaternionRotation3Base.h:231
vctQuaternionBase< ContainerType > BaseType
Definition vctQuaternionRotation3Base.h:70
CISST_DEPRECATED const ThisType & From(const vctFixedSizeConstVectorBase< 3, __stride, value_type, __dataPtrType > &axis, const AngleType &angle)
Definition vctQuaternionRotation3Base.h:906
vctQuaternionRotation3Base(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation, bool normalizeInput)
Definition vctQuaternionRotation3Base.h:307
void ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition vctQuaternionRotation3Base.h:714
static CISST_EXPORT const ThisType & Identity()
VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type)
ThisType & InverseSelf(void)
Definition vctQuaternionRotation3Base.h:542
vctQuaternionRotation3Base< ContainerType > ThisType
Definition vctQuaternionRotation3Base.h:76
Define a rotation based on the rodriguez representation for a space of dimension 3.
Definition vctRodriguezRotation3Base.h:68
ThisType Normalized(void) const
Definition vctRodriguezRotation3Base.h:302
static OutputElementType Operate(const InputElementType &input)
Definition vctUnaryOperations.h:86
#define CMN_ASSERT(expr)
Definition cmnAssert.h:97
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#define CISST_DEPRECATED
Definition cmnPortability.h:314
#define CISST_THROW(exceptionParameter)
Somewhat portable compilation warning message. This works with very recent versions of gcc (4....
Definition cmnPortability.h:559
void cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76
Declaration of vctAxisAngleRotation3.
vctDynamicConstMatrixBase< _matrixOwnerType, _elementType > ThisType
Definition vctDynamicConstMatrixBase.h:86
const value_type & Y(void) const
Definition vctDynamicConstVectorBase.h:271
const value_type & Z(void) const
Definition vctDynamicConstVectorBase.h:279
const value_type & X(void) const
Definition vctDynamicConstVectorBase.h:263
bool IsNormalized(void) const
Definition vctDynamicConstVectorBase.h:414
Macros to export the symbols of cisstVector (in a Dll).
Declaration of vctFixedSizeMatrix.
const bool VCT_DO_NOT_NORMALIZE
Definition vctForwardDeclarations.h:67
Declaration of vctMatrixRotation3Base.
Declaration of vctQuaternionBase.
void vctQuaternionRotation3BaseFromRaw(vctQuaternionRotation3Base< _quaternionType > &quaternionRotation, const vctMatrixRotation3Base< _matrixType > &matrixRotation)
Definition vctQuaternionRotation3Base.h:1027
vctFixedSizeVector< _elementType, 3 > operator*(const vctQuaternionRotation3Base< _containerType > &rotationQuaternion, const vctFixedSizeConstVectorBase< 3, _stride, _elementType, _dataPtrType > &vector)
Definition vctQuaternionRotation3Base.h:977
void vctQuaternionVectorProductByElements(const _elementType qX, const _elementType qY, const _elementType qZ, const _elementType qR, const _elementType vX, const _elementType vY, const _elementType vZ, vctFixedSizeVectorBase< 3, __strideOut, _elementType, __dataPtrTypeOut > &output)
Definition vctQuaternionRotation3Base.h:1001
Declaration of vctRodriguezRotation3.