JG ROOT Tools libraries  version 5.0 - august 2014
RMatrix2D.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file RMatrix2D.hh
3  *
4  * Include file for class RMatrix2D.
5  */
6 //======================================================================
7 
8 #ifndef R_MATRIX_2D_HH
9 #define R_MATRIX_2D_HH
10 
11 #include "RVector2D.hh"
12 
13 //======================================================================
14 /*! \class RMatrix2D
15  *
16  * Matrice dans un espace à 2 dimensions
17  *
18  * Une matrice correspond à la transformation des coordonnées dans un
19  * changement de repère (cf. \ref groot_algebre2d).
20  *
21  * \note
22  * - la matrice par défaut est la matrice identité */ class RMatrix2D { //------------------------------------------------------------ /*! \object_doc{RMatrix2D} */ GObject(RMatrix2D); //------------------------------------------------------------ protected: Double_t me[4]; ///< Eléménts de matrice public: /// Interprétation des vecteurs à la création d'une matrice enum RMatrixDef { columnVector = 0, ///< Définition de la matrice par vecteurs colonnes lineVector = 1, ///< Définition de la matrice par vecteurs lignes axisVector = 2 ///< Définition de la matrice par vecteurs d'axes du nouveau repère } ; static const RMatrix2D null; ///< Matrice nulle static const RMatrix2D id; ///< Matrice identité static const Double_t zero; ///< Limites de test du zéro //------------------------------------------------------------ // Constructors / affectation / destructor // constructors RMatrix2D ( const Double_t diag = 1. ); RMatrix2D ( const Double_t m00, const Double_t m01, const Double_t m10, const Double_t m11 ); RMatrix2D ( const RVector2D v1, const RVector2D v2, const RMatrixDef type = columnVector ); RMatrix2D ( const RMatrix2D & m ); // affectation virtual RMatrix2D & operator = ( const RMatrix2D & m ); // destructor virtual ~RMatrix2D ( ) { } //------------------------------------------------------------ // Access to members virtual RVector2D operator [] ( const u_int n ) const; virtual RVector2D GetColumn ( const u_int n ) const; virtual RVector2D GetLine ( const u_int n ) const; virtual RVector2D GetAxis ( const u_int n ) const; virtual void SetColumn ( const u_int n, const RPoint2D v ); virtual void SetLine ( const u_int n, const RPoint2D v ); virtual void SetAxis ( const u_int n, const RPoint2D v ); //------------------------------------------------------------ // Operations Double_t Determinant ( ) const; RMatrix2D Inverse ( ) const; RVector2D Transform ( const RVector2D & v ) const; // opérateurs unaires RMatrix2D operator + ( ) const; RMatrix2D operator - ( ) const; // affectation operative RMatrix2D operator += ( const RMatrix2D & m ); RMatrix2D operator -= ( const RMatrix2D & m ); RMatrix2D operator *= ( const RMatrix2D & m ); RMatrix2D operator *= ( const Double_t r ); RMatrix2D operator /= ( const Double_t r ); // opérateurs binaires RMatrix2D operator + ( const RMatrix2D & m ) const; RMatrix2D operator - ( const RMatrix2D & m ) const; RMatrix2D operator * ( const RMatrix2D & m ) const; RVector2D operator * ( const RVector2D & v ) const; RMatrix2D operator * ( const Double_t r ) const; RMatrix2D operator / ( const Double_t r ) const; //------------------------------------------------------------ // Static functions static RMatrix2D Rotation ( const Double_t angle ); //------------------------------------------------------------ /*! For ROOT dictionary.*/ ClassDef(RMatrix2D,0); } ; //---------------------------------------------------------------------- // External functions extern RMatrix2D operator * ( const double r, const RMatrix2D &m ); extern RVector2D operator * ( const RVector2D &v, const RMatrix2D &m ); //---------------------------------------------------------------------- // Inline functions #include "icc/RMatrix2D.icc" //====================================================================== #endif
23  */
24 
25 class RMatrix2D
26 {
27  //------------------------------------------------------------
28  /*! \object_doc{RMatrix2D} */
30  //------------------------------------------------------------
31 
32  protected:
33  Double_t me[4]; ///< Eléménts de matrice
34 
35  public:
36 
37  /// Interprétation des vecteurs à la création d'une matrice
39  {
40  columnVector = 0, ///< Définition de la matrice par vecteurs colonnes
41  lineVector = 1, ///< Définition de la matrice par vecteurs lignes
42  axisVector = 2 ///< Définition de la matrice par vecteurs d'axes du nouveau repère
43  } ;
44 
45  static const RMatrix2D null; ///< Matrice nulle
46  static const RMatrix2D id; ///< Matrice identité
47  static const Double_t zero; ///< Limites de test du zéro
48 
49 
50  //------------------------------------------------------------
51  // Constructors / affectation / destructor
52 
53  // constructors
54  RMatrix2D ( const Double_t diag = 1. );
55  RMatrix2D ( const Double_t m00,
56  const Double_t m01,
57  const Double_t m10,
58  const Double_t m11 );
59  RMatrix2D ( const RVector2D v1,
60  const RVector2D v2,
61  const RMatrixDef type = columnVector );
62  RMatrix2D ( const RMatrix2D & m );
63 
64  // affectation
65  virtual RMatrix2D & operator = ( const RMatrix2D & m );
66 
67  // destructor
68  virtual ~RMatrix2D ( ) { }
69 
70  //------------------------------------------------------------
71  // Access to members
72 
73  virtual RVector2D operator [] ( const u_int n ) const;
74 
75  virtual RVector2D GetColumn ( const u_int n ) const;
76  virtual RVector2D GetLine ( const u_int n ) const;
77  virtual RVector2D GetAxis ( const u_int n ) const;
78 
79  virtual void SetColumn ( const u_int n, const RPoint2D v );
80  virtual void SetLine ( const u_int n, const RPoint2D v );
81  virtual void SetAxis ( const u_int n, const RPoint2D v );
82 
83  //------------------------------------------------------------
84  // Operations
85 
86  Double_t Determinant ( ) const;
87  RMatrix2D Inverse ( ) const;
88  RVector2D Transform ( const RVector2D & v ) const;
89 
90  // opérateurs unaires
91  RMatrix2D operator + ( ) const;
92  RMatrix2D operator - ( ) const;
93 
94  // affectation operative
95  RMatrix2D operator += ( const RMatrix2D & m );
96  RMatrix2D operator -= ( const RMatrix2D & m );
97  RMatrix2D operator *= ( const RMatrix2D & m );
98 
99  RMatrix2D operator *= ( const Double_t r );
100  RMatrix2D operator /= ( const Double_t r );
101 
102  // opérateurs binaires
103  RMatrix2D operator + ( const RMatrix2D & m ) const;
104  RMatrix2D operator - ( const RMatrix2D & m ) const;
105  RMatrix2D operator * ( const RMatrix2D & m ) const;
106 
107  RVector2D operator * ( const RVector2D & v ) const;
108  RMatrix2D operator * ( const Double_t r ) const;
109  RMatrix2D operator / ( const Double_t r ) const;
110 
111 
112  //------------------------------------------------------------
113  // Static functions
114 
115  static RMatrix2D Rotation ( const Double_t angle );
116 
117  //------------------------------------------------------------
118  /*! For ROOT dictionary.*/
119  ClassDef(RMatrix2D,0);
120 } ;
121 
122 
123 //----------------------------------------------------------------------
124 // External functions
125 
126 extern RMatrix2D operator * ( const double r, const RMatrix2D &m );
127 extern RVector2D operator * ( const RVector2D &v, const RMatrix2D &m );
128 
129 
130 //----------------------------------------------------------------------
131 // Inline functions
132 #include "icc/RMatrix2D.icc"
133 
134 
135 //======================================================================
136 #endif
RAffine2D operator*(const double r, const RAffine2D &t)
Definition: RAffine2D.icc:167
virtual RVector2D operator[](const u_int n) const
Definition: RMatrix2D.cpp:114
virtual RMatrix2D & operator=(const RMatrix2D &m)
Definition: RMatrix2D.cpp:98
ClassDef(RMatrix2D, 0)
Définition de la matrice par vecteurs lignes.
Definition: RMatrix2D.hh:41
GObject(RMatrix2D)
virtual void SetLine(const u_int n, const RPoint2D v)
Definition: RMatrix2D.cpp:207
RMatrix2D operator-=(const RMatrix2D &m)
Definition: RMatrix2D.icc:47
RMatrix2D Inverse() const
Definition: RMatrix2D.icc:14
RMatrix2D operator*=(const RMatrix2D &m)
Definition: RMatrix2D.icc:53
RMatrix2D operator*(const RMatrix2D &m) const
Definition: RMatrix2D.icc:84
static const RMatrix2D null
Matrice nulle.
Definition: RMatrix2D.hh:45
virtual RVector2D GetAxis(const u_int n) const
Definition: RMatrix2D.cpp:165
Double_t Determinant() const
Definition: RMatrix2D.icc:10
virtual void SetAxis(const u_int n, const RPoint2D v)
Definition: RMatrix2D.cpp:226
virtual RVector2D GetColumn(const u_int n) const
Definition: RMatrix2D.cpp:148
RVector2D Transform(const RVector2D &v) const
Definition: RMatrix2D.icc:23
Definition: RVector2D.hh:26
virtual RVector2D GetLine(const u_int n) const
Definition: RMatrix2D.cpp:131
RMatrix2D operator+=(const RMatrix2D &m)
Definition: RMatrix2D.icc:41
static RMatrix2D Rotation(const Double_t angle)
Definition: RMatrix2D.icc:117
static const Double_t zero
Limites de test du zéro
Definition: RMatrix2D.hh:47
static const RMatrix2D id
Matrice identité
Definition: RMatrix2D.hh:46
virtual void SetColumn(const u_int n, const RPoint2D v)
Definition: RMatrix2D.cpp:188
Definition: RMatrix2D.hh:25
RMatrix2D operator-() const
Definition: RMatrix2D.icc:34
RMatrix2D operator/(const Double_t r) const
Definition: RMatrix2D.icc:109
Définition de la matrice par vecteurs colonnes.
Definition: RMatrix2D.hh:40
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
RMatrix2D operator+() const
Definition: RMatrix2D.icc:30
Double_t me[4]
Eléménts de matrice.
Definition: RMatrix2D.hh:33
RMatrix2D(const Double_t diag=1.)
Definition: RMatrix2D.cpp:22
RMatrix2D operator/=(const Double_t r)
Definition: RMatrix2D.icc:65