Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/sg/perspective

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/sg/perspective (Version 11.3.0) and /externals/g4tools/include/tools/sg/perspective (Version 11.0.p4)


  1 // Copyright (C) 2010, Guy Barrand. All rights      1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.            2 // See the file tools.license for terms.
  3                                                     3 
  4 #ifndef tools_sg_perspective                        4 #ifndef tools_sg_perspective
  5 #define tools_sg_perspective                        5 #define tools_sg_perspective
  6                                                     6 
  7 #include "base_camera"                              7 #include "base_camera"
  8                                                     8 
  9 #include "../mathf"                                 9 #include "../mathf"
 10                                                    10 
 11 namespace tools {                                  11 namespace tools {
 12 namespace sg {                                     12 namespace sg {
 13                                                    13 
 14 class perspective : public base_camera {           14 class perspective : public base_camera {
 15   TOOLS_NODE(perspective,tools::sg::perspectiv     15   TOOLS_NODE(perspective,tools::sg::perspective,base_camera)
 16 public:                                            16 public:
 17   virtual float near_height() const {              17   virtual float near_height() const {
 18     return 2.0f*znear.value()*ftan(height_angl     18     return 2.0f*znear.value()*ftan(height_angle.value()*0.5f);
 19   }                                                19   }
 20   virtual void zoom(float a_fac) {                 20   virtual void zoom(float a_fac) {
 21     //for exa :                                    21     //for exa :
 22     //  a_fac = 0.99f is a zoom in                 22     //  a_fac = 0.99f is a zoom in
 23     //  a_fac = 1.01f is a zoom out                23     //  a_fac = 1.01f is a zoom out
 24     height_angle.value(height_angle.value()*a_     24     height_angle.value(height_angle.value()*a_fac);
 25   }                                                25   }
 26   virtual camera_type type() const {return cam     26   virtual camera_type type() const {return camera_perspective;}
 27 public:                                            27 public:
 28   sf<float> height_angle;                          28   sf<float> height_angle;
 29 public:                                            29 public:
 30   virtual const desc_fields& node_desc_fields(     30   virtual const desc_fields& node_desc_fields() const {
 31     TOOLS_FIELD_DESC_NODE_CLASS(tools::sg::per     31     TOOLS_FIELD_DESC_NODE_CLASS(tools::sg::perspective)
 32     static const desc_fields s_v(parent::node_     32     static const desc_fields s_v(parent::node_desc_fields(),1, //WARNING : take care of count.
 33       TOOLS_ARG_FIELD_DESC(height_angle)           33       TOOLS_ARG_FIELD_DESC(height_angle)
 34     );                                             34     );
 35     return s_v;                                    35     return s_v;
 36   }                                                36   }
 37 private:                                           37 private:
 38   void add_fields(){                               38   void add_fields(){
 39     add_field(&height_angle);                      39     add_field(&height_angle);
 40   }                                                40   }
 41 public:                                            41 public:
 42   perspective()                                    42   perspective()
 43   :parent()                                        43   :parent()
 44   ,height_angle(fpi()/4.0f) //45 degrees.          44   ,height_angle(fpi()/4.0f) //45 degrees.
 45   {                                                45   {
 46 #ifdef TOOLS_MEM                                   46 #ifdef TOOLS_MEM
 47     mem::increment(s_class().c_str());             47     mem::increment(s_class().c_str());
 48 #endif                                             48 #endif
 49     add_fields();                                  49     add_fields();
 50   }                                                50   }
 51   virtual ~perspective(){                          51   virtual ~perspective(){
 52 #ifdef TOOLS_MEM                                   52 #ifdef TOOLS_MEM
 53     mem::decrement(s_class().c_str());             53     mem::decrement(s_class().c_str());
 54 #endif                                             54 #endif
 55   }                                                55   }
 56 public:                                            56 public:
 57   perspective(const perspective& a_from)           57   perspective(const perspective& a_from)
 58   :parent(a_from)                                  58   :parent(a_from)
 59   ,height_angle(a_from.height_angle)               59   ,height_angle(a_from.height_angle)
 60   {                                                60   {
 61 #ifdef TOOLS_MEM                                   61 #ifdef TOOLS_MEM
 62     mem::increment(s_class().c_str());             62     mem::increment(s_class().c_str());
 63 #endif                                             63 #endif
 64     add_fields();                                  64     add_fields();
 65   }                                                65   }
 66   perspective& operator=(const perspective& a_     66   perspective& operator=(const perspective& a_from){
 67     parent::operator=(a_from);                     67     parent::operator=(a_from);
 68     height_angle = a_from.height_angle;            68     height_angle = a_from.height_angle;
 69     return *this;                                  69     return *this;
 70   }                                                70   }
 71 public: //operators:                               71 public: //operators:
 72   bool operator==(const perspective& a_from) c     72   bool operator==(const perspective& a_from) const{
 73     if(!parent::operator==(a_from)) return fal     73     if(!parent::operator==(a_from)) return false;
 74     if(height_angle!=a_from.height_angle) retu     74     if(height_angle!=a_from.height_angle) return false;
 75     return true;                                   75     return true;
 76   }                                                76   }
 77   bool operator!=(const perspective& a_from) c     77   bool operator!=(const perspective& a_from) const {
 78     return !operator==(a_from);                    78     return !operator==(a_from);
 79   }                                                79   }
 80 public:                                            80 public:
 81   void dump(std::ostream& a_out) {                 81   void dump(std::ostream& a_out) {
 82     parent::dump(a_out);                           82     parent::dump(a_out);
 83     a_out << " height_angle " << height_angle.     83     a_out << " height_angle " << height_angle.value() << std::endl;
 84   }                                                84   }
 85                                                    85 
 86 protected:                                         86 protected:
 87   virtual void get_lrbt(unsigned int a_ww,unsi     87   virtual void get_lrbt(unsigned int a_ww,unsigned int a_wh,
 88                         float& a_l,float& a_r,     88                         float& a_l,float& a_r,float& a_b,float& a_t) {
 89     float aspect = float(a_ww)/float(a_wh);        89     float aspect = float(a_ww)/float(a_wh);
 90     float hh = near_height()*0.5f;                 90     float hh = near_height()*0.5f;
 91     a_l = -aspect*hh;                              91     a_l = -aspect*hh;
 92     a_r = aspect*hh;                               92     a_r = aspect*hh;
 93     a_b = -hh;                                     93     a_b = -hh;
 94     a_t = hh;                                      94     a_t = hh;
 95   }                                                95   }
 96 };                                                 96 };
 97                                                    97 
 98 inline perspective* cast_perspective(base_came     98 inline perspective* cast_perspective(base_camera& a_bcam) {return safe_cast<base_camera,perspective>(a_bcam);}
 99                                                    99 
100 }}                                                100 }}
101                                                   101 
102 #endif                                            102 #endif