/** * @file ContourBaseData.h * @brief 等值线算法数据定义 * @date 2015-01 */ #ifndef CONTOUR_BASE_DATA_H #define CONTOUR_BASE_DATA_H #include "BaseFun.h" #include //#include "GeometryUtils.h" using namespace std; namespace ContourMath{ inline bool Point3DCompare(const Point3D& pt1, const Point3D& pt2) { return pt1.z < pt2.z; } template class OSGFRAMEWORK_EXPORT Vector2D { public: Vector2D():m_dimRow(0), m_dimCol(0){;} Vector2D(int nRow, int nCol) { m_dimRow = nRow; m_dimCol = nCol; for (int i=0; i < nRow; i++) { vector x(nCol); m_2DVector.push_back(x); } } void SetSize(int newRow, int newCol ) { GrowRow(newRow); GrowCol(newCol); } void GrowRow(int newSize) { if ((unsigned int)newSize <= m_dimRow) return; m_dimRow = newSize; for(int i = 0 ; i < newSize - (int)m_dimCol; i++) { vector x(m_dimRow); m_2DVector.push_back(x); } } void GrowCol(int newSize) { if((unsigned int)newSize <= m_dimCol) return; m_dimCol = newSize; for (int i=0; i <(int)m_dimRow; i++) m_2DVector[i].resize(newSize); } std::vector& operator[](int x) { return m_2DVector[x]; } private: std::vector< std::vector > m_2DVector; unsigned int m_dimRow; unsigned int m_dimCol; }; } #endif