cisst-saw
Loading...
Searching...
No Matches
vctMatrixRotation2Base.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4/*
5 Author(s): Anton Deguet
6 Created on: 2005-12-01
7
8 (C) Copyright 2005-2018 Johns Hopkins University (JHU), All Rights Reserved.
9
10--- begin cisst license - do not edit ---
11
12This software is provided "as is" under an open source license, with
13no warranty. The complete license can be found in license.txt and
14http://www.cisst.org/cisst/license.txt.
15
16--- end cisst license ---
17*/
18
19#pragma once
20#ifndef _vctMatrixRotation2Base_h
21#define _vctMatrixRotation2Base_h
22
27
32
33
54template <class _containerType>
55class vctMatrixRotation2Base: public _containerType
56{
57public:
58
59 enum {ROWS = 2, COLS = 2};
60 enum {DIMENSION = 2};
61 typedef _containerType BaseType;
62 typedef _containerType ContainerType;
64
65 /* no need to document, inherit doxygen documentation from base class */
66 VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type);
67
70
71
72protected:
74 inline void ThrowUnlessIsNormalized(void) const CISST_THROW(std::runtime_error) {
75 if (! this->IsNormalized()) {
76 cmnThrow(std::runtime_error("vctMatrixRotation2Base: This rotation is not normalized"));
77 }
78 }
79
84 template <class _inputType>
85 inline void ThrowUnlessIsNormalized(const _inputType & input) const CISST_THROW(std::runtime_error) {
86 if (! input.IsNormalized()) {
87 cmnThrow(std::runtime_error("vctMatrixRotation2Base: Input is not normalized"));
88 }
89 }
90
91
96 inline void Allocate(void) {}
97
98
99public:
100
103 {
104 this->Allocate();
105 this->Assign(Identity());
106 }
107
114 inline ThisType & operator = (const ContainerType & other) {
115 return reinterpret_cast<ThisType &>(this->Assign(other));
116 }
117
118 inline ThisType & operator = (const ThisType & other) {
119 return reinterpret_cast<ThisType &>(this->Assign(other));
120 }
121
122 inline vctMatrixRotation2Base(const ThisType & other):
123 BaseType()
124 {
125 this->Allocate();
126 this->Assign(other);
127 }
128
129 inline vctMatrixRotation2Base(const BaseType & other)
130 {
131 this->Allocate();
132 this->Assign(other);
133 }
134
135
136
150
151
162 inline vctMatrixRotation2Base(const value_type & element00, const value_type & element01,
163 const value_type & element10, const value_type & element11)
164 CISST_THROW(std::runtime_error)
165 {
166 this->Allocate();
167 this->From(element00, element01,
168 element10, element11);
169 }
170
171
172
179 template <stride_type __stride1, class __dataPtrType1,
180 stride_type __stride2, class __dataPtrType2>
183 bool vectorsAreColumns = true)
184 CISST_THROW(std::runtime_error)
185 {
186 this->Allocate();
187 this->From(v1, v2, vectorsAreColumns);
188 }
189
196 template <class __vectorOwnerType1,
197 class __vectorOwnerType2>
200 bool vectorsAreColumns = true)
201 CISST_THROW(std::runtime_error)
202 {
203 this->Allocate();
204 this->From(v1, v2, vectorsAreColumns);
205 }
206
208 inline vctMatrixRotation2Base(const vctAngleRotation2 & angleRotation)
209 CISST_THROW(std::runtime_error)
210 {
211 this->Allocate();
212 this->From(angleRotation);
213 }
214
215
216
217
218
240
241
252 inline vctMatrixRotation2Base(const value_type & element00, const value_type & element01,
253 const value_type & element10, const value_type & element11,
254 bool normalizeInput)
255 {
256 this->Allocate();
257 if (normalizeInput) {
258 this->FromNormalized(element00, element01,
259 element10, element11);
260 } else {
261 this->FromRaw(element00, element01,
262 element10, element11);
263 }
264 }
265
266
267
274 template <stride_type __stride1, class __dataPtrType1,
275 stride_type __stride2, class __dataPtrType2>
278 bool vectorsAreColumns, bool normalizeInput)
279 {
280 this->Allocate();
281 if (normalizeInput) {
282 this->FromNormalized(v1, v2, vectorsAreColumns);
283 } else {
284 this->FromRaw(v1, v2, vectorsAreColumns);
285 }
286 }
287
294 template <class __vectorOwnerType1,
295 class __vectorOwnerType2>
298 bool vectorsAreColumns, bool normalizeInput)
299 {
300 this->Allocate();
301 if (normalizeInput) {
302 this->FromNormalized(v1, v2, vectorsAreColumns);
303 } else {
304 this->FromRaw(v1, v2, vectorsAreColumns);
305 }
306 }
307
309 inline vctMatrixRotation2Base(const vctAngleRotation2 & angleRotation,
310 bool normalizeInput)
311 {
312 this->Allocate();
313 if (normalizeInput) {
314 this->FromNormalized(angleRotation);
315 } else {
316 this->FromRaw(angleRotation);
317 }
318 }
319
320
321
332 template <stride_type __rowStride, stride_type __colStride, class __dataPtrType>
333 explicit inline
338
339
347
348
362
364 inline ThisType &
365 From(const value_type & element00, const value_type & element01,
366 const value_type & element10, const value_type & element11)
367 CISST_THROW(std::runtime_error)
368 {
369 this->FromRaw(element00, element01,
370 element10, element11);
372 return *this;
373 }
374
381 template <stride_type __stride1, class __dataPtrType1,
382 stride_type __stride2, class __dataPtrType2>
383 inline ThisType &
386 bool vectorsAreColumns = true)
387 CISST_THROW(std::runtime_error)
388 {
389 this->FromRaw(v1, v2, vectorsAreColumns);
391 return *this;
392 }
393
400 template <class __vectorOwnerType1,
401 class __vectorOwnerType2>
402 inline ThisType &
405 bool vectorsAreColumns = true)
406 CISST_THROW(std::runtime_error)
407 {
408 this->FromRaw(v1, v2, vectorsAreColumns);
410 return *this;
411 }
412
414 inline ThisType &
415 From(const vctAngleRotation2 & angleRotation)
416 CISST_THROW(std::runtime_error)
417 {
418 this->ThrowUnlessIsNormalized(angleRotation);
419 return this->FromRaw(angleRotation);
420 }
421
422
423
424
425
426
427
437
439 inline ThisType &
440 FromNormalized(const value_type & element00, const value_type & element01,
441 const value_type & element10, const value_type & element11)
442 {
443 this->FromRaw(element00, element01,
444 element10, element11);
445 this->NormalizedSelf();
446 return *this;
447 }
448
455 template <stride_type __stride1, class __dataPtrType1,
456 stride_type __stride2, class __dataPtrType2>
457 inline ThisType &
460 bool vectorsAreColumns = true)
461 CISST_THROW(std::runtime_error)
462 {
463 this->FromRaw(v1, v2, vectorsAreColumns);
464 this->NormalizedSelf();
465 return *this;
466 }
467
468
475 template <class __vectorOwnerType1,
476 class __vectorOwnerType2>
477 inline ThisType &
480 bool vectorsAreColumns = true)
481 {
482 this->FromRaw(v1, v2, vectorsAreColumns);
483 this->NormalizedSelf();
484 return *this;
485 }
486
488 inline ThisType &
489 FromNormalized(const vctAngleRotation2 & angleRotation)
490 {
491 return this->FromRaw(angleRotation.Normalized());
492 }
493
494
495
496
497
498
499
509
510
512 inline ThisType &
513 FromRaw(const value_type & element00, const value_type & element01,
514 const value_type & element10, const value_type & element11)
515 {
516 this->Assign(element00, element01,
517 element10, element11);
518 return *this;
519 }
520
527 template <stride_type __stride1, class __dataPtrType1,
528 stride_type __stride2, class __dataPtrType2>
529 inline ThisType &
532 bool vectorsAreColumns = true)
533 {
534 if (vectorsAreColumns) {
535 this->Column(0).Assign(v1);
536 this->Column(1).Assign(v2);
537 } else {
538 this->Row(0).Assign(v1);
539 this->Row(1).Assign(v2);
540 }
541 return *this;
542 }
543
550 template <class __vectorOwnerType1,
551 class __vectorOwnerType2>
552 inline ThisType &
555 bool vectorsAreColumns = true)
556 CISST_THROW(std::runtime_error)
557 {
558 CMN_ASSERT(v1.size() == DIMENSION);
559 CMN_ASSERT(v2.size() == DIMENSION);
560 if (vectorsAreColumns) {
561 this->Column(0).Assign(v1);
562 this->Column(1).Assign(v2);
563 } else {
564 this->Row(0).Assign(v1);
565 this->Row(1).Assign(v2);
566 }
567 return *this;
568 }
569
572 FromRaw(const vctAngleRotation2 & angleRotation);
573
577 inline ThisType &
578 FromRaw(const ThisType & otherRotation) {
579 return reinterpret_cast<ThisType &>(this->Assign(otherRotation));
580 }
581
591 template <stride_type __rowStride, stride_type __colStride, class __dataPtrType>
592 inline ThisType &
597
599
600
601
605
608 inline ThisType & NormalizedOf(const ThisType & otherMatrix) {
609 *this = otherMatrix;
610 this->NormalizedSelf();
611 return *this;
612 }
613
617 ThisType Normalized(void) const {
618 ThisType result(*this);
619 result.NormalizedSelf();
620 return result;
621 }
622
623
631 inline bool IsNormalized(value_type tolerance = TypeTraits::Tolerance()) const
632 {
635 || (vctUnaryOperations<value_type>::AbsValue::Operate(this->Column(0).DotProduct(this->Column(1))) > tolerance)) {
636 return false;
637 } else {
638 return true;
639 }
640 }
641
642
645 inline ThisType & InverseSelf(void) {
646 // could use the transpose operator but this seems more efficient
647 value_type tmp;
648 tmp = this->Element(0, 1);
649 this->Element(0, 1) = this->Element(1, 0);
650 this->Element(1, 0) = tmp;
651 return *this;
652 }
653
654
657 inline ThisType & InverseOf(const ThisType & otherRotation) {
658 this->TransposeOf(otherRotation);
659 return *this;
660 }
661
662
666 inline ThisType Inverse(void) const {
667 ThisType result;
668 result.InverseOf(*this);
669 return result;
670 }
671
672
680 template <stride_type __stride1, class __dataPtrType1, stride_type __stride2, class __dataPtrType2>
681 inline void
687
688
697 template <stride_type __stride, class __dataPtrType>
700 {
702 this->ApplyTo(input, result);
703 return result;
704 }
705
706
714 inline void ApplyTo(const ThisType & input, ThisType & output) const {
715 CMN_ASSERT(input.Pointer() != output.Pointer());
716 output.ProductOf(*this, input);
717 }
718
719
728 inline ThisType
729 ApplyTo(const ThisType & input) const {
730 CMN_ASSERT(input.Pointer() != this->Pointer());
731 ThisType result;
732 this->ApplyTo(input, result);
733 return result;
734 }
735
736
741 template <class _vectorOwnerType1, class _vectorOwnerType2>
742 inline void
745 CMN_ASSERT(input.Pointer() != output.Pointer());
746 CMN_ASSERT(input.size() == DIMENSION);
747 CMN_ASSERT(output.size() == DIMENSION);
748 output[0] = this->Element(0, 0) * input[0] + this->Element(0, 1) * input[1];
749 output[1] = this->Element(1, 0) * input[0] + this->Element(1, 1) * input[1];
750 }
751
752
760 template <stride_type __stride1, class __dataPtrType1, stride_type __stride2, class __dataPtrType2>
761 inline void
767
768
777 template <stride_type __stride, class __dataPtrType>
784
785
793 inline void ApplyInverseTo(const ThisType & input, ThisType & output) const {
794 CMN_ASSERT(input.Pointer() != output.Pointer());
795 output.ProductOf(this->TransposeRef(), input);
796 }
797
798
807 inline ThisType ApplyInverseTo(const ThisType & input) const {
808 CMN_ASSERT(input.Pointer() != this->Pointer());
809 ThisType result;
810 this->ApplyInverseTo(input, result);
811 return result;
812 }
813
814
819 template <class _vectorOwnerType1, class _vectorOwnerType2>
820 inline void
823 {
824 CMN_ASSERT(input.Pointer() != output.Pointer());
825 CMN_ASSERT(input.size() == DIMENSION);
826 CMN_ASSERT(output.size() == DIMENSION);
827 output[0] = this->Element(0, 0) * input[0] + this->Element(1, 0) * input[1];
828 output[1] = this->Element(0, 1) * input[0] + this->Element(1, 1) * input[1];
829 }
830
837 ThisType operator * (const ThisType & input) const
838 {
839 return this->ApplyTo(input);
840 }
841
846 template <stride_type __stride, class __dataPtrType>
852
853
860 inline bool AlmostEquivalent(const ThisType & other,
861 value_type tolerance = TypeTraits::Tolerance()) const {
862 return this->AlmostEqual(other, tolerance);
863 }
864
865};
866
867
868#endif // _vctMatrixRotation2Base_h
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 angle for a space of dimension 2.
Definition vctAngleRotation2.h:45
ThisType Normalized(void) const
Definition vctAngleRotation2.h:317
Definition vctForwardDeclarations.h:119
Definition vctDynamicVectorBase.h:62
pointer Pointer(index_type index=0)
Definition vctDynamicVectorBase.h:155
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
A template for a fixed length vector with fixed spacing in memory.
Definition vctFixedSizeVectorBase.h:77
ThisType & ProductOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type scalar)
Definition vctFixedSizeVectorBase.h:1003
pointer Pointer(size_type index=0)
Definition vctFixedSizeVectorBase.h:226
Implementation of a fixed-size vector using template metaprogramming.
Definition vctFixedSizeVector.h:54
ThisType & FromRaw(const ThisType &otherRotation)
Definition vctMatrixRotation2Base.h:578
ThisType & From(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true) CISST_THROW(std
Definition vctMatrixRotation2Base.h:403
@ COLS
Definition vctMatrixRotation2Base.h:59
@ ROWS
Definition vctMatrixRotation2Base.h:59
void ApplyTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition vctMatrixRotation2Base.h:743
ThisType Normalized(void) const
Definition vctMatrixRotation2Base.h:617
ThisType & FromRaw(const vctFixedSizeMatrixBase< DIMENSION, DIMENSION, __rowStride, __colStride, value_type, __dataPtrType > &matrix)
Definition vctMatrixRotation2Base.h:593
vctMatrixRotation2Base(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns, bool normalizeInput)
Definition vctMatrixRotation2Base.h:296
ThisType ApplyTo(const ThisType &input) const
Definition vctMatrixRotation2Base.h:729
void ApplyInverseTo(const ThisType &input, ThisType &output) const
Definition vctMatrixRotation2Base.h:793
vctFixedSizeVector< value_type, 2 > ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition vctMatrixRotation2Base.h:699
bool AlmostEquivalent(const ThisType &other, value_type tolerance=TypeTraits::Tolerance()) const
Definition vctMatrixRotation2Base.h:860
ThisType & From(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true) CISST_THROW(std
Definition vctMatrixRotation2Base.h:384
ThisType & InverseOf(const ThisType &otherRotation)
Definition vctMatrixRotation2Base.h:657
vctMatrixRotation2Base(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true) CISST_THROW(std
Definition vctMatrixRotation2Base.h:198
ContainerType BaseType
Definition vctMatrixRotation2Base.h:61
ThisType ApplyInverseTo(const ThisType &input) const
Definition vctMatrixRotation2Base.h:807
vctMatrixRotation2Base(const vctFixedSizeMatrixBase< ROWS, COLS, __rowStride, __colStride, value_type, __dataPtrType > &matrix)
Definition vctMatrixRotation2Base.h:334
vctMatrixRotation2Base< ContainerType > ThisType
Definition vctMatrixRotation2Base.h:63
vctMatrixRotation2Base(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11) CISST_THROW(std
Definition vctMatrixRotation2Base.h:162
void ThrowUnlessIsNormalized(void) const CISST_THROW(std
Definition vctMatrixRotation2Base.h:74
ThisType & FromNormalized(const vctAngleRotation2 &angleRotation)
Definition vctMatrixRotation2Base.h:489
void ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition vctMatrixRotation2Base.h:682
vctMatrixRotation2Base(const BaseType &other)
Definition vctMatrixRotation2Base.h:129
VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type)
void ApplyInverseTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition vctMatrixRotation2Base.h:821
void ApplyTo(const ThisType &input, ThisType &output) const
Definition vctMatrixRotation2Base.h:714
vctMatrixRotation2Base()
Definition vctMatrixRotation2Base.h:102
ThisType & FromNormalized(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11)
Definition vctMatrixRotation2Base.h:440
vctMatrixRotation2Base(const vctAngleRotation2 &angleRotation, bool normalizeInput)
Definition vctMatrixRotation2Base.h:309
ThisType & From(const vctAngleRotation2 &angleRotation) CISST_THROW(std
Definition vctMatrixRotation2Base.h:415
ThisType & FromRaw(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11)
Definition vctMatrixRotation2Base.h:513
vctMatrixRotation2Base(const vctFixedSizeConstVectorBase< 2, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< 2, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true) CISST_THROW(std
Definition vctMatrixRotation2Base.h:181
ThisType & FromRaw(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true) CISST_THROW(std
Definition vctMatrixRotation2Base.h:553
@ DIMENSION
Definition vctMatrixRotation2Base.h:60
ThisType & operator=(const ContainerType &other)
Definition vctMatrixRotation2Base.h:114
ThisType & From(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11) CISST_THROW(std
Definition vctMatrixRotation2Base.h:365
void ThrowUnlessIsNormalized(const _inputType &input) const CISST_THROW(std
Definition vctMatrixRotation2Base.h:85
vctMatrixRotation2Base(const ThisType &other)
Definition vctMatrixRotation2Base.h:122
ThisType operator*(const ThisType &input) const
Definition vctMatrixRotation2Base.h:837
ThisType & FromNormalized(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true) CISST_THROW(std
Definition vctMatrixRotation2Base.h:458
ThisType Inverse(void) const
Definition vctMatrixRotation2Base.h:666
CISST_EXPORT ThisType & FromRaw(const vctAngleRotation2 &angleRotation)
static CISST_EXPORT const ThisType & Identity()
cmnTypeTraits< value_type > TypeTraits
Definition vctMatrixRotation2Base.h:69
CISST_EXPORT ThisType & NormalizedSelf(void)
ContainerType ContainerType
Definition vctMatrixRotation2Base.h:62
ThisType & FromNormalized(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true)
Definition vctMatrixRotation2Base.h:478
vctMatrixRotation2Base(const vctAngleRotation2 &angleRotation) CISST_THROW(std
Definition vctMatrixRotation2Base.h:208
vctMatrixRotation2Base(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11, bool normalizeInput)
Definition vctMatrixRotation2Base.h:252
ThisType & NormalizedOf(const ThisType &otherMatrix)
Definition vctMatrixRotation2Base.h:608
void ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition vctMatrixRotation2Base.h:762
vctMatrixRotation2Base(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns, bool normalizeInput)
Definition vctMatrixRotation2Base.h:276
ThisType & FromRaw(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true)
Definition vctMatrixRotation2Base.h:530
bool IsNormalized(value_type tolerance=TypeTraits::Tolerance()) const
Definition vctMatrixRotation2Base.h:631
ThisType & InverseSelf(void)
Definition vctMatrixRotation2Base.h:645
void Allocate(void)
Definition vctMatrixRotation2Base.h:96
vctFixedSizeVector< value_type, 2 > ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition vctMatrixRotation2Base.h:779
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
STL namespace.
Declaration of vctAngleRotation2.
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
const_reference Element(size_type rowIndex, size_type colIndex) const
Definition vctDynamicConstMatrixBase.h:362
NormType Norm(void) const
Definition vctDynamicConstMatrixBase.h:467
ConstColumnRefType Column(size_type index) const CISST_THROW(std
Definition vctDynamicConstMatrixBase.h:372
vctDynamicConstMatrixBase< _matrixOwnerType, _elementType > ThisType
Definition vctDynamicConstMatrixBase.h:86
value_type DotProduct(const vctDynamicConstVectorBase< __vectorOwnerType, _elementType > &otherVector) const
Definition vctDynamicConstVectorBase.h:633
Declaration of vctDynamicMatrix.
Macros to export the symbols of cisstVector (in a Dll).
Declaration of vctFixedSizeMatrix.