20 #ifndef MIRTK_MeshlessVolumeMapper_H 21 #define MIRTK_MeshlessVolumeMapper_H 23 #include "mirtk/VolumeMapper.h" 25 #include "mirtk/Array.h" 26 #include "mirtk/PointSet.h" 27 #include "mirtk/MeshlessMap.h" 29 #include "vtkAbstractCellLocator.h" 68 mirtkPublicAttributeMacro(
double, BoundaryPointsRatio);
71 mirtkPublicAttributeMacro(
double, SourcePointsRatio);
74 mirtkPublicAttributeMacro(
int, MaximumNumberOfSourcePoints);
77 mirtkPublicAttributeMacro(
int, NumberOfIterations);
80 mirtkPublicAttributeMacro(
int, ImplicitSurfaceSize);
83 mirtkPublicAttributeMacro(
double, ImplicitSurfaceSpacing);
90 mirtkPublicAttributeMacro(
double, DistanceOffset);
93 mirtkPublicAttributeMacro(
double, MaximumConditionNumber);
96 mirtkReadOnlyAttributeMacro(vtkSmartPointer<vtkPolyData>, OffsetSurface);
99 mirtkAttributeMacro(vtkSmartPointer<vtkAbstractCellLocator>, OffsetPointLocator);
102 mirtkAttributeMacro(Array<Array<int> >, SourcePartition);
105 mirtkAttributeMacro(vtkSmartPointer<vtkDataArray>, ResidualMap);
188 virtual void Solve();
223 return static_cast<int>(_Boundary->GetNumberOfPoints());
233 return static_cast<int>(_OffsetSurface->GetNumberOfPoints());
239 return static_cast<int>(_SourcePartition.size());
245 return static_cast<int>(_SourcePartition[k].size());
251 return _SourcePartition[k][i];
257 #endif // MIRTK_MeshlessVolumeMapper_H
virtual void PlaceSourcePoints()
Compute and sample offset surface for placement of source points.
virtual double UpdateResidualMap(double *=nullptr, double *=nullptr, double *=nullptr)
virtual void PlaceBoundaryPoints()
Sample boundary points from input surface.
int NumberOfSourcePoints() const
Get number of source points.
virtual void GetCoefficients(int k, Matrix &coeff) const =0
virtual void AddWeights(int k, const Matrix &w)=0
virtual void UpdateBoundary(vtkPolyData *)
Update boundary surface with corresponding boundary map as point data.
MeshlessVolumeMapper & operator=(const MeshlessVolumeMapper &)
Assignment operator.
int NumberOfBoundaryPoints() const
Get total number of boundary / constraints points.
virtual void Initialize()
Initialize filter after input and parameters are set.
void GetClosestPointOnOffsetSurface(double x[3], double p[3])
void CopyAttributes(const MeshlessVolumeMapper &)
Copy attributes of this class from another instance.
int SourcePointIndex(int k, int i) const
Get index of i-th point of k-th source points subset.
int NumberOfSourcePoints() const
Get total number of source / singularity points.
virtual bool AddSourcePoint(double q[3])
MeshlessVolumeMapper()
Default constructor.
virtual void Solve()
Compute meshless map coefficients.
virtual ~MeshlessVolumeMapper()
Destructor.
virtual void InitializeResidualMap()
Initialize residual boundary map.
int NumberOfSourcePointSets() const
Get number of source points subsets.
virtual void GetConstraints(int k, Matrix &b) const =0
virtual void PartitionSourcePoints()
Evenly partition source points into smaller subsets.