00001
00002
00003 #ifndef BinaryTessellation_h
00004 #define BinaryTessellation_h
00005
00006 #include <string>
00007
00008 #include "Serializable.h"
00009
00010
00011 #include "Tessellation.h"
00012
00013 namespace BIE {
00014
00015
00019 class BinaryTessellation : public Tessellation {
00020
00021 public:
00022
00031 BinaryTessellation(Tile * factory, double minx, double maxx,
00032 double miny, double maxy, int depth);
00033
00035 ~BinaryTessellation() {};
00036
00038 vector<int> GetRootTiles();
00039
00041 vector<Node*> GetRootNodes();
00042
00043 private:
00045 int maxdepth;
00046
00048 int Ndata, Ndim_data;
00049
00051 Node * treeroot;
00052
00054 Tile * tilefactory;
00055
00057 void tessellate(Node**, int, int, int, double, double, double, double);
00058
00059
00060 protected:
00061 BinaryTessellation() {}
00062 private:
00063 friend class boost::serialization::access;
00064 template<class Archive>
00065 void serialize(Archive & ar, const unsigned int version) {
00066 this->pre_serialize(ar, version);
00067 try {
00068 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Tessellation);
00069 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00070 }
00071 try {
00072 ar & BOOST_SERIALIZATION_NVP(maxdepth);
00073 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00074 }
00075 try {
00076 ar & BOOST_SERIALIZATION_NVP(Ndata);
00077 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00078 }
00079 try {
00080 ar & BOOST_SERIALIZATION_NVP(Ndim_data);
00081 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00082 }
00083 try {
00084 ar & BOOST_SERIALIZATION_NVP(treeroot);
00085 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00086 }
00087 try {
00088 ar & BOOST_SERIALIZATION_NVP(tilefactory);
00089 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00090 }
00091 this->post_serialize(ar, version);
00092 }
00093
00094 };
00095
00096 }
00097 BIE_CLASS_TYPE_INFO(BIE::BinaryTessellation)
00098 BIE_CLASS_EXPORT_KEY(BIE::BinaryTessellation)
00099 #endif