Public Types | Static Public Member Functions | Static Protected Member Functions
vcg::tri::HalfEdgeTopology< MeshType > Class Template Reference

Class containing functions to modify the topology of a halfedge based mesh. More...

#include <halfedge_topology.h>

List of all members.

Public Types

typedef MeshType::EdgeIterator EdgeIterator
typedef MeshType::EdgePointer EdgePointer
typedef MeshType::FaceIterator FaceIterator
typedef MeshType::FacePointer FacePointer
typedef MeshType::HEdgeIterator HEdgeIterator
typedef MeshType::HEdgePointer HEdgePointer
typedef MeshType::VertexIterator VertexIterator
typedef MeshType::VertexPointer VertexPointer

Static Public Member Functions

static FacePointer add_face (MeshType &m, vector< VertexPointer > &vps)
static bool can_remove_face (FacePointer fp)
static bool check_diagonal_collapse_quad (HEdgePointer hp)
static VertexPointer diagonal_collapse_quad (MeshType &m, FacePointer fp, VertexPointer vp)
static FacePointer doublet_remove_quad (MeshType &m, VertexPointer vp)
static VertexPointer edge_collapse (MeshType &m, HEdgePointer hp, VertexPointer vp)
static VertexPointer edge_collapse_quad (MeshType &m, HEdgePointer hp, VertexPointer vp)
static HEdgePointer edge_rotate_quad (HEdgePointer hp, bool cw)
static vector< HEdgePointerfind_doublet_hedges_quad (FacePointer fp)
static vector< FacePointerget_adjacent_faces (FacePointer fp)
static vector< FacePointerget_incident_faces (VertexPointer vp, HEdgePointer starting_he=NULL)
static vector< HEdgePointerget_incident_hedges (VertexPointer vp, HEdgePointer starting_he=NULL)
static set< FacePointergetFaces (VertexPointer vp)
static vector< VertexPointergetVertices (VertexPointer vp)
static vector< VertexPointergetVertices (FacePointer fp, HEdgePointer starting_he=NULL)
static bool has_doublet_quad (FacePointer fp)
static bool is_nonManifold_vertex (MeshType &m, VertexPointer vp)
static bool is_nonManifold_vertex (VertexPointer vp)
static bool is_singlet_quad (FacePointer fp)
static bool isBorderVertex (VertexPointer vp)
static VertexPointer opp_vert (HEdgePointer hp)
static bool remove_face (MeshType &m, FacePointer fp)
static HEdgePointer singlet_remove_quad (MeshType &m, FacePointer fp)
static VertexPointer vertex_rotate_quad (VertexPointer vp)
static int vertex_valence (VertexPointer vp)

Static Protected Member Functions

static FacePointer add_face_unsafe (MeshType &m, vector< VertexPointer > &vps)
static FacePointer add_face_unsafe (MeshType &m, vector< VertexPointer > &vps, vector< HEdgePointer > &hps, vector< bool > &non_manifold_vertices)
static bool can_add_hedge (vector< VertexPointer > &vps, vector< HEdgePointer > &hps)
static void change_vertex (VertexPointer old_vp, VertexPointer new_vp)
static vector< HEdgePointergetHEdges (FacePointer fp, HEdgePointer starting_he=NULL)
static void remove_face_unsafe (MeshType &m, FacePointer fp)

Detailed Description

template<class MeshType>
class vcg::tri::HalfEdgeTopology< MeshType >

Class containing functions to modify the topology of a halfedge based mesh.

Definition at line 19 of file halfedge_topology.h.


Member Typedef Documentation

template<class MeshType>
typedef MeshType::EdgeIterator vcg::tri::HalfEdgeTopology< MeshType >::EdgeIterator

Definition at line 29 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::EdgePointer vcg::tri::HalfEdgeTopology< MeshType >::EdgePointer

Definition at line 24 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::FaceIterator vcg::tri::HalfEdgeTopology< MeshType >::FaceIterator

Definition at line 31 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::FacePointer vcg::tri::HalfEdgeTopology< MeshType >::FacePointer

Definition at line 26 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::HEdgeIterator vcg::tri::HalfEdgeTopology< MeshType >::HEdgeIterator

Definition at line 30 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::HEdgePointer vcg::tri::HalfEdgeTopology< MeshType >::HEdgePointer

Definition at line 25 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::VertexIterator vcg::tri::HalfEdgeTopology< MeshType >::VertexIterator

Definition at line 28 of file halfedge_topology.h.

template<class MeshType>
typedef MeshType::VertexPointer vcg::tri::HalfEdgeTopology< MeshType >::VertexPointer

Definition at line 23 of file halfedge_topology.h.


Member Function Documentation

template<class MeshType>
static FacePointer vcg::tri::HalfEdgeTopology< MeshType >::add_face ( MeshType &  m,
vector< VertexPointer > &  vps 
) [inline, static]

Adds a face in a mesh, checking if the operation is possible.

Parameters:
mMesh
vpsVector of vertices (in ccw order) that will belong to the new face
Returns:
Pointer to the new face if it has been inserted, NULL otherwise

Definition at line 619 of file halfedge_topology.h.

template<class MeshType>
static FacePointer vcg::tri::HalfEdgeTopology< MeshType >::add_face_unsafe ( MeshType &  m,
vector< VertexPointer > &  vps 
) [inline, static, protected]

Adds a face in a mesh without any check

Parameters:
mMesh
vpsVector of vertices (in ccw order) that will belong to the new face
Returns:
Pointer to the new face

Definition at line 688 of file halfedge_topology.h.

template<class MeshType>
static FacePointer vcg::tri::HalfEdgeTopology< MeshType >::add_face_unsafe ( MeshType &  m,
vector< VertexPointer > &  vps,
vector< HEdgePointer > &  hps,
vector< bool > &  non_manifold_vertices 
) [inline, static, protected]

Adds a face in a mesh without any check

Parameters:
mMesh
vpsVector of vertices (in ccw order) that will belong to the new face
hpsVector of hedges (in ccw order) that will belong to the new face
non_manifold_verticesVector of booleans denoting on the i-th position if the i-th vertex is non-manifold
Returns:
Pointer to the new face

Definition at line 717 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::can_add_hedge ( vector< VertexPointer > &  vps,
vector< HEdgePointer > &  hps 
) [inline, static, protected]

Checks if the next hedge can be inserted into hps. If true, inserts the hedge into hps. If false, inserts NULL.

Parameters:
vpsVector of vertices (in ccw order) that will belong to the new face
hpsVector of hedges already checked
Return values:
trueif hedge can be inserted
falseotherwise

Definition at line 1046 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::can_remove_face ( FacePointer  fp) [inline, static]

Checks if a face can be removed

Parameters:
fpFace to check
Return values:
trueif the face can be removed
falseotherwise

Definition at line 1130 of file halfedge_topology.h.

template<class MeshType>
static void vcg::tri::HalfEdgeTopology< MeshType >::change_vertex ( VertexPointer  old_vp,
VertexPointer  new_vp 
) [inline, static, protected]

Connects to a new vertex all hedges incident to a vertex

Parameters:
old_vpthe old vertex to be disconnected
new_vpthe new vertex to be connected

Definition at line 1726 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::check_diagonal_collapse_quad ( HEdgePointer  hp) [inline, static]

Checks if a diagonal can be collapsed

Parameters:
hpHedge whose vertex is one of the two vertices of the diagonal
Return values:
trueif diagonal can be collapsed
falseif diagonal cannot be collapsed

Definition at line 1170 of file halfedge_topology.h.

template<class MeshType>
static VertexPointer vcg::tri::HalfEdgeTopology< MeshType >::diagonal_collapse_quad ( MeshType &  m,
FacePointer  fp,
VertexPointer  vp 
) [inline, static]

Collpases a diagonal in a quad.

Parameters:
mMesh
fpFace where diagonal resides
vpOne of the two vertices of the diagonal
Returns:
Pointer to the new vertex

Definition at line 81 of file halfedge_topology.h.

template<class MeshType>
static FacePointer vcg::tri::HalfEdgeTopology< MeshType >::doublet_remove_quad ( MeshType &  m,
VertexPointer  vp 
) [inline, static]

Removes a doublet merging the two quads in one

Parameters:
mMesh
vpVertex shared by the two consecutive edges of the doublet
Returns:
Pointer to the new face

Definition at line 223 of file halfedge_topology.h.

template<class MeshType>
static VertexPointer vcg::tri::HalfEdgeTopology< MeshType >::edge_collapse ( MeshType &  m,
HEdgePointer  hp,
VertexPointer  vp 
) [inline, static]

Collapses a generic edge

Parameters:
mMesh
hpEdge to be collapsed
vpVertex to be deleted
Returns:
Pointer to the other vertex belonging to the collapsed edge

Definition at line 551 of file halfedge_topology.h.

template<class MeshType>
static VertexPointer vcg::tri::HalfEdgeTopology< MeshType >::edge_collapse_quad ( MeshType &  m,
HEdgePointer  hp,
VertexPointer  vp 
) [inline, static]

Collpases an edge shared by two quads, generating only quads. Made by a series of a vertex rotation and a diagonal collapse.

Parameters:
mMesh
hphegde to be collapsed
vpVertex that will be rotated
Returns:
Pointer to the new vertex

Definition at line 44 of file halfedge_topology.h.

template<class MeshType>
static HEdgePointer vcg::tri::HalfEdgeTopology< MeshType >::edge_rotate_quad ( HEdgePointer  hp,
bool  cw 
) [inline, static]

Rotates a non-border edge shared by two quads

Parameters:
hpEdge to be rotated
cwflag denoting a clockwise or counter-clockwise rotation
Returns:
Pointer to the rotated edge

Definition at line 391 of file halfedge_topology.h.

template<class MeshType>
static vector<HEdgePointer> vcg::tri::HalfEdgeTopology< MeshType >::find_doublet_hedges_quad ( FacePointer  fp) [inline, static]

Gets all hedges whose vertex is into a doublet

Parameters:
fpFace to check
Returns:
Vector containing the hedges

Definition at line 1628 of file halfedge_topology.h.

template<class MeshType>
static vector<FacePointer> vcg::tri::HalfEdgeTopology< MeshType >::get_adjacent_faces ( FacePointer  fp) [inline, static]

Definition at line 1542 of file halfedge_topology.h.

template<class MeshType>
static vector<FacePointer> vcg::tri::HalfEdgeTopology< MeshType >::get_incident_faces ( VertexPointer  vp,
HEdgePointer  starting_he = NULL 
) [inline, static]

Gets all faces incident to a vertex

Parameters:
vpVertex
starting_heA hedge from which to start
Returns:
Vector containing the incident faces

Definition at line 1511 of file halfedge_topology.h.

template<class MeshType>
static vector<HEdgePointer> vcg::tri::HalfEdgeTopology< MeshType >::get_incident_hedges ( VertexPointer  vp,
HEdgePointer  starting_he = NULL 
) [inline, static]

Gets all hedges incident to a vertex

Parameters:
vpVertex
starting_heA hedge from which to start navigation
Returns:
Vector containing the incident hedges

Definition at line 1575 of file halfedge_topology.h.

template<class MeshType>
static set<FacePointer> vcg::tri::HalfEdgeTopology< MeshType >::getFaces ( VertexPointer  vp) [inline, static]

Gets faces on the 1-ring of a vertex

Parameters:
vpVertex
Returns:
Set containing faces

Definition at line 1373 of file halfedge_topology.h.

template<class MeshType>
static vector<HEdgePointer> vcg::tri::HalfEdgeTopology< MeshType >::getHEdges ( FacePointer  fp,
HEdgePointer  starting_he = NULL 
) [inline, static, protected]

Gets all hedges incident to a face

Parameters:
fpFace
starting_heA hedge in the face from which to start
Returns:
Vector containing the incident hedges

Definition at line 1472 of file halfedge_topology.h.

template<class MeshType>
static vector<VertexPointer> vcg::tri::HalfEdgeTopology< MeshType >::getVertices ( VertexPointer  vp) [inline, static]

Gets vertices on the 1-ring of a vertex

Parameters:
vpVertex. It must be a non-border vertex.
Returns:
Vector containing vertices

Definition at line 1331 of file halfedge_topology.h.

template<class MeshType>
static vector<VertexPointer> vcg::tri::HalfEdgeTopology< MeshType >::getVertices ( FacePointer  fp,
HEdgePointer  starting_he = NULL 
) [inline, static]

Gets all vertices incident to a face

Parameters:
fpFace
starting_heA hedge in the face from which to start
Returns:
Vector containing the incident vertices

Definition at line 1431 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::has_doublet_quad ( FacePointer  fp) [inline, static]

Checks if a face has doublets

Parameters:
fpFace to check
Return values:
trueif face has at least a doublet
falseif face hasn't any doublet

Definition at line 1616 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::is_nonManifold_vertex ( MeshType &  m,
VertexPointer  vp 
) [inline, static]

Checks if a vertex is non-manifold, comparing local and global information (slow)

Parameters:
mMesh
vpVertex to check
Return values:
trueif vertex is non-manifold
falseif verex is manifold

Definition at line 1254 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::is_nonManifold_vertex ( VertexPointer  vp) [inline, static]

Checks if a vertex is non-manifold, based only on local informations

Parameters:
vpVertex to check
Return values:
trueif vertex is non-manifold
falseif verex is manifold

Definition at line 1284 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::is_singlet_quad ( FacePointer  fp) [inline, static]

Checks if a face is a singlet

Parameters:
fpFace to check
Return values:
trueif face is a singlet
falseif face isn't a singlet

Definition at line 1401 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::isBorderVertex ( VertexPointer  vp) [inline, static]

Checks if a vertex is a border vertex

Parameters:
vpVertex to check
Return values:
trueif vertex is a border vertex
falseif vertex isn't a border vertex

Definition at line 1663 of file halfedge_topology.h.

template<class MeshType>
static VertexPointer vcg::tri::HalfEdgeTopology< MeshType >::opp_vert ( HEdgePointer  hp) [inline, static]

Shortcut to get the second vertex of an edge

Parameters:
hpHedge
Returns:
Opposite vertex

Definition at line 1319 of file halfedge_topology.h.

template<class MeshType>
static bool vcg::tri::HalfEdgeTopology< MeshType >::remove_face ( MeshType &  m,
FacePointer  fp 
) [inline, static]

Removes a face in a mesh, checking if the operation is possible

Parameters:
mMesh
fpface to be removed
Return values:
trueif face has been removed
falseotherwise

Definition at line 659 of file halfedge_topology.h.

template<class MeshType>
static void vcg::tri::HalfEdgeTopology< MeshType >::remove_face_unsafe ( MeshType &  m,
FacePointer  fp 
) [inline, static, protected]

Removes a face in a mesh, without any check

Parameters:
mMesh
fpFace to be removed

Definition at line 943 of file halfedge_topology.h.

template<class MeshType>
static HEdgePointer vcg::tri::HalfEdgeTopology< MeshType >::singlet_remove_quad ( MeshType &  m,
FacePointer  fp 
) [inline, static]

Removes a singlet replacing it with an edge

Parameters:
mMesh
fpFace that should be a singlet quad
Returns:
Pointer to an halfdedge representing the new edge

Definition at line 296 of file halfedge_topology.h.

template<class MeshType>
static VertexPointer vcg::tri::HalfEdgeTopology< MeshType >::vertex_rotate_quad ( VertexPointer  vp) [inline, static]

Rotates a non-border vertex shared by only quads

Parameters:
vpVertex to be rotated
Returns:
Pointer to the rotated vertex

Definition at line 485 of file halfedge_topology.h.

template<class MeshType>
static int vcg::tri::HalfEdgeTopology< MeshType >::vertex_valence ( VertexPointer  vp) [inline, static]

Computes valence of a vertex

Parameters:
vpVertex
Returns:
Vertex valence

Definition at line 1693 of file halfedge_topology.h.


The documentation for this class was generated from the following file:


shape_reconstruction
Author(s): Roberto Martín-Martín
autogenerated on Sat Jun 8 2019 18:42:36