20#ifndef _vctMatrixRotation3ConstBase_h
21#define _vctMatrixRotation3ConstBase_h
54template <
class _containerType>
78 cmnThrow(std::runtime_error(
"vctMatrixRotation3ConstBase: This rotation is not normalized"));
86 template <
class _inputType>
88 if (! input.IsNormalized()) {
89 cmnThrow(std::runtime_error(
"vctMatrixRotation3ConstBase: Input is not normalized"));
118 columnNorm = this->
Column(0).Norm();
121 columnNorm = this->
Column(1).Norm();
124 columnNorm = this->
Column(2).Norm();
153 template <stride_type __stride1,
class __dataPtrType1,
154 stride_type __stride2,
class __dataPtrType2>
177 template <str
ide_type __str
ide,
class __dataPtrType>
196 CMN_ASSERT(input.Pointer() != this->Pointer());
207 template <
class __vectorOwnerType1,
class __vectorOwnerType2>
213 CMN_ASSERT(input.Pointer() != output.Pointer());
224 template <
class __vectorOwnerType, str
ide_type __str
ide,
class __dataPtrType>
230 CMN_ASSERT(input.Pointer() != output.Pointer());
243 template <
class __vectorOwnerType>
258 template <stride_type __stride1,
class __dataPtrType1,
259 stride_type __stride2,
class __dataPtrType2>
280 template <str
ide_type __str
ide,
class __dataPtrType>
291 template <
class __vectorOwnerType>
309 CMN_ASSERT(input.Pointer() != output.Pointer());
323 CMN_ASSERT(input.Pointer() != this->Pointer());
334 template <
class __vectorOwnerType1,
class __vectorOwnerType2>
353 template <
class __vectorOwnerType, str
ide_type __str
ide,
class __dataPtrType>
369 template <size_type __cols,
370 stride_type __rowStride1, stride_type __colStride1,
class __dataPtrType1,
371 stride_type __rowStride2, stride_type __colStride2,
class __dataPtrType2>
381 template <
class __matrixOwnerType1,
class __matrixOwnerType2>
393 template <size_type __cols,
394 stride_type __rowStride1, stride_type __colStride1,
class __dataPtrType1,
395 stride_type __rowStride2, stride_type __colStride2,
class __dataPtrType2>
405 template <
class __matrixOwnerType1,
class __matrixOwnerType2>
430 template <str
ide_type __str
ide,
class __dataPtrType>
441 template <
class __vectorOwnerType1>
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
Definition vctForwardDeclarations.h:145
Dynamic matrix referencing existing memory (const).
Definition vctDynamicConstMatrixRef.h:81
Definition vctForwardDeclarations.h:119
Definition vctDynamicMatrixBase.h:43
pointer Pointer(size_type rowIndex, size_type colIndex)
Definition vctDynamicMatrixBase.h:143
ThisType & ProductOf(const vctDynamicConstMatrixBase< __matrixOwnerType, _elementType > &matrix, const value_type scalar)
Definition vctDynamicMatrixBase.h:971
Definition vctDynamicVectorBase.h:62
pointer Pointer(index_type index=0)
Definition vctDynamicVectorBase.h:155
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
A template for a fixed length vector with fixed spacing in memory.
Definition vctFixedSizeConstVectorBase.h:108
const_pointer Pointer(size_type index=0) const
Definition vctFixedSizeConstVectorBase.h:268
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
ThisType & ProductOf(const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, value_type, __dataPtrType > &matrix, const value_type scalar)
Definition vctFixedSizeMatrixBase.h:909
A template for a fixed length vector with fixed spacing in memory.
Definition vctFixedSizeVectorBase.h:77
pointer Pointer(size_type index=0)
Definition vctFixedSizeVectorBase.h:226
Implementation of a fixed-size vector using template metaprogramming.
Definition vctFixedSizeVector.h:54
Define a rotation matrix for a space of dimension 3.
Definition vctMatrixRotation3ConstBase.h:56
@ DIMENSION
Definition vctMatrixRotation3ConstBase.h:59
@ ROWS
Definition vctMatrixRotation3ConstBase.h:58
@ COLS
Definition vctMatrixRotation3ConstBase.h:58
RotationValueType operator*(const ThisType &input) const
Definition vctMatrixRotation3ConstBase.h:421
ContainerType BaseType
Definition vctMatrixRotation3ConstBase.h:60
RotationValueType ApplyTo(const ThisType &input) const
Definition vctMatrixRotation3ConstBase.h:195
RotationValueType Normalized(void) const
Definition vctMatrixRotation3.h:394
RotationValueType Inverse(void) const
Definition vctMatrixRotation3.h:403
bool IsNormalized(value_type tolerance=TypeTraits::Tolerance()) const
Definition vctMatrixRotation3ConstBase.h:116
void ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input, vctFixedSizeVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &output) const
Definition vctMatrixRotation3ConstBase.h:355
void ApplyInverseTo(const vctDynamicConstMatrixBase< __matrixOwnerType1, value_type > &input, vctDynamicMatrixBase< __matrixOwnerType2, value_type > &output) const
Definition vctMatrixRotation3ConstBase.h:406
static CISST_EXPORT const RotationValueType & Identity()
vctFixedSizeVector< value_type, DIMENSION > ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input) const
Definition vctMatrixRotation3ConstBase.h:245
void ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &input, vctDynamicVectorBase< __vectorOwnerType2, value_type > &output) const CISST_THROW(std
Definition vctMatrixRotation3ConstBase.h:209
RotationValueType ApplyInverseTo(const ThisType &input) const
Definition vctMatrixRotation3ConstBase.h:322
ContainerType ContainerType
Definition vctMatrixRotation3ConstBase.h:61
vctFixedSizeVector< value_type, DIMENSION > ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition vctMatrixRotation3ConstBase.h:282
void ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &input, vctDynamicVectorBase< __vectorOwnerType2, value_type > &output) const
Definition vctMatrixRotation3ConstBase.h:336
void ApplyInverseTo(const vctFixedSizeConstMatrixBase< DIMENSION, __cols, __rowStride1, __colStride1, value_type, __dataPtrType1 > &input, vctFixedSizeMatrixBase< DIMENSION, __cols, __rowStride2, __colStride2, value_type, __dataPtrType2 > &output) const
Definition vctMatrixRotation3ConstBase.h:396
vctFixedSizeVector< value_type, DIMENSION > ApplyInverseTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input) const
Definition vctMatrixRotation3ConstBase.h:293
void ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition vctMatrixRotation3ConstBase.h:261
void ApplyTo(const vctDynamicConstVectorBase< __vectorOwnerType, value_type > &input, vctFixedSizeVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &output) const CISST_THROW(std
Definition vctMatrixRotation3ConstBase.h:226
void ThrowUnlessIsNormalized(const _inputType &input) const CISST_THROW(std
Definition vctMatrixRotation3ConstBase.h:87
VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type)
bool AlmostEquivalent(const ThisType &other, value_type tolerance=TypeTraits::Tolerance()) const
Definition vctMatrixRotation3ConstBase.h:456
vctMatrixRotation3< value_type > RotationValueType
Definition vctMatrixRotation3ConstBase.h:68
void ApplyInverseTo(const ThisType &input, ThisType &output) const
Definition vctMatrixRotation3ConstBase.h:308
void ApplyTo(const vctFixedSizeConstMatrixBase< DIMENSION, __cols, __rowStride1, __colStride1, value_type, __dataPtrType1 > &input, vctFixedSizeMatrixBase< DIMENSION, __cols, __rowStride2, __colStride2, value_type, __dataPtrType2 > &output) const
Definition vctMatrixRotation3ConstBase.h:372
vctFixedSizeVector< value_type, DIMENSION > ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition vctMatrixRotation3ConstBase.h:179
void ThrowUnlessIsNormalized(void) const CISST_THROW(std
Definition vctMatrixRotation3ConstBase.h:76
void ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition vctMatrixRotation3ConstBase.h:156
vctMatrixRotation3ConstBase< ContainerType > ThisType
Definition vctMatrixRotation3ConstBase.h:62
void ApplyTo(const vctDynamicConstMatrixBase< __matrixOwnerType1, value_type > &input, vctDynamicMatrixBase< __matrixOwnerType2, value_type > &output) const
Definition vctMatrixRotation3ConstBase.h:382
cmnTypeTraits< value_type > TypeTraits
Definition vctMatrixRotation3ConstBase.h:71
Define a rotation matrix for a space of dimension 3.
Definition vctMatrixRotation3.h:51
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_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
ConstRowRefType Row(size_type index) const CISST_THROW(std
Definition vctDynamicConstMatrixBase.h:367
bool AlmostEqual(const vctDynamicConstMatrixBase< __matrixOwnerType, _elementType > &otherMatrix, value_type tolerance) const
Definition vctDynamicConstMatrixBase.h:721
ConstRefTransposeType TransposeRef(void) const
Definition vctDynamicConstMatrixBase.h:980
ConstColumnRefType Column(size_type index) const CISST_THROW(std
Definition vctDynamicConstMatrixBase.h:372
_elementType vctDotProduct(const vctDynamicConstVectorBase< _vector1OwnerType, _elementType > &vector1, const vctDynamicConstVectorBase< _vector2OwnerType, _elementType > &vector2)
Definition vctDynamicConstVectorBase.h:1087
Declaration of vctDynamicMatrix.
Macros to export the symbols of cisstVector (in a Dll).
Declaration of vctFixedSizeMatrix.
Forward declarations and #define for cisstVector.