|
virtual int | IsA (const char *type) |
|
vtkDataSetEdgeSubdivisionCriterion * | NewInstance () const |
|
virtual void | PrintSelf (ostream &os, vtkIndent indent) |
|
virtual void | SetMesh (vtkDataSet *) |
|
vtkDataSet * | GetMesh () |
|
const vtkDataSet * | GetMesh () const |
|
virtual void | SetCellId (vtkIdType cell) |
|
vtkIdType | GetCellId () const |
|
vtkIdType & | GetCellId () |
|
vtkCell * | GetCell () |
|
const vtkCell * | GetCell () const |
|
virtual bool | EvaluateEdge (const double *p0, double *midpt, const double *p1, int field_start) |
|
double * | EvaluateFields (double *vertex, double *weights, int field_start) |
|
virtual void | ResetFieldError2 () |
|
|
void | EvaluatePointDataField (double *result, double *weights, int field) |
|
void | EvaluateCellDataField (double *result, double *weights, int field) |
|
|
virtual void | SetChordError2 (double) |
|
virtual double | GetChordError2 () |
|
|
virtual void | SetFieldError2 (int s, double err) |
|
double | GetFieldError2 (int s) const |
|
|
virtual int | GetActiveFieldCriteria () |
|
int | GetActiveFieldCriteria () const |
|
vtkEdgeSubdivisionCriterion * | NewInstance () const |
|
virtual int | PassField (int sourceId, int sourceSize, vtkStreamingTessellator *t) |
|
virtual void | ResetFieldList () |
|
virtual bool | DontPassField (int sourceId, vtkStreamingTessellator *t) |
|
const int * | GetFieldIds () const |
|
const int * | GetFieldOffsets () const |
|
int | GetOutputField (int fieldId) const |
|
int | GetNumberOfFields () const |
|
vtkObject * | NewInstance () const |
|
virtual void | DebugOn () |
|
virtual void | DebugOff () |
|
bool | GetDebug () |
|
void | SetDebug (bool debugFlag) |
|
virtual void | Modified () |
|
virtual unsigned long | GetMTime () |
|
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
|
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
|
vtkCommand * | GetCommand (unsigned long tag) |
|
void | RemoveObserver (vtkCommand *) |
|
void | RemoveObservers (unsigned long event, vtkCommand *) |
|
void | RemoveObservers (const char *event, vtkCommand *) |
|
int | HasObserver (unsigned long event, vtkCommand *) |
|
int | HasObserver (const char *event, vtkCommand *) |
|
void | RemoveObserver (unsigned long tag) |
|
void | RemoveObservers (unsigned long event) |
|
void | RemoveObservers (const char *event) |
|
void | RemoveAllObservers () |
|
int | HasObserver (unsigned long event) |
|
int | HasObserver (const char *event) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
|
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) |
|
int | InvokeEvent (unsigned long event, void *callData) |
|
int | InvokeEvent (const char *event, void *callData) |
|
int | InvokeEvent (unsigned long event) |
|
int | InvokeEvent (const char *event) |
|
const char * | GetClassName () const |
|
virtual void | Delete () |
|
virtual void | FastDelete () |
|
void | Print (ostream &os) |
|
virtual void | Register (vtkObjectBase *o) |
|
virtual void | UnRegister (vtkObjectBase *o) |
|
void | SetReferenceCount (int) |
|
void | PrintRevisions (ostream &) |
|
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
|
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
|
int | GetReferenceCount () |
|
|
virtual vtkObjectBase * | NewInstanceInternal () const |
|
| vtkDataSetEdgeSubdivisionCriterion () |
|
virtual | ~vtkDataSetEdgeSubdivisionCriterion () |
|
| vtkEdgeSubdivisionCriterion () |
|
virtual | ~vtkEdgeSubdivisionCriterion () |
|
bool | ViewDependentEval (const double *p0, double *p1, double *p1_actual, const double *p2, int field_start, vtkMatrix4x4 *viewtrans, const double *pixelSize, double allowableChordErr) const |
|
bool | FixedFieldErrorEval (const double *p0, double *p1, double *p1_actual, const double *p2, int field_start, int field_criteria, double *allowableFieldErr) const |
|
| vtkObject () |
|
virtual | ~vtkObject () |
|
virtual void | RegisterInternal (vtkObjectBase *, int check) |
|
virtual void | UnRegisterInternal (vtkObjectBase *, int check) |
|
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
|
void | InternalReleaseFocus () |
|
| vtkObjectBase () |
|
virtual | ~vtkObjectBase () |
|
virtual void | CollectRevisions (ostream &) |
|
virtual void | ReportReferences (vtkGarbageCollector *) |
|
| vtkObjectBase (const vtkObjectBase &) |
|
void | operator= (const vtkObjectBase &) |
|
a subclass of vtkEdgeSubdivisionCriterion for vtkDataSet objects.
This is a subclass of vtkEdgeSubdivisionCriterion that is used for tessellating cells of a vtkDataSet, particularly nonlinear cells.
It provides functions for setting the current cell being tessellated and a convenience routine, EvaluateFields() to evaluate field values at a point. You should call EvaluateFields() from inside EvaluateEdge() whenever the result of EvaluateEdge() will be true. Otherwise, do not call EvaluateFields() as the midpoint is about to be discarded. (Implementor's note: This isn't true if UGLY_ASPECT_RATIO_HACK has been defined. But in that case, we don't want the exact field values; we need the linearly interpolated ones at the midpoint for continuity.)
- See also
- vtkEdgeSubdivisionCriterion
Definition at line 44 of file vtkDataSetEdgeSubdivisionCriterion.h.
double* vtkDataSetEdgeSubdivisionCriterion::EvaluateFields |
( |
double * |
vertex, |
|
|
double * |
weights, |
|
|
int |
field_start |
|
) |
| |
Evaluate all of the fields that should be output with the given vertex and store them just past the parametric coordinates of vertex, at the offsets given by vtkEdgeSubdivisionCriterion::GetFieldOffsets()
plus field_start. field_start contains the number of world-space coordinates (always 3) plus the embedding dimension (the size of the parameter-space in which the cell is embedded). It will range between 3 and 6, inclusive. You must have called SetCellId() before calling this routine or there will not be a mesh over which to evaluate the fields. You must have called vtkEdgeSubdivisionCriterion::PassDefaultFields()
or vtkEdgeSubdivisionCriterion::PassField()
or there will be no fields defined for the output vertex. This routine is public and returns its input argument so that it may be used as an argument to vtkStreamingTessellator::AdaptivelySamplekFacet()
:
vtkStreamingTessellator* t = vtkStreamingTessellator::New();
vtkEdgeSubdivisionCriterion* s; ... t->AdaptivelySample1Facet(
s->EvaluateFields( p0 ), s->EvaluateFields( p1 ) ); ...
Although this will work, using EvaluateFields()
in this manner should be avoided. It's much more efficient to fetch the corner values for each attribute and copy them into p0, p1, ... as opposed to performing shape function evaluations. The only case where you wouldn't want to do this is when the field you are interpolating is discontinuous at cell borders, such as with a discontinuous galerkin method or when all the Gauss points for quadrature are interior to the cell. The final argument, weights, is the array of weights to apply to each point's data when interpolating the field. This is returned by vtkCell::EvaluateLocation() when evaluating the geometry.