22 #ifndef _vctQuaternionRotation3Base_h
23 #define _vctQuaternionRotation3Base_h
42 template <
class _quaternionType,
class _matrixType>
64 template <
class _containerType>
88 if (! this->IsNormalized()) {
89 cmnThrow(std::runtime_error(
"vctQuaternionRotation3Base: This rotation is not normalized"));
97 template <
class _inputType>
99 if (! input.IsNormalized()) {
100 cmnThrow(std::runtime_error(
"vctQuaternionRotation3Base: Input is not normalized"));
128 this->
Assign(quaternionRotation);
155 const value_type & r)
throw(std::runtime_error)
158 this->
From(x, y, z, r);
165 template <
class __containerType>
170 this->
From(matrixRotation);
181 this->
From(axisAngleRotation);
188 template <
class __containerType>
193 this->
From(rodriguezRotation);
232 if (normalizeInput) {
235 this->
FromRaw(quaternionRotation);
250 const value_type & r,
254 if (normalizeInput) {
266 template <
class __containerType>
272 if (normalizeInput) {
289 if (normalizeInput) {
292 this->
FromRaw(axisAngleRotation);
302 template <
class __containerType>
308 if (normalizeInput) {
311 this->
FromRaw(rodriguezRotation);
339 From(value_type x, value_type y, value_type z, value_type r)
throw(std::runtime_error) {
349 return FromRaw(axisAngleRotation);
353 template <
class __containerType>
357 return this->
FromRaw(rodriguezRotation);
361 template <
class __containerType>
365 return FromRaw(matrixRotation);
384 template <
class __containerType>
408 template <
class __containerType>
423 template <
class __containerType>
445 template <
class __containerType>
453 FromRaw(value_type x, value_type y, value_type z, value_type r) {
461 typedef typename AxisAngleType::AxisType AxisType;
463 const AngleType angle = axisAngleRotation.
Angle();
464 const AxisType axis = axisAngleRotation.
Axis();
466 const AngleType halfAngle = angle * 0.5;
467 const value_type s = (value_type) sin(halfAngle);
468 const value_type c = (value_type) cos(halfAngle);
470 this->
Assign(s * axis[0], s * axis[1], s * axis[2], c);
475 template <
class __containerType>
490 template <
class __containerType>
512 this->
Assign(otherQuaternion);
520 BaseType::NormalizedSelf();
531 result.NormalizedSelf();
556 result.InverseOf(*
this);
567 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
574 input.
X(), input.
Y(), input.
Z(), output);
578 template <
class __vectorOwnerType, str
ide_type __str
ide,
class __dataPtrType>
586 input.
X(), input.
Y(), input.
Z(), output);
598 template <str
ide_type __str
ide,
class __dataPtrType>
607 template <
class __vectorOwnerType>
628 for (col = 0; col < numCols; ++col) {
631 this->
ApplyTo(inputCol, outputCol);
637 template <
class __matrixOwnerType1,
class __matrixOwnerType2>
645 for (col = 0; col < numCols; ++col) {
648 this->
ApplyTo(inputCol, outputCol);
662 output.ProductOf(*
this, input);
685 template <
class _vectorOwnerType1,
class _vectorOwnerType2>
695 input.
X(), input.
Y(), input.
Z(), tmpOutput);
696 output.
X() = tmpOutput.X();
697 output.
Y() = tmpOutput.Y();
698 output.
Z() = tmpOutput.Z();
709 template <str
ide_type __str
ide1,
class __dataPtrType1, str
ide_type __str
ide2,
class __dataPtrType2>
716 input.
X(), input.
Y(), input.
Z(), output);
720 template <
class __vectorOwnerType, str
ide_type __str
ide,
class __dataPtrType>
728 input.
X(), input.
Y(), input.
Z(), output);
740 template <str
ide_type __str
ide,
class __dataPtrType>
749 template <
class __vectorOwnerType>
770 for (col = 0; col < numCols; ++col) {
786 output.ProductOf(this->
Conjugate(), input);
809 template <
class _vectorOwnerType1,
class _vectorOwnerType2>
819 input.
X(), input.
Y(), input.
Z(), tmpOutput);
820 output.
X() = tmpOutput.X();
821 output.
Y() = tmpOutput.Y();
822 output.
Z() = tmpOutput.Z();
827 template <
class __matrixOwnerType1,
class __matrixOwnerType2>
835 for (col = 0; col < numCols; ++col) {
857 differenceVector.DifferenceOf(*
this, other);
858 differenceVector.AbsSelf();
859 if (differenceVector.
Lesser(tolerance)) {
862 differenceVector.SumOf(*
this, other);
863 differenceVector.AbsSelf();
864 if (differenceVector.
Lesser(tolerance)) {
901 template <str
ide_type __str
ide,
class __dataPtrType>
904 const AngleType & angle) {
907 const double halfAngle = angle * 0.5;
908 const value_type s = value_type(sin(halfAngle));
909 const value_type c = value_type(cos(halfAngle));
910 this->ConcatenationOf(s * axis, c);
928 template <str
ide_type __str
ide,
class __dataPtrType>
931 const value_type axisLength = rodriguezRotation.
Norm();
933 const double angle = (fabs(axisLength) < axisTolerance) ? 0.0 : axisLength;
936 return this->
From(axis, angle);
950 template <str
ide_type __str
ide,
class __dataPtrType>
953 value_type & angle) {
954 angle = value_type(acos(this->
R()) * 2);
955 value_type sinAngle = value_type(sqrt(1.0 - this->
R() * this->
R()));
957 axis.
X() = this->X() / sinAngle;
958 axis.
Y() = this->Y() / sinAngle;
959 axis.
Z() = this->Z() / sinAngle;
961 axis.
X() = this->X();
962 axis.
Y() = this->Y();
963 axis.
Z() = this->Z();
972 template <
class _containerType,
class _elementType, vct::str
ide_type _str
ide,
class _dataPtrType>
977 rotationQuaternion.
ApplyTo(vector, result);
981 template <
class _containerType,
class _elementType,
class _vectorOwnerType>
986 rotationQuaternion.
ApplyTo(vector, result);
997 template <
class _elementType, vct::str
ide_type __str
ideOut,
class __dataPtrTypeOut>
999 const _elementType qX,
const _elementType qY,
const _elementType qZ,
const _elementType qR,
1000 const _elementType vX,
const _elementType vY,
const _elementType vZ,
1003 typedef _elementType value_type;
1007 const value_type tR = - vX * qX - vY * qY - vZ * qZ;
1008 const value_type tX = - vX * qR + vY * qZ - vZ * qY;
1009 const value_type tY = - vY * qR + vZ * qX - vX * qZ;
1010 const value_type tZ = - vZ * qR + vX * qY - vY * qX;
1015 output.
X() = - qR * tX - qX * tR - qY * tZ + qZ * tY;
1016 output.
Y() = - qR * tY - qY * tR - qZ * tX + qX * tZ;
1017 output.
Z() = - qR * tZ - qZ * tR - qX * tY + qY * tX;
1022 template <
class _quaternionType,
class _matrixType>
1027 typedef typename _quaternionType::value_type value_type;
1028 typedef typename _quaternionType::NormType NormType;
1030 const NormType a0 = 1.0 + matrixRotation.Element(0, 0) + matrixRotation.Element(1, 1) + matrixRotation.Element(2, 2);
1031 const NormType a1 = 1.0 + matrixRotation.Element(0, 0) - matrixRotation.Element(1, 1) - matrixRotation.Element(2, 2);
1032 const NormType a2 = 1.0 - matrixRotation.Element(0, 0) + matrixRotation.Element(1, 1) - matrixRotation.Element(2, 2);
1033 const NormType a3 = 1.0 - matrixRotation.Element(0, 0) - matrixRotation.Element(1, 1) + matrixRotation.Element(2, 2);
1036 unsigned char index = 0;
1052 quaternionRotation.
R() =
static_cast<value_type
>(sqrt(a0) * 0.5);
1053 ratio = 0.25 / quaternionRotation.
R();
1054 quaternionRotation.X() =
static_cast<value_type
>((matrixRotation.Element(2, 1) - matrixRotation.Element(1, 2)) * ratio);
1055 quaternionRotation.Y() =
static_cast<value_type
>((matrixRotation.Element(0, 2) - matrixRotation.Element(2, 0)) * ratio);
1056 quaternionRotation.Z() =
static_cast<value_type
>((matrixRotation.Element(1, 0) - matrixRotation.Element(0, 1)) * ratio);
1059 quaternionRotation.X() =
static_cast<value_type
>(sqrt(a1) * 0.5);
1060 ratio = 0.25 / quaternionRotation.X();
1061 quaternionRotation.
R() =
static_cast<value_type
>((matrixRotation.Element(2, 1) - matrixRotation.Element(1, 2)) * ratio);
1062 quaternionRotation.Y() =
static_cast<value_type
>((matrixRotation.Element(1, 0) + matrixRotation.Element(0, 1)) * ratio);
1063 quaternionRotation.Z() =
static_cast<value_type
>((matrixRotation.Element(2, 0) + matrixRotation.Element(0, 2)) * ratio);
1066 quaternionRotation.Y() =
static_cast<value_type
>(sqrt(a2) * 0.5);
1067 ratio = 0.25 / quaternionRotation.Y();
1068 quaternionRotation.
R() =
static_cast<value_type
>((matrixRotation.Element(0, 2) - matrixRotation.Element(2, 0)) * ratio);
1069 quaternionRotation.X() =
static_cast<value_type
>((matrixRotation.Element(1, 0) + matrixRotation.Element(0, 1)) * ratio);
1070 quaternionRotation.Z() =
static_cast<value_type
>((matrixRotation.Element(2, 1) + matrixRotation.Element(1, 2)) * ratio);
1073 quaternionRotation.Z() =
static_cast<value_type
>(sqrt(a3) * 0.5);
1074 ratio = 0.25 / quaternionRotation.Z();
1075 quaternionRotation.
R() =
static_cast<value_type
>((matrixRotation.Element(1, 0) - matrixRotation.Element(0, 1)) * ratio);
1076 quaternionRotation.X() =
static_cast<value_type
>((matrixRotation.Element(0, 2) + matrixRotation.Element(2, 0)) * ratio);
1077 quaternionRotation.Y() =
static_cast<value_type
>((matrixRotation.Element(2, 1) + matrixRotation.Element(1, 2)) * ratio);
1084 #endif // _vctQuaternionRotation3Base_h
size_t index_type
Definition: vctContainerTraits.h:36
void ApplyTo(const ThisType &input, ThisType &output) const
Definition: vctQuaternionRotation3Base.h:660
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
value_type & Y(void)
Definition: vctFixedSizeVectorBase.h:572
value_type & Y(void)
Definition: vctDynamicVectorBase.h:510
const value_type & Y(void) const
Definition: vctDynamicConstVectorBase.h:251
A template for a fixed size matrix with fixed spacing in memory.
Definition: vctFixedSizeConstMatrixBase.h:103
void ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition: vctQuaternionRotation3Base.h:711
ThisType Inverse(void) const
Definition: vctQuaternionRotation3Base.h:554
ThisType & From(const vctAxisAngleRotation3< value_type > axisAngleRotation)
Definition: vctQuaternionRotation3Base.h:347
const AxisType & Axis(void) const
Definition: vctAxisAngleRotation3.h:314
#define CMN_ASSERT(expr)
Definition: cmnAssert.h:90
NormType Norm(void) const
Definition: vctFixedSizeConstVectorBase.h:453
void ApplyInverseTo(const ThisType &input, ThisType &output) const
Definition: vctQuaternionRotation3Base.h:784
Definition: vctDynamicMatrixBase.h:42
#define CISST_DEPRECATED
Definition: cmnPortability.h:310
Dynamic vector referencing existing memory (const)
Definition: vctDynamicConstVectorRef.h:79
vctQuaternionRotation3Base(const ThisType &quaternionRotation)
Definition: vctQuaternionRotation3Base.h:124
vctQuaternionRotation3Base(const vctAxisAngleRotation3< value_type > &axisAngleRotation)
Definition: vctQuaternionRotation3Base.h:178
vctQuaternionRotation3Base(void)
Definition: vctQuaternionRotation3Base.h:114
Define a quaternion container.
Definition: vctForwardDeclarations.h:205
An implementation of the ``abstract'' vctFixedSizeVectorBase.
Definition: vctFixedSizeVectorRef.h:46
bool AlmostEquivalent(const ThisType &other, value_type tolerance=TypeTraits::Tolerance()) const
Definition: vctQuaternionRotation3Base.h:854
ThisType & FromRaw(const vctMatrixRotation3Base< __containerType > &matrixRotation)
Definition: vctQuaternionRotation3Base.h:491
static Type Tolerance(void)
Definition: cmnTypeTraits.h:170
bool Lesser(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &otherVector) const
Definition: vctFixedSizeConstVectorBase.h:733
ThisType operator*(const ThisType &input) const
Definition: vctQuaternionRotation3Base.h:878
ThisType & ConjugateSelf(void)
Definition: vctQuaternionBase.h:126
Declaration of vctFixedSizeMatrix.
const value_type & Y(void) const
Definition: vctFixedSizeConstVectorBase.h:306
ThisType & FromNormalized(value_type x, value_type y, value_type z, value_type r)
Definition: vctQuaternionRotation3Base.h:395
const value_type & X(void) const
Definition: vctDynamicConstVectorBase.h:243
Dynamic vector referencing existing memory.
Definition: vctDynamicVectorRef.h:77
Declaration of vctQuaternionBase.
Declaration of vctAxisAngleRotation3.
_containerType ContainerType
Definition: vctQuaternionRotation3Base.h:77
vctQuaternionRotation3Base(const vctAxisAngleRotation3< value_type > &axisAngleRotation, bool normalizeInput)
Definition: vctQuaternionRotation3Base.h:285
An implementation of the ``abstract'' vctFixedSizeConstVectorBase.
Definition: vctFixedSizeConstVectorRef.h:50
ThisType & From(const vctMatrixRotation3Base< __containerType > &matrixRotation)
Definition: vctQuaternionRotation3Base.h:363
size_t size_type
Definition: vctContainerTraits.h:35
vctFixedSizeVector< value_type, DIMENSION > ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input) const
Definition: vctQuaternionRotation3Base.h:609
VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type)
ThisType & InverseSelf(void)
Definition: vctQuaternionRotation3Base.h:539
ColumnRefType Column(size_type index)
Definition: vctDynamicMatrixBase.h:233
void ApplyTo(const vctDynamicConstMatrixBase< __matrixOwnerType1, value_type > &input, vctDynamicMatrixBase< __matrixOwnerType2, value_type > &output) const
Definition: vctQuaternionRotation3Base.h:638
void Allocate(void)
Definition: vctQuaternionRotation3Base.h:108
const value_type & Z(void) const
Definition: vctDynamicConstVectorBase.h:259
ThisType Normalized(void) const
Definition: vctQuaternionRotation3Base.h:529
Definition: vctDynamicConstMatrixBase.h:77
void ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input, vctFixedSizeVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &output) const
Definition: vctQuaternionRotation3Base.h:722
Define a rotation based on an axis and an angle for a space of dimension 3.
Definition: vctAxisAngleRotation3.h:94
static CISST_EXPORT const ThisType & Identity()
Define unary operations on an object as classes.
Definition: vctUnaryOperations.h:55
void ApplyInverseTo(const vctDynamicConstMatrixBase< __matrixOwnerType1, value_type > &input, vctDynamicMatrixBase< __matrixOwnerType2, value_type > &output) const
Definition: vctQuaternionRotation3Base.h:828
ThisType & From(const ThisType &otherRotation)
Definition: vctQuaternionRotation3Base.h:503
value_type & X(void)
Definition: vctFixedSizeVectorBase.h:559
ThisType & NormalizedSelf(void)
Definition: vctQuaternionRotation3Base.h:519
size_type size(void) const
Definition: vctDynamicConstVectorBase.h:164
void ApplyTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition: vctQuaternionRotation3Base.h:687
A template for a fixed size matrix with fixed spacings in memory.
Definition: vctFixedSizeMatrixBase.h:58
ThisType & FromNormalized(const vctQuaternionRotation3Base< __containerType > &other)
Definition: vctQuaternionRotation3Base.h:386
ThisType & FromNormalized(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation)
Definition: vctQuaternionRotation3Base.h:410
Define a rotation matrix for a space of dimension 3.
Definition: vctForwardDeclarations.h:199
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctDynamicMatrixBase.h:143
Definition: vctQuaternionRotation3Base.h:69
vctFixedSizeVector< value_type, DIMENSION > ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition: vctQuaternionRotation3Base.h:600
ThisType Normalized(void) const
Definition: vctAxisAngleRotation3.h:542
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
void ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input, vctFixedSizeVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &output) const
Definition: vctQuaternionRotation3Base.h:580
void Assign(const OtherT &other)
Definition: cisstVectorEigenAddons.h:3
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
ThisType Normalized(void) const
Definition: vctRodriguezRotation3Base.h:304
void ThrowUnlessIsNormalized(const _inputType &input) const
Definition: vctQuaternionRotation3Base.h:98
ThisType & FromRaw(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation)
Definition: vctQuaternionRotation3Base.h:477
vctQuaternionRotation3Base(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation, bool normalizeInput)
Definition: vctQuaternionRotation3Base.h:304
ConstColumnRefType Column(size_type index) const
Definition: vctDynamicConstMatrixBase.h:372
value_type & X(void)
Definition: vctDynamicVectorBase.h:497
const_pointer Pointer(size_type index=0) const
Definition: vctFixedSizeConstVectorBase.h:268
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:764
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:998
vctQuaternionRotation3Base(const ThisType &quaternionRotation, bool normalizeInput)
Definition: vctQuaternionRotation3Base.h:228
ThisType & FromNormalized(const vctMatrixRotation3Base< __containerType > &matrixRotation)
Definition: vctQuaternionRotation3Base.h:425
const_pointer Pointer(index_type rowIndex, index_type colIndex) const
Definition: vctDynamicConstMatrixBase.h:306
CISST_DEPRECATED const ThisType & From(const vctFixedSizeConstVectorBase< 3, __stride, value_type, __dataPtrType > &axis, const AngleType &angle)
Definition: vctQuaternionRotation3Base.h:903
vctQuaternionRotation3Base(const vctMatrixRotation3Base< __containerType > &matrixRotation, bool normalizeInput)
Definition: vctQuaternionRotation3Base.h:268
const value_type & X(void) const
Definition: vctFixedSizeConstVectorBase.h:298
vctQuaternionRotation3Base(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation)
Definition: vctQuaternionRotation3Base.h:190
ThisType ApplyInverseTo(const ThisType &input) const
Definition: vctQuaternionRotation3Base.h:798
ThisType & From(value_type x, value_type y, value_type z, value_type r)
Definition: vctQuaternionRotation3Base.h:339
void ThrowUnlessIsNormalized(void) const
Definition: vctQuaternionRotation3Base.h:87
CISST_DEPRECATED const ThisType & From(const vctFixedSizeConstVectorBase< 3, __stride, value_type, __dataPtrType > &rodriguezRotation)
Definition: vctQuaternionRotation3Base.h:930
vctQuaternionRotation3Base< _containerType > ThisType
Definition: vctQuaternionRotation3Base.h:78
#define cmnThrow(a)
Definition: MinimalCmn.h:4
const_pointer Pointer(index_type index=0) const
Definition: vctDynamicConstVectorBase.h:221
ThisType & FromRaw(value_type x, value_type y, value_type z, value_type r)
Definition: vctQuaternionRotation3Base.h:453
pointer Pointer(index_type index=0)
Definition: vctDynamicVectorBase.h:155
const AngleType & Angle(void) const
Definition: vctAxisAngleRotation3.h:324
Declaration of vctMatrixRotation3Base.
void ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition: vctQuaternionRotation3Base.h:569
const_reference R(void) const
Definition: vctQuaternionBase.h:101
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeVectorBase.h:76
ThisType Conjugate(void) const
Definition: vctQuaternionBase.h:136
ptrdiff_t stride_type
Definition: vctContainerTraits.h:37
Definition: vctQuaternionRotation3Base.h:68
ThisType ApplyTo(const ThisType &input) const
Definition: vctQuaternionRotation3Base.h:674
Definition: vctDynamicConstVectorBase.h:77
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:622
const value_type & Z(void) const
Definition: vctFixedSizeConstVectorBase.h:314
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeConstVectorBase.h:107
ThisType & InverseOf(const ThisType &otherRotation)
Definition: vctQuaternionRotation3Base.h:546
pointer Pointer(size_type index=0)
Definition: vctFixedSizeVectorBase.h:226
const bool VCT_DO_NOT_NORMALIZE
Definition: vctForwardDeclarations.h:69
void vctQuaternionRotation3BaseFromRaw(vctQuaternionRotation3Base< _quaternionType > &quaternionRotation, const vctMatrixRotation3Base< _matrixType > &matrixRotation)
Definition: vctQuaternionRotation3Base.h:1024
vctFixedSizeVector< value_type, DIMENSION > ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input) const
Definition: vctQuaternionRotation3Base.h:751
value_type & Z(void)
Definition: vctFixedSizeVectorBase.h:585
ThisType & ConjugateOf(const vctQuaternionBase< __containerTypeOther > &otherQuaternion)
Definition: vctQuaternionBase.h:116
Define a rotation quaternion for a space of dimension 3.
Definition: vctForwardDeclarations.h:208
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
void ApplyInverseTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition: vctQuaternionRotation3Base.h:811
ColumnRefType Column(size_type index)
Definition: vctFixedSizeMatrixBase.h:249
vctFixedSizeVector< _elementType, 3 > operator*(const vctQuaternionRotation3Base< _containerType > &rotationQuaternion, const vctFixedSizeConstVectorBase< 3, _stride, _elementType, _dataPtrType > &vector)
Definition: vctQuaternionRotation3Base.h:974
cmnTypeTraits< value_type > TypeTraits
Definition: vctQuaternionRotation3Base.h:82
vctQuaternionRotation3Base(const vctMatrixRotation3Base< __containerType > &matrixRotation)
Definition: vctQuaternionRotation3Base.h:167
vctFixedSizeVector< value_type, DIMENSION > ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition: vctQuaternionRotation3Base.h:742
ThisType & FromRaw(const vctAxisAngleRotation3< value_type > axisAngleRotation)
Definition: vctQuaternionRotation3Base.h:459
Define a rotation based on the rodriguez representation for a space of dimension 3.
Definition: vctForwardDeclarations.h:214
ThisType & From(const vctRodriguezRotation3Base< __containerType > &rodriguezRotation)
Definition: vctQuaternionRotation3Base.h:355
ThisType & FromRaw(const vctQuaternionRotation3Base< __containerType > &other)
Definition: vctQuaternionRotation3Base.h:447
vctQuaternionRotation3Base(const value_type &x, const value_type &y, const value_type &z, const value_type &r, bool normalizeInput)
Definition: vctQuaternionRotation3Base.h:249
Declaration of vctRodriguezRotation3.
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition: vctFixedSizeMatrixBase.h:161
CISST_DEPRECATED void GetAxisAngle(vctFixedSizeVectorBase< 3, __stride, value_type, __dataPtrType > &axis, value_type &angle)
Definition: vctQuaternionRotation3Base.h:952
value_type & Z(void)
Definition: vctDynamicVectorBase.h:523
Definition: vctDynamicVectorBase.h:61
ThisType & FromNormalized(const vctAxisAngleRotation3< value_type > axisAngleRotation)
Definition: vctQuaternionRotation3Base.h:403
ThisType & NormalizedOf(const ThisType &otherQuaternion)
Definition: vctQuaternionRotation3Base.h:510
vctQuaternionBase< _containerType > BaseType
Definition: vctQuaternionRotation3Base.h:72
vctQuaternionRotation3Base(const value_type &x, const value_type &y, const value_type &z, const value_type &r)
Definition: vctQuaternionRotation3Base.h:154