00001 // Copyright (C) 2008 University of Louisiana at Lafayette 00002 // Authors: Suresh Golconda, Christopher 00003 00006 00007 #ifndef CAJUN_STRIPE_H 00008 #define CAJUN_STRIPE_H 00009 00010 #include <vector> 00011 00012 //todo: can move it to max height of interest 00013 #define MAX_CELLS 100 00014 00015 #include "cell.H" 00016 00017 namespace cajun 00018 { 00019 class stripe_t 00020 { 00021 public: 00022 //FIXME: cell height 00023 stripe_t (float cell_len, double ground_z, 00024 double heading) 00025 { 00026 m_cell_len = cell_len; 00027 m_ground_z = ground_z; 00028 m_heading = heading; 00029 m_last_counter = 0; 00030 for (unsigned i = 0; i < MAX_CELLS; ++i) 00031 { 00032 m_cells[i].set_heading (heading); 00033 m_cells[i].set_cell_size (m_cell_len); 00034 } 00035 } 00036 ~stripe_t () { } 00037 00038 00039 void sort (); 00040 00041 size_t num_cells () const; 00042 size_t num_points () const; 00043 void print_stripe () const; 00044 unsigned get_counter () const; 00045 00046 double get_ground_z () const; 00047 00048 void flush (); 00049 00050 void fill_strip (const point_3d_t &pt, 00051 const point_3d_t &start_pt, 00052 unsigned counter); 00053 00054 const cell_t& get_cell (unsigned id_) const; 00055 cell_t& get_cell (unsigned id_); 00056 private: 00057 cell_t m_cells[MAX_CELLS]; 00058 double m_cell_len; 00059 double m_ground_z; // min z to expect 00060 unsigned m_last_counter; // counter when last updated 00061 double m_heading; 00062 }; 00063 }; 00064 00065 #endif