00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MbLineMeshUnstructured_H
00024 #define _MbLineMeshUnstructured_H
00025
00026 #ifdef _WIN32
00027 # pragma warning( push )
00028 # pragma warning(disable:4250)
00029 #endif
00030
00031 #include <MeshVizXLM/mesh/MiLineMeshUnstructured.h>
00032 #include <mesh/MbMesh.h>
00033 #include <topology/MbLineCellsSet.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 MbLineMeshUnstructured : virtual public MiLineMeshUnstructured, public MbMesh<_CoordT,_ScalarT,_Vec3T>
00050 {
00051
00052 public:
00056 template <typename _Vec3Iter, typename _NodeIdIter>
00057 MbLineMeshUnstructured(_Vec3Iter beginCoord, _Vec3Iter endCoord,
00058 _NodeIdIter beginId, _NodeIdIter endId);
00059
00063 template <typename _NodeIdIter>
00064 void setTopology(_NodeIdIter beginId, _NodeIdIter endId);
00065
00069 template <typename _BoolIter>
00070 void setDeadCells(_BoolIter beginId, _BoolIter endId)
00071 {
00072 m_topology.assignDeadFlags(beginId,endId);
00073 }
00074
00075 virtual const MiLineTopologyExplicitI& getTopology() const;
00076
00077 private:
00078 virtual std::ostream& toStream(std::ostream& s) const;
00079
00080 MbLineCellsSet m_topology;
00081 };
00082
00083
00084
00085 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00086 template <typename _Vec3Iter, typename _NodeIdIter>
00087 inline MbLineMeshUnstructured<_CoordT,_ScalarT,_Vec3T>::MbLineMeshUnstructured(
00088 _Vec3Iter beginCoord, _Vec3Iter endCoord,
00089 _NodeIdIter beginId, _NodeIdIter endId
00090 ) :
00091 MbMesh<_CoordT,_ScalarT,_Vec3T>(beginCoord,endCoord)
00092 {
00093 setTopology(beginId,endId);
00094 }
00095
00096
00097
00098 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00099 inline const MiLineTopologyExplicitI&
00100 MbLineMeshUnstructured<_CoordT,_ScalarT,_Vec3T>::getTopology() const
00101 {
00102 return m_topology;
00103 }
00104
00105
00106 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00107 template <typename _NodeIdIter>
00108 inline void
00109 MbLineMeshUnstructured<_CoordT,_ScalarT,_Vec3T>::setTopology(_NodeIdIter beginId, _NodeIdIter endId)
00110 {
00111 m_topology.assign(beginId,endId);
00112 }
00113
00114
00115 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00116 inline std::ostream&
00117 MbLineMeshUnstructured<_CoordT,_ScalarT,_Vec3T>::toStream(std::ostream& s) const
00118 {
00119 s << "# MbLineMeshUnstructured " << std::endl;
00120
00121 MiLineMeshUnstructured::toStream(s);
00122 MbMesh<_CoordT,_ScalarT,_Vec3T>::toStream(s);
00123
00124 return s;
00125 }
00126
00127 #ifdef _WIN32
00128 # pragma warning( pop )
00129 #endif
00130
00131 #endif
00132
00133
00134
00135
00136
00137
00138
00139