pfe/src/fitting/project_surface_points_on_p...

44 lines
1.4 KiB
C++

#ifndef PROJECT_SURFACE_POINTS_ON_POLY_H
#define PROJECT_SURFACE_POINTS_ON_POLY_H
#include <vtkUnstructuredGridAlgorithm.h>
#include <vtkIdList.h>
#include <vector>
#include <vtkPolyData.h>
#include <vtkKdTree.h>
#include <vtkStaticCellLinks.h>
class ProjectSurfacePointsOnPoly : public vtkUnstructuredGridAlgorithm {
public:
static ProjectSurfacePointsOnPoly *New();
vtkTypeMacro(ProjectSurfacePointsOnPoly, vtkUnstructuredGridAlgorithm);
ProjectSurfacePointsOnPoly();
int FillInputPortInformation(int, vtkInformation *info) override;
vtkTypeBool RequestData(vtkInformation *request,
vtkInformationVector **inputVector,
vtkInformationVector *outputVector) override;
vtkSetMacro(affectedNeighborsCount, int);
vtkGetMacro(affectedNeighborsCount, int);
vtkSetMacro(RadiusScale, double);
protected:
int affectedNeighborsCount = 0;
double RadiusScale;
vtkIntArray *isSurface = nullptr;
~ProjectSurfacePointsOnPoly() override = default;
void moveSurfacePoint(vtkUnstructuredGrid *tetMesh,
vtkPolyData *polyMesh,
vtkIdType pointId,
std::vector<double> &motionVectors,
std::vector<unsigned> &numberOfAffectors,
vtkKdTree *polyMeshKdTree,
vtkKdTree *tetMeshKdTree,
vtkStaticCellLinks *links);
};
#endif