VTK
|
how to decide whether a linear approximation to nonlinear geometry or field should be subdivided More...
#include <vtkEdgeSubdivisionCriterion.h>
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... | |
vtkEdgeSubdivisionCriterion * | NewInstance () const |
void | PrintSelf (ostream &os, vtkIndent indent) override |
Methods invoked by print to print information about the object including superclasses. More... | |
virtual bool | EvaluateEdge (const double *p0, double *p1, const double *p2, 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... | |
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) |
int | InvokeEvent (unsigned long event) |
int | InvokeEvent (const char *event) |
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) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkCommand * | GetCommand (unsigned long tag) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObserver (vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObservers (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
void | RemoveObservers (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkTypeBool | HasObserver (unsigned long event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
vtkTypeBool | HasObserver (const char *event, vtkCommand *) |
Allow people to add/remove/invoke observers (callbacks) to any VTK object. More... | |
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) |
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, 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) |
This method invokes an event and return whether the event was aborted or not. More... | |
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 | 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... | |
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
Methods invoked by print to print information about the object including superclasses. More... | |
Static Public Member Functions | |
static vtkTypeBool | IsTypeOf (const char *type) |
static vtkEdgeSubdivisionCriterion * | SafeDownCast (vtkObjectBase *o) |
Static Public Member Functions inherited from vtkObject | |
static vtkObject * | New () |
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 () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static void | GlobalWarningDisplayOff () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
static int | GetGlobalWarningDisplay () |
This is a global flag that controls whether any debug, warning or error messages are displayed. More... | |
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 vtkObjectBase * | New () |
Create an object with Debug turned off, modified time initialized to zero, and reference counting on. More... | |
Protected Member Functions | |
virtual vtkObjectBase * | NewInstanceInternal () 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 (const double *p0, double *p1, double *p1_actual, const double *p2, 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 () |
These methods allow a command to exclusively grab all events. More... | |
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 | |
vtkAtomicInt32 | ReferenceCount |
vtkWeakPointerBase ** | WeakPointers |
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 EvaluateEdge member, all will be well.
Definition at line 45 of file vtkEdgeSubdivisionCriterion.h.
Definition at line 48 of file vtkEdgeSubdivisionCriterion.h.
|
protected |
|
overrideprotected |
|
static |
|
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.
|
static |
|
protectedvirtual |
Reimplemented in vtkDataSetEdgeSubdivisionCriterion.
vtkEdgeSubdivisionCriterion* vtkEdgeSubdivisionCriterion::NewInstance | ( | ) | const |
|
overridevirtual |
|
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.
|
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.
|
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.
|
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.
|
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 184 of file vtkEdgeSubdivisionCriterion.h.
|
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 185 of file vtkEdgeSubdivisionCriterion.h.
Return the output ID of an input field.
Returns -1 if fieldId is not set to be passed to the output.
|
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 186 of file vtkEdgeSubdivisionCriterion.h.
|
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.
p0 | is the first endpoint of the edge |
p1 | is the linearly interpolated midpoint of the edge |
p1_actual | is the actual midpoint of the edge |
p2 | is the second endpoint of the edge |
field_start | is 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). |
viewtrans | is the viewing transform (from model to screen coordinates). Applying this transform to p0, p1, etc., should yield screen-space coordinates. |
pixelSize | is the width and height of a pixel in screen space coordinates. |
allowableChordErr | is the maximum allowable distance between p1 and p1_actual, in multiples of pixelSize, before subdivision will occur. |
|
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.
p0 | is the first endpoint of the edge |
p1 | is the linearly interpolated midpoint of the edge |
p1_actual | is the actual midpoint of the edge |
p2 | is the second endpoint of the edge |
field_start | is 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_criteria | is 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. |
allowableFieldErr | is 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. |
|
protected |
Definition at line 113 of file vtkEdgeSubdivisionCriterion.h.
|
protected |
Definition at line 114 of file vtkEdgeSubdivisionCriterion.h.
|
protected |
Definition at line 115 of file vtkEdgeSubdivisionCriterion.h.