VTK  9.5.20250902
vtkEdgeSubdivisionCriterion.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright 2003 Sandia Corporation
3// SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov
4#ifndef vtkEdgeSubdivisionCriterion_h
5#define vtkEdgeSubdivisionCriterion_h
28#include "vtkFiltersCoreModule.h" // For export macro
29#include "vtkObject.h"
30#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
31
32VTK_ABI_NAMESPACE_BEGIN
34class vtkMatrix4x4;
36
37class VTKFILTERSCORE_EXPORT VTK_MARSHALAUTO vtkEdgeSubdivisionCriterion : public vtkObject
38{
39public:
41 void PrintSelf(ostream& os, vtkIndent indent) override;
42
48 virtual bool EvaluateLocationAndFields(double* p1, int field_start) = 0;
49
58 virtual int PassField(int sourceId, int sourceSize, vtkStreamingTessellator* t);
59
65 virtual void ResetFieldList();
66
72 virtual bool DontPassField(int sourceId, vtkStreamingTessellator* t);
73
79 const int* GetFieldIds() const;
80
86 const int* GetFieldOffsets() const;
87
92 int GetOutputField(int fieldId) const;
93
99 int GetNumberOfFields() const;
100
101protected:
104
108
134 bool ViewDependentEval(const double* p0, double* p1, double* p1_actual, const double* p2,
135 int field_start, vtkMatrix4x4* viewtrans, const double* pixelSize,
136 double allowableChordErr) const;
137
169 bool FixedFieldErrorEval(double* p1, double* p1_actual, int field_start, int field_criteria,
170 double* allowableFieldErr) const;
171
172private:
174 void operator=(const vtkEdgeSubdivisionCriterion&) = delete;
175};
176
178{
179 return this->FieldIds;
180}
182{
183 return this->FieldOffsets;
184}
186{
187 return this->NumberOfFields;
188}
189
190VTK_ABI_NAMESPACE_END
191#endif // vtkEdgeSubdivisionCriterion_h
represent and manipulate attribute data in a dataset
how to decide whether a linear approximation to nonlinear geometry or field should be subdivided
bool FixedFieldErrorEval(double *p1, double *p1_actual, int field_start, int field_criteria, double *allowableFieldErr) const
Perform the core logic for a fixed multi-criterion, scalar-field based subdivision.
virtual void ResetFieldList()
Don't pass any field values in the vertex pointer.
virtual bool DontPassField(int sourceId, vtkStreamingTessellator *t)
This does the opposite of PassField(); it removes a field from the output (assuming the field was set...
int GetOutputField(int fieldId) const
Return the output ID of an input field.
bool ViewDependentEval(const double *p0, double *p1, double *p1_actual, const double *p2, int field_start, vtkMatrix4x4 *viewtrans, const double *pixelSize, double allowableChordErr) const
Perform the core logic for a view-dependent subdivision.
virtual bool EvaluateLocationAndFields(double *p1, int field_start)=0
You must implement this member function in a subclass.
int GetNumberOfFields() const
Return the number of fields being evaluated at each output vertex.
const int * GetFieldOffsets() const
Return the offset into an output vertex array of all fields.
~vtkEdgeSubdivisionCriterion() override
virtual int PassField(int sourceId, int sourceSize, vtkStreamingTessellator *t)
This is a helper routine called by PassFields() which you may also call directly; it adds sourceSize ...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
const int * GetFieldIds() const
Return the map from output field id to input field ids.
a simple class to control print indentation
Definition vtkIndent.h:108
represent and manipulate 4x4 transformation matrices
abstract base class for most VTK objects
Definition vtkObject.h:162
An algorithm that refines an initial simplicial tessellation using edge subdivision.
#define VTK_MARSHALAUTO