00001
00008 #ifndef BOUNDARYMESH_H
00009 #define BOUNDARYMESH_H
00010
00011 #include <iostream>
00012
00013 #include "boundarycomplex.h"
00014 #include "cell.h"
00015 #include "cellcomplex.h"
00016 #include "util.h"
00017
00018 class BezierMesh;
00019 class DataStore;
00020
00024 class BoundaryMesh : public BoundaryComplex {
00025 private:
00026
00027
00028 BoundaryMesh(const BoundaryMesh &o);
00029 const BoundaryMesh& operator=( const BoundaryMesh &o);
00030
00031 private:
00032
00033 BezierMesh *beziermesh;
00034 DataStore *datastore;
00035 public:
00036
00037 BoundaryMesh(PersistantStore&, DataStore *);
00038 void set_bezier_mesh(BezierMesh*);
00039
00040 BoundaryVertex* add_boundary_vertex( const Point2D& p );
00041 BoundaryEdge* add_boundary_edge( BoundaryVertex *v0, BoundaryVertex *v1, const std::vector<Point2D> &newd, const std::vector<double> &newk, Movement fixed , int color, double restlength);
00042 BoundaryEdge* add_boundary_edge( BoundaryVertex *v0, BoundaryVertex *v1, const std::vector<Point2D> &newd, const std::vector<double> &newk );
00043 BoundaryFace* add_boundary_face( const std::vector<BoundaryEdge*> &edges, double minangle, int color );
00044
00045 void delete_vertex(BoundaryVertex *v);
00046 void delete_edge(BoundaryEdge *e);
00047
00048 void bbox( Point2D &top, Point2D &bot );
00049
00050 typedef Vertex_Hash_T Boundary_Vertex_Hash_T;
00051 typedef Edge_Hash_T Boundary_Edge_Hash_T;
00052 typedef Face_Hash_T Boundary_Face_Hash_T;
00053
00054 protected:
00055 friend std::ostream& operator<<( std::ostream &stream, const BoundaryMesh &bm);
00056 };
00057
00058
00059 #endif