Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 3 4 #ifndef tools_curve 5 #define tools_curve 6 7 #include "scast" 8 #include "S_STRING" 9 10 #ifdef TOOLS_MEM 11 #include "mem" 12 #endif 13 14 #include "lina/vec3f" 15 #include "lina/mat4f" 16 17 namespace tools { 18 19 class curve { 20 public: 21 TOOLS_SCLASS(tools::curve) 22 virtual void* cast(const std::string& a_class) const { 23 if(void* p = cmp_cast<curve>(this,a_class)) {return p;} 24 return 0; 25 } 26 public: 27 virtual void copy(curve*&) const = 0; 28 public: 29 virtual bool pos_tan_nor(float a_s, 30 vec3f& a_pos, 31 vec3f& a_tan, 32 vec3f& a_nor) const = 0; 33 public: 34 curve(){ 35 #ifdef TOOLS_MEM 36 mem::increment(s_class().c_str()); 37 #endif 38 m_model.set_identity(); 39 } 40 virtual ~curve(){ 41 #ifdef TOOLS_MEM 42 mem::decrement(s_class().c_str()); 43 #endif 44 } 45 public: 46 curve(const curve& a_from):m_model(a_from.m_model){ 47 #ifdef TOOLS_MEM 48 mem::increment(s_class().c_str()); 49 #endif 50 } 51 curve& operator=(const curve& a_from){ 52 m_model = a_from.m_model; 53 return *this; 54 } 55 public: 56 void set_model_matrix(const mat4f& a_m) {m_model = a_m;} 57 protected: 58 mat4f m_model; 59 }; 60 61 } 62 63 #endif