Go to the documentation of this file.00001 #ifndef bsol_point_index_2d_h_
00002 #define bsol_point_index_2d_h_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <vcl_vector.h>
00019 #include <vsol/vsol_box_2d_sptr.h>
00020 #include <vsol/vsol_point_2d_sptr.h>
00021
00022 class bsol_point_index_2d
00023 {
00024 bsol_point_index_2d() {}
00025 public:
00026 bsol_point_index_2d(int nrows, int ncols, vsol_box_2d_sptr const& bb);
00027 bsol_point_index_2d(int nrows, int ncols,
00028 vcl_vector<vsol_point_2d_sptr> const& points);
00029 ~bsol_point_index_2d();
00030
00031 int ncols() const { return ncols_; }
00032 int nrows() const { return nrows_; }
00033 double row_spacing() const { return row_spacing_; }
00034 double col_spacing() const { return col_spacing_; }
00035
00036
00037 void origin(double& x0, double& y0);
00038
00039
00040 int n_points(const int row, const int col);
00041
00042 int n_points(const double x, const double y);
00043
00044 int n_points();
00045
00046
00047 vcl_vector<vsol_point_2d_sptr> points(const int row, const int col);
00048
00049
00050 vcl_vector<vsol_point_2d_sptr> points();
00051
00052
00053 vsol_box_2d_sptr index_cell(const int row, const int col);
00054
00055
00056 vsol_box_2d_sptr index_cell(const double x, const double y);
00057
00058
00059 vsol_box_2d_sptr point_bounds();
00060
00061
00062 bool add_point(vsol_point_2d_sptr const& p);
00063 bool add_points(vcl_vector<vsol_point_2d_sptr> const& points);
00064
00065
00066 bool mark_point(vsol_point_2d_sptr& p);
00067
00068 bool unmark_point(vsol_point_2d_sptr& p);
00069
00070 bool marked(vsol_point_2d_sptr const& p);
00071
00072
00073
00074
00075 bool find_point(vsol_point_2d_sptr const& p);
00076
00077
00078 bool in_radius(const double radius, vsol_point_2d_sptr const& p,
00079 vcl_vector<vsol_point_2d_sptr>& points);
00080
00081
00082 bool closest_in_radius(const double radius, vsol_point_2d_sptr const& p,
00083 vsol_point_2d_sptr& point);
00084
00085
00086 void clear();
00087
00088
00089 void clear_marks();
00090
00091 private:
00092 bool trans(const double x, const double y,
00093 int& row, int& col);
00094
00095 int nrows_;
00096 int ncols_;
00097 double row_spacing_;
00098 double col_spacing_;
00099
00100 vsol_box_2d_sptr b_box_;
00101
00102
00103 vcl_vector<vcl_vector<vcl_vector<vsol_point_2d_sptr> > > point_array_;
00104 };
00105
00106 #endif