46 vtkSetMacro(IntegrationStepUnit,
int);
47 vtkGetMacro(IntegrationStepUnit,
int);
54 vtkSetMacro(MaxNumSteps,
int);
55 vtkGetMacro(MaxNumSteps,
int);
63 vtkSetMacro(IntegrationStepSize,
double);
64 vtkGetMacro(IntegrationStepSize,
double);
72 vtkSetMacro(SeparatrixDistance,
double);
73 vtkGetMacro(SeparatrixDistance,
double);
80 vtkSetMacro(UseIterativeSeeding,
bool);
81 vtkGetMacro(UseIterativeSeeding,
bool);
88 vtkSetMacro(ComputeSurfaces,
bool);
89 vtkGetMacro(ComputeSurfaces,
bool);
96 vtkSetMacro(ExcludeBoundary,
bool);
97 vtkGetMacro(ExcludeBoundary,
bool);
104 vtkSetMacro(UseBoundarySwitchPoints,
bool);
105 vtkGetMacro(UseBoundarySwitchPoints,
bool);
118 vtkSetMacro(VectorAngleThreshold,
double);
119 vtkGetMacro(VectorAngleThreshold,
double);
126 vtkSetMacro(OffsetAwayFromBoundary,
double);
127 vtkGetMacro(OffsetAwayFromBoundary,
double);
134 vtkSetMacro(EpsilonCriticalPoint,
double);
135 vtkGetMacro(EpsilonCriticalPoint,
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(
256 int ComputeSeparatricesBoundarySwitchPoints(
vtkPolyData* boundarySwitchPoints,
258 int integrationStepUnit,
double dist,
int maxNumSteps,
int& numberOfSeparatingLines);
277 int ComputeSeparatricesBoundarySwitchLines(
vtkPolyData* boundarySwitchLines,
279 double dist,
int maxNumSteps,
bool computeSurfaces,
bool useIterativeSeeding);
304 int integrationStepUnit,
double dist,
double stepSize,
int maxNumSteps,
bool computeSurfaces,
305 bool useIterativeSeeding,
int& numberOfSeparatingLines,
int& numberOfSeparatingSurfaces);
324 int ComputeSurface(
int numberOfSeparatingSurfaces,
bool isBackward,
double normal[3],
326 int integrationStepUnit,
double dist,
double stepSize,
int maxNumSteps,
327 bool useIterativeSeeding);
346 enum CriticalTypeDetailed2D
349 ATTRACTING_NODE_2D = 0,
350 ATTRACTING_FOCUS_2D = 1,
352 REPELLING_NODE_2D = 3,
353 REPELLING_FOCUS_2D = 4,
354 CENTER_DETAILED_2D = 5
375 enum CriticalTypeDetailed3D
377 ATTRACTING_NODE_3D = 0,
378 ATTRACTING_FOCUS_3D = 1,
379 NODE_SADDLE_1_3D = 2,
380 FOCUS_SADDLE_1_3D = 3,
381 NODE_SADDLE_2_3D = 4,
382 FOCUS_SADDLE_2_3D = 5,
383 REPELLING_NODE_3D = 6,
384 REPELLING_FOCUS_3D = 7,
385 CENTER_DETAILED_3D = 8
395 static int Classify2D(
int countComplex,
int countPos,
int countNeg);
405 static int ClassifyDetailed2D(
int countComplex,
int countPos,
int countNeg);
415 static int Classify3D(
int countComplex,
int countPos,
int countNeg);
426 static int ClassifyDetailed3D(
int countComplex,
int countPos,
int countNeg);
436 static void CopyBoundarySwitchLinesArray(vtkDataSet*
source, vtkPolyData*
target);
441 int MaxNumSteps = 100;
446 double IntegrationStepSize = 1;
451 double SeparatrixDistance = 1;
456 bool UseIterativeSeeding =
false;
461 bool ComputeSurfaces =
false;
466 const char* NameOfVectorArray;
472 bool ExcludeBoundary =
false;
494 bool UseBoundarySwitchPoints =
false;
510 double VectorAngleThreshold = 1;
519 double OffsetAwayFromBoundary = 1e-3;
524 double EpsilonCriticalPoint = 1e-10;
526 vtkNew<vtkStreamSurface> StreamSurface;