Geant4 Cross Reference

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

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/rotf (Version 11.3.0) and /externals/g4tools/include/tools/lina/rotf (Version 9.4.p4)


  1 // Copyright (C) 2010, Guy Barrand. All rights    
  2 // See the file tools.license for terms.          
  3                                                   
  4 #ifndef tools_rotf                                
  5 #define tools_rotf                                
  6                                                   
  7 // rotation done with quaternion.                 
  8                                                   
  9 #include "qrot"                                   
 10 #include "vec3f"                                  
 11 #include "vec4f"                                  
 12 #include "mat4f"                                  
 13                                                   
 14 namespace tools {                                 
 15                                                   
 16 class rotf : public qrot<vec3f,vec4f> {           
 17   typedef qrot<vec3f,vec4f> parent;               
 18 private:                                          
 19   rotf(float a_q0,float a_q1,float a_q2,float     
 20 public:                                           
 21   rotf():parent() {} //zero rotation around th    
 22   rotf(const vec3f& a_axis,float a_radians):pa    
 23   rotf(const vec3f& a_from,const vec3f& a_to):    
 24   virtual ~rotf(){}                               
 25 public:                                           
 26   rotf(const rotf& a_from):parent(a_from) {}      
 27   rotf& operator=(const rotf& a_from){            
 28     parent::operator=(a_from);                    
 29     return *this;                                 
 30   }                                               
 31 public:                                           
 32   rotf& operator*=(const rotf& a_q) {             
 33     parent::operator*=(a_q);                      
 34     return *this;                                 
 35   }                                               
 36   rotf operator*(const rotf& a_r) const {         
 37     rotf tmp(*this);                              
 38     tmp *= a_r;                                   
 39     return tmp;                                   
 40   }                                               
 41 public:                                           
 42   bool set_value(const vec3f& a_from,const vec    
 43     return parent::set_value(a_from,a_to,::sqr    
 44   }                                               
 45   bool set_value(const vec3f& a_from,float a_a    
 46     return parent::set_value(a_from,a_a,::sinf    
 47   }                                               
 48   bool value(vec3f& a_from,float& a_a) const {    
 49     return parent::value(a_from,a_a,::sinf,::a    
 50   }                                               
 51                                                   
 52   void value(mat4f& a_m) const {parent::value(    
 53   void set_value(const mat4f& a_m) {parent::se    
 54                                                   
 55   //NOTE : don't handle a static object becaus    
 56   //static const rotf& identity() {               
 57   //  static const rotf s_v(0,0,0,1);             
 58   //  return s_v;                                 
 59   //}                                             
 60 };                                                
 61                                                   
 62 }                                                 
 63                                                   
 64 #include <sstream>                                
 65                                                   
 66 namespace tools {                                 
 67                                                   
 68 inline bool tos(const rotf& a_v,std::string& a    
 69   vec3f axis;                                     
 70   float angle = 0;                                
 71   if(!a_v.value(axis,angle)) {a_s.clear();retu    
 72   std::ostringstream strm;                        
 73   strm << axis[0] << " "                          
 74        << axis[1] << " "                          
 75        << axis[2] << " "                          
 76        << angle;                                  
 77   a_s = strm.str();                               
 78   return true;                                    
 79 }                                                 
 80                                                   
 81 }                                                 
 82                                                   
 83 #endif