pub struct vtkOrderedTriangulator(/* private fields */);Expand description
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.
@par 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.
@par 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.
@par 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.)
@par 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.
@warning 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.
@sa vtkDelaunay2D vtkDelaunay3D vtkPolygon
Implementations§
Source§impl vtkOrderedTriangulator
impl vtkOrderedTriangulator
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new vtkOrderedTriangulator wrapped inside vtkNew