TTK
Loading...
Searching...
No Matches
ttkMergeTreePrincipalGeodesics.h
Go to the documentation of this file.
1
45
46#pragma once
47
48// VTK Module
49#include <ttkMergeTreePrincipalGeodesicsModule.h>
50
51// VTK Includes
52#include <ttkAlgorithm.h>
53#include <vtkMultiBlockDataSet.h>
54#include <vtkUnstructuredGrid.h>
55
56// TTK Base Includes
57#include <FTMTree.h>
60
61class TTKMERGETREEPRINCIPALGEODESICS_EXPORT ttkMergeTreePrincipalGeodesics
62 : public ttkAlgorithm // we inherit from the generic ttkAlgorithm class
63 ,
64 protected ttk::MergeTreePrincipalGeodesics // and we inherit from the base
65 // class
66{
67private:
72 // Input options
73 double oldEpsilonTree1;
74 int DiagramPairTypes = 0;
75 // Output options
76
77 // ----------------------
78 // Data for visualization
79 // ----------------------
80 // Trees
81 std::vector<ttk::ftm::MergeTree<double>> intermediateDTrees;
82 std::vector<vtkUnstructuredGrid *> treesNodes, treesNodes2;
83 std::vector<vtkUnstructuredGrid *> treesArcs, treesArcs2;
84 std::vector<vtkDataSet *> treesSegmentation, treesSegmentation2;
85 // Output
86 // -> base class
87
88 void setDataVisualization(int ttkNotUsed(numInputs),
89 int ttkNotUsed(numInputs2)) {
90 }
91
92 void resetDataVisualization() {
93 setDataVisualization(0, 0);
94 if(not keepState_) {
96 allTs_.clear();
97 }
98 }
99
100 bool isDataVisualizationFilled() {
101 return allTs_.size() != 0 and not keepState_;
102 }
103
104public:
109 // Input Options
112 Modified();
113 resetDataVisualization();
114 }
118
119 void SetNumberOfGeodesics(unsigned int numberOfGeodesics) {
120 numberOfAxes_ = numberOfGeodesics;
121 Modified();
122 resetDataVisualization();
123 }
124 unsigned int GetNumberOfGeodesics() {
125 return numberOfAxes_;
126 }
127
128 void SetNumberOfProjectionIntervals(unsigned int intervals) {
129 k_ = intervals;
130 Modified();
131 resetDataVisualization();
132 }
134 return k_;
135 }
136
137 void SetNumberOfProjectionSteps(unsigned int steps) {
138 noProjectionStep_ = steps;
139 Modified();
140 resetDataVisualization();
141 }
143 return noProjectionStep_;
144 }
145
146 void SetBarycenterSizeLimitPercent(double percent) {
148 Modified();
149 resetDataVisualization();
150 }
154
155 void SetDeterministic(bool deterministic) {
156 deterministic_ = deterministic;
157 Modified();
158 resetDataVisualization();
159 }
161 return deterministic_;
162 }
163
164 void SetJoinSplitMixtureCoefficient(double joinSplitMixtureCoefficient) {
165 mixtureCoefficient_ = joinSplitMixtureCoefficient;
166 Modified();
167 resetDataVisualization();
168 }
172
173 void SetDiagramPairTypes(int diagramPairTypes) {
174 DiagramPairTypes = diagramPairTypes;
175 Modified();
176 resetDataVisualization();
177 }
178 vtkGetMacro(DiagramPairTypes, int);
179
180 void SetKeepState(bool keepState) {
181 keepState_ = keepState;
182 Modified();
183 resetDataVisualization();
184 }
186 return keepState_;
187 }
188
189 void SetEpsilon1UseFarthestSaddle(bool epsilon1UseFarthestSaddle) {
190 epsilon1UseFarthestSaddle_ = epsilon1UseFarthestSaddle;
191 Modified();
192 resetDataVisualization();
193 }
197
198 void SetEpsilonTree1(double epsilonTree1) {
199 epsilonTree1_ = epsilonTree1;
200 oldEpsilonTree1 = epsilonTree1_;
201 Modified();
202 resetDataVisualization();
203 }
205 return epsilonTree1_;
206 }
207
208 void SetEpsilon2Tree1(double epsilon2Tree1) {
209 epsilon2Tree1_ = epsilon2Tree1;
210 Modified();
211 resetDataVisualization();
212 }
214 return epsilon2Tree1_;
215 }
216
217 void SetEpsilon3Tree1(double epsilon3Tree1) {
218 epsilon3Tree1_ = epsilon3Tree1;
219 Modified();
220 resetDataVisualization();
221 }
223 return epsilon3Tree1_;
224 }
225
226 void SetPersistenceThreshold(double persistenceThreshold) {
227 persistenceThreshold_ = persistenceThreshold;
228 Modified();
229 resetDataVisualization();
230 }
233 }
234
235 void SetDeleteMultiPersPairs(bool delMultiPersPairs) {
236 deleteMultiPersPairs_ = delMultiPersPairs;
237 Modified();
238 resetDataVisualization();
239 }
243
244 // Output options
247 Modified();
248 resetDataVisualization();
249 }
253
260
261protected:
267
272 int FillInputPortInformation(int port, vtkInformation *info) override;
273
278 int FillOutputPortInformation(int port, vtkInformation *info) override;
279
284 int RequestData(vtkInformation *request,
285 vtkInformationVector **inputVector,
286 vtkInformationVector *outputVector) override;
287
288 template <class dataType>
289 int run(vtkInformationVector *outputVector,
290 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
291 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
292
293 template <class dataType>
295 vtkInformationVector *outputVector,
296 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
297 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
298
299 template <class dataType>
300 int runOutput(
301 vtkInformationVector *outputVector,
302 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees,
303 std::vector<vtkSmartPointer<vtkMultiBlockDataSet>> &inputTrees2);
304
305 template <class dataType>
307 int blockId,
308 vtkMultiBlockDataSet *output_barycenter);
309};
#define ttkNotUsed(x)
Mark function/method parameters that are not used in the function body at all.
Definition BaseClass.h:47
virtual int RequestData(vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
int FillInputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
int FillOutputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
void makeBarycenterOutput(ttk::ftm::MergeTree< dataType > &barycenter, int blockId, vtkMultiBlockDataSet *output_barycenter)
int runCompute(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
int runOutput(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
void SetJoinSplitMixtureCoefficient(double joinSplitMixtureCoefficient)
void SetDeleteMultiPersPairs(bool delMultiPersPairs)
void SetNumberOfGeodesics(unsigned int numberOfGeodesics)
static ttkMergeTreePrincipalGeodesics * New()
void SetNumberOfProjectionIntervals(unsigned int intervals)
void SetEpsilon1UseFarthestSaddle(bool epsilon1UseFarthestSaddle)
void SetPersistenceThreshold(double persistenceThreshold)
int run(vtkInformationVector *outputVector, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees, std::vector< vtkSmartPointer< vtkMultiBlockDataSet > > &inputTrees2)
std::vector< std::vector< double > > allTs_