shape_doc 0.1
|
00001 #ifndef SYNAPS_SHAPE_GAIA_QSEGMENT_H 00002 #define SYNAPS_SHAPE_GAIA_QSEGMENT_H 00003 00004 #include <shape/ssi_lsegment.hpp> 00005 #include <shape/ssi_qnode.hpp> 00006 00007 #define ParametricSurface shape::surface_parametric<double> 00008 00009 namespace mmx { 00010 00011 namespace shape_ssi { 00012 00013 struct lrnode 00014 { 00015 coord_t umin, umax, lmin, rmin, lmax, rmax; 00016 lrnode *rs, *ls; 00017 static lrnode * alloc( unsigned size ); 00018 static lrnode * make( lrnode * data, unsigned size ); 00019 }; 00020 00021 typedef lrnode * lrtree; 00022 00023 struct qsegment : public lsegment 00024 { 00025 std::vector<qtree> trees; 00026 void scale_conflict( vector3 a[4], vector3 b[4], qtree qa, qtree qb ); 00027 void make_box( rid_t id, qnode * q ); 00028 qnode * make( rid_t id, coord_t vmin, coord_t vmax, lrnode * lr ); 00029 inline unsigned size() const { return trees.size(); }; 00030 inline qtree operator[]( unsigned i ) { return trees[i]; }; 00031 double _qt; 00032 qsegment( const ParametricSurface * s, unsigned w, unsigned h ); 00033 ~qsegment(); 00034 00035 00036 }; 00037 00038 }; 00039 } //namespace mmx 00040 00041 # undef ParametricSurface 00042 # endif 00043 00044 00045 00046 00047 00048