#if !defined( MESH_BGMESH_H )
#define MESH_BGMESH_H
#include "Connect.h"
class BGMesh
{
public:
BGMesh() { initialized = false; }
virtual double interpolate( const double ix, const double iy ) = 0;
virtual void initialize(std::vector< GeometryNode* >& nodes, std::vector< GeometryEdge* >& edges) = 0;
bool isInitialized() { return initialized; }
protected:
bool initialized;
};
class BGTriangleMesh : public Connect, public BGMesh
{
public:
BGTriangleMesh() : Connect(-1) { }
virtual void discretize(NodeMap& fixedNodes, NodeMap& allNodes,
std::list< Element* >& allElements) { }
virtual void initialize(std::vector< GeometryNode* >& nodes, std::vector< GeometryEdge* >& edges);
void getVertices( std::vector< Vertex * >& v, const int count );
virtual double interpolate( const double ix, const double iy );
void dump();
};
class BGGridMesh : public BGMesh
{
public:
BGGridMesh(double scale) { cellsize = scale; }
virtual double interpolate( const double ix, const double iy );
virtual void initialize(std::vector< GeometryNode* >& nodes, std::vector< GeometryEdge* >& edges);
protected:
int nh, nv;
double cellsize;
double ox, oy, width, height;
double *grid;
};
#endif