37 #ifndef __vtkvmtkNonManifoldFastMarching_h 38 #define __vtkvmtkNonManifoldFastMarching_h 40 #include "vtkPolyDataAlgorithm.h" 41 #include "vtkIdList.h" 42 #include "vtkIntArray.h" 43 #include "vtkPolyData.h" 47 #include "vtkvmtkWin32Header.h" 60 void PrintSelf(ostream& os, vtkIndent indent) VTK_OVERRIDE;
66 vtkSetMacro(StopTravelTime,
double);
67 vtkGetMacro(StopTravelTime,
double);
73 vtkSetMacro(StopNumberOfPoints,
int);
74 vtkGetMacro(StopNumberOfPoints,
int);
79 vtkSetMacro(Regularization,
double);
80 vtkGetMacro(Regularization,
double);
85 vtkSetMacro(SeedsBoundaryConditions,
int);
86 vtkGetMacro(SeedsBoundaryConditions,
int);
87 vtkBooleanMacro(SeedsBoundaryConditions,
int);
92 vtkSetMacro(PolyDataBoundaryConditions,
int);
93 vtkGetMacro(PolyDataBoundaryConditions,
int);
94 vtkBooleanMacro(PolyDataBoundaryConditions,
int);
99 vtkSetObjectMacro(Seeds,vtkIdList);
100 vtkGetObjectMacro(Seeds,vtkIdList);
105 vtkSetObjectMacro(BoundaryPolyData,vtkPolyData);
106 vtkGetObjectMacro(BoundaryPolyData,vtkPolyData);
113 vtkSetStringMacro(IntersectedEdgesArrayName);
114 vtkGetStringMacro(IntersectedEdgesArrayName);
121 vtkSetMacro(InitializeFromScalars,
int);
122 vtkGetMacro(InitializeFromScalars,
int);
123 vtkBooleanMacro(InitializeFromScalars,
int);
128 vtkSetStringMacro(InitializationArrayName);
129 vtkGetStringMacro(InitializationArrayName);
136 vtkSetMacro(UnitSpeed,
int);
137 vtkGetMacro(UnitSpeed,
int);
138 vtkBooleanMacro(UnitSpeed,
int);
143 vtkSetStringMacro(CostFunctionArrayName);
144 vtkGetStringMacro(CostFunctionArrayName);
149 vtkSetStringMacro(SolutionArrayName);
150 vtkGetStringMacro(SolutionArrayName);
157 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) VTK_OVERRIDE;
159 void InitPropagation(vtkPolyData* input);
161 void SolveQuadratic(
double a,
double b,
double c,
char &nSol,
double &x0,
double &x1);
163 void GetNeighbors(vtkPolyData* input, vtkIdType pointId, vtkIdList* neighborIds);
164 double ComputeUpdateFromCellNeighbor(vtkPolyData* input, vtkIdType neighborId, vtkIdType* trianglePts);
165 void UpdateNeighbor(vtkPolyData* input, vtkIdType neighborId);
166 void UpdateNeighborhood(vtkPolyData* input, vtkIdType pointId);
167 void Propagate(vtkPolyData* input);
169 static double Max(
double a,
double b)
172 static double Min(
double a,
double b)
vtkCharArray * StatusScalars
vtkvmtkMinHeap * ConsideredMinHeap
const char VTK_VMTK_FAR_STATUS
vtkIdType StopNumberOfPoints
vtkIdType NumberOfAcceptedPoints
Implementation of the Fast Marching Method on polygonal non-manifolds.
vtkDoubleArray * TScalars
char * IntersectedEdgesArrayName
#define VTK_VMTK_DOUBLE_TOL
const char VTK_VMTK_ACCEPTED_STATUS
const char VTK_VMTK_CONSIDERED_STATUS
int SeedsBoundaryConditions
char * InitializationArrayName
int PolyDataBoundaryConditions
vtkPolyData * BoundaryPolyData
static double Min(double a, double b)
int InitializeFromScalars
static double Max(double a, double b)
char * CostFunctionArrayName
Implementation of the min heap data structure.