logplus/BaseFun/include/ContourBaseData.h
2025-10-29 17:23:30 +08:00

73 lines
1.3 KiB
C++

/**
* @file ContourBaseData.h
* @brief 等值线算法数据定义
* @date 2015-01
*/
#ifndef CONTOUR_BASE_DATA_H
#define CONTOUR_BASE_DATA_H
#include "BaseFun.h"
#include <vector>
//#include "GeometryUtils.h"
using namespace std;
namespace ContourMath{
inline bool Point3DCompare(const Point3D& pt1, const Point3D& pt2)
{
return pt1.z < pt2.z;
}
template <class T>
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<T> 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<T> 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<T>& operator[](int x)
{
return m_2DVector[x];
}
private:
std::vector< std::vector <T> > m_2DVector;
unsigned int m_dimRow;
unsigned int m_dimCol;
};
}
#endif