73 lines
1.3 KiB
C++
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
|