JG ROOT Tools libraries  version 5.0 - august 2014
RAffine2D.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file RAffine2D.hh
3  *
4  * Include file for class RAffine2D.
5  */
6 //======================================================================
7 
8 
9 #ifndef R_AFFINE_2D_HH
10 #define R_AFFINE_2D_HH
11 
12 #include "RMatrix2D.hh"
13 
14 //======================================================================
15 /*! \class RAffine2D
16  *
17  * This class defines a transformation corresponding to a matrix
18  * product and a vector translation.
19  * It corresponds to a referential change (in position and orientation).
20  *
21  * It can be defined from:
22  * - the transformation matrix and the translation vector
23  * - the new center and the new axis vector, expressed in the initial
24  * frame coordinates.
25  *
26  * This transformation can also be used to define an ellipse.
27  */
28 
29 class RAffine2D : public RMatrix2D
30 {
31  //------------------------------------------------------------
32  /*! \object_doc{RAffine2D} */
34  //------------------------------------------------------------
35 
36  protected:
37  RVector2D tr; ///< Translation vector (new center)
38 
39 
40  //------------------------------------------------------------
41  // Constructors / affectation / destructor
42  public:
43 
44  // constructors
45  RAffine2D ( ); // inline
46  RAffine2D ( const RMatrix2D &m ); // inline
47  RAffine2D ( const RVector2D &t, const RMatrix2D &m = RMatrix2D::id ); // inline
48  RAffine2D ( const RVector2D &v0,
49  const RVector2D &v1,
50  const RVector2D &v2, const RMatrixDef type = axisVector );
51  RAffine2D ( const RAffine2D &a ); // inline
52 
53  // affectation
54  RAffine2D & operator = ( const RAffine2D & a );
55  RAffine2D & operator = ( const RMatrix2D & m );
56  RAffine2D & operator = ( const RVector2D & v );
57 
58  // destructor
59  virtual ~RAffine2D ( ); // inline
60 
61  //------------------------------------------------------------
62  // Access to members
63 
64  virtual RMatrix2D GetMatrix ( ) const; // inline
65  virtual RVector2D GetTranslation ( ) const; // inline
66  virtual RVector2D GetVector ( ) const; // inline
67  virtual RPoint2D GetOrigin ( ) const; // inline
68 
69  virtual void SetOrigin ( const RPoint2D ctr ); // inline
70  virtual void SetAxis ( const u_int n, const RPoint2D v );
71 
72  //------------------------------------------------------------
73  // Operations
74 
75  RAffine2D Inverse ( ) const;
76  RVector2D Transform ( const RVector2D & v ) const;
77 
78  // opérateurs unaires
79  RAffine2D operator + ( ) const;
80  RAffine2D operator - ( ) const;
81 
82  // affectation operative
83  RAffine2D operator += ( const RAffine2D & t );
84  RAffine2D operator -= ( const RAffine2D & t );
85  RAffine2D operator *= ( const RAffine2D & t );
86 
87  RAffine2D operator *= ( const Double_t r );
88  RAffine2D operator /= ( const Double_t r );
89 
90  // opérateurs binaires
91  RAffine2D operator + ( const RAffine2D & t ) const;
92  RAffine2D operator - ( const RAffine2D & t ) const;
93  RAffine2D operator * ( const RAffine2D & t ) const;
94 
95  RVector2D operator * ( const RVector2D & v ) const;
96  RAffine2D operator * ( const Double_t r ) const;
97  RAffine2D operator / ( const Double_t r ) const;
98 
99  //------------------------------------------------------------
100  /*! For ROOT dictionary.*/
101  ClassDef(RAffine2D,0);
102 } ;
103 
104 //----------------------------------------------------------------------
105 // External functions
106 
107 extern RAffine2D operator * ( const double r, const RAffine2D &t ); // inline
108 
109 //----------------------------------------------------------------------
110 // Inline functions
111 #include "icc/RAffine2D.icc"
112 
113 
114 //======================================================================
115 #endif
RAffine2D operator*(const double r, const RAffine2D &t)
Definition: RAffine2D.icc:167
virtual void SetAxis(const u_int n, const RPoint2D v)
Definition: RAffine2D.cpp:93
RAffine2D Inverse() const
Definition: RAffine2D.icc:69
GObject(RAffine2D)
RAffine2D operator/=(const Double_t r)
Definition: RAffine2D.icc:116
virtual void SetOrigin(const RPoint2D ctr)
Definition: RAffine2D.icc:62
ClassDef(RAffine2D, 0)
virtual RPoint2D GetOrigin() const
Definition: RAffine2D.icc:52
RAffine2D operator*=(const RAffine2D &t)
Definition: RAffine2D.icc:103
virtual RVector2D GetVector() const
Definition: RAffine2D.icc:56
virtual RMatrix2D GetMatrix() const
Definition: RAffine2D.icc:44
RAffine2D operator+=(const RAffine2D &t)
Definition: RAffine2D.icc:91
RAffine2D operator-() const
Definition: RAffine2D.icc:84
RAffine2D operator+() const
Definition: RAffine2D.icc:80
RAffine2D operator*(const RAffine2D &t) const
Definition: RAffine2D.icc:135
Definition: RVector2D.hh:26
RAffine2D & operator=(const RAffine2D &a)
Definition: RAffine2D.cpp:46
static const RMatrix2D id
Matrice identité
Definition: RMatrix2D.hh:46
Definition: RMatrix2D.hh:25
RVector2D tr
Translation vector (new center)
Definition: RAffine2D.hh:37
RAffine2D operator/(const Double_t r) const
Definition: RAffine2D.icc:156
Definition: RAffine2D.hh:29
Définition de la matrice par vecteurs d&#39;axes du nouveau repère
Definition: RMatrix2D.hh:42
RMatrixDef
Interprétation des vecteurs à la création d&#39;une matrice.
Definition: RMatrix2D.hh:38
RAffine2D operator-=(const RAffine2D &t)
Definition: RAffine2D.icc:97
virtual ~RAffine2D()
Definition: RAffine2D.icc:38
RAffine2D()
Definition: RAffine2D.icc:12
virtual RVector2D GetTranslation() const
Definition: RAffine2D.icc:48
RVector2D Transform(const RVector2D &v) const
Definition: RAffine2D.icc:75