Geant4 Cross Reference

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

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 ]

  1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.
  3 
  4 #ifndef tools_vec2f
  5 #define tools_vec2f
  6 
  7 #include "vec2"
  8 #include "../S_STRING"
  9 #include <cmath>
 10 
 11 namespace tools {
 12 
 13 class vec2f : public vec2<float> {
 14   typedef vec2<float> parent;
 15 public:
 16   TOOLS_SCLASS(tools::vec2f) //for stype()
 17 public:
 18   vec2f():parent(){}
 19   vec2f(const float a_vec[2]):parent(a_vec){}
 20   vec2f(float a0,float a1):parent(a0,a1){}
 21   virtual ~vec2f() {}
 22 public:
 23   vec2f(const vec2f& a_from): parent(a_from){}
 24   vec2f& operator=(const vec2f& a_from){
 25     parent::operator=(a_from);
 26     return *this;
 27   }
 28 
 29   vec2f(const parent& a_from):parent(a_from){}
 30 
 31 public: //operators
 32   vec2f operator*(float a_v) const {
 33     return vec2f(m_data[0]*a_v,
 34                  m_data[1]*a_v);
 35   }
 36   vec2f operator+(const vec2f& a_v) const {
 37     return vec2f(m_data[0]+a_v.m_data[0],
 38                  m_data[1]+a_v.m_data[1]);
 39   }
 40   vec2f operator-(const vec2f& a_v) const {
 41     return vec2f(m_data[0]-a_v.m_data[0],
 42                  m_data[1]-a_v.m_data[1]);
 43   }
 44   vec2f& operator+=(const vec2f& a_v) {
 45     m_data[0] += a_v.m_data[0];
 46     m_data[1] += a_v.m_data[1];
 47     return *this;
 48   }
 49   vec2f& operator*=(float a_v) {
 50     m_data[0] *= a_v;
 51     m_data[1] *= a_v;
 52     return *this;
 53   }
 54   vec2f operator-() const {
 55     return vec2f(-m_data[0],-m_data[1]);
 56   }
 57 public:
 58 #define TOOLS_VEC2F_MORE_PREC
 59 #ifdef TOOLS_VEC2F_MORE_PREC
 60   float length() const {
 61     return float(::sqrt(m_data[0]*m_data[0]+m_data[1]*m_data[1]));
 62   }
 63   float normalize() {
 64     float norme = length();
 65     if(!norme) return 0;
 66     divide(norme);
 67     return norme;
 68   }
 69 #else
 70   float length() const {return parent::length(::sqrtf);}
 71   float normalize() {return parent::normalize(::sqrtf);}
 72 #endif
 73 public: //iv2sg
 74   bool equals(const vec2f& a_v,const float a_epsil) const {
 75     //if(a_epsil<0.0f))
 76     float d0 = m_data[0]-a_v.m_data[0];
 77     float d1 = m_data[1]-a_v.m_data[1];
 78     return ((d0*d0+d1*d1)<=a_epsil);
 79   }
 80   void negate() {
 81     m_data[0] = -m_data[0];
 82     m_data[1] = -m_data[1];
 83   }
 84 
 85 private:static void check_instantiation() {vec2f v(0,0);v.set_value(1,1);}
 86 };
 87 
 88 inline vec2f operator*(float a_f,const vec2f& a_v) {
 89   vec2f res(a_v);
 90   res *= a_f;
 91   return res;
 92 }
 93 
 94 }
 95 
 96 #include <vector>
 97 
 98 namespace tools {
 99 
100 #ifndef SWIG
101 //for sf, mf :
102 inline bool set_from_vec(vec2f& a_v,const std::vector<float>& a_sv) {
103   if(a_sv.size()!=2) return false;
104   a_v[0] = a_sv[0];
105   a_v[1] = a_sv[1];
106   return true;
107 }
108 #endif
109 
110 }
111 
112 #endif