Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/lina/vec2

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/tools/lina/vec2 (Version 11.3.0) and /externals/g4tools/include/tools/lina/vec2 (Version 5.0)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef tools_vec2                                
  5 #define tools_vec2                                
  6                                                   
  7 #include <cstddef> //size_t                       
  8                                                   
  9 #ifdef TOOLS_MEM                                  
 10 #include "../mem"                                 
 11 #endif                                            
 12                                                   
 13 namespace tools {                                 
 14                                                   
 15 template <class T>                                
 16 class vec2 {                                      
 17 #ifdef TOOLS_MEM                                  
 18   static const std::string& s_class() {           
 19     static const std::string s_v("tools::vec2"    
 20     return s_v;                                   
 21   }                                               
 22 #endif                                            
 23 public:                                           
 24   typedef T elem_t;                               
 25   unsigned int dimension() const {return 2;}      
 26 public:                                           
 27   vec2(){                                         
 28 #ifdef TOOLS_MEM                                  
 29     mem::increment(s_class().c_str());            
 30 #endif                                            
 31     m_data[0] = T();                              
 32     m_data[1] = T();                              
 33   }                                               
 34   vec2(const T a_vec[2]) {                        
 35 #ifdef TOOLS_MEM                                  
 36     mem::increment(s_class().c_str());            
 37 #endif                                            
 38     m_data[0] = a_vec[0];                         
 39     m_data[1] = a_vec[1];                         
 40   }                                               
 41   vec2(const T& a0,const T& a1) {                 
 42 #ifdef TOOLS_MEM                                  
 43     mem::increment(s_class().c_str());            
 44 #endif                                            
 45     m_data[0] = a0;                               
 46     m_data[1] = a1;                               
 47   }                                               
 48   virtual ~vec2() {                               
 49 #ifdef TOOLS_MEM                                  
 50     mem::decrement(s_class().c_str());            
 51 #endif                                            
 52   }                                               
 53 public:                                           
 54   vec2(const vec2& a_from){                       
 55 #ifdef TOOLS_MEM                                  
 56     mem::increment(s_class().c_str());            
 57 #endif                                            
 58     m_data[0] = a_from.m_data[0];                 
 59     m_data[1] = a_from.m_data[1];                 
 60   }                                               
 61   vec2& operator=(const vec2& a_from) {           
 62     m_data[0] = a_from.m_data[0];                 
 63     m_data[1] = a_from.m_data[1];                 
 64     return *this;                                 
 65   }                                               
 66 public:                                           
 67   const T& v0() const { return m_data[0];}        
 68   const T& v1() const { return m_data[1];}        
 69                                                   
 70   void v0(const T& a_value) { m_data[0] = a_va    
 71   void v1(const T& a_value) { m_data[1] = a_va    
 72                                                   
 73   const T& x() const {return m_data[0];}          
 74   const T& y() const {return m_data[1];}          
 75   T& x() {return m_data[0];}                      
 76   T& y() {return m_data[1];}                      
 77                                                   
 78   void set_value(const T& a0,const T& a1) {       
 79     m_data[0] = a0;                               
 80     m_data[1] = a1;                               
 81   }                                               
 82   void set_value(const T aV[2]) {                 
 83     m_data[0] = aV[0];                            
 84     m_data[1] = aV[1];                            
 85   }                                               
 86   void value(T& a0,T& a1) const {                 
 87     a0 = m_data[0];                               
 88     a1 = m_data[1];                               
 89   }                                               
 90                                                   
 91   //bool set_value(unsigned int a_index,const     
 92   //  if(a_index>=2) return false;                
 93   //  m_[a_index] = a_value;                      
 94   //  return true;                                
 95   //}                                             
 96                                                   
 97   T length(T(*a_sqrt)(T)) const {                 
 98     return a_sqrt(m_data[0]*m_data[0]+m_data[1    
 99   }                                               
100                                                   
101   T normalize(T(*a_sqrt)(T)) {                    
102     T norme = length(a_sqrt);                     
103     if(norme==T()) return T();                    
104     divide(norme);                                
105     return norme;                                 
106   }                                               
107                                                   
108   T dot(const vec2& aV) const {                   
109     return (m_data[0] * aV.m_data[0] +            
110             m_data[1] * aV.m_data[1]);            
111   }                                               
112                                                   
113   T cross(const vec2& aV) const {                 
114     return (m_data[0] * aV.m_data[1] - m_data[    
115   }                                               
116                                                   
117   bool equal(const vec2& aV) const {              
118     if(m_data[0]!=aV.m_data[0]) return false;     
119     if(m_data[1]!=aV.m_data[1]) return false;     
120     return true;                                  
121   }                                               
122                                                   
123   bool divide(const T& a_T) {                     
124     if(a_T==T()) return false;                    
125     m_data[0] /= a_T;                             
126     m_data[1] /= a_T;                             
127     return true;                                  
128   }                                               
129                                                   
130   void add(const vec2& a_v) {                     
131     m_data[0] += a_v.m_data[0];                   
132     m_data[1] += a_v.m_data[1];                   
133   }                                               
134                                                   
135   void add(const T& a0,const T& a1) {             
136     m_data[0] += a0;                              
137     m_data[1] += a1;                              
138   }                                               
139                                                   
140   void subtract(const vec2& a_v) {                
141     m_data[0] -= a_v.m_data[0];                   
142     m_data[1] -= a_v.m_data[1];                   
143   }                                               
144                                                   
145   void subtract(const T& a0,const T& a1) {        
146     m_data[0] -= a0;                              
147     m_data[1] -= a1;                              
148   }                                               
149                                                   
150 public: //operators                               
151   T& operator[](size_t a_index) {                 
152     //WARNING : no check on a_index.              
153     return m_data[a_index];                       
154   }                                               
155   const T& operator[](size_t a_index) const {     
156     //WARNING : no check on a_index.              
157     return m_data[a_index];                       
158   }                                               
159                                                   
160   vec2 operator+(const vec2& a_v) const {         
161     return vec2(m_data[0]+a_v.m_data[0],          
162                 m_data[1]+a_v.m_data[1]);         
163   }                                               
164                                                   
165   vec2 operator-(const vec2& a_v) const {         
166     return vec2(m_data[0]-a_v.m_data[0],          
167                 m_data[1]-a_v.m_data[1]);         
168   }                                               
169                                                   
170   vec2 operator*(const T& a_v) const {            
171     return vec2(m_data[0]*a_v,                    
172                 m_data[1]*a_v);                   
173   }                                               
174                                                   
175   bool operator==(const vec2& a_v) const {retu    
176   bool operator!=(const vec2& a_v) const {retu    
177                                                   
178 public: //for tools/sg/sf_vec                     
179   typedef unsigned int size_type;                 
180   size_type size() const {return 2;}              
181   const T* data() const {return m_data;}          
182 public: //for iv2sg                               
183   const T* getValue() const {return m_data;}      
184   void getValue(T& a0,T& a1) const {              
185     a0 = m_data[0];                               
186     a1 = m_data[1];                               
187   }                                               
188   void setValue(const T& a0,const T& a1) {        
189     m_data[0] = a0;                               
190     m_data[1] = a1;                               
191   }                                               
192   void setValue(const T aV[2]) {                  
193     m_data[0] = aV[0];                            
194     m_data[1] = aV[1];                            
195   }                                               
196 protected:                                        
197   T m_data[2];                                    
198                                                   
199 private:static void check_instantiation() {vec    
200 };                                                
201                                                   
202 //for sf, mf :                                    
203 template <class T>                                
204 inline const T* get_data(const vec2<T>& a_v) {    
205                                                   
206 }                                                 
207                                                   
208 #include <ostream>                                
209                                                   
210 namespace tools {                                 
211                                                   
212 // for sf_vec::dump().                            
213 template <class T>                                
214 inline std::ostream& operator<<(std::ostream&     
215   a_out << "x = " << a_this.v0()                  
216         << ",y = " << a_this.v1();                
217   return a_out;                                   
218 }                                                 
219                                                   
220 }                                                 
221                                                   
222 #endif