|
| virtual int | IsA (const char *type) |
| |
| vtkOrderedTriangulator * | NewInstance () const |
| |
| void | PrintSelf (ostream &os, vtkIndent indent) |
| |
| void | InitTriangulation (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, int numPts) |
| |
| void | InitTriangulation (double bounds[6], int numPts) |
| |
| vtkIdType | InsertPoint (vtkIdType id, double x[3], double p[3], int type) |
| |
| vtkIdType | InsertPoint (vtkIdType id, vtkIdType sortid, double x[3], double p[3], int type) |
| |
| vtkIdType | InsertPoint (vtkIdType id, vtkIdType sortid, vtkIdType sortid2, double x[3], double p[3], int type) |
| |
| void | Triangulate () |
| |
| void | TemplateTriangulate (int cellType, int numPts, int numEdges) |
| |
| void | UpdatePointType (vtkIdType internalId, int type) |
| |
| double * | GetPointPosition (vtkIdType internalId) |
| |
| double * | GetPointLocation (vtkIdType internalId) |
| |
| vtkIdType | GetPointId (vtkIdType internalId) |
| |
| virtual int | GetNumberOfPoints () |
| |
| virtual void | SetUseTemplates (int) |
| |
| virtual int | GetUseTemplates () |
| |
| virtual void | UseTemplatesOn () |
| |
| virtual void | UseTemplatesOff () |
| |
| virtual void | SetPreSorted (int) |
| |
| virtual int | GetPreSorted () |
| |
| virtual void | PreSortedOn () |
| |
| virtual void | PreSortedOff () |
| |
| virtual void | SetUseTwoSortIds (int) |
| |
| virtual int | GetUseTwoSortIds () |
| |
| virtual void | UseTwoSortIdsOn () |
| |
| virtual void | UseTwoSortIdsOff () |
| |
| vtkIdType | GetTetras (int classification, vtkUnstructuredGrid *ugrid) |
| |
| vtkIdType | AddTetras (int classification, vtkUnstructuredGrid *ugrid) |
| |
| vtkIdType | AddTetras (int classification, vtkCellArray *connectivity) |
| |
| vtkIdType | AddTetras (int classification, vtkIncrementalPointLocator *locator, vtkCellArray *outConnectivity, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD) |
| |
| vtkIdType | AddTetras (int classification, vtkIdList *ptIds, vtkPoints *pts) |
| |
| vtkIdType | AddTriangles (vtkCellArray *connectivity) |
| |
| vtkIdType | AddTriangles (vtkIdType id, vtkCellArray *connectivity) |
| |
| void | InitTetraTraversal () |
| |
| int | GetNextTetra (int classification, vtkTetra *tet, vtkDataArray *cellScalars, vtkDoubleArray *tetScalars) |
| |
| 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 | PrintHeader (ostream &os, vtkIndent indent) |
| |
| virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
| |
| virtual void | Register (vtkObjectBase *o) |
| |
| virtual void | UnRegister (vtkObjectBase *o) |
| |
| int | GetReferenceCount () |
| |
| void | SetReferenceCount (int) |
| |
| void | PrintRevisions (ostream &) |
| |
helper class to generate triangulations
This class is used to generate unique triangulations of points. The uniqueness of the triangulation is controlled by the id of the inserted points in combination with a Delaunay criterion. The class is designed to be as fast as possible (since the algorithm can be slow) and uses block memory allocations to support rapid triangulation generation. Also, the assumption behind the class is that a maximum of hundreds of points are to be triangulated. If you desire more robust triangulation methods use vtkPolygon::Triangulate(), vtkDelaunay2D, or vtkDelaunay3D.
- Background:
- This work is documented in the technical paper: W.J. Schroeder, B. Geveci, M. Malaterre. Compatible Triangulations of Spatial Decompositions. In Proceedings of Visualization 2004, IEEE Press October 2004.
- Background:
- Delaunay triangulations are unique assuming a random distribution of input points. The 3D Delaunay criterion is as follows: the circumsphere of each tetrahedron contains no other points of the triangulation except for the four points defining the tetrahedron. In application this property is hard to satisfy because objects like cubes are defined by eight points all sharing the same circumsphere (center and radius); hence the Delaunay triangulation is not unique. These so-called degenerate situations are typically resolved by arbitrary selecting a triangulation. This code does something different: it resolves degenerate triangulations by modifying the "InCircumsphere" method to use a slightly smaller radius. Hence, degenerate points are always considered "out" of the circumsphere. This, in combination with an ordering (based on id) of the input points, guarantees a unique triangulation.
- Background:
- There is another related characteristic of Delaunay triangulations. Given a N-dimensional Delaunay triangulation, points laying on a (N-1) dimensional plane also form a (N-1) Delaunay triangulation. This means for example, that if a 3D cell is defined by a set of (2D) planar faces, then the face triangulations are Delaunay. Combining this with the method to generate unique triangulations described previously, the triangulations on the face are guaranteed unique. This fact can be used to triangulate 3D objects in such a way to guarantee compatible face triangulations. This is a very useful fact for parallel processing, or performing operations like clipping that require compatible triangulations across 3D cell faces. (See vtkClipVolume for an example.)
- Background:
- A special feature of this class is that it can generate triangulation templates on the fly. If template triangulation is enabled, then the ordered triangulator will first triangulate the cell using the slower ordered Delaunay approach, and then store the result as a template. Later, if the same cell type and cell configuration is encountered, then the template is reused which greatly speeds the triangulation.
- Warning
- Duplicate vertices will be ignored, i.e., if two points have the same coordinates the second one is discarded. The implications are that the user of this class must prevent duplicate points. Because the precision of this algorithm is double, it's also a good idea to merge points that are within some epsilon of one another.
-
The triangulation is performed using the parametric coordinates of the inserted points. Therefore the bounds (see InitTriangulation()) should represent the range of the parametric coordinates of the inserted points.
- See also
- vtkDelaunay2D vtkDelaunay3D vtkPolygon
- Tests:
- vtkOrderedTriangulator (Tests)
Definition at line 116 of file vtkOrderedTriangulator.h.