Meshes a single triangle with the constraints that come from the intersections with the other triangles.  
 More...
 | 
| 
  | MeshInTriangle (MeshSurfaceIntersection &EM) | 
|   | 
| const Mesh &  | mesh () const | 
|   | Gets the readonly initial mesh.  
  | 
|   | 
| Mesh &  | target_mesh () | 
|   | Gets the target mesh.  
  | 
|   | 
| void  | set_dry_run (bool x) | 
|   | In dry run mode, the computed local triangulations are not inserted in the global mesh. This is for benchmarking. Default is off.  
  | 
|   | 
| void  | save_constraints (const std::string &filename) | 
|   | For debugging, save constraints to a file.  
  | 
|   | 
| 
void  | begin_facet (index_t f) | 
|   | 
| 
index_t  | add_vertex (index_t f2, TriangleRegion R1, TriangleRegion R2) | 
|   | 
| 
void  | add_edge (index_t f2, TriangleRegion AR1, TriangleRegion AR2, TriangleRegion BR1, TriangleRegion BR2) | 
|   | 
| 
void  | commit () | 
|   | Creates new vertices and new triangles in target mesh. 
  | 
|   | 
| void  | clear () override | 
|   | 
| void  | save (const std::string &filename) const override | 
|   | Saves this CDT to a geogram mesh file.  
  | 
|   | 
| 
  | CDTBase2d () | 
|   | CDTBase2d constructor. 
  | 
|   | 
| 
virtual  | ~CDTBase2d () | 
|   | CDTBase2d destructor. 
  | 
|   | 
| void  | insert_constraint (index_t i, index_t j) | 
|   | Inserts a constraint.  
  | 
|   | 
| void  | remove_external_triangles (bool remove_internal_holes=false) | 
|   | Recursively removes all the triangles adjacent to the border, and keeps what's surrounded by constraints.  
  | 
|   | 
| void  | set_delaunay (bool delaunay) | 
|   | Specifies whether a constrained Delaunay triangulation should be constructed, or just a plain constrained triangulation.  
  | 
|   | 
| index_t  | nT () const | 
|   | Gets the number of triangles.  
  | 
|   | 
| index_t  | nv () const | 
|   | Gets the number of vertices.  
  | 
|   | 
| index_t  | ncnstr () const | 
|   | Gets the number of constraints.  
  | 
|   | 
| index_t  | Tv (index_t t, index_t lv) const | 
|   | Gets a vertex of a triangle.  
  | 
|   | 
| index_t  | Tv_find (index_t t, index_t v) const | 
|   | Finds the local index of a vertex in a triangle.  
  | 
|   | 
| index_t  | Tadj (index_t t, index_t le) const | 
|   | Gets a triangle adjacent to a triangle.  
  | 
|   | 
| index_t  | Tadj_find (index_t t1, index_t t2) const | 
|   | Finds the edge accross which a triangle is adjacent to another one.  
  | 
|   | 
| index_t  | vT (index_t v) const | 
|   | Gets a triangle incident to a given vertex.  
  | 
|   | 
| index_t  | Tedge_cnstr_first (index_t t, index_t le) const | 
|   | Gets the constraint associated with an edge.  
  | 
|   | 
| index_t  | edge_cnstr_next (index_t ecit) const | 
|   | Gets the successor of an edge constraint iterator.  
  | 
|   | 
| index_t  | edge_cnstr (index_t ecit) const | 
|   | Gets an edge constraint from an edge constraint iterator.  
  | 
|   | 
| index_t  | Tedge_cnstr_nb (index_t t, index_t le) const | 
|   | Gets the number of constraints associated with a triange edge.  
  | 
|   | 
| bool  | Tedge_is_Delaunay (index_t t, index_t le) const | 
|   | Tests whether a triangle edge is Delaunay.  
  | 
|   | 
| void  | check_consistency () const | 
|   | Checks both combinatorics and geometry, aborts on unconsistency.  
  | 
|   | 
 | 
| 
void  | get_constraints (Mesh &M, bool with_edges=true) const | 
|   | For debugging, copies the constraints to a mesh. 
  | 
|   | 
| vec3  | mesh_vertex (index_t v) const | 
|   | 
| vec3  | mesh_facet_vertex (index_t f, index_t lv) const | 
|   | 
| vec2  | mesh_vertex_UV (index_t v) const | 
|   | 
| vec2  | mesh_facet_vertex_UV (index_t f, index_t lv) const | 
|   | 
| void  | log_err () const | 
|   | 
| Sign  | orient2d (index_t v1, index_t v2, index_t v3) const override | 
|   | Tests the orientation of three vertices.  
  | 
|   | 
| Sign  | incircle (index_t v1, index_t v2, index_t v3, index_t v4) const override | 
|   | Tests the relative position of a point with respect to the circumscribed circle of a triangle.  
  | 
|   | 
| index_t  | create_intersection (index_t e1, index_t i, index_t j, index_t e2, index_t k, index_t l) override | 
|   | Given two segments that have an intersection, create the intersection.  
  | 
|   | 
| void  | get_edge_edge_intersection (index_t e1, index_t e2, ExactPoint &I) const | 
|   | Computes the intersection between two edges.  
  | 
|   | 
| void  | get_edge_edge_intersection_2D (index_t e1, index_t e2, ExactPoint &I) const | 
|   | Auxilliary function used by get_edge_edge_intersection() for the special case when the two edges are coplanar.  
  | 
|   | 
| void  | begin_insert_transaction () override | 
|   | 
| void  | commit_insert_transaction () override | 
|   | 
| void  | rollback_insert_transaction () override | 
|   | 
| index_t  | insert (index_t v, index_t hint=NO_INDEX) | 
|   | Inserts a new point.  
  | 
|   | 
| void  | create_enclosing_triangle (index_t v1, index_t v2, index_t v3) | 
|   | Creates the combinatorics for a first large enclosing triangle.  
  | 
|   | 
| void  | create_enclosing_quad (index_t v1, index_t v2, index_t v3, index_t v4) | 
|   | Creates the combinatorics for a first large enclosing quad.  
  | 
|   | 
| void  | Tset_flag (index_t t, index_t flag) | 
|   | Sets a triangle flag.  
  | 
|   | 
| void  | Treset_flag (index_t t, index_t flag) | 
|   | Resets a triangle flag.  
  | 
|   | 
| bool  | Tflag_is_set (index_t t, index_t flag) | 
|   | Tests a triangle flag.  
  | 
|   | 
| bool  | Tis_in_list (index_t t) const | 
|   | Tests whether a triangle is in a DList.  
  | 
|   | 
| void  | insert_vertex_in_edge (index_t v, index_t t, index_t le, DList &S) | 
|   | Inserts a vertex in an edge.  
  | 
|   | 
| void  | insert_vertex_in_edge (index_t v, index_t t, index_t le) | 
|   | Inserts a vertex in an edge.  
  | 
|   | 
| void  | insert_vertex_in_triangle (index_t v, index_t t, DList &S) | 
|   | Inserts a vertex in a triangle.  
  | 
|   | 
| index_t  | find_intersected_edges (index_t i, index_t j, DList &Q) | 
|   | Finds the edges intersected by a constraint.  
  | 
|   | 
| 
void  | walk_constraint_v (CDT2d_ConstraintWalker &W) | 
|   | Used by find_intersected_edges() 
  | 
|   | 
| 
void  | walk_constraint_t (CDT2d_ConstraintWalker &W, DList &Q) | 
|   | Used by find_intersected_edges() 
  | 
|   | 
| void  | constrain_edges (index_t i, index_t j, DList &Q, DList &N) | 
|   | Constrains an edge by iteratively flipping the intersected edges.  
  | 
|   | 
| void  | Delaunayize_vertex_neighbors (index_t from_v) | 
|   | Restores Delaunay condition starting from the triangles incident to a given vertex.  
  | 
|   | 
| void  | Delaunayize_vertex_neighbors (index_t v, DList &S) | 
|   | Restores Delaunay condition starting from the triangles incident to a given vertex.  
  | 
|   | 
| void  | Delaunayize_new_edges (DList &N) | 
|   | Restores Delaunay condition for a set of edges after inserting a constrained edge.  
  | 
|   | 
| void  | Tset (index_t t, index_t v1, index_t v2, index_t v3, index_t adj1, index_t adj2, index_t adj3, index_t e1cnstr=NO_INDEX, index_t e2cnstr=NO_INDEX, index_t e3cnstr=NO_INDEX) | 
|   | Sets all the combinatorial information of a triangle and edge flags.  
  | 
|   | 
| void  | Trot (index_t t, index_t lv) | 
|   | Rotates indices in triangle t in such a way that a given vertex becomes vertex 0.  
  | 
|   | 
| void  | swap_edge (index_t t1, bool swap_t1_t2=false) | 
|   | Swaps an edge.  
  | 
|   | 
| void  | Tadj_set (index_t t, index_t le, index_t adj) | 
|   | Sets a triangle adjacency relation.  
  | 
|   | 
| index_t  | Topp (index_t t, index_t e=0) const | 
|   | Gets the neighboring triangle vertex opposite to a given vertex.  
  | 
|   | 
| void  | Tadj_back_connect (index_t t1, index_t le1, index_t prev_t2_adj_e2) | 
|   | After having changed connections from triangle to a neighbor, creates connections from neighbor to triangle.  
  | 
|   | 
| index_t  | Tnew () | 
|   | Creates a new triangle.  
  | 
|   | 
| void  | Tset_edge_cnstr_first (index_t t, index_t le, index_t ecit) | 
|   | Sets the constraints list associated with an edge.  
  | 
|   | 
| void  | Tadd_edge_cnstr (index_t t, index_t le, index_t cnstr_id) | 
|   | Adds a constraint to a triangle edge.  
  | 
|   | 
| void  | Tadd_edge_cnstr_with_neighbor (index_t t, index_t le, index_t cnstr_id) | 
|   | Adds a constraint to a triangle edge and to the neighboring edge if it exists.  
  | 
|   | 
| bool  | Tedge_is_constrained (index_t t, index_t le) const | 
|   | Tests whether an edge is constrained.  
  | 
|   | 
| void  | for_each_T_around_v (index_t v, std::function< bool(index_t t, index_t lv)> doit) | 
|   | Calls a user-defined function for each triangle around a vertex.  
  | 
|   | 
| index_t  | locate (index_t v, index_t hint=NO_INDEX, Sign *orient=nullptr) const | 
|   | Locates a vertex.  
  | 
|   | 
| bool  | is_convex_quad (index_t t) const | 
|   | Tests whether triange t and its neighbor accross edge 0 form a strictly convex quad.  
  | 
|   | 
| void  | remove_marked_triangles () | 
|   | Removes all the triangles that have the flag T_MARKED_FLAG set.  
  | 
|   | 
| void  | Tcheck (index_t t) const | 
|   | Consistency check for a triangle.  
  | 
|   | 
| void  | debug_Tcheck (index_t t) const | 
|   | Consistency check for a triangle in debug mode, ignored in release mode.  
  | 
|   | 
| void  | check_combinatorics () const | 
|   | Consistency combinatorial check for all the triangles.  
  | 
|   | 
| void  | debug_check_combinatorics () const | 
|   | Consistency combinatorial check for all the triangles in debug mode, ignored in release mode.  
  | 
|   | 
| virtual void  | check_geometry () const | 
|   | Consistency geometrical check for all the triangles.  
  | 
|   | 
| void  | debug_check_geometry () const | 
|   | Consistency geometrical check for all the triangles in debug mode, ignored in release mode.  
  | 
|   | 
| void  | debug_check_consistency () const | 
|   | Checks both combinatorics and geometry in debug mode, ignored in release mode, aborts on unconsistency.  
  | 
|   | 
| bool  | segment_segment_intersect (index_t u1, index_t u2, index_t v1, index_t v2) const | 
|   | Tests whether two segments have a frank intersection.  
  | 
|   | 
| bool  | segment_edge_intersect (index_t v1, index_t v2, index_t t, index_t le) const | 
|   | Tests whether an edge triangle and a segment have a frank intersection.  
  | 
|   | 
| void  | check_edge_intersections (index_t v1, index_t v2, const DList &Q) | 
|   | Checks that the edges stored in a DList exactly correspond to all edge intersections between a segment and the triangle edges.  
  | 
|   | 
| index_t  | eT (Edge E) | 
|   | Gets a triangle incident a a given edge.  
  | 
|   | 
| index_t  | locate_naive (index_t v, index_t hint=NO_INDEX, Sign *orient=nullptr) const | 
|   | Simpler version of locate() kept for reference.  
  | 
|   | 
| void  | constrain_edges_naive (index_t i, index_t j, DList &Q, vector< Edge > &N) | 
|   | Simpler version of constrain_edges() kept for reference.  
  | 
|   | 
| 
void  | Delaunayize_new_edges_naive (vector< Edge > &N) | 
|   | Simpler version of Delaunayize_new_edges() that uses a vector instead of a DList, kept for reference. 
  | 
|   | 
Meshes a single triangle with the constraints that come from the intersections with the other triangles. 
Inherits CDTBase2d (constrained Delaunay triangulation), and redefines orient2d(), incircle2d() and create_intersection() using vectors with homogeneous coordinates stored as arithmetic expansions (vec2HE) or arbitrary-precision floating point numbers (vec2HEx) if compiled with Tessael's geogramplus extension package. 
Definition at line 70 of file mesh_surface_intersection_internal.h.