cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 
6  Author(s): Anton Deguet
7  Created on: 2005-12-01
8 
9  (C) Copyright 2005-2007 Johns Hopkins University (JHU), All Rights
10  Reserved.
11 
12 --- begin cisst license - do not edit ---
13 
14 This software is provided "as is" under an open source license, with
15 no warranty. The complete license can be found in license.txt and
16 http://www.cisst.org/cisst/license.txt.
17 
18 --- end cisst license ---
19 */
20 
21 #pragma once
22 #ifndef _vctMatrixRotation2Base_h
23 #define _vctMatrixRotation2Base_h
24 
33 #include <cisstVector/vctExport.h>
34 
35 
56 template <class _containerType>
57 class vctMatrixRotation2Base: public _containerType
58 {
59 public:
60 
61  enum {ROWS = 2, COLS = 2};
62  enum {DIMENSION = 2};
63  typedef _containerType BaseType;
64  typedef _containerType ContainerType;
66 
67  /* no need to document, inherit doxygen documentation from base class */
68  VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type);
69 
72 
73 
74 protected:
76  inline void ThrowUnlessIsNormalized(void) const throw(std::runtime_error) {
77  if (! this->IsNormalized()) {
78  cmnThrow(std::runtime_error("vctMatrixRotation2Base: This rotation is not normalized"));
79  }
80  }
81 
86  template <class _inputType>
87  inline void ThrowUnlessIsNormalized(const _inputType & input) const throw(std::runtime_error) {
88  if (! input.IsNormalized()) {
89  cmnThrow(std::runtime_error("vctMatrixRotation2Base: Input is not normalized"));
90  }
91  }
92 
93 
98  inline void Allocate(void) {}
99 
100 
101 public:
102 
105  {
106  this->Allocate();
107  this->Assign(Identity());
108  }
109 
116  inline ThisType & operator = (const ContainerType & other) {
117  return reinterpret_cast<ThisType &>(this->Assign(other));
118  }
119 
120  inline ThisType & operator = (const ThisType & other) {
121  return reinterpret_cast<ThisType &>(this->Assign(other));
122  }
123 
124  inline vctMatrixRotation2Base(const ThisType & other):
125  BaseType()
126  {
127  this->Allocate();
128  this->Assign(other);
129  }
130 
131  inline vctMatrixRotation2Base(const BaseType & other)
132  {
133  this->Allocate();
134  this->Assign(other);
135  }
136 
137 
138 
152 
153 
164  inline vctMatrixRotation2Base(const value_type & element00, const value_type & element01,
165  const value_type & element10, const value_type & element11)
166  throw(std::runtime_error)
167  {
168  this->Allocate();
169  this->From(element00, element01,
170  element10, element11);
171  }
172 
173 
174 
181  template <stride_type __stride1, class __dataPtrType1,
182  stride_type __stride2, class __dataPtrType2>
185  bool vectorsAreColumns = true)
186  throw(std::runtime_error)
187  {
188  this->Allocate();
189  this->From(v1, v2, vectorsAreColumns);
190  }
191 
198  template <class __vectorOwnerType1,
199  class __vectorOwnerType2>
202  bool vectorsAreColumns = true)
203  throw(std::runtime_error)
204  {
205  this->Allocate();
206  this->From(v1, v2, vectorsAreColumns);
207  }
208 
210  inline vctMatrixRotation2Base(const vctAngleRotation2 & angleRotation)
211  throw(std::runtime_error)
212  {
213  this->Allocate();
214  this->From(angleRotation);
215  }
217 
218 
219 
220 
242 
243 
254  inline vctMatrixRotation2Base(const value_type & element00, const value_type & element01,
255  const value_type & element10, const value_type & element11,
256  bool normalizeInput)
257  {
258  this->Allocate();
259  if (normalizeInput) {
260  this->FromNormalized(element00, element01,
261  element10, element11);
262  } else {
263  this->FromRaw(element00, element01,
264  element10, element11);
265  }
266  }
267 
268 
269 
276  template <stride_type __stride1, class __dataPtrType1,
277  stride_type __stride2, class __dataPtrType2>
280  bool vectorsAreColumns, bool normalizeInput)
281  {
282  this->Allocate();
283  if (normalizeInput) {
284  this->FromNormalized(v1, v2, vectorsAreColumns);
285  } else {
286  this->FromRaw(v1, v2, vectorsAreColumns);
287  }
288  }
289 
296  template <class __vectorOwnerType1,
297  class __vectorOwnerType2>
300  bool vectorsAreColumns, bool normalizeInput)
301  {
302  this->Allocate();
303  if (normalizeInput) {
304  this->FromNormalized(v1, v2, vectorsAreColumns);
305  } else {
306  this->FromRaw(v1, v2, vectorsAreColumns);
307  }
308  }
309 
311  inline vctMatrixRotation2Base(const vctAngleRotation2 & angleRotation,
312  bool normalizeInput)
313  {
314  this->Allocate();
315  if (normalizeInput) {
316  this->FromNormalized(angleRotation);
317  } else {
318  this->FromRaw(angleRotation);
319  }
320  }
322 
323 
334  template <stride_type __rowStride, stride_type __colStride, class __dataPtrType>
335  explicit inline
337  {
338  this->Assign(matrix);
339  }
340 
341 
348  static CISST_EXPORT const ThisType & Identity();
349 
350 
364 
366  inline ThisType &
367  From(const value_type & element00, const value_type & element01,
368  const value_type & element10, const value_type & element11)
369  throw(std::runtime_error)
370  {
371  this->FromRaw(element00, element01,
372  element10, element11);
373  this->ThrowUnlessIsNormalized();
374  return *this;
375  }
376 
383  template <stride_type __stride1, class __dataPtrType1,
384  stride_type __stride2, class __dataPtrType2>
385  inline ThisType &
388  bool vectorsAreColumns = true)
389  throw(std::runtime_error)
390  {
391  this->FromRaw(v1, v2, vectorsAreColumns);
392  this->ThrowUnlessIsNormalized();
393  return *this;
394  }
395 
402  template <class __vectorOwnerType1,
403  class __vectorOwnerType2>
404  inline ThisType &
407  bool vectorsAreColumns = true)
408  throw (std::runtime_error)
409  {
410  this->FromRaw(v1, v2, vectorsAreColumns);
411  this->ThrowUnlessIsNormalized();
412  return *this;
413  }
414 
416  inline ThisType &
417  From(const vctAngleRotation2 & angleRotation)
418  throw(std::runtime_error)
419  {
420  this->ThrowUnlessIsNormalized(angleRotation);
421  return this->FromRaw(angleRotation);
422  }
424 
425 
426 
427 
428 
429 
439 
441  inline ThisType &
442  FromNormalized(const value_type & element00, const value_type & element01,
443  const value_type & element10, const value_type & element11)
444  {
445  this->FromRaw(element00, element01,
446  element10, element11);
447  this->NormalizedSelf();
448  return *this;
449  }
450 
457  template <stride_type __stride1, class __dataPtrType1,
458  stride_type __stride2, class __dataPtrType2>
459  inline ThisType &
462  bool vectorsAreColumns = true)
463  throw(std::runtime_error)
464  {
465  this->FromRaw(v1, v2, vectorsAreColumns);
466  this->NormalizedSelf();
467  return *this;
468  }
469 
470 
477  template <class __vectorOwnerType1,
478  class __vectorOwnerType2>
479  inline ThisType &
482  bool vectorsAreColumns = true)
483  {
484  this->FromRaw(v1, v2, vectorsAreColumns);
485  this->NormalizedSelf();
486  return *this;
487  }
488 
490  inline ThisType &
491  FromNormalized(const vctAngleRotation2 & angleRotation)
492  {
493  return this->FromRaw(angleRotation.Normalized());
494  }
496 
497 
498 
499 
500 
501 
511 
512 
514  inline ThisType &
515  FromRaw(const value_type & element00, const value_type & element01,
516  const value_type & element10, const value_type & element11)
517  {
518  this->Assign(element00, element01,
519  element10, element11);
520  return *this;
521  }
522 
529  template <stride_type __stride1, class __dataPtrType1,
530  stride_type __stride2, class __dataPtrType2>
531  inline ThisType &
534  bool vectorsAreColumns = true)
535  {
536  if (vectorsAreColumns) {
537  this->Column(0).Assign(v1);
538  this->Column(1).Assign(v2);
539  } else {
540  this->Row(0).Assign(v1);
541  this->Row(1).Assign(v2);
542  }
543  return *this;
544  }
545 
552  template <class __vectorOwnerType1,
553  class __vectorOwnerType2>
554  inline ThisType &
557  bool vectorsAreColumns = true)
558  throw (std::runtime_error)
559  {
560  CMN_ASSERT(v1.size() == DIMENSION);
561  CMN_ASSERT(v2.size() == DIMENSION);
562  if (vectorsAreColumns) {
563  this->Column(0).Assign(v1);
564  this->Column(1).Assign(v2);
565  } else {
566  this->Row(0).Assign(v1);
567  this->Row(1).Assign(v2);
568  }
569  return *this;
570  }
571 
574  FromRaw(const vctAngleRotation2 & angleRotation);
575 
579  inline ThisType &
580  FromRaw(const ThisType & otherRotation) {
581  return reinterpret_cast<ThisType &>(this->Assign(otherRotation));
582  }
583 
593  template <stride_type __rowStride, stride_type __colStride, class __dataPtrType>
594  inline ThisType &
596  this->Assign(matrix);
597  return *this;
598  }
599 
601 
602 
603 
607 
610  inline ThisType & NormalizedOf(const ThisType & otherMatrix) {
611  *this = otherMatrix;
612  this->NormalizedSelf();
613  return *this;
614  }
615 
619  ThisType Normalized(void) const {
620  ThisType result(*this);
621  result.NormalizedSelf();
622  return result;
623  }
624 
625 
633  inline bool IsNormalized(value_type tolerance = TypeTraits::Tolerance()) const
634  {
635  if ((vctUnaryOperations<value_type>::AbsValue::Operate(value_type(this->Column(0).Norm() - 1)) > tolerance)
636  || (vctUnaryOperations<value_type>::AbsValue::Operate(value_type(this->Column(1).Norm() - 1)) > tolerance)
637  || (vctUnaryOperations<value_type>::AbsValue::Operate(this->Column(0).DotProduct(this->Column(1))) > tolerance)) {
638  return false;
639  } else {
640  return true;
641  }
642  }
643 
644 
647  inline ThisType & InverseSelf(void) {
648  // could use the transpose operator but this seems more efficient
649  value_type tmp;
650  tmp = this->Element(0, 1);
651  this->Element(0, 1) = this->Element(1, 0);
652  this->Element(1, 0) = tmp;
653  return *this;
654  }
655 
656 
659  inline ThisType & InverseOf(const ThisType & otherRotation) {
660  this->TransposeOf(otherRotation);
661  return *this;
662  }
663 
664 
668  inline ThisType Inverse(void) const {
669  ThisType result;
670  result.InverseOf(*this);
671  return result;
672  }
673 
674 
682  template <stride_type __stride1, class __dataPtrType1, stride_type __stride2, class __dataPtrType2>
683  inline void
686  CMN_ASSERT(input.Pointer() != output.Pointer());
687  output.ProductOf(*this, input);
688  }
689 
690 
699  template <stride_type __stride, class __dataPtrType>
702  {
704  this->ApplyTo(input, result);
705  return result;
706  }
707 
708 
716  inline void ApplyTo(const ThisType & input, ThisType & output) const {
717  CMN_ASSERT(input.Pointer() != output.Pointer());
718  output.ProductOf(*this, input);
719  }
720 
721 
730  inline ThisType
731  ApplyTo(const ThisType & input) const {
732  CMN_ASSERT(input.Pointer() != this->Pointer());
733  ThisType result;
734  this->ApplyTo(input, result);
735  return result;
736  }
737 
738 
743  template <class _vectorOwnerType1, class _vectorOwnerType2>
744  inline void
747  CMN_ASSERT(input.Pointer() != output.Pointer());
748  CMN_ASSERT(input.size() == DIMENSION);
749  CMN_ASSERT(output.size() == DIMENSION);
750  output[0] = this->Element(0, 0) * input[0] + this->Element(0, 1) * input[1];
751  output[1] = this->Element(1, 0) * input[0] + this->Element(1, 1) * input[1];
752  }
753 
754 
762  template <stride_type __stride1, class __dataPtrType1, stride_type __stride2, class __dataPtrType2>
763  inline void
766  CMN_ASSERT(input.Pointer() != output.Pointer());
767  output.ProductOf(this->TransposeRef(), input);
768  }
769 
770 
779  template <stride_type __stride, class __dataPtrType>
783  this->ApplyInverseTo(input, result);
784  return result;
785  }
786 
787 
795  inline void ApplyInverseTo(const ThisType & input, ThisType & output) const {
796  CMN_ASSERT(input.Pointer() != output.Pointer());
797  output.ProductOf(this->TransposeRef(), input);
798  }
799 
800 
809  inline ThisType ApplyInverseTo(const ThisType & input) const {
810  CMN_ASSERT(input.Pointer() != this->Pointer());
811  ThisType result;
812  this->ApplyInverseTo(input, result);
813  return result;
814  }
815 
816 
821  template <class _vectorOwnerType1, class _vectorOwnerType2>
822  inline void
825  {
826  CMN_ASSERT(input.Pointer() != output.Pointer());
827  CMN_ASSERT(input.size() == DIMENSION);
828  CMN_ASSERT(output.size() == DIMENSION);
829  output[0] = this->Element(0, 0) * input[0] + this->Element(1, 0) * input[1];
830  output[1] = this->Element(0, 1) * input[0] + this->Element(1, 1) * input[1];
831  }
832 
839  ThisType operator * (const ThisType & input) const
840  {
841  return this->ApplyTo(input);
842  }
843 
848  template <stride_type __stride, class __dataPtrType>
851  {
852  return this->ApplyTo(input);
853  }
854 
855 
862  inline bool AlmostEquivalent(const ThisType & other,
863  value_type tolerance = TypeTraits::Tolerance()) const {
864  return this->AlmostEqual(other, tolerance);
865  }
866 
867 };
868 
869 
870 #endif // _vctMatrixRotation2Base_h
871 
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
A template for a fixed size matrix with fixed spacing in memory.
Definition: vctFixedSizeConstMatrixBase.h:103
Definition: vctMatrixRotation2Base.h:61
void ApplyInverseTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition: vctMatrixRotation2Base.h:823
Declaration of vctDynamicMatrix.
#define CMN_ASSERT(expr)
Definition: cmnAssert.h:90
vctMatrixRotation2Base(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:200
void ApplyTo(const ThisType &input, ThisType &output) const
Definition: vctMatrixRotation2Base.h:716
ThisType & FromRaw(const vctFixedSizeMatrixBase< DIMENSION, DIMENSION, __rowStride, __colStride, value_type, __dataPtrType > &matrix)
Definition: vctMatrixRotation2Base.h:595
Define a rotation based on an angle for a space of dimension 2.
Definition: vctAngleRotation2.h:46
vctMatrixRotation2Base(const vctAngleRotation2 &angleRotation, bool normalizeInput)
Definition: vctMatrixRotation2Base.h:311
cmnTypeTraits< value_type > TypeTraits
Definition: vctMatrixRotation2Base.h:71
ThisType & From(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:405
vctFixedSizeVector< value_type, 2 > ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition: vctMatrixRotation2Base.h:701
ThisType Normalized(void) const
Definition: vctMatrixRotation2Base.h:619
ThisType & FromRaw(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:555
static Type Tolerance(void)
Definition: cmnTypeTraits.h:170
Definition: vctMatrixRotation2Base.h:62
Declaration of vctFixedSizeMatrix.
ThisType & InverseSelf(void)
Definition: vctMatrixRotation2Base.h:647
bool IsNormalized(value_type tolerance=TypeTraits::Tolerance()) const
Definition: vctMatrixRotation2Base.h:633
void ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition: vctMatrixRotation2Base.h:764
CISST_EXPORT ThisType & NormalizedSelf(void)
static CISST_EXPORT const ThisType & Identity()
void ThrowUnlessIsNormalized(const _inputType &input) const
Definition: vctMatrixRotation2Base.h:87
vctFixedSizeVector< value_type, 2 > ApplyInverseTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride, value_type, __dataPtrType > &input) const
Definition: vctMatrixRotation2Base.h:781
ThisType operator*(const ThisType &input) const
Definition: vctMatrixRotation2Base.h:839
ThisType ApplyTo(const ThisType &input) const
Definition: vctMatrixRotation2Base.h:731
vctMatrixRotation2Base(const vctFixedSizeConstVectorBase< 2, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< 2, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:183
void ThrowUnlessIsNormalized(void) const
Definition: vctMatrixRotation2Base.h:76
Implementation of a fixed-size vector using template metaprogramming.
Definition: vctFixedSizeVector.h:52
vctMatrixRotation2Base(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns, bool normalizeInput)
Definition: vctMatrixRotation2Base.h:298
_containerType ContainerType
Definition: vctMatrixRotation2Base.h:64
vctMatrixRotation2Base(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11, bool normalizeInput)
Definition: vctMatrixRotation2Base.h:254
Define unary operations on an object as classes.
Definition: vctUnaryOperations.h:55
size_type size(void) const
Definition: vctDynamicConstVectorBase.h:164
ThisType & FromRaw(const ThisType &otherRotation)
Definition: vctMatrixRotation2Base.h:580
A template for a fixed size matrix with fixed spacings in memory.
Definition: vctFixedSizeMatrixBase.h:58
vctMatrixRotation2Base(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns, bool normalizeInput)
Definition: vctMatrixRotation2Base.h:278
ThisType & FromRaw(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:532
ThisType & NormalizedOf(const ThisType &otherMatrix)
Definition: vctMatrixRotation2Base.h:610
void Assign(const OtherT &other)
Definition: cisstVectorEigenAddons.h:3
Define a rotation matrix for a space of dimension 2.
Definition: vctForwardDeclarations.h:227
vctMatrixRotation2Base(const vctFixedSizeMatrixBase< ROWS, COLS, __rowStride, __colStride, value_type, __dataPtrType > &matrix)
Definition: vctMatrixRotation2Base.h:336
ThisType & FromNormalized(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11)
Definition: vctMatrixRotation2Base.h:442
ThisType & From(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:386
const_pointer Pointer(size_type index=0) const
Definition: vctFixedSizeConstVectorBase.h:268
_containerType BaseType
Definition: vctMatrixRotation2Base.h:63
ThisType & FromNormalized(const vctAngleRotation2 &angleRotation)
Definition: vctMatrixRotation2Base.h:491
void ApplyInverseTo(const ThisType &input, ThisType &output) const
Definition: vctMatrixRotation2Base.h:795
#define cmnThrow(a)
Definition: MinimalCmn.h:4
ThisType Normalized(void) const
Definition: vctAngleRotation2.h:319
ThisType & FromNormalized(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &v1, const vctFixedSizeConstVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:460
const_pointer Pointer(index_type index=0) const
Definition: vctDynamicConstVectorBase.h:221
pointer Pointer(index_type index=0)
Definition: vctDynamicVectorBase.h:155
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeVectorBase.h:76
Definition: vctMatrixRotation2Base.h:61
ptrdiff_t stride_type
Definition: vctContainerTraits.h:37
void Allocate(void)
Definition: vctMatrixRotation2Base.h:98
VCT_CONTAINER_TRAITS_TYPEDEFS(typename ContainerType::value_type)
vctMatrixRotation2Base< ContainerType > ThisType
Definition: vctMatrixRotation2Base.h:65
ThisType & operator=(const ContainerType &other)
Definition: vctMatrixRotation2Base.h:116
Definition: vctDynamicConstVectorBase.h:77
ThisType & FromNormalized(const vctDynamicConstVectorBase< __vectorOwnerType1, value_type > &v1, const vctDynamicConstVectorBase< __vectorOwnerType2, value_type > &v2, bool vectorsAreColumns=true)
Definition: vctMatrixRotation2Base.h:480
vctMatrixRotation2Base(const BaseType &other)
Definition: vctMatrixRotation2Base.h:131
A template for a fixed length vector with fixed spacing in memory.
Definition: vctFixedSizeConstVectorBase.h:107
ThisType & InverseOf(const ThisType &otherRotation)
Definition: vctMatrixRotation2Base.h:659
ThisType Inverse(void) const
Definition: vctMatrixRotation2Base.h:668
void ApplyTo(const vctFixedSizeConstVectorBase< DIMENSION, __stride1, value_type, __dataPtrType1 > &input, vctFixedSizeVectorBase< DIMENSION, __stride2, value_type, __dataPtrType2 > &output) const
Definition: vctMatrixRotation2Base.h:684
pointer Pointer(size_type index=0)
Definition: vctFixedSizeVectorBase.h:226
vctMatrixRotation2Base()
Definition: vctMatrixRotation2Base.h:104
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 ApplyInverseTo(const ThisType &input) const
Definition: vctMatrixRotation2Base.h:809
Declaration of vctAngleRotation2.
vctMatrixRotation2Base(const ThisType &other)
Definition: vctMatrixRotation2Base.h:124
vctMatrixRotation2Base(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11)
Definition: vctMatrixRotation2Base.h:164
void ApplyTo(const vctDynamicConstVectorBase< _vectorOwnerType1, value_type > &input, vctDynamicVectorBase< _vectorOwnerType2, value_type > &output) const
Definition: vctMatrixRotation2Base.h:745
vctMatrixRotation2Base(const vctAngleRotation2 &angleRotation)
Definition: vctMatrixRotation2Base.h:210
ThisType & ProductOf(const vctFixedSizeConstVectorBase< _size, __stride, value_type, __dataPtrType > &vector, const value_type scalar)
Definition: vctFixedSizeVectorBase.h:1003
Definition: vctDynamicVectorBase.h:61
ThisType & FromRaw(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11)
Definition: vctMatrixRotation2Base.h:515
ThisType & From(const vctAngleRotation2 &angleRotation)
Definition: vctMatrixRotation2Base.h:417
ThisType & From(const value_type &element00, const value_type &element01, const value_type &element10, const value_type &element11)
Definition: vctMatrixRotation2Base.h:367
bool AlmostEquivalent(const ThisType &other, value_type tolerance=TypeTraits::Tolerance()) const
Definition: vctMatrixRotation2Base.h:862