27 #ifndef vtkVectorFieldTopology_h
28 #define vtkVectorFieldTopology_h
30 #include "vtkFiltersFlowPathsModule.h"
54 vtkSetMacro(IntegrationStepUnit,
int);
55 vtkGetMacro(IntegrationStepUnit,
int);
62 vtkSetMacro(MaxNumSteps,
int);
63 vtkGetMacro(MaxNumSteps,
int);
71 vtkSetMacro(IntegrationStepSize,
double);
72 vtkGetMacro(IntegrationStepSize,
double);
80 vtkSetMacro(SeparatrixDistance,
double);
81 vtkGetMacro(SeparatrixDistance,
double);
88 vtkSetMacro(UseIterativeSeeding,
bool);
89 vtkGetMacro(UseIterativeSeeding,
bool);
96 vtkSetMacro(ComputeSurfaces,
bool);
97 vtkGetMacro(ComputeSurfaces,
bool);
104 vtkSetMacro(ExcludeBoundary,
bool);
105 vtkGetMacro(ExcludeBoundary,
bool);
112 vtkSetMacro(UseBoundarySwitchPoints,
bool);
113 vtkGetMacro(UseBoundarySwitchPoints,
bool);
126 vtkSetMacro(VectorAngleThreshold,
double);
127 vtkGetMacro(VectorAngleThreshold,
double);
134 vtkSetMacro(OffsetAwayFromBoundary,
double);
135 vtkGetMacro(OffsetAwayFromBoundary,
double);
205 int ComputeCriticalPoints2D(
215 int ComputeCriticalPoints3D(
228 static void InterpolateVector(
229 double x0,
double x1,
double x,
const double v0[3],
const double v1[3],
double v[3]);
237 int ComputeBoundarySwitchPoints(
255 int ComputeSeparatricesBoundarySwitchPoints(
vtkPolyData* boundarySwitchPoints,
257 int integrationStepUnit,
double dist,
int maxNumSteps);
276 int ComputeSeparatricesBoundarySwitchLines(
vtkPolyData* boundarySwitchLines,
278 int maxNumSteps,
bool computeSurfaces,
bool useIterativeSeeding);
300 double dist,
double stepSize,
int maxNumSteps,
bool computeSurfaces,
bool useIterativeSeeding);
318 int ComputeSurface(
int numberOfSeparatingSurfaces,
bool isBackward,
double normal[3],
320 double dist,
double stepSize,
int maxNumSteps,
bool useIterativeSeeding);
339 enum CriticalTypeDetailed2D
342 ATTRACTING_NODE_2D = 0,
343 ATTRACTING_FOCUS_2D = 1,
345 REPELLING_NODE_2D = 3,
346 REPELLING_FOCUS_2D = 4,
347 CENTER_DETAILED_2D = 5
368 enum CriticalTypeDetailed3D
370 ATTRACTING_NODE_3D = 0,
371 ATTRACTING_FOCUS_3D = 1,
372 NODE_SADDLE_1_3D = 2,
373 FOCUS_SADDLE_1_3D = 3,
374 NODE_SADDLE_2_3D = 4,
375 FOCUS_SADDLE_2_3D = 5,
376 REPELLING_NODE_3D = 6,
377 REPELLING_FOCUS_3D = 7,
378 CENTER_DETAILED_3D = 8
388 static int Classify2D(
int countComplex,
int countPos,
int countNeg);
398 static int ClassifyDetailed2D(
int countComplex,
int countPos,
int countNeg);
408 static int Classify3D(
int countComplex,
int countPos,
int countNeg);
419 static int ClassifyDetailed3D(
int countComplex,
int countPos,
int countNeg);
424 int MaxNumSteps = 100;
429 double IntegrationStepSize = 1;
434 double SeparatrixDistance = 1;
439 bool UseIterativeSeeding =
false;
444 bool ComputeSurfaces =
false;
449 const char* NameOfVectorArray;
455 bool ExcludeBoundary =
false;
477 bool UseBoundarySwitchPoints =
false;
493 double VectorAngleThreshold = 1;
502 double OffsetAwayFromBoundary = 1e-3;