1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
* @class vtkApproximatingSubdivisionFilter
* @brief generate a subdivision surface using an Approximating Scheme
*
* vtkApproximatingSubdivisionFilter is an abstract class that defines
* the protocol for Approximating subdivision surface filters.
*
* @par Thanks:
* This work was supported by PHS Research Grant No. 1 P41 RR13218-01
* from the National Center for Research Resources.
*/
#ifndef vtkApproximatingSubdivisionFilter_h
#define vtkApproximatingSubdivisionFilter_h
#include "vtkFiltersGeneralModule.h" // For export macro
#include "vtkSubdivisionFilter.h"
VTK_ABI_NAMESPACE_BEGIN
class vtkCellArray;
class vtkCellData;
class vtkIdList;
class vtkIntArray;
class vtkPoints;
class vtkPointData;
class VTKFILTERSGENERAL_EXPORT vtkApproximatingSubdivisionFilter : public vtkSubdivisionFilter
{
public:
vtkTypeMacro(vtkApproximatingSubdivisionFilter, vtkSubdivisionFilter);
void PrintSelf(ostream& os, vtkIndent indent) override;
protected:
vtkApproximatingSubdivisionFilter();
~vtkApproximatingSubdivisionFilter() override = default;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
virtual int GenerateSubdivisionPoints(
vtkPolyData* inputDS, vtkIntArray* edgeData, vtkPoints* outputPts, vtkPointData* outputPD) = 0;
void GenerateSubdivisionCells(
vtkPolyData* inputDS, vtkIntArray* edgeData, vtkCellArray* outputPolys, vtkCellData* outputCD);
int FindEdge(vtkPolyData* mesh, vtkIdType cellId, vtkIdType p1, vtkIdType p2,
vtkIntArray* edgeData, vtkIdList* cellIds);
vtkIdType InterpolatePosition(
vtkPoints* inputPts, vtkPoints* outputPts, vtkIdList* stencil, double* weights);
private:
vtkApproximatingSubdivisionFilter(const vtkApproximatingSubdivisionFilter&) = delete;
void operator=(const vtkApproximatingSubdivisionFilter&) = delete;
};
VTK_ABI_NAMESPACE_END
#endif
|