VTK  9.5.20251215
vtkImprintFilter.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
83
84#ifndef vtkImprintFilter_h
85#define vtkImprintFilter_h
86
87#include "vtkFiltersModelingModule.h" // For export macro
89
90VTK_ABI_NAMESPACE_BEGIN
92
93class VTKFILTERSMODELING_EXPORT vtkImprintFilter : public vtkPolyDataAlgorithm
94{
95public:
97
102 void PrintSelf(ostream& os, vtkIndent indent) override;
104
111
113
121
129
131
138
140
145 vtkSetClampMacro(Tolerance, double, 0.0, VTK_FLOAT_MAX);
146 vtkGetMacro(Tolerance, double);
148
149 // Used to control how the merge tolerance value is interpreted.
150 // ABSOLUTE_TOLERANCE is a tolerance expressed in world coordinates;
151 // RELATIVE_TO_TOLERANCE is a tolerance relative to the projection
152 // tolerance (i.e., MergeTolerance is a scale factor on Tolerance);
153 // RELATIVE_TO_MIN_EDGE_LENGTH is a tolerance relative to the minimum edge
154 // length of the tool/imprint mesh; and RELATIVE_TO_AVERAGE_EDGE_LENGTH is
155 // a tolerance based on the average edge length of all imprint mesh edges.
163
165
171 vtkGetMacro(MergeToleranceType, int);
185 vtkSetClampMacro(MergeTolerance, double, 0.0, VTK_FLOAT_MAX);
186 vtkGetMacro(MergeTolerance, double);
188
189 // Used to control the relationship between the merge tolerance
190 // (MergeTolerance) and projection tolerance (Tolerance) as these need to
191 // be treated consistently to minimize numerical issues. The projection
192 // tolerance addresses projection of the imprint onto the target, while
193 // the merge tolerance is about computing accurate in-plane edge-edge
194 // intersections.
200
202
210 vtkGetMacro(ToleranceStrategy, int);
214
223
225
238 vtkSetClampMacro(OutputType, int, TARGET_CELLS, MERGED_IMPRINT);
239 vtkGetMacro(OutputType, int);
246
248
255 vtkSetMacro(BoundaryEdgeInsertion, bool);
256 vtkGetMacro(BoundaryEdgeInsertion, bool);
257 vtkBooleanMacro(BoundaryEdgeInsertion, bool);
259
261
265 vtkSetMacro(PassCellData, bool);
266 vtkGetMacro(PassCellData, bool);
267 vtkBooleanMacro(PassCellData, bool);
269
271
279 vtkSetMacro(PassPointData, bool);
280 vtkGetMacro(PassPointData, bool);
281 vtkBooleanMacro(PassPointData, bool);
283
289
291
297 vtkGetMacro(PointInterpolation, int);
301
308
310
317 vtkSetMacro(TriangulateOutput, bool);
318 vtkGetMacro(TriangulateOutput, bool);
319 vtkBooleanMacro(TriangulateOutput, bool);
321
323
332 vtkGetMacro(DebugOutputType, int);
336 vtkSetMacro(DebugCellId, vtkIdType);
337 vtkGetMacro(DebugCellId, vtkIdType);
339
341
347
348protected:
351
352 double Tolerance;
357
361
365
368
371
372private:
373 vtkImprintFilter(const vtkImprintFilter&) = delete;
374 void operator=(const vtkImprintFilter&) = delete;
375};
376
377VTK_ABI_NAMESPACE_END
378#endif
Proxy object to connect input/output ports.
general representation of visualization data
virtual void SetOutputType(int)
Control what is output by the filter.
void SetImprintData(vtkDataObject *imprint)
Specify the a second vtkPolyData input which defines the surface mesh with which to imprint the targe...
~vtkImprintFilter() override
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
virtual void SetMergeToleranceType(int)
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetPointInterpolationToImprintEdges()
If PassPointData is on, indicate how new point data is to generated at the intersection points betwee...
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called by the superclass.
virtual void SetDebugOutputType(int)
The following methods support debugging.
vtkDataObject * GetImprint()
Specify the a second vtkPolyData input which defines the surface mesh with which to imprint the targe...
void SetOutputTypeToTargetCells()
Control what is output by the filter.
void SetMergeToleranceTypeToMinEdge()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetOutputTypeToProjectedImprint()
Control what is output by the filter.
void SetMergeToleranceTypeToAbsolute()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetDebugOutputTypeToNoDebugOutput()
The following methods support debugging.
void SetImprintConnection(vtkAlgorithmOutput *algOutput)
Specify the a second vtkPolyData input connection which defines the surface mesh with which to imprin...
void SetToleranceStrategyToLinked()
Specify the relationship between the merge tolerance and the projection tolerance.
void SetDebugOutputTypeToTriangulationOutput()
The following methods support debugging.
void SetDebugOutputTypeToTriangulationInput()
The following methods support debugging.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods to instantiate, print and provide type information.
void SetToleranceStrategyToDecoupled()
Specify the relationship between the merge tolerance and the projection tolerance.
vtkPolyData * GetDebugOutput()
Get the output data (in the second output, if the DebugOutput != NO_DEBUG_OUTPUT).
void SetMergeToleranceTypeToRelativeToProjection()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
virtual void SetToleranceStrategy(int)
Specify the relationship between the merge tolerance and the projection tolerance.
void SetOutputTypeToImprintedCells()
Control what is output by the filter.
void SetPointInterpolationToTargetEdges()
If PassPointData is on, indicate how new point data is to generated at the intersection points betwee...
vtkDataObject * GetTarget()
Specify the first vtkPolyData input which defines the surface mesh to imprint (i.e....
void SetMergeToleranceTypeToAverageEdge()
Specify a tolerance which is used to determine whether two points are considered coincident to one an...
void SetTargetData(vtkDataObject *target)
Specify the first vtkPolyData input which defines the surface mesh to imprint (i.e....
static vtkImprintFilter * New()
Standard methods to instantiate, print and provide type information.
vtkAlgorithmOutput * GetImprintConnection()
vtkAlgorithmOutput * GetTargetConnection()
void SetOutputTypeToMergedImprint()
Control what is output by the filter.
void SetOutputTypeToImprintedRegion()
Control what is output by the filter.
double ComputeMergeTolerance(vtkPolyData *pdata)
virtual void SetPointInterpolation(int)
If PassPointData is on, indicate how new point data is to generated at the intersection points betwee...
void SetTargetConnection(vtkAlgorithmOutput *algOutput)
Specify the first vtkPolyData input connection which defines the surface mesh to imprint (i....
a simple class to control print indentation
Definition vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
concrete dataset represents vertices, lines, polygons, and triangle strips
perform fast cell location operations
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
int vtkIdType
Definition vtkType.h:368
#define VTK_FLOAT_MAX
Definition vtkType.h:205