VTK  9.2.6
vtkEdgeSubdivisionCriterion.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkEdgeSubdivisionCriterion.h
5 Language: C++
6
7 Copyright 2003 Sandia Corporation.
8 Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9 license for use of this work by or on behalf of the
10 U.S. Government. Redistribution and use in source and binary forms, with
11 or without modification, are permitted provided that this Notice and any
12 statement of authorship are reproduced on all copies.
13
14=========================================================================*/
15#ifndef vtkEdgeSubdivisionCriterion_h
16#define vtkEdgeSubdivisionCriterion_h
39#include "vtkFiltersCoreModule.h" // For export macro
40#include "vtkObject.h"
41
43class vtkMatrix4x4;
45
46class VTKFILTERSCORE_EXPORT vtkEdgeSubdivisionCriterion : public vtkObject
47{
48public:
50 void PrintSelf(ostream& os, vtkIndent indent) override;
51
57 virtual bool EvaluateLocationAndFields(double* p1, int field_start) = 0;
58
67 virtual int PassField(int sourceId, int sourceSize, vtkStreamingTessellator* t);
68
74 virtual void ResetFieldList();
75
81 virtual bool DontPassField(int sourceId, vtkStreamingTessellator* t);
82
88 const int* GetFieldIds() const;
89
95 const int* GetFieldOffsets() const;
96
101 int GetOutputField(int fieldId) const;
102
108 int GetNumberOfFields() const;
109
110protected:
113
117
143 bool ViewDependentEval(const double* p0, double* p1, double* p1_actual, const double* p2,
144 int field_start, vtkMatrix4x4* viewtrans, const double* pixelSize,
145 double allowableChordErr) const;
146
178 bool FixedFieldErrorEval(double* p1, double* p1_actual, int field_start, int field_criteria,
179 double* allowableFieldErr) const;
180
181private:
183 void operator=(const vtkEdgeSubdivisionCriterion&) = delete;
184};
185
187{
188 return this->FieldIds;
189}
191{
192 return this->FieldOffsets;
193}
195{
196 return this->NumberOfFields;
197}
198
199#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:40
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:42
abstract base class for most VTK objects
Definition: vtkObject.h:63
An algorithm that refines an initial simplicial tessellation using edge subdivision.