|
|
|
| SurfaceMesh () |
| | default constructor
|
| |
|
virtual | ~SurfaceMesh () |
| | destructor
|
| |
| | SurfaceMesh (const SurfaceMesh &rhs) |
| | copy constructor: copies rhs to *this.
|
| |
|
SurfaceMesh & | operator= (const SurfaceMesh &rhs) |
| | assign rhs to *this. performs a deep copy of all properties.
|
| |
|
SurfaceMesh & | assign (const SurfaceMesh &rhs) |
| | assign rhs to *this. does not copy custom properties.
|
| |
|
|
Vertex | add_vertex (const Point &p) |
| | add a new vertex with position p
|
| |
| Face | add_face (const std::vector< Vertex > &vertices) |
| | Add a new face with vertex list vertices.
|
| |
| Face | add_triangle (Vertex v0, Vertex v1, Vertex v2) |
| | add a new triangle connecting vertices v0, v1, v2
|
| |
| Face | add_quad (Vertex v0, Vertex v1, Vertex v2, Vertex v3) |
| | add a new quad connecting vertices v0, v1, v2, v3
|
| |
|
| size_t | vertices_size () const |
| |
| size_t | halfedges_size () const |
| |
| size_t | edges_size () const |
| |
| size_t | faces_size () const |
| |
| size_t | n_vertices () const |
| |
| size_t | n_halfedges () const |
| |
| size_t | n_edges () const |
| |
| size_t | n_faces () const |
| |
| bool | is_empty () const |
| |
|
virtual void | clear () |
| | clear mesh: remove all vertices, edges, faces
|
| |
|
void | free_memory () |
| | remove unused memory from vectors
|
| |
|
void | reserve (size_t nvertices, size_t nedges, size_t nfaces) |
| | reserve memory (mainly used in file readers)
|
| |
|
void | garbage_collection () |
| | remove deleted elements
|
| |
| bool | is_deleted (Vertex v) const |
| |
| bool | is_deleted (Halfedge h) const |
| |
| bool | is_deleted (Edge e) const |
| |
| bool | is_deleted (Face f) const |
| |
| bool | is_valid (Vertex v) const |
| |
| bool | is_valid (Halfedge h) const |
| |
| bool | is_valid (Edge e) const |
| |
| bool | is_valid (Face f) const |
| |
|
| Halfedge | halfedge (Vertex v) const |
| |
|
void | set_halfedge (Vertex v, Halfedge h) |
| | set the outgoing halfedge of vertex v to h
|
| |
| bool | is_boundary (Vertex v) const |
| |
| bool | is_isolated (Vertex v) const |
| |
| bool | is_manifold (Vertex v) const |
| |
| Vertex | to_vertex (Halfedge h) const |
| |
| Vertex | from_vertex (Halfedge h) const |
| |
|
void | set_vertex (Halfedge h, Vertex v) |
| | sets the vertex the halfedge h points to to v
|
| |
| Face | face (Halfedge h) const |
| |
|
void | set_face (Halfedge h, Face f) |
| | sets the incident face to halfedge h to f
|
| |
| Halfedge | next_halfedge (Halfedge h) const |
| |
|
void | set_next_halfedge (Halfedge h, Halfedge nh) |
| | sets the next halfedge of h within the face to nh
|
| |
|
void | set_prev_halfedge (Halfedge h, Halfedge ph) |
| | sets the previous halfedge of h and the next halfedge of ph to nh
|
| |
| Halfedge | prev_halfedge (Halfedge h) const |
| |
| Halfedge | opposite_halfedge (Halfedge h) const |
| |
| Halfedge | ccw_rotated_halfedge (Halfedge h) const |
| |
| Halfedge | cw_rotated_halfedge (Halfedge h) const |
| |
| Edge | edge (Halfedge h) const |
| |
| bool | is_boundary (Halfedge h) const |
| |
| Halfedge | halfedge (Edge e, unsigned int i) const |
| |
| Vertex | vertex (Edge e, unsigned int i) const |
| |
| Face | face (Edge e, unsigned int i) const |
| |
| bool | is_boundary (Edge e) const |
| |
| Halfedge | halfedge (Face f) const |
| |
|
void | set_halfedge (Face f, Halfedge h) |
| | sets the halfedge of face f to h
|
| |
| bool | is_boundary (Face f) const |
| |
|
| template<class T > |
| VertexProperty< T > | add_vertex_property (const std::string &name, const T t=T()) |
| | add a vertex property of type T with name name and default value t.
|
| |
| template<class T > |
| VertexProperty< T > | get_vertex_property (const std::string &name) const |
| | get the vertex property named name of type T.
|
| |
| template<class T > |
| VertexProperty< T > | vertex_property (const std::string &name, const T t=T()) |
| | if a vertex property of type T with name name exists, it is returned.
|
| |
|
template<class T > |
| void | remove_vertex_property (VertexProperty< T > &p) |
| | remove the vertex property p
|
| |
|
bool | has_vertex_property (const std::string &name) const |
| | does the mesh have a vertex property with name name?
|
| |
| template<class T > |
| HalfedgeProperty< T > | add_halfedge_property (const std::string &name, const T t=T()) |
| | add a halfedge property of type T with name name and default value t.
|
| |
| template<class T > |
| EdgeProperty< T > | add_edge_property (const std::string &name, const T t=T()) |
| | add a edge property of type T with name name and default value t.
|
| |
| template<class T > |
| HalfedgeProperty< T > | get_halfedge_property (const std::string &name) const |
| | get the halfedge property named name of type T.
|
| |
| template<class T > |
| EdgeProperty< T > | get_edge_property (const std::string &name) const |
| | get the edge property named name of type T.
|
| |
| template<class T > |
| HalfedgeProperty< T > | halfedge_property (const std::string &name, const T t=T()) |
| | if a halfedge property of type T with name name exists, it is returned.
|
| |
| template<class T > |
| EdgeProperty< T > | edge_property (const std::string &name, const T t=T()) |
| | if an edge property of type T with name name exists, it is returned.
|
| |
|
template<class T > |
| void | remove_halfedge_property (HalfedgeProperty< T > &p) |
| | remove the halfedge property p
|
| |
|
bool | has_halfedge_property (const std::string &name) const |
| | does the mesh have a halfedge property with name name?
|
| |
|
template<class T > |
| void | remove_edge_property (EdgeProperty< T > &p) |
| | remove the edge property p
|
| |
|
bool | has_edge_property (const std::string &name) const |
| | does the mesh have an edge property with name name?
|
| |
| std::vector< std::string > | vertex_properties () const |
| |
| std::vector< std::string > | halfedge_properties () const |
| |
| std::vector< std::string > | edge_properties () const |
| |
| template<class T > |
| FaceProperty< T > | add_face_property (const std::string &name, const T t=T()) |
| | add a face property of type T with name name and default value t.
|
| |
| template<class T > |
| FaceProperty< T > | get_face_property (const std::string &name) const |
| | get the face property named name of type T.
|
| |
| template<class T > |
| FaceProperty< T > | face_property (const std::string &name, const T t=T()) |
| | if a face property of type T with name name exists, it is returned.
|
| |
|
template<class T > |
| void | remove_face_property (FaceProperty< T > &p) |
| | remove the face property p
|
| |
|
bool | has_face_property (const std::string &name) const |
| | does the mesh have a face property with name name?
|
| |
| std::vector< std::string > | face_properties () const |
| |
|
| VertexIterator | vertices_begin () const |
| |
| VertexIterator | vertices_end () const |
| |
| VertexContainer | vertices () const |
| |
| HalfedgeIterator | halfedges_begin () const |
| |
| HalfedgeIterator | halfedges_end () const |
| |
| HalfedgeContainer | halfedges () const |
| |
| EdgeIterator | edges_begin () const |
| |
| EdgeIterator | edges_end () const |
| |
| EdgeContainer | edges () const |
| |
| VertexAroundVertexCirculator | vertices (Vertex v) const |
| |
| EdgeAroundVertexCirculator | edges (Vertex v) const |
| |
| HalfedgeAroundVertexCirculator | halfedges (Vertex v) const |
| |
| FaceIterator | faces_begin () const |
| |
| FaceIterator | faces_end () const |
| |
| FaceContainer | faces () const |
| |
| FaceAroundVertexCirculator | faces (Vertex v) const |
| |
| VertexAroundFaceCirculator | vertices (Face f) const |
| |
| HalfedgeAroundFaceCirculator | halfedges (Face f) const |
| |
|
| Halfedge | insert_vertex (Edge e, const Point &p) |
| | Subdivide the edge e = (v0,v1) by splitting it into the two edge (v0,p) and (p,v1).
|
| |
| Halfedge | insert_vertex (Edge e, Vertex v) |
| | Subdivide the edge e = (v0,v1) by splitting it into the two edge (v0,v) and (v,v1).
|
| |
| Halfedge | insert_vertex (Halfedge h0, Vertex v) |
| | Subdivide the halfedge h = (v0,v1) by splitting it into the two halfedges (v0,v) and (v,v1).
|
| |
|
Halfedge | find_halfedge (Vertex start, Vertex end) const |
| | find the halfedge from start to end
|
| |
|
Edge | find_edge (Vertex a, Vertex b) const |
| | find the edge (a,b)
|
| |
| bool | is_triangle_mesh () const |
| |
| bool | is_quad_mesh () const |
| |
| bool | is_collapse_ok (Halfedge v0v1) const |
| |
| void | collapse (Halfedge h) |
| | Collapse the halfedge h by moving its start vertex into its target vertex.
|
| |
| bool | is_removal_ok (Edge e) const |
| |
| bool | remove_edge (Edge e) |
| | Remove edge and merge its two incident faces into one.
|
| |
| Vertex | split (Face f, const Point &p) |
| | Split the face f by first adding point p to the mesh and then inserting edges between p and the vertices of f.
|
| |
| void | split (Face f, Vertex v) |
| | Split the face f by inserting edges between v and the vertices of f.
|
| |
| Halfedge | split (Edge e, const Point &p) |
| | Split the edge e by first adding point p to the mesh and then connecting it to the two vertices of the adjacent triangles that are opposite to edge e.
|
| |
| Halfedge | split (Edge e, Vertex v) |
| | Split the edge e by connecting vertex v it to the two vertices of the adjacent triangles that are opposite to edge e.
|
| |
| Halfedge | insert_edge (Halfedge h0, Halfedge h1) |
| | Insert edge between the to-vertices of h0 and h1.
|
| |
| bool | is_flip_ok (Edge e) const |
| | Check whether flipping edge e is topologically OK.
|
| |
| void | flip (Edge e) |
| | Flip the edge e .
|
| |
|
size_t | valence (Vertex v) const |
| | Compute the valence of vertex v (number of incident edges).
|
| |
|
size_t | valence (Face f) const |
| | Compute the valence of face f (its number of vertices).
|
| |
| void | delete_vertex (Vertex v) |
| | Delete vertex v from the mesh.
|
| |
| void | delete_edge (Edge e) |
| | Delete edge e from the mesh.
|
| |
| void | delete_face (Face f) |
| | Deletes face f from the mesh.
|
| |
|
|
const Point & | position (Vertex v) const |
| | position of a vertex (read only)
|
| |
|
Point & | position (Vertex v) |
| | position of a vertex
|
| |
| std::vector< Point > & | positions () |
| |
|
| Vertex | new_vertex () |
| | Allocate a new vertex, resize vertex properties accordingly.
|
| |
| Halfedge | new_edge () |
| | Allocate a new edge, resize edge and halfedge properties accordingly.
|
| |
| Halfedge | new_edge (Vertex start, Vertex end) |
| | Allocate a new edge, resize edge and halfedge properties accordingly.
|
| |
| Face | new_face () |
| | Allocate a new face, resize face properties accordingly.
|
| |
A class for representing polygon surface meshes.
This class implements a half-edge data structure for surface meshes. See [21] for details on the design and implementation.
- Note
- This class only supports 2-manifold surface meshes with boundary.