00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _MBSURFACEMESHRECTILINEAR_H
00024 #define _MBSURFACEMESHRECTILINEAR_H
00025
00026 #ifdef _WIN32
00027 # pragma warning( push )
00028 # pragma warning(disable:4250)
00029 # pragma warning(disable:4251)
00030 #endif
00031
00032 #include <MeshVizXLM/mesh/MiSurfaceMeshRectilinear.h>
00033 #include <mesh/MbMeshIj.h>
00034
00035 #include <geometry/MbSurfaceGeometryRectilinear.h>
00036
00047 template <typename _CoordT=double, typename _ScalarT=double, typename _Vec3T=MbVec3d>
00048 class MbSurfaceMeshRectilinear : virtual public MiSurfaceMeshRectilinear, public MbMeshIj<_ScalarT,_Vec3T>
00049 {
00050 public:
00052 template <typename _NodeIdIter>
00053 MbSurfaceMeshRectilinear( _NodeIdIter xBegin,_NodeIdIter xEnd,
00054 _NodeIdIter yBegin,_NodeIdIter yEnd) :
00055 MbMeshIj<_ScalarT, _Vec3T>(std::distance(xBegin, xEnd) == 0 ? 0 : std::distance(xBegin, xEnd) - 1,
00056 std::distance(yBegin, yEnd) == 0 ? 0 : std::distance(yBegin, yEnd) - 1),
00057 m_geometry(xBegin,xEnd,yBegin,yEnd)
00058 {
00059 }
00060
00064 virtual const MiSurfaceGeometryRectilinear& getGeometry() const
00065 {
00066 return m_geometry;
00067 }
00068
00069 private:
00070 virtual std::ostream& toStream(std::ostream& s) const;
00071
00072 MbSurfaceGeometryRectilinear<_CoordT> m_geometry;
00073
00074 };
00075
00076
00077 template <typename _CoordT, typename _ScalarT, typename _Vec3T>
00078 inline std::ostream&
00079 MbSurfaceMeshRectilinear<_CoordT,_ScalarT,_Vec3T>::toStream(std::ostream& s) const
00080 {
00081 MiSurfaceMeshRectilinear::toStream(s);
00082 MbMeshIj<_ScalarT,_Vec3T>::toStream(s);
00083 return s;
00084 }
00085
00086 #ifdef _WIN32
00087 # pragma warning( pop )
00088 #endif
00089
00090 #endif
00091
00092
00093