![]() |
TAPs 0.7.7.3
|
00001 /****************************************************************************** 00002 TAPsImplicitObject_Torus.hpp 00003 ******************************************************************************/ 00015 /****************************************************************************** 00016 SUKITTI PUNAK (10/14/2009) 00017 UPDATE (10/14/2009) 00018 ******************************************************************************/ 00019 #ifndef TAPs_IMPLICIT_OBJECT_TORUS_HPP 00020 #define TAPs_IMPLICIT_OBJECT_TORUS_HPP 00021 00022 #include "TAPsImplicitObject.hpp" 00023 00024 BEGIN_NAMESPACE_TAPs 00025 //============================================================================= 00026 template <typename T> 00027 class ImplicitObject_Torus : public /*virtual*/ ImplicitObject<T> { 00028 //============================================================================= 00029 public: 00030 // Member Functions ------------------------------------------------------- 00032 friend std::ostream & operator<< ( std::ostream &output, ImplicitObject_Torus<T> const &obj ) 00033 { 00034 output << obj.StrInfo(); 00035 return output; 00036 } 00037 //------------------------------------------------------------------------- 00039 ImplicitObject_Torus ( T inner_radius = 0.1, T outer_radius = 0.5, std::string & name = std::string("") ); 00041 ImplicitObject_Torus ( ImplicitObject_Torus<T> const &orig ); 00043 virtual ~ImplicitObject_Torus (); 00044 //------------------------------------------------------------------------- 00046 virtual std::string StrInfo () const; 00047 //------------------------------------------------------------------------- 00049 inline ImplicitObject_Torus<T> & operator= ( ImplicitObject_Torus<T> const &orig ); 00050 00052 inline void GetTransformedRadii ( T & inner_radius, T & outer_radius ) const; 00053 00055 inline Vector3<T> GetTransformedAxis () const; 00056 00057 T GetInnerRadius () const { return m_InnerRadius; } 00059 void SetInnerRadius ( T r ) { m_InnerRadius = r; } 00060 00062 T GetOuterRadius () const { return m_OuterRadius; } 00064 void SetOuterRadius ( T r ) { m_OuterRadius = r; } 00065 00067 virtual void BuildBVHTree ( int detail_level = 4, Enum::CD treeType = Enum::BVH_TREE_BINARY_SPHERE ); 00068 00069 // Data Members ----------------------------------------------------------- 00070 //============================================================================= 00071 protected: 00072 // Member Functions ------------------------------------------------------- 00073 // Data Members ----------------------------------------------------------- 00074 T m_InnerRadius; 00075 T m_OuterRadius; 00076 //============================================================================= 00077 private: 00078 // Member Functions ------------------------------------------------------- 00079 // Data Members ----------------------------------------------------------- 00080 //============================================================================= 00081 00082 #if defined(__gl_h_) || defined(__GL_H__) 00083 public: 00087 virtual void Draw ( GLenum mode = GL_TRIANGLES, GLint nsides = 8, GLint rings = 16 ); 00088 #endif 00089 00090 //============================================================================= 00091 }; // END CLASS ImplicitObject_Torus 00092 //============================================================================= 00093 //----------------------------------------------------------------------------- 00095 typedef ImplicitObject_Torus<int> ImplicitObject_Torusi; 00096 typedef ImplicitObject_Torus<float> ImplicitObject_Torusf; 00097 typedef ImplicitObject_Torus<double> ImplicitObject_Torusd; 00098 //============================================================================= 00099 END_NAMESPACE_TAPs 00100 //----------------------------------------------------------------------------- 00102 #include "TAPsImplicitObject_Torus.cpp" 00103 00105 // Include definition if TAPs_USE_EXPORT is not defined 00106 //#if !defined( TAPs_USE_EXPORT ) 00107 // #include "TAPsImplicitObject_Torus.cpp" 00108 //#endif 00109 //----------------------------------------------------------------------------- 00110 #endif 00111 //34567890123456789012345678901234567890123456789012345678901234567890123456789 00112 //--+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----