00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MbSurfaceMeshQuadrangle_H
00024 #define _MbSurfaceMeshQuadrangle_H
00025
00026 #ifdef _WIN32
00027 # pragma warning( push )
00028 # pragma warning(disable:4250)
00029 #endif
00030
00031 #include <mesh/surfaces/MbSurfaceMeshUnstructured.h>
00032 #include <topology/MbQuadrangleCellsSet.h>
00033 #include <MeshVizXLM/MbVec3.h>
00034
00035 #include <Inventor/STL/vector>
00036 #include <Inventor/STL/iostream>
00037
00047 template <typename _CoordT=MbVec3d, typename _ScalarT=double, typename _Vec3T=MbVec3d>
00048 class MbSurfaceMeshQuadrangle : public MbSurfaceMeshUnstructured<_CoordT,_ScalarT,_Vec3T>
00049 {
00050
00051 public:
00052
00056 template <typename _Vec3Iter, typename _NodeIdIter>
00057 MbSurfaceMeshQuadrangle(_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 MbQuadrangleCellsSet& getTopology() const;
00076
00077 private:
00078 virtual std::ostream& toStream(std::ostream& s) const;
00079
00080 MbQuadrangleCellsSet m_topology;
00081 };
00082
00083
00084
00085 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00086 template <typename _Vec3Iter, typename _NodeIdIter>
00087 inline MbSurfaceMeshQuadrangle<_CoordT,_ScalarT,_Vec3T>::MbSurfaceMeshQuadrangle(
00088 _Vec3Iter beginCoord, _Vec3Iter endCoord,
00089 _NodeIdIter beginId, _NodeIdIter endId
00090 ) :
00091 MbSurfaceMeshUnstructured<_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 MbQuadrangleCellsSet&
00100 MbSurfaceMeshQuadrangle<_CoordT,_ScalarT,_Vec3T>::getTopology() const
00101 {
00102 return m_topology;
00103 }
00104
00105
00106
00107
00108 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00109 template <typename _NodeIdIter>
00110 inline void
00111 MbSurfaceMeshQuadrangle<_CoordT,_ScalarT,_Vec3T>::setTopology(_NodeIdIter beginId, _NodeIdIter endId)
00112 {
00113 m_topology.assign(beginId,endId);
00114 }
00115
00116
00117
00118 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00119 inline std::ostream&
00120 MbSurfaceMeshQuadrangle<_CoordT,_ScalarT,_Vec3T>::toStream(std::ostream& s) const
00121 {
00122 s << "# MbSurfaceMeshQuadrangle" << std::endl;
00123
00124
00125 MbSurfaceMeshUnstructured<_CoordT,_ScalarT,_Vec3T>::toStream(s);
00126
00127 return s;
00128 }
00129
00130 #ifdef _WIN32
00131 # pragma warning( pop )
00132 #endif
00133
00134 #endif
00135
00136
00137
00138
00139
00140
00141
00142