Jafar
|
00001 /* $Id$ */ 00002 00003 #ifndef _GEOM_FACET_HPP_ 00004 #define _GEOM_FACET_HPP_ 00005 00006 #include "geom/OrientedPlan.hpp" 00007 #include "geom/PolyLine.hpp" 00008 00009 namespace jafar { 00010 namespace geom { 00015 template<int dimension> 00016 class Facet : public OrientedPlan<dimension> { 00017 typedef Repere<dimension> RepereD; 00018 typedef OrientedPlan<dimension> OrientedPlanD; 00019 typedef typename geom::Atom<dimension>::HomogenousVecD HomogenousVecD; 00020 typedef typename geom::Atom<dimension - 1>::HomogenousVecD HomogenousVecDM1; 00021 typedef typename geom::Atom<dimension>::VecD VecD; 00022 typedef boost::numeric::ublas::bounded_matrix<double,dimension + 1 ,dimension + 1> Matrix; 00023 public: 00024 Facet(); 00025 template<typename _TDriver_> 00026 Facet( _TDriver_* d, const PolyLine<dimension-1>& polyLine ); 00027 Facet( const PolyLine<dimension>& polyLine ); 00028 Facet(const Facet&); 00029 ~Facet(); 00030 inline Facet& operator=(const Facet& rhs); 00031 virtual BoundingBox<dimension> boundingBox() const; 00032 void setPlanPolyLine(const PolyLine<dimension-1>& planPolyLine); 00033 const PolyLine<dimension-1>& planPolyLine() const; 00034 const PolyLine<dimension>& spacePolyLine() const; 00035 virtual typename Atom<dimension>::Type type() const { return Atom<dimension>::T_Facet; } 00042 inline double surface() const; 00043 inline double perimeter() const; 00044 public: 00045 virtual std::string toString() const; 00046 public: 00047 GEN_DISTANCE_FUNCTIONS 00048 GEN_ANGLE_FUNCTIONS; 00049 GEN_VISITOR_FUNCTIONS 00050 private: 00051 inline double surface(const HomogenousVecDM1& v1, const HomogenousVecDM1& v2) const; 00052 private: 00053 PolyLine<dimension-1> m_planPolyLine; 00054 PolyLine<dimension> m_spacePolyLine; 00055 }; 00056 } 00057 } 00058 00059 #include "geom/FacetImpl.hpp" 00060 00061 #endif
Generated on Wed Oct 15 2014 00:37:19 for Jafar by doxygen 1.7.6.1 |