00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MbLineMeshCurvilinear_H
00024 #define _MbLineMeshCurvilinear_H
00025
00026 #ifdef _WIN32
00027 # pragma warning( push )
00028 # pragma warning(disable:4250)
00029 #endif
00030
00031 #include <MeshVizXLM/mesh/MiLineMeshCurvilinear.h>
00032 #include <mesh/MbMesh.h>
00033 #include <topology/MbLineTopologyI.h>
00034 #include <MeshVizXLM/MbVec3.h>
00035
00036 #include <Inventor/STL/vector>
00037 #include <Inventor/STL/iostream>
00038
00048 template <typename _CoordT=MbVec3d, typename _ScalarT=double, typename _Vec3T=MbVec3d>
00049 class MbLineMeshCurvilinear : virtual public MiLineMeshCurvilinear, public MbMesh<_CoordT,_ScalarT,_Vec3T>
00050 {
00051
00052 public:
00056 template <typename _Vec3Iter>
00057 MbLineMeshCurvilinear(_Vec3Iter beginCoord, _Vec3Iter endCoord);
00058
00062 template <typename _BoolIter>
00063 void setDeadCells(_BoolIter beginId, _BoolIter endId)
00064 {
00065 m_topology.assignDeadFlags(beginId,endId);
00066 }
00067
00068 virtual const MiTopologyI& getTopology() const;
00069
00070 private:
00071 virtual std::ostream& toStream(std::ostream& s) const;
00072
00073 MbLineTopologyI m_topology;
00074 };
00075
00076
00077
00078 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00079 template <typename _Vec3Iter>
00080 inline MbLineMeshCurvilinear<_CoordT,_ScalarT,_Vec3T>::MbLineMeshCurvilinear(
00081 _Vec3Iter beginCoord, _Vec3Iter endCoord
00082 ) :
00083 MbMesh<_CoordT,_ScalarT,_Vec3T>(beginCoord,endCoord),
00084 m_topology(std::distance(beginCoord,endCoord)-1)
00085 {
00086 }
00087
00088
00089
00090 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00091 inline const MiTopologyI&
00092 MbLineMeshCurvilinear<_CoordT,_ScalarT,_Vec3T>::getTopology() const
00093 {
00094 return m_topology;
00095 }
00096
00097
00098 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00099 inline std::ostream&
00100 MbLineMeshCurvilinear<_CoordT,_ScalarT,_Vec3T>::toStream(std::ostream& s) const
00101 {
00102 s << "# MbLineMeshCurvilinear " << std::endl;
00103
00104 MiLineMeshCurvilinear::toStream(s);
00105 MbMesh<_CoordT,_ScalarT,_Vec3T>::toStream(s);
00106
00107 return s;
00108 }
00109
00110 #ifdef _WIN32
00111 # pragma warning( pop )
00112 #endif
00113
00114 #endif
00115
00116
00117
00118
00119
00120
00121
00122