20 #ifndef MIRTK_DeformableSurfaceModel_H 21 #define MIRTK_DeformableSurfaceModel_H 23 #include "mirtk/ObjectiveFunction.h" 25 #include "mirtk/Array.h" 27 #include "mirtk/RegisteredImage.h" 28 #include "mirtk/RegisteredPointSet.h" 30 #include "mirtk/EnergyTerm.h" 31 #include "mirtk/ExternalForce.h" 32 #include "mirtk/InternalForce.h" 33 #include "mirtk/TransformationConstraint.h" 34 #include "mirtk/MeshSmoothing.h" 36 #include "vtkSmartPointer.h" 37 #include "vtkPointSet.h" 38 #include "vtkPolyData.h" 39 #include "vtkAbstractCellLocator.h" 56 mirtkPublicAttributeMacro(vtkSmartPointer<vtkPointSet>, Input);
71 mirtkReadOnlyAttributeMacro(
int, NumberOfTerms);
74 mirtkPublicAttributeMacro(
int, NeighborhoodRadius);
77 mirtkPublicAttributeMacro(
int, GradientAveraging);
84 mirtkPublicAttributeMacro(
bool, AverageSignedGradients);
87 mirtkPublicAttributeMacro(
bool, AverageGradientMagnitude);
96 mirtkPublicAttributeMacro(
double, MinFeatureAngle);
99 mirtkPublicAttributeMacro(
double, MaxFeatureAngle);
102 mirtkPublicAttributeMacro(
bool, AllowTriangleInversion);
105 mirtkPublicAttributeMacro(
int, RemeshInterval);
108 mirtkAttributeMacro(
int, RemeshCounter);
111 mirtkPublicAttributeMacro(
bool, RemeshAdaptively);
114 mirtkPublicAttributeMacro(
int, LowPassInterval);
117 mirtkPublicAttributeMacro(
int, LowPassIterations);
120 mirtkPublicAttributeMacro(
double, LowPassBand);
123 mirtkPublicAttributeMacro(
double, MaxInputDistance);
124 vtkSmartPointer<vtkAbstractCellLocator> _InputCellLocator;
127 mirtkPublicAttributeMacro(
bool, HardNonSelfIntersection);
134 mirtkPublicAttributeMacro(
double, MinFrontfaceDistance);
141 mirtkPublicAttributeMacro(
double, MinBackfaceDistance);
145 mirtkPublicAttributeMacro(
double, MaxCollisionAngle);
148 mirtkPublicAttributeMacro(
bool, FastCollisionTest);
151 mirtkPublicAttributeMacro(
bool, FixPassivePoints);
154 mirtkPublicAttributeMacro(
bool, AllowExpansion);
157 mirtkPublicAttributeMacro(
bool, AllowContraction);
163 mirtkPublicAttributeMacro(
bool, MinimizeExtrinsicEnergy);
172 Array<bool> _ExternalForceOwner;
176 Array<bool> _InternalForceOwner;
180 Array<bool> _ConstraintOwner;
188 vtkSmartPointer<vtkPointSet>
Output()
const;
292 virtual bool Set(
const char *,
const char *);
312 virtual void Put(
const double *x);
322 virtual void Get(
double *x)
const;
327 virtual double Get(
int)
const;
341 virtual double Step(
double *dx);
344 virtual void Update(
bool =
true);
386 void Gradient(
double *dx,
double step = .0,
bool *sgn_chg = NULL);
400 void GradientStep(
const double *dx,
double &min,
double &max)
const;
414 virtual double Evaluate(
double *dx = NULL,
double step = .0,
bool *sgn_chg = NULL);
451 virtual void WriteDataSets(
const char *,
const char *,
bool =
true)
const;
454 virtual void WriteGradient(
const char *,
const char *)
const;
465 return _PointSet.PointSet();
471 return _PointSet.NumberOfPoints();
477 #endif // MIRTK_DeformableSurfaceModel_H double MinEdgeLength(vtkSmartPointer< vtkPoints > points, const EdgeTable &edgeTable)
Array< Pair< string, string > > ParameterList
Ordered list of parameter name/value pairs.
double MaxEdgeLength(vtkSmartPointer< vtkPoints > points, const EdgeTable &edgeTable)
WeightFunction
Enumeration of smoothing kernel functions.
virtual ParameterList Parameter() const
Get parameter name/value pairs.
bool IsSurfaceMesh(vtkDataSet *)
Determine whether a point set is a surface mesh.