WTFIT
ScalarFieldCriticalPoints.h
Go to the documentation of this file.
1 
14 #ifndef _SCALARFIELDCRITICALPOINTS_H
15 #define _SCALARFIELDCRITICALPOINTS_H
16 
17 #include <map>
18 
19 // base code includes
20 #include <UnionFind.h>
21 #include <Wrapper.h>
22 
23 
24 namespace wtfit{
25 
26  template <class dataType> class ScalarFieldCriticalPoints : public Debug{
27 
28  public:
29 
31 
33 
37  int execute();
38 
39  char getCriticalType(const int &vertexId) const{
40 
41  return getCriticalType(vertexId, (*vertexLinkEdgeLists_)[vertexId]);
42  }
43 
44  char getCriticalType(const int &vertexId,
45  const vector<pair<int, int> > &vertexLinkEdgeList) const;
46 
47  static bool isSosHigherThan(const int &offset0, const dataType &value0,
48  const int &offset1, const dataType &value1){
49 
50  return ((value0 > value1)||((value0 == value1)&&(offset0 > offset1)));
51  }
52 
53  static bool isSosLowerThan(const int &offset0, const dataType &value0,
54  const int &offset1, const dataType &value1){
55 
56  return ((value0 < value1)||((value0 == value1)&&(offset0 < offset1)));
57  }
58 
59  int setDomainDimension(const int &dimension){
60 
61  dimension_ = dimension;
62 
63  return 0;
64  }
65 
66  int setOutput(vector<pair<int, char> > *criticalPoints){
67 
68  criticalPoints_ = criticalPoints;
69 
70  return 0;
71  }
72 
73  int setScalarValues(const void *data){
74 
75  scalarValues_ = (const dataType *) data;
76 
77  return 0;
78  }
79 
80  int setSosOffsets(vector<int> *offsets){
81 
82  sosOffsets_ = offsets;
83 
84  return 0;
85  }
86 
88  const vector<vector<pair<int, int> > > *edgeList){
89 
90  vertexLinkEdgeLists_ = edgeList;
91 
92  return 0;
93  }
94 
98  int setVertexNumber(const int &vertexNumber){
99  vertexNumber_ = vertexNumber;
100  return 0;
101  }
102 
103 
104  protected:
105 
107  const dataType *scalarValues_;
108  const vector<vector<pair<int, int> > > *vertexLinkEdgeLists_;
109  vector<pair<int, char> > *criticalPoints_;
110  vector<int> *sosOffsets_;
111  vector<int> localSosOffSets_;
112  };
113 }
114 
115 // if the package is not a template, comment the following line
117 
118 #endif // SCALARFIELDCRITICALPOINTS_H
int setDomainDimension(const int &dimension)
Definition: ScalarFieldCriticalPoints.h:59
static bool isSosLowerThan(const int &offset0, const dataType &value0, const int &offset1, const dataType &value1)
Definition: ScalarFieldCriticalPoints.h:53
int setSosOffsets(vector< int > *offsets)
Definition: ScalarFieldCriticalPoints.h:80
char getCriticalType(const int &vertexId) const
Definition: ScalarFieldCriticalPoints.h:39
static bool isSosHigherThan(const int &offset0, const dataType &value0, const int &offset1, const dataType &value1)
Definition: ScalarFieldCriticalPoints.h:47
int setVertexNumber(const int &vertexNumber)
Definition: ScalarFieldCriticalPoints.h:98
int vertexNumber_
Definition: ScalarFieldCriticalPoints.h:106
~ScalarFieldCriticalPoints()
Definition: ScalarFieldCriticalPoints.cpp:18
vector< pair< int, char > > * criticalPoints_
Definition: ScalarFieldCriticalPoints.h:109
const vector< vector< pair< int, int > > > * vertexLinkEdgeLists_
Definition: ScalarFieldCriticalPoints.h:108
int setOutput(vector< pair< int, char > > *criticalPoints)
Definition: ScalarFieldCriticalPoints.h:66
int setScalarValues(const void *data)
Definition: ScalarFieldCriticalPoints.h:73
ScalarFieldCriticalPoints()
Definition: ScalarFieldCriticalPoints.cpp:4
vector< int > * sosOffsets_
Definition: ScalarFieldCriticalPoints.h:110
int setVertexLinkEdgeLists(const vector< vector< pair< int, int > > > *edgeList)
Definition: ScalarFieldCriticalPoints.h:87
const dataType * scalarValues_
Definition: ScalarFieldCriticalPoints.h:107
int execute()
Definition: ScalarFieldCriticalPoints.cpp:22
int dimension_
Definition: ScalarFieldCriticalPoints.h:106
Minimalist debugging class.
Definition: Debug.h:39
Definition: CommandLineParser.h:13
vector< int > localSosOffSets_
Definition: ScalarFieldCriticalPoints.h:111
ScalarFieldCriticalPoints processing package.
Definition: ScalarFieldCriticalPoints.h:26