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.