Main Page | Class Hierarchy | Class List | File List | Class Members

Vectors.h

00001 #ifndef GEAR_Vectors_H
00002 #define GEAR_Vectors_H 1
00003 
00004 #include <stdexcept> 
00005 
00006 namespace gear {
00007 
00008 
00018   template <int N, typename Float_T=double>
00019   class VectorND_T {
00020     
00021   public: 
00022 
00023     VectorND_T() {} ;
00024 
00026     inline Float_T& operator[](unsigned i) {  
00027       
00028       if( i > N-1 ) throw std::out_of_range( "VectorND_T::operator[]" ) ;
00029       
00030       return _c[i]  ; 
00031     } 
00032     inline Float_T operator[](unsigned i) const {  
00033       
00034       if( i > N-1 ) throw std::out_of_range( "VectorND_T::operator[]" ) ;
00035       
00036       return _c[i]  ; 
00037     } 
00038     
00039   protected:
00040     
00041     Float_T _c[N] ; 
00042     
00043   }; // class
00044   
00045 
00047   template <typename Float_T=double>
00048   struct Vector2D_T : public VectorND_T<2,Float_T> {
00049     typedef VectorND_T<2,Float_T> Base ;
00050     Vector2D_T() { 
00051       Base::_c[0] = 0. ; 
00052       Base::_c[1] = 0. ; 
00053     }
00054     Vector2D_T( Float_T c0, Float_T c1 ) {
00055       Base::_c[0] = c0 ; 
00056       Base::_c[1] = c1 ; 
00057     } 
00058   } ;
00059   
00061   template <typename Float_T=double>
00062   struct Vector3D_T : public VectorND_T<3,Float_T> {
00063     typedef VectorND_T<3,Float_T> Base ;
00064     Vector3D_T() { 
00065       Base::_c[0] = 0. ; 
00066       Base::_c[1] = 0. ; 
00067       Base::_c[2] = 0. ;
00068     }
00069     Vector3D_T( Float_T c0, Float_T c1, Float_T c2 ) { 
00070       Base::_c[0] = c0 ;
00071       Base::_c[1] = c1 ; 
00072       Base::_c[2] = c2 ; 
00073     } 
00074   } ;
00075   
00076 
00077 
00078   typedef Vector2D_T<double> Vector2D ;
00079   
00080   typedef Vector3D_T<double> Vector3D ;
00081   
00082   //  gear::Vector3D_T<Float_T>::Vector3D_T()
00083   
00084 } // namespace gear
00085 
00086 #endif /* ifndef GEAR_Vectors_H */
00087 

Generated on Tue Sep 5 11:36:30 2006 for Gear by doxygen 1.3.5