|
virtual vtkTypeBool | IsA (const char *type) |
| Return 1 if this class is the same type of (or a subclass of) the named class. More...
|
|
vtkOrderedTriangulator * | NewInstance () const |
|
void | PrintSelf (ostream &os, vtkIndent indent) override |
| Methods invoked by print to print information about the object including superclasses. More...
|
|
void | InitTriangulation (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, int numPts) |
| Initialize the triangulation process. More...
|
|
void | InitTriangulation (double bounds[6], int numPts) |
|
vtkIdType | InsertPoint (vtkIdType id, double x[3], double p[3], int type) |
| For each point to be inserted, provide an id, a position x, parametric coordinate p, and whether the point is inside (type=0), outside (type=1), or on the boundary (type=2). More...
|
|
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 () |
| Perform the triangulation. More...
|
|
void | TemplateTriangulate (int cellType, int numPts, int numEdges) |
|
void | UpdatePointType (vtkIdType internalId, int type) |
| Update the point type. More...
|
|
double * | GetPointPosition (vtkIdType internalId) |
| Return the parametric coordinates of point ‘internalId’. More...
|
|
double * | GetPointLocation (vtkIdType internalId) |
| Return the global coordinates of point ‘internalId’. More...
|
|
vtkIdType | GetPointId (vtkIdType internalId) |
| Return the Id of point ‘internalId’. More...
|
|
virtual int | GetNumberOfPoints () |
| Return the number of inserted points. More...
|
|
virtual void | SetUseTemplates (vtkTypeBool) |
| If this flag is set, then the ordered triangulator will create and use templates for the triangulation. More...
|
|
virtual vtkTypeBool | GetUseTemplates () |
|
virtual void | UseTemplatesOn () |
|
virtual void | UseTemplatesOff () |
|
virtual void | SetPreSorted (vtkTypeBool) |
| Boolean indicates whether the points have been pre-sorted. More...
|
|
virtual vtkTypeBool | GetPreSorted () |
|
virtual void | PreSortedOn () |
|
virtual void | PreSortedOff () |
|
virtual void | SetUseTwoSortIds (vtkTypeBool) |
| Tells the triangulator that a second sort id is provided for each point and should also be considered when sorting. More...
|
|
virtual vtkTypeBool | GetUseTwoSortIds () |
|
virtual void | UseTwoSortIdsOn () |
|
virtual void | UseTwoSortIdsOff () |
|
vtkIdType | GetTetras (int classification, vtkUnstructuredGrid *ugrid) |
| Initialize and add the tetras and points from the triangulation to the unstructured grid provided. More...
|
|
vtkIdType | AddTetras (int classification, vtkUnstructuredGrid *ugrid) |
| Add the tetras to the unstructured grid provided. More...
|
|
vtkIdType | AddTetras (int classification, vtkCellArray *connectivity) |
| Add the tetrahedra classified (0=inside,1=outside) to the connectivity list provided. More...
|
|
vtkIdType | AddTetras (int classification, vtkIncrementalPointLocator *locator, vtkCellArray *outConnectivity, vtkPointData *inPD, vtkPointData *outPD, vtkCellData *inCD, vtkIdType cellId, vtkCellData *outCD) |
| Assuming that all the inserted points come from a cell ‘cellId’ to triangulate, get the tetrahedra in outConnectivity, the points in locator and copy point data and cell data. More...
|
|
vtkIdType | AddTetras (int classification, vtkIdList *ptIds, vtkPoints *pts) |
| Add the tetrahedra classified (0=inside,1=outside) to the list of ids and coordinates provided. More...
|
|
vtkIdType | AddTriangles (vtkCellArray *connectivity) |
| Add the triangle faces classified (2=boundary) to the connectivity list provided. More...
|
|
vtkIdType | AddTriangles (vtkIdType id, vtkCellArray *connectivity) |
| Add the triangle faces classified (2=boundary) and attached to the specified point id to the connectivity list provided. More...
|
|
void | InitTetraTraversal () |
| Methods to get one tetra at a time. More...
|
|
int | GetNextTetra (int classification, vtkTetra *tet, vtkDataArray *cellScalars, vtkDoubleArray *tetScalars) |
| Methods to get one tetra at a time. More...
|
|
| 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) |
|
vtkCommand * | GetCommand (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) |
|
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...
|
|
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 117 of file vtkOrderedTriangulator.h.