$darkmode
Class containing functions to modify the topology of a halfedge based mesh. More...
#include <halfedge_topology.h>
Static Public Member Functions | |
| static VertexPointer | edge_collapse_quad (MeshType &m, HEdgePointer hp, VertexPointer vp) |
| static VertexPointer | diagonal_collapse_quad (MeshType &m, FacePointer fp, VertexPointer vp) |
| static FacePointer | doublet_remove_quad (MeshType &m, VertexPointer vp) |
| static HEdgePointer | singlet_remove_quad (MeshType &m, FacePointer fp) |
| static HEdgePointer | edge_rotate_quad (HEdgePointer hp, bool cw) |
| static VertexPointer | vertex_rotate_quad (VertexPointer vp) |
| static VertexPointer | edge_collapse (MeshType &m, HEdgePointer hp, VertexPointer vp) |
| static FacePointer | add_face (MeshType &m, std::vector< VertexPointer > &vps) |
| static bool | remove_face (MeshType &m, FacePointer fp) |
| static bool | can_remove_face (FacePointer fp) |
| static bool | check_diagonal_collapse_quad (HEdgePointer hp) |
| static bool | is_nonManifold_vertex (MeshType &m, VertexPointer vp) |
| static bool | is_nonManifold_vertex (VertexPointer vp) |
| static VertexPointer | opp_vert (HEdgePointer hp) |
| static std::vector< VertexPointer > | getVertices (VertexPointer vp) |
| static std::set< FacePointer > | getFaces (VertexPointer vp) |
| static bool | is_singlet_quad (FacePointer fp) |
| static std::vector< VertexPointer > | getVertices (FacePointer fp, HEdgePointer starting_he=NULL) |
| static std::vector< FacePointer > | get_incident_faces (VertexPointer vp, HEdgePointer starting_he=NULL) |
| static std::vector< FacePointer > | get_adjacent_faces (FacePointer fp) |
| static std::vector< HEdgePointer > | get_incident_hedges (VertexPointer vp, HEdgePointer starting_he=NULL) |
| static bool | has_doublet_quad (FacePointer fp) |
| static std::vector< HEdgePointer > | find_doublet_hedges_quad (FacePointer fp) |
| static bool | isBorderVertex (VertexPointer vp) |
| static int | vertex_valence (VertexPointer vp) |
Static Protected Member Functions | |
| static FacePointer | add_face_unsafe (MeshType &m, std::vector< VertexPointer > &vps) |
| static FacePointer | add_face_unsafe (MeshType &m, std::vector< VertexPointer > &vps, std::vector< HEdgePointer > &hps, std::vector< bool > &non_manifold_vertices) |
| static void | remove_face_unsafe (MeshType &m, FacePointer fp) |
| static bool | can_add_hedge (std::vector< VertexPointer > &vps, std::vector< HEdgePointer > &hps) |
| static std::vector< HEdgePointer > | getHEdges (FacePointer fp, HEdgePointer starting_he=NULL) |
| static void | change_vertex (VertexPointer old_vp, VertexPointer new_vp) |
Class containing functions to modify the topology of a halfedge based mesh.
|
inlinestatic |
Adds a face in a mesh, checking if the operation is possible.
| m | Mesh |
| vps | Vector of vertices (in ccw order) that will belong to the new face |
|
inlinestaticprotected |
Adds a face in a mesh without any check
| m | Mesh |
| vps | Vector of vertices (in ccw order) that will belong to the new face |
|
inlinestaticprotected |
Adds a face in a mesh without any check
| m | Mesh |
| vps | Vector of vertices (in ccw order) that will belong to the new face |
| hps | Vector of hedges (in ccw order) that will belong to the new face |
| non_manifold_vertices | Vector of booleans denoting on the i-th position if the i-th vertex is non-manifold |
|
inlinestaticprotected |
Checks if the next hedge can be inserted into hps. If true, inserts the hedge into hps. If false, inserts NULL.
| vps | Vector of vertices (in ccw order) that will belong to the new face |
| hps | Vector of hedges already checked |
| true | if hedge can be inserted |
| false | otherwise |
|
inlinestatic |
Checks if a face can be removed
| fp | Face to check |
| true | if the face can be removed |
| false | otherwise |
|
inlinestaticprotected |
Connects to a new vertex all hedges incident to a vertex
| old_vp | the old vertex to be disconnected |
| new_vp | the new vertex to be connected |
|
inlinestatic |
Checks if a diagonal can be collapsed
| hp | Hedge whose vertex is one of the two vertices of the diagonal |
| true | if diagonal can be collapsed |
| false | if diagonal cannot be collapsed |
|
inlinestatic |
Collpases a diagonal in a quad.
| m | Mesh |
| fp | Face where diagonal resides |
| vp | One of the two vertices of the diagonal |
|
inlinestatic |
Removes a doublet merging the two quads in one
| m | Mesh |
| vp | Vertex shared by the two consecutive edges of the doublet |
|
inlinestatic |
Collapses a generic edge
| m | Mesh |
| hp | Edge to be collapsed |
| vp | Vertex to be deleted |
|
inlinestatic |
Collpases an edge shared by two quads, generating only quads. Made by a series of a vertex rotation and a diagonal collapse.
| m | Mesh |
| hp | hegde to be collapsed |
| vp | Vertex that will be rotated |
|
inlinestatic |
Rotates a non-border edge shared by two quads
| hp | Edge to be rotated |
| cw | flag denoting a clockwise or counter-clockwise rotation |
|
inlinestatic |
Gets all hedges whose vertex is into a doublet
| fp | Face to check |
|
inlinestatic |
Gets all faces incident to a vertex
| vp | Vertex |
| starting_he | A hedge from which to start |
|
inlinestatic |
Gets all hedges incident to a vertex
| vp | Vertex |
| starting_he | A hedge from which to start navigation |
|
inlinestatic |
Gets faces on the 1-ring of a vertex
| vp | Vertex |
|
inlinestaticprotected |
Gets all hedges incident to a face
| fp | Face |
| starting_he | A hedge in the face from which to start |
|
inlinestatic |
Gets all vertices incident to a face
| fp | Face |
| starting_he | A hedge in the face from which to start |
|
inlinestatic |
Gets vertices on the 1-ring of a vertex
| vp | Vertex. It must be a non-border vertex. |
|
inlinestatic |
Checks if a face has doublets
| fp | Face to check |
| true | if face has at least a doublet |
| false | if face hasn't any doublet |
|
inlinestatic |
Checks if a vertex is non-manifold, comparing local and global information (slow)
| m | Mesh |
| vp | Vertex to check |
| true | if vertex is non-manifold |
| false | if verex is manifold |
|
inlinestatic |
Checks if a vertex is non-manifold, based only on local informations
| vp | Vertex to check |
| true | if vertex is non-manifold |
| false | if verex is manifold |
|
inlinestatic |
Checks if a face is a singlet
| fp | Face to check |
| true | if face is a singlet |
| false | if face isn't a singlet |
|
inlinestatic |
Checks if a vertex is a border vertex
| vp | Vertex to check |
| true | if vertex is a border vertex |
| false | if vertex isn't a border vertex |
|
inlinestatic |
Shortcut to get the second vertex of an edge
| hp | Hedge |
|
inlinestatic |
Removes a face in a mesh, checking if the operation is possible
| m | Mesh |
| fp | face to be removed |
| true | if face has been removed |
| false | otherwise |
|
inlinestaticprotected |
Removes a face in a mesh, without any check
| m | Mesh |
| fp | Face to be removed |
|
inlinestatic |
Removes a singlet replacing it with an edge
| m | Mesh |
| fp | Face that should be a singlet quad |
|
inlinestatic |
Rotates a non-border vertex shared by only quads
| vp | Vertex to be rotated |
|
inlinestatic |
Computes valence of a vertex
| vp | Vertex |