GroupScan.h
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:2k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. // GroupScan.h                 RigidScan aggregation
  2. // created 11/26/98            Matt Ginzton (magi@cs)
  3. #ifndef _GROUPSCAN_H_
  4. #define _GROUPSCAN_H_
  5. #include "RigidScan.h"
  6. #include "BailDetector.h"
  7. #include "plvScene.h"
  8. #include "GroupUI.h"
  9. #include "VertexFilter.h"
  10. class DisplayableMesh;
  11. class GroupScan: public RigidScan
  12. {
  13.  public:
  14.   // GroupScan manipulation
  15.   GroupScan();
  16.   GroupScan(const vector<DisplayableMesh*>& members, bool dirty);
  17.   ~GroupScan();
  18.   bool AddScan (DisplayableMesh* scan);
  19.   bool RemoveScan (DisplayableMesh* scan);
  20.  public:
  21.   // RigidScan methods:
  22.   // Display
  23.   virtual MeshTransport* mesh(bool         perVertex = true,
  24.       bool         stripped  = true,
  25.       ColorSource  color = colorNone,
  26.       int          colorSize = 3);
  27.   virtual void computeBBox (void);
  28.   virtual crope getInfo(void);
  29.   ////////////////////////////////////////////////////////////////
  30.   // Aggregation
  31.   ////////////////////////////////////////////////////////////////
  32.   virtual bool get_children (vector<RigidScan*>& children) const;
  33.   ////////////////////////////////////////////////////////////////
  34.   // ICP
  35.   ////////////////////////////////////////////////////////////////
  36.   virtual void subsample_points(float rate, vector<Pnt3> &p,
  37. vector<Pnt3> &n);
  38.   virtual bool
  39.   closest_point(const Pnt3 &p, const Pnt3 &n, 
  40. Pnt3 &cl_pnt, Pnt3 &cl_nrm,
  41. float thr = 1e33, bool bdry_ok = 0);
  42.   // need to support:
  43.   // read, write
  44.   // vertex filters: are a royal pain, because they implicitly have a
  45.   //    transform built in, which would need to be diff. for each child
  46.   // etc.
  47.   bool write_metadata (MetaData data);
  48.   virtual bool is_modified (void);
  49.   virtual bool write(const crope &fname);
  50.   
  51.   bool get_children_for_display (vector<DisplayableMesh*>& children) const;
  52.   virtual RigidScan* filtered_copy (const VertexFilter &filter);
  53.   virtual bool filter_inplace      (const VertexFilter &filter);
  54.   
  55.   virtual bool load_resolution (int iRes);
  56.   virtual bool release_resolution (int nPolys);
  57.   
  58.  protected:
  59.   virtual bool switchToResLevel (int iRes);
  60.  private:
  61.   vector<DisplayableMesh*> children;
  62.   void rebuildResolutions (void);
  63.   bool bDirty;
  64. };
  65. #endif // _GROUPSCAN_H_