VTK
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
vtkEdgeSubdivisionCriterion Class Referenceabstract

how to decide whether a linear approximation to nonlinear geometry or field should be subdivided More...

#include <vtkEdgeSubdivisionCriterion.h>

Inheritance diagram for vtkEdgeSubdivisionCriterion:
[legend]
Collaboration diagram for vtkEdgeSubdivisionCriterion:
[legend]

Public Types

typedef vtkObject Superclass
 

Public Member Functions

virtual vtkTypeBool IsA (const char *type)
 Return 1 if this class is the same type of (or a subclass of) the named class. More...
 
vtkEdgeSubdivisionCriterionNewInstance () const
 
void PrintSelf (ostream &os, vtkIndent indent) override
 Methods invoked by print to print information about the object including superclasses. More...
 
virtual bool EvaluateLocationAndFields (double *p1, int field_start)=0
 You must implement this member function in a subclass. More...
 
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 to the size of the output vertex field values. More...
 
virtual void ResetFieldList ()
 Don't pass any field values in the vertex pointer. More...
 
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 to be passed). More...
 
const int * GetFieldIds () const
 Return the map from output field id to input field ids. More...
 
const int * GetFieldOffsets () const
 Return the offset into an output vertex array of all fields. More...
 
int GetOutputField (int fieldId) const
 Return the output ID of an input field. More...
 
int GetNumberOfFields () const
 Return the number of fields being evaluated at each output vertex. More...
 
- Public Member Functions inherited from vtkObject
 vtkBaseTypeMacro (vtkObject, vtkObjectBase)
 
virtual void DebugOn ()
 Turn debugging output on. More...
 
virtual void DebugOff ()
 Turn debugging output off. More...
 
bool GetDebug ()
 Get the value of the debug flag. More...
 
void SetDebug (bool debugFlag)
 Set the value of the debug flag. More...
 
virtual void Modified ()
 Update the modification time for this object. More...
 
virtual vtkMTimeType GetMTime ()
 Return this object's modified time. More...
 
unsigned long AddObserver (unsigned long event, vtkCommand *, float priority=0.0f)
 Allow people to add/remove/invoke observers (callbacks) to any VTK object. More...
 
unsigned long AddObserver (const char *event, vtkCommand *, float priority=0.0f)
 
vtkCommandGetCommand (unsigned long tag)
 
void RemoveObserver (vtkCommand *)
 
void RemoveObservers (unsigned long event, vtkCommand *)
 
void RemoveObservers (const char *event, vtkCommand *)
 
vtkTypeBool HasObserver (unsigned long event, vtkCommand *)
 
vtkTypeBool HasObserver (const char *event, vtkCommand *)
 
void RemoveObserver (unsigned long tag)
 
void RemoveObservers (unsigned long event)
 
void RemoveObservers (const char *event)
 
void RemoveAllObservers ()
 
vtkTypeBool HasObserver (unsigned long event)
 
vtkTypeBool HasObserver (const char *event)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f)
 Overloads to AddObserver that allow developers to add class member functions as callbacks for events. More...
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 
template<class U , class T >
unsigned long AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f)
 Allow user to set the AbortFlagOn() with the return value of the callback method. More...
 
int InvokeEvent (unsigned long event, void *callData)
 This method invokes an event and return whether the event was aborted or not. More...
 
int InvokeEvent (const char *event, void *callData)
 
int InvokeEvent (unsigned long event)
 
int InvokeEvent (const char *event)
 
- Public Member Functions inherited from vtkObjectBase
const char * GetClassName () const
 Return the class name as a string. More...
 
virtual void Delete ()
 Delete a VTK object. More...
 
virtual void FastDelete ()
 Delete a reference to this object. More...
 
void InitializeObjectBase ()
 
void Print (ostream &os)
 Print an object to an ostream. More...
 
virtual void PrintHeader (ostream &os, vtkIndent indent)
 
virtual void PrintTrailer (ostream &os, vtkIndent indent)
 
virtual void Register (vtkObjectBase *o)
 Increase the reference count (mark as used by another object). More...
 
virtual void UnRegister (vtkObjectBase *o)
 Decrease the reference count (release by another object). More...
 
int GetReferenceCount ()
 Return the current reference count of this object. More...
 
void SetReferenceCount (int)
 Sets the reference count. More...
 
void PrintRevisions (ostream &)
 Legacy. More...
 

Static Public Member Functions

static vtkTypeBool IsTypeOf (const char *type)
 
static vtkEdgeSubdivisionCriterionSafeDownCast (vtkObjectBase *o)
 
- Static Public Member Functions inherited from vtkObject
static vtkObjectNew ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More...
 
static void BreakOnError ()
 This method is called when vtkErrorMacro executes. More...
 
static void SetGlobalWarningDisplay (int val)
 This is a global flag that controls whether any debug, warning or error messages are displayed. More...
 
static void GlobalWarningDisplayOn ()
 
static void GlobalWarningDisplayOff ()
 
static int GetGlobalWarningDisplay ()
 
- Static Public Member Functions inherited from vtkObjectBase
static vtkTypeBool IsTypeOf (const char *name)
 Return 1 if this class type is the same type of (or a subclass of) the named class. More...
 
static vtkObjectBaseNew ()
 Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More...
 

Protected Member Functions

virtual vtkObjectBaseNewInstanceInternal () const
 
 vtkEdgeSubdivisionCriterion ()
 
 ~vtkEdgeSubdivisionCriterion () override
 
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. More...
 
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. More...
 
- Protected Member Functions inherited from vtkObject
 vtkObject ()
 
 ~vtkObject () override
 
void RegisterInternal (vtkObjectBase *, vtkTypeBool check) override
 
void UnRegisterInternal (vtkObjectBase *, vtkTypeBool check) override
 
void InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
 These methods allow a command to exclusively grab all events. More...
 
void InternalReleaseFocus ()
 
- Protected Member Functions inherited from vtkObjectBase
 vtkObjectBase ()
 
virtual ~vtkObjectBase ()
 
virtual void CollectRevisions (ostream &)
 
virtual void ReportReferences (vtkGarbageCollector *)
 
 vtkObjectBase (const vtkObjectBase &)
 
void operator= (const vtkObjectBase &)
 

Protected Attributes

int * FieldIds
 
int * FieldOffsets
 
int NumberOfFields
 
- Protected Attributes inherited from vtkObject
bool Debug
 
vtkTimeStamp MTime
 
vtkSubjectHelper * SubjectHelper
 
- Protected Attributes inherited from vtkObjectBase
std::atomic< int32_t > ReferenceCount
 
vtkWeakPointerBase ** WeakPointers
 

Detailed Description

how to decide whether a linear approximation to nonlinear geometry or field should be subdivided

Descendants of this abstract class are used to decide whether a piecewise linear approximation (triangles, lines, ... ) to some nonlinear geometry should be subdivided. This decision may be based on an absolute error metric (chord error) or on some view-dependent metric (chord error compared to device resolution) or on some abstract metric (color error). Or anything else, really. Just so long as you implement the EvaluateLocationAndFields member, all will be well.

See also
vtkDataSetSubdivisionAlgorithm vtkStreamingTessellator

Definition at line 43 of file vtkEdgeSubdivisionCriterion.h.

Member Typedef Documentation

◆ Superclass

Definition at line 46 of file vtkEdgeSubdivisionCriterion.h.

Constructor & Destructor Documentation

◆ vtkEdgeSubdivisionCriterion()

vtkEdgeSubdivisionCriterion::vtkEdgeSubdivisionCriterion ( )
protected

◆ ~vtkEdgeSubdivisionCriterion()

vtkEdgeSubdivisionCriterion::~vtkEdgeSubdivisionCriterion ( )
overrideprotected

Member Function Documentation

◆ IsTypeOf()

static vtkTypeBool vtkEdgeSubdivisionCriterion::IsTypeOf ( const char *  type)
static

◆ IsA()

virtual vtkTypeBool vtkEdgeSubdivisionCriterion::IsA ( const char *  name)
virtual

Return 1 if this class is the same type of (or a subclass of) the named class.

Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.

Reimplemented from vtkObjectBase.

Reimplemented in vtkDataSetEdgeSubdivisionCriterion.

◆ SafeDownCast()

static vtkEdgeSubdivisionCriterion* vtkEdgeSubdivisionCriterion::SafeDownCast ( vtkObjectBase o)
static

◆ NewInstanceInternal()

virtual vtkObjectBase* vtkEdgeSubdivisionCriterion::NewInstanceInternal ( ) const
protectedvirtual

◆ NewInstance()

vtkEdgeSubdivisionCriterion* vtkEdgeSubdivisionCriterion::NewInstance ( ) const

◆ PrintSelf()

void vtkEdgeSubdivisionCriterion::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
overridevirtual

Methods invoked by print to print information about the object including superclasses.

Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.

Reimplemented from vtkObject.

◆ EvaluateLocationAndFields()

virtual bool vtkEdgeSubdivisionCriterion::EvaluateLocationAndFields ( double *  p1,
int  field_start 
)
pure virtual

You must implement this member function in a subclass.

It will be called by vtkStreamingTessellator for each edge in each primitive that vtkStreamingTessellator generates.

Implemented in vtkDataSetEdgeSubdivisionCriterion.

◆ PassField()

virtual int vtkEdgeSubdivisionCriterion::PassField ( int  sourceId,
int  sourceSize,
vtkStreamingTessellator t 
)
virtual

This is a helper routine called by PassFields() which you may also call directly; it adds sourceSize to the size of the output vertex field values.

The offset of the sourceId field in the output vertex array is returned. -1 is returned if sourceSize would force the output to have more than vtkStreamingTessellator::MaxFieldSize field values per vertex.

◆ ResetFieldList()

virtual void vtkEdgeSubdivisionCriterion::ResetFieldList ( )
virtual

Don't pass any field values in the vertex pointer.

This is used to reset the list of fields to pass after a successful run of vtkStreamingTessellator.

◆ DontPassField()

virtual bool vtkEdgeSubdivisionCriterion::DontPassField ( int  sourceId,
vtkStreamingTessellator t 
)
virtual

This does the opposite of PassField(); it removes a field from the output (assuming the field was set to be passed).

Returns true if any action was taken, false otherwise.

◆ GetFieldIds()

const int * vtkEdgeSubdivisionCriterion::GetFieldIds ( ) const
inline

Return the map from output field id to input field ids.

That is, field i of any output vertex from vtkStreamingTessellator will be associated with GetFieldIds()[i] on the input mesh.

Definition at line 185 of file vtkEdgeSubdivisionCriterion.h.

◆ GetFieldOffsets()

const int * vtkEdgeSubdivisionCriterion::GetFieldOffsets ( ) const
inline

Return the offset into an output vertex array of all fields.

That is, field i of any output vertex, p, from vtkStreamingTessellator will have its first entry at p[GetFieldOffsets()[i] ] .

Definition at line 189 of file vtkEdgeSubdivisionCriterion.h.

◆ GetOutputField()

int vtkEdgeSubdivisionCriterion::GetOutputField ( int  fieldId) const

Return the output ID of an input field.

Returns -1 if fieldId is not set to be passed to the output.

◆ GetNumberOfFields()

int vtkEdgeSubdivisionCriterion::GetNumberOfFields ( ) const
inline

Return the number of fields being evaluated at each output vertex.

This is the length of the arrays returned by GetFieldIds() and GetFieldOffsets().

Definition at line 193 of file vtkEdgeSubdivisionCriterion.h.

◆ ViewDependentEval()

bool vtkEdgeSubdivisionCriterion::ViewDependentEval ( const double *  p0,
double *  p1,
double *  p1_actual,
const double *  p2,
int  field_start,
vtkMatrix4x4 viewtrans,
const double *  pixelSize,
double  allowableChordErr 
) const
protected

Perform the core logic for a view-dependent subdivision.

Returns true if subdivision should occur, false otherwise. This is to be used by subclasses once the mesh-specific evaluation routines have been called to get the actual (as opposed to linearly interpolated) midpoint coordinates. Currently, this handles only geometry, but could conceivably test scalar fields as well.

Parameters
p0is the first endpoint of the edge
p1is the linearly interpolated midpoint of the edge
p1_actualis the actual midpoint of the edge
p2is the second endpoint of the edge
field_startis the offset into the above arrays indicating where the scalar field values start (when isosurfacing, the embedding dimension may be smaller than the number of parametric coordinates).
viewtransis the viewing transform (from model to screen coordinates). Applying this transform to p0, p1, etc., should yield screen-space coordinates.
pixelSizeis the width and height of a pixel in screen space coordinates.
allowableChordErris the maximum allowable distance between p1 and p1_actual, in multiples of pixelSize, before subdivision will occur.

◆ FixedFieldErrorEval()

bool vtkEdgeSubdivisionCriterion::FixedFieldErrorEval ( double *  p1,
double *  p1_actual,
int  field_start,
int  field_criteria,
double *  allowableFieldErr 
) const
protected

Perform the core logic for a fixed multi-criterion, scalar-field based subdivision.

Returns true if subdivision should occur, false otherwise. This is to be used by subclasses once the mesh-specific evaluation routines have been called to get the actual (as opposed to linearly interpolated) midpoint geometry and field values. Only field values are tested (not geometry) because you can save yourself field evaluations if you check the geometry yourself and it fails the test.

Parameters
p0is the first endpoint of the edge
p1is the linearly interpolated midpoint of the edge
p1_actualis the actual midpoint of the edge
p2is the second endpoint of the edge
field_startis the offset into the above arrays indicating where the scalar field values start (when isosurfacing, the embedding dimension may be smaller than the number of parametric coordinates).
field_criteriais a bitfield specifying which fields (of the fields specified by PassField or PassFields) are to be considered for subdivision. Thus, you may pass fields to the output mesh without using them as subdivision criteria. In than case, the allowableFieldErr will have an empty entry for those fields.
allowableFieldErris an array of tolerances, one for each field passed to the output. If the linearly interpolated and actual midpoint values for any field are greater than the value specified here, the member will return true.

Member Data Documentation

◆ FieldIds

int* vtkEdgeSubdivisionCriterion::FieldIds
protected

Definition at line 111 of file vtkEdgeSubdivisionCriterion.h.

◆ FieldOffsets

int* vtkEdgeSubdivisionCriterion::FieldOffsets
protected

Definition at line 112 of file vtkEdgeSubdivisionCriterion.h.

◆ NumberOfFields

int vtkEdgeSubdivisionCriterion::NumberOfFields
protected

Definition at line 113 of file vtkEdgeSubdivisionCriterion.h.


The documentation for this class was generated from the following file: