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