MEPP2 Project
Namespaces | Typedefs | Functions
FEVV::Operators Namespace Reference

Namespaces

 Geometry
 

Typedefs

typedef FEVV::DataStructures::AIF::AIFTopologyHelpers AIFHelpers
 

Functions

template<typename MutableFaceIncidentGraph >
void collapse_edge_keep_source (MutableFaceIncidentGraph &g, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor &e)
 Collapse an edge of the graph. The edge to collapse is given as a non-oriented edge. The edge source vertex is kept, and the edge target vertex is removed from the graph. More...
 
template<typename MutableFaceIncidentGraph >
void collapse_edge_keep_target (MutableFaceIncidentGraph &g, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor &e)
 Collapse an edge of the graph. The edge to collapse is given as a non-oriented edge. The edge target vertex is kept, and the edge source vertex is removed from the graph. More...
 
template<typename MutableFaceIncidentGraph >
static void replace_similar_edges (typename boost::graph_traits< MutableFaceIncidentGraph >::face_descriptor face, const typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor old_edge, const typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor new_edge, MutableFaceIncidentGraph &g)
 Replace the old_edge incident edge of face by the new_edge if old_edge and new_edge were similar/parallel edges. More...
 
template<typename MutableFaceIncidentGraph >
static void merge_similar_edges (typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor e_to_keep, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor e_to_remove, MutableFaceIncidentGraph &g)
 For all faces incident to e_to_remove, if e_to_keep and e_to_remove were similar/parallel edges then these faces are made incident to e_to_keep by replacing e_to_remove by e_to_keep among their incident edges. Then each face is added to e_to_keep' incident faces. More...
 
template<typename MutableFaceIncidentGraph >
static void resolve_similar_incident_edges (typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor v_to_keep, MutableFaceIncidentGraph &g)
 Remove/resolve similar/parallel edges for all incident edges of v_to_keep vertex. More...
 
template<typename MutableFaceIncidentGraph >
static void resolve_similar_incident_faces (typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor v_to_keep, MutableFaceIncidentGraph &g, bool take_into_account_face_rientation=false)
 Remove/resolve similar faces for all incident faces of v_to_keep vertex. More...
 
template<typename MutableFaceIncidentGraph >
static std::vector< std::pair< typename boost::graph_traits< MutableFaceIncidentGraph >::face_descriptor, bool > > resolve_similar_incident_faces (typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor v_to_keep, MutableFaceIncidentGraph &g, const std::set< typename boost::graph_traits< MutableFaceIncidentGraph >::face_descriptor > &faces_to_preserve_range, bool take_into_account_face_rientation)
 Remove/resolve similar faces for all incident faces of v_to_keep vertex. More...
 
template<typename MutableFaceIncidentGraph >
boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor split_edge (MutableFaceIncidentGraph &g, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor e, typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor midpoint_vertex)
 Split an edge of the graph. More...
 
template<typename MutableFaceIncidentGraph >
boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor split_edge (MutableFaceIncidentGraph &g, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor e)
 Split an edge of the graph. More...
 
template<typename MutableFaceIncidentGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits<MutableFaceIncidentGraph>>
boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor split_edge (MutableFaceIncidentGraph &g, PointMap pm, typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor e)
 Split an edge of the graph. More...
 
template<typename FaceIncidentGraph >
static bool are_similar_edges (const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor edge1, const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor edge2, const FaceIncidentGraph &g)
 Function determining if the arguments are similar edges (parallel edges). More...
 
template<typename FaceIncidentGraph >
static bool contains_similar_incident_edges (const typename boost::graph_traits< FaceIncidentGraph >::vertex_descriptor v_to_keep, const FaceIncidentGraph &g)
 Function determining if a pair of similar/parallel edges exists among the incident edges of vertex v_to_keep. More...
 
template<typename FaceIncidentGraph >
static bool are_similar_faces (const typename boost::graph_traits< FaceIncidentGraph >::face_descriptor f1, const typename boost::graph_traits< FaceIncidentGraph >::face_descriptor f2, const FaceIncidentGraph &g, bool take_into_account_face_rientation=false)
 Function determining if the arguments are similar faces (parallel faces). More...
 
template<typename FaceIncidentGraph >
static bool contains_similar_incident_faces (const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor e_to_keep, const FaceIncidentGraph &g)
 Function determining if a pair of similar/parallel faces exists among the incident faces of edge e_to_keep. More...
 
template<typename FaceIncidentGraph >
static bool contains_similar_incident_faces (const typename boost::graph_traits< FaceIncidentGraph >::vertex_descriptor v_to_keep, const FaceIncidentGraph &g)
 Function determining if a pair of similar/parallel faces exists among the incident faces of vertex v_to_keep. More...
 
template<typename IncidentMutableFaceGraph >
bool has_only_incident_triangular_faces (const typename boost::graph_traits< IncidentMutableFaceGraph >::edge_descriptor e, const IncidentMutableFaceGraph &g)
 Function determining if the incident faces to e are all triangles. More...
 
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits >
GeometryTraits::Vector calculate_face_normal (typename boost::graph_traits< HalfedgeGraph >::face_descriptor f, const HalfedgeGraph &g, const PointMap &pm, const GeometryTraits &gt)
 Calculate "some" normal to the considered face. More...
 
template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
bool is_geometrical_fold (const typename boost::graph_traits< FaceGraph >::halfedge_descriptor h1, const typename boost::graph_traits< FaceGraph >::halfedge_descriptor h2, const FaceGraph &g, const PointMap &pm, const GeometryTraits &gt)
 Geometric fold detection, usually during iterations of an CGAL::Halfedge_around_target_circulator object cir_he. More...
 
template<typename HalfedgeGraph , typename PointMap , typename Vector , typename VertexTangentMap >
void calculate_face_tangent (typename boost::graph_traits< HalfedgeGraph >::face_descriptor f, const HalfedgeGraph &g, const PointMap &pm, const Vector &uv1, const Vector &uv2, const Vector &uv3, VertexTangentMap &vtm)
 Calculate a face tangent, then accumulate its value on every vertices it contains to average them; final vertex tangents are normalized later. More...
 
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits >
GeometryTraits::Vector calculate_vertex_normal (typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor v, const HalfedgeGraph &g, const PointMap &pm, const GeometryTraits &gt)
 Computes the unit normal at considered vertex v as the average of the normals of incident faces. More...
 
template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits >
GeometryTraits::Vector calculate_vertex_normal (typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor v, const HalfedgeGraph &g, const PointMap &, const FaceNormalMap &fnm, const GeometryTraits &gt)
 Computes the unit normal at considered vertex v as the average of the precomputed normals (provided as argument) of incident faces. More...
 
template<typename MutableFaceGraph >
void collapse_edge_keep_source (MutableFaceGraph &g, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge source vertex is kept, and the halfedge target vertex is removed from the graph. More...
 
template<typename MutableFaceGraph >
void collapse_edge_keep_target (MutableFaceGraph &g, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge target vertex is kept, and the halfedge source vertex is removed from the graph. More...
 
template<typename MutableFaceGraph >
void collapse_edge_keep_source_euler (MutableFaceGraph &g, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge source vertex is kept, and the halfedge target vertex is removed from the graph. More...
 
template<typename MutableFaceGraph >
void collapse_edge_keep_target_euler (MutableFaceGraph &g, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge target vertex is kept, and the halfedge source vertex is removed from the graph. More...
 
template<typename MutableFaceGraph >
void delete_edge_if_parallel (MutableFaceGraph &g, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Delete the edge provided as argument when it is parallel to another edge of the graph (this is an if and only if condition) i.e. when the edge (as opposed to half edges) provided as argument and (at least) another edge are adjacent to the same two vertices. More...
 
template<typename MutableFaceGraph >
void flip_edge (MutableFaceGraph &g, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Flip an edge of the graph. The edge to flip is given as a halfedge. More...
 
template<typename FaceGraph , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
void extract_k_ring (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g, int k, std::vector< typename boost::graph_traits< FaceGraph >::vertex_descriptor > &qv)
 Extract vertices which are at most k (inclusive) far from vertex v in the graph of edges. More...
 
template<typename FaceGraph >
void extract_vertex_star (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g, std::vector< typename boost::graph_traits< FaceGraph >::halfedge_descriptor > &qh)
 Extract halfedges which have v as target vertex. All extracted halfedges are associated to a face, meaning that for a border halfedge, it is its opposite halfedge that is extracted. More...
 
template<typename FaceGraph , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
void extract_1_ring_not_including_v (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g, std::vector< typename boost::graph_traits< FaceGraph >::vertex_descriptor > &qv)
 Extract vertices which are at exactly 1 far from vertex v in the graph of edges. More...
 
template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = typename FEVV::Geometry_traits<HalfedgeGraph>>
bool no_normal_flip_for_collapse (const HalfedgeGraph &g, const PointMap &pm, typename boost::graph_traits< HalfedgeGraph >::edge_descriptor e, typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor v, const typename GeometryTraits::Point &new_pos_v, const GeometryTraits &gt)
 Function used to detected a local normal flip due to a vertex position change. More...
 
template<typename MutableFaceGraph , typename PointMap >
void split_edge (MutableFaceGraph &g, PointMap pm, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Split an edge of the graph. The edge to split is given as an halfedge. More...
 
template<typename MutableFaceGraph , typename PointMap >
void split_edge_euler (MutableFaceGraph &g, PointMap pm, typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &h)
 Split an edge of the graph. The edge to split is given as a halfedge. More...
 
template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
boost::property_traits< PointMap >::value_type vertex_one_ring_angles_based_centroid (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g, const PointMap &pm, const typename GeometryTraits::Scalar smoothing_factor, const GeometryTraits &gt)
 Angle-based smoothing of the vertex' one ring of vertex positions. Increases the min angle and decreases the max angle. More...
 
template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
boost::property_traits< PointMap >::value_type vertex_one_ring_barycenter (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g, const PointMap &pm, const typename GeometryTraits::Scalar smoothing_factor, const GeometryTraits &gt)
 Barycenter of the vertex' one ring of vertex positions. More...
 
template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
boost::property_traits< PointMap >::value_type vertex_one_ring_geometric_laplacian (typename boost::graph_traits< FaceGraph >::vertex_descriptor v, const FaceGraph &g, const PointMap &pm, const typename GeometryTraits::Scalar smoothing_factor, const GeometryTraits &gt)
 Geometric Laplacian of the vertex' one ring of vertex positions. More...
 
template<typename HalfedgeGraph , typename PointMap >
void print_halfedge (const typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor &h, PointMap pm, const HalfedgeGraph &g)
 Print the source and the target coordinates of one halfedge. More...
 
template<typename Point , typename Vector >
Vector calculate_triangle_tangent (const Point &pt1, const Point &pt2, const Point &pt3, const Vector &uv1, const Vector &uv2, const Vector &uv3)
 Calculate the actual face tangent from three connected vertices' positions & texture coordinates. More...
 

Typedef Documentation

◆ AIFHelpers

Definition at line 28 of file collapse_edge.hpp.

Function Documentation

◆ are_similar_edges()

template<typename FaceIncidentGraph >
static bool FEVV::Operators::are_similar_edges ( const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor  edge1,
const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor  edge2,
const FaceIncidentGraph &  g 
)
static

Function determining if the arguments are similar edges (parallel edges).

Template Parameters
FaceIncidentGrapha Mesh type that provides a Model of the FaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
edge1The first involving edge
edge2The second involving edge
gThe FaceIncidentGraph instance from which the edges are taken.
Returns
true if the arguments have the same vertices (not necessarily in the same position.)

Definition at line 33 of file topology_predicates.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ are_similar_faces()

template<typename FaceIncidentGraph >
static bool FEVV::Operators::are_similar_faces ( const typename boost::graph_traits< FaceIncidentGraph >::face_descriptor  f1,
const typename boost::graph_traits< FaceIncidentGraph >::face_descriptor  f2,
const FaceIncidentGraph &  g,
bool  take_into_account_face_rientation = false 
)
static

Function determining if the arguments are similar faces (parallel faces).

Template Parameters
FaceIncidentGrapha Mesh type that provides a Model of the FaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
f1The first involving face
f2The second involving face
gThe FaceIncidentGraph instance from which the faces are taken.
take_into_account_face_rientationA boolean to tell if the similar faces must have the same orientation.
Returns
true if the arguments are similar faces given take_into_account_face_rientation.
Parameters
take_into_account_face_rientationfalse means two faces sharing the same vertices not with the same orientation are similar, else they must have the same orientation

Definition at line 99 of file topology_predicates.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_face_normal()

template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits >
GeometryTraits::Vector FEVV::Operators::calculate_face_normal ( typename boost::graph_traits< HalfedgeGraph >::face_descriptor  f,
const HalfedgeGraph &  g,
const PointMap &  pm,
const GeometryTraits &  gt 
)

Calculate "some" normal to the considered face.

Parameters
[in]fThe considered face
[in]gThe mesh to which the face belongs
[in]pmThe Point Map holding the vertices geometry
[in]gtThe Geometry Traits associated to the mesh
Note
: this function name is prefixed with 'calculate_' to mimic CGAL usage of the term 'compute'.

Definition at line 33 of file calculate_face_normal.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_face_tangent()

template<typename HalfedgeGraph , typename PointMap , typename Vector , typename VertexTangentMap >
void FEVV::Operators::calculate_face_tangent ( typename boost::graph_traits< HalfedgeGraph >::face_descriptor  f,
const HalfedgeGraph &  g,
const PointMap &  pm,
const Vector uv1,
const Vector uv2,
const Vector uv3,
VertexTangentMap &  vtm 
)

Calculate a face tangent, then accumulate its value on every vertices it contains to average them; final vertex tangents are normalized later.

Template Parameters
PointMapA modifiable point map to manage vertex positions.
Parameters
[in]fthe face descriptor representing the face on which we compute the tangent.
[in]gthe halfedge graph from which we take the mesh's informations.
[in]pmpoint map containing vertices' positions.
[in]uv1first vertex's texture coordinates.
[in]uv2second vertex's texture coordinates.
[in]uv3third vertex's texture coordinates.
[in,out]vtmvertex tangent map to be filled with computed tangents.

Definition at line 41 of file calculate_face_tangent.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_triangle_tangent()

template<typename Point , typename Vector >
Vector FEVV::Operators::calculate_triangle_tangent ( const Point pt1,
const Point pt2,
const Point pt3,
const Vector uv1,
const Vector uv2,
const Vector uv3 
)

Calculate the actual face tangent from three connected vertices' positions & texture coordinates.

Parameters
[in]pt1first vertex's position.
[in]pt2second vertex's position.
[in]pt3third vertex's position.
[in]uv1first vertex's texture coordinates.
[in]uv2second vertex's texture coordinates.
[in]uv3third vertex's texture coordinates.
Returns
calculated face tangent.

Definition at line 33 of file tangents.hpp.

Here is the caller graph for this function:

◆ calculate_vertex_normal() [1/2]

template<typename HalfedgeGraph , typename PointMap , typename FaceNormalMap , typename GeometryTraits >
GeometryTraits::Vector FEVV::Operators::calculate_vertex_normal ( typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor  v,
const HalfedgeGraph &  g,
const PointMap &  ,
const FaceNormalMap &  fnm,
const GeometryTraits &  gt 
)

Computes the unit normal at considered vertex v as the average of the precomputed normals (provided as argument) of incident faces.

See also
When the Property Map of the normals is not at hand consider using the other version of the function.
Parameters
[in]vThe considered vertex
[in]gThe mesh to which the vertex belongs
[in]pmThe Point Map holding the vertices geometry
[in]fnmThe Face Normal Map providing the normals to incident faces
[in]gtThe Geometry Traits associated to the mesh
Returns
The vertex v' normal.
Parameters
gtprovided face normals

Definition at line 112 of file calculate_vertex_normal.hpp.

Here is the call graph for this function:

◆ calculate_vertex_normal() [2/2]

template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits >
GeometryTraits::Vector FEVV::Operators::calculate_vertex_normal ( typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor  v,
const HalfedgeGraph &  g,
const PointMap &  pm,
const GeometryTraits &  gt 
)

Computes the unit normal at considered vertex v as the average of the normals of incident faces.

Note
The normals of the adjacent faces are computed on the fly and droped on function exit.
See also
When already having a precomputed Property Map of the normals consider using the other version of the function.
Parameters
[in]vThe considered vertex
[in]gThe mesh to which the vertex belongs
[in]pmThe Point Map holding the vertices geometry
[in]gtThe Geometry Traits associated to the mesh
Returns
The vertex v' normal.

Definition at line 43 of file calculate_vertex_normal.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collapse_edge_keep_source() [1/2]

template<typename MutableFaceGraph >
void FEVV::Operators::collapse_edge_keep_source ( MutableFaceGraph &  g,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge source vertex is kept, and the halfedge target vertex is removed from the graph.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceGraph instance out of which the h edge will be deleted.
hThe edge to be deleted designated through one of its halfedges.

Definition at line 36 of file collapse_edge.hpp.

Here is the call graph for this function:

◆ collapse_edge_keep_source() [2/2]

template<typename MutableFaceIncidentGraph >
void FEVV::Operators::collapse_edge_keep_source ( MutableFaceIncidentGraph &  g,
typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor &  e 
)

Collapse an edge of the graph. The edge to collapse is given as a non-oriented edge. The edge source vertex is kept, and the edge target vertex is removed from the graph.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceIncidentGraph instance from which the e edge will be deleted.
eThe edge to be deleted.

Definition at line 45 of file collapse_edge.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collapse_edge_keep_source_euler()

template<typename MutableFaceGraph >
void FEVV::Operators::collapse_edge_keep_source_euler ( MutableFaceGraph &  g,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge source vertex is kept, and the halfedge target vertex is removed from the graph.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceGraph instance out of which the h edge will be deleted.
hThe edge to be deleted designated through one of its halfedges.

Definition at line 36 of file collapse_edge_euler.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collapse_edge_keep_target() [1/2]

template<typename MutableFaceGraph >
void FEVV::Operators::collapse_edge_keep_target ( MutableFaceGraph &  g,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge target vertex is kept, and the halfedge source vertex is removed from the graph.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceGraph instance out of which the h edge will be deleted.
hThe edge to be deleted designated through one of its halfedges.

Definition at line 89 of file collapse_edge.hpp.

Here is the call graph for this function:

◆ collapse_edge_keep_target() [2/2]

template<typename MutableFaceIncidentGraph >
void FEVV::Operators::collapse_edge_keep_target ( MutableFaceIncidentGraph &  g,
typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor &  e 
)

Collapse an edge of the graph. The edge to collapse is given as a non-oriented edge. The edge target vertex is kept, and the edge source vertex is removed from the graph.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceIncidentGraph instance from which the e edge will be deleted.
eThe edge to be deleted.

Definition at line 180 of file collapse_edge.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collapse_edge_keep_target_euler()

template<typename MutableFaceGraph >
void FEVV::Operators::collapse_edge_keep_target_euler ( MutableFaceGraph &  g,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Collapse an edge of the graph. The edge to collapse is given as a halfedge. The halfedge target vertex is kept, and the halfedge source vertex is removed from the graph.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceGraph instance out of which the h edge will be deleted.
hThe edge to be deleted designated through one of its halfedges.

Definition at line 67 of file collapse_edge_euler.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ contains_similar_incident_edges()

template<typename FaceIncidentGraph >
static bool FEVV::Operators::contains_similar_incident_edges ( const typename boost::graph_traits< FaceIncidentGraph >::vertex_descriptor  v_to_keep,
const FaceIncidentGraph &  g 
)
static

Function determining if a pair of similar/parallel edges exists among the incident edges of vertex v_to_keep.

Template Parameters
FaceIncidentGrapha Mesh type that provides a Model of the FaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
v_to_keepThe involving vertex
gThe FaceIncidentGraph instance from which the vertex is taken.
Returns
true if the vertex has at least one pair of incident similar edges.

Definition at line 62 of file topology_predicates.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ contains_similar_incident_faces() [1/2]

template<typename FaceIncidentGraph >
static bool FEVV::Operators::contains_similar_incident_faces ( const typename boost::graph_traits< FaceIncidentGraph >::edge_descriptor  e_to_keep,
const FaceIncidentGraph &  g 
)
static

Function determining if a pair of similar/parallel faces exists among the incident faces of edge e_to_keep.

Template Parameters
FaceIncidentGrapha Mesh type that provides a Model of the FaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
e_to_keepThe involving edge
gThe FaceIncidentGraph instance from which the edge is taken.
Returns
true if the edge has at least one pair of incident similar faces.

Definition at line 171 of file topology_predicates.hpp.

Here is the call graph for this function:

◆ contains_similar_incident_faces() [2/2]

template<typename FaceIncidentGraph >
static bool FEVV::Operators::contains_similar_incident_faces ( const typename boost::graph_traits< FaceIncidentGraph >::vertex_descriptor  v_to_keep,
const FaceIncidentGraph &  g 
)
static

Function determining if a pair of similar/parallel faces exists among the incident faces of vertex v_to_keep.

Template Parameters
FaceIncidentGrapha Mesh type that provides a Model of the FaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
v_to_keepThe involving vertex
gThe FaceIncidentGraph instance from which the edge is taken.
Returns
true if the vertex has at least one pair of incident similar faces.

Definition at line 205 of file topology_predicates.hpp.

Here is the call graph for this function:

◆ delete_edge_if_parallel()

template<typename MutableFaceGraph >
void FEVV::Operators::delete_edge_if_parallel ( MutableFaceGraph &  g,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Delete the edge provided as argument when it is parallel to another edge of the graph (this is an if and only if condition) i.e. when the edge (as opposed to half edges) provided as argument and (at least) another edge are adjacent to the same two vertices.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceGraph instance out of which the h edge will be deleted.
hThe edge to be deleted designated through one of its halfedges.
Postcondition
When present, the face adjacent to the argument halfedge is deleted form the graph too
Note
The argument is an halfedge as opposed to an edge because it enables to designate the (possible) adjacent face that will be removed.

Definition at line 39 of file delete_edge_if_parallel.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ extract_1_ring_not_including_v()

template<typename FaceGraph , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
void FEVV::Operators::extract_1_ring_not_including_v ( typename boost::graph_traits< FaceGraph >::vertex_descriptor  v,
const FaceGraph &  g,
std::vector< typename boost::graph_traits< FaceGraph >::vertex_descriptor > &  qv 
)

Extract vertices which are at exactly 1 far from vertex v in the graph of edges.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>.
Parameters
[in]vThe vertex whose 1-ring is computed.
[in]gThe FaceGraph instance.
[out]qvThe std::vector of vertices at exactly 1 far from vertex v in the graph of edges

Definition at line 193 of file k_ring.hpp.

◆ extract_k_ring()

template<typename FaceGraph , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
void FEVV::Operators::extract_k_ring ( typename boost::graph_traits< FaceGraph >::vertex_descriptor  v,
const FaceGraph &  g,
int  k,
std::vector< typename boost::graph_traits< FaceGraph >::vertex_descriptor > &  qv 
)

Extract vertices which are at most k (inclusive) far from vertex v in the graph of edges.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>.
Parameters
[in]vThe vertex whose k-rings are computed.
[in]gThe FaceGraph instance.
[in]kThe maximum distance to include a vertex v' neighbor.
[out]qvThe std::vector of vertices at most k (inclusive) far from vertex v in the graph of edges

Definition at line 41 of file k_ring.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ extract_vertex_star()

template<typename FaceGraph >
void FEVV::Operators::extract_vertex_star ( typename boost::graph_traits< FaceGraph >::vertex_descriptor  v,
const FaceGraph &  g,
std::vector< typename boost::graph_traits< FaceGraph >::halfedge_descriptor > &  qh 
)

Extract halfedges which have v as target vertex. All extracted halfedges are associated to a face, meaning that for a border halfedge, it is its opposite halfedge that is extracted.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
[in]vThe vertex whose incident halfedges are extracted.
[in]gThe FaceGraph instance.
[out]qhThe std::vector of halfedges incident to v.

CGAL::is_border(target(opposite(h, g), g),g)

Definition at line 106 of file k_ring.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ flip_edge()

template<typename MutableFaceGraph >
void FEVV::Operators::flip_edge ( MutableFaceGraph &  g,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Flip an edge of the graph. The edge to flip is given as a halfedge.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceGraph instance out of which the h edge will be flipped.
hThe edge to be flipped designated through one of its halfedges.

Definition at line 42 of file flip_edge.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ has_only_incident_triangular_faces()

template<typename IncidentMutableFaceGraph >
bool FEVV::Operators::has_only_incident_triangular_faces ( const typename boost::graph_traits< IncidentMutableFaceGraph >::edge_descriptor  e,
const IncidentMutableFaceGraph &  g 
)
inline

Function determining if the incident faces to e are all triangles.

Template Parameters
IncidentMutableFaceGrapha Mesh type that provides a Model of the IncidentMutableFaceGraph Concept through a boost::graph_traits<> specialization.
Parameters
eThe involving edge.
gThe IncidentMutableFaceGraph instance from which the edge e is taken.
Returns
true if all incident faces to e are triangles.

Definition at line 234 of file topology_predicates.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_geometrical_fold()

template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
bool FEVV::Operators::is_geometrical_fold ( const typename boost::graph_traits< FaceGraph >::halfedge_descriptor  h1,
const typename boost::graph_traits< FaceGraph >::halfedge_descriptor  h2,
const FaceGraph &  g,
const PointMap &  pm,
const GeometryTraits &  gt 
)
inline

Geometric fold detection, usually during iterations of an CGAL::Halfedge_around_target_circulator object cir_he.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>.
Parameters
h1The first involved halfedge. May be prev(prev(opposite(*cir_he, g), g), g).
h2The second involved halfedge. May be next(*cir_he, g).
gThe FaceGraph instance from which the halfedges are taken.
pmThe mesh point map which associates vertex to positions.
gtThe geometry trait object.
See also
vertex_one_ring_angles_based_centroid filter.

Definition at line 44 of file is_geometrical_fold.hpp.

Here is the call graph for this function:

◆ merge_similar_edges()

template<typename MutableFaceIncidentGraph >
static void FEVV::Operators::merge_similar_edges ( typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  e_to_keep,
typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  e_to_remove,
MutableFaceIncidentGraph &  g 
)
static

For all faces incident to e_to_remove, if e_to_keep and e_to_remove were similar/parallel edges then these faces are made incident to e_to_keep by replacing e_to_remove by e_to_keep among their incident edges. Then each face is added to e_to_keep' incident faces.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
e_to_keepAn edge used to replace e_to_remove.
e_to_removeAn edge whose each occurence is replaced by e_to_keep.
gThe MutableFaceIncidentGraph instance.

Definition at line 69 of file similarity.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ no_normal_flip_for_collapse()

template<typename HalfedgeGraph , typename PointMap , typename GeometryTraits = typename FEVV::Geometry_traits<HalfedgeGraph>>
bool FEVV::Operators::no_normal_flip_for_collapse ( const HalfedgeGraph &  g,
const PointMap &  pm,
typename boost::graph_traits< HalfedgeGraph >::edge_descriptor  e,
typename boost::graph_traits< HalfedgeGraph >::vertex_descriptor  v,
const typename GeometryTraits::Point new_pos_v,
const GeometryTraits &  gt 
)

Function used to detected a local normal flip due to a vertex position change.

Template Parameters
HalfedgeGrapha Mesh type that provides a Model of the HalfedgeGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<HalfedgeGraph>.
Parameters
[in]gThe HalfedgeGraph instance.
[in]pmThe point map which associates a vertex descriptor with a vertex position.
[in]eA candidate edge to collapse.
[in]vThe vertex incident to edge e whose position is modified.
[in]new_pos_vThe new position for vertex v.
[in]gtThe geometry trait object.
Returns
true when no normal flip will occur by changing the position of vertex v to new_pos_v.

Definition at line 46 of file no_normal_flip_for_collapse.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ print_halfedge()

template<typename HalfedgeGraph , typename PointMap >
void FEVV::Operators::print_halfedge ( const typename boost::graph_traits< HalfedgeGraph >::halfedge_descriptor &  h,
PointMap  pm,
const HalfedgeGraph &  g 
)

Print the source and the target coordinates of one halfedge.

Parameters
gmesh
hthe halfedge
pmpoint map of the mesh

Definition at line 29 of file print_halfedge.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ replace_similar_edges()

template<typename MutableFaceIncidentGraph >
static void FEVV::Operators::replace_similar_edges ( typename boost::graph_traits< MutableFaceIncidentGraph >::face_descriptor  face,
const typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  old_edge,
const typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  new_edge,
MutableFaceIncidentGraph &  g 
)
static

Replace the old_edge incident edge of face by the new_edge if old_edge and new_edge were similar/parallel edges.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
faceThe mesh face to consider.
old_edgeAn incident edge of the face.
new_edgeAn edge to replace old_edge in the face' incident edges.
gThe MutableFaceIncidentGraph instance.

Definition at line 36 of file similarity.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resolve_similar_incident_edges()

template<typename MutableFaceIncidentGraph >
static void FEVV::Operators::resolve_similar_incident_edges ( typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor  v_to_keep,
MutableFaceIncidentGraph &  g 
)
static

Remove/resolve similar/parallel edges for all incident edges of v_to_keep vertex.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
v_to_keepA vertex whose incident similar/paralle edges are resolved.
gThe MutableFaceIncidentGraph instance.

Definition at line 102 of file similarity.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resolve_similar_incident_faces() [1/2]

template<typename MutableFaceIncidentGraph >
static void FEVV::Operators::resolve_similar_incident_faces ( typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor  v_to_keep,
MutableFaceIncidentGraph &  g,
bool  take_into_account_face_rientation = false 
)
static

Remove/resolve similar faces for all incident faces of v_to_keep vertex.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
v_to_keepA vertex whose incident similar faces are resolved.
gThe MutableFaceIncidentGraph instance.
take_into_account_face_rientationA boolean to tell if the similar faces must have the same orientation.

Definition at line 150 of file similarity.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resolve_similar_incident_faces() [2/2]

template<typename MutableFaceIncidentGraph >
static std::vector<std::pair<typename boost::graph_traits<MutableFaceIncidentGraph>::face_descriptor, bool> > FEVV::Operators::resolve_similar_incident_faces ( typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor  v_to_keep,
MutableFaceIncidentGraph &  g,
const std::set< typename boost::graph_traits< MutableFaceIncidentGraph >::face_descriptor > &  faces_to_preserve_range,
bool  take_into_account_face_rientation 
)
static

Remove/resolve similar faces for all incident faces of v_to_keep vertex.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
v_to_keepA vertex whose incident similar faces are resolved.
gThe MutableFaceIncidentGraph instance.
faces_to_preserve_rangeThe set of faces to preserve during similar face removal.
take_into_account_face_rientationA boolean to tell if the similar faces must have the same orientation.
Returns
A vector of pair (face, bool) needed by the non-manifold encoder.

Definition at line 216 of file similarity.hpp.

Here is the call graph for this function:

◆ split_edge() [1/4]

template<typename MutableFaceGraph , typename PointMap >
void FEVV::Operators::split_edge ( MutableFaceGraph &  g,
PointMap  pm,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Split an edge of the graph. The edge to split is given as an halfedge.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
Parameters
gThe MutableFaceGraph instance from which the edge will be split.
pmThe mesh point map which associates vertex to positions.
hThe edge to be split designated through one of its halfedges.

Definition at line 44 of file split_edge.hpp.

Here is the call graph for this function:

◆ split_edge() [2/4]

template<typename MutableFaceIncidentGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits<MutableFaceIncidentGraph>>
boost::graph_traits<MutableFaceIncidentGraph>::edge_descriptor FEVV::Operators::split_edge ( MutableFaceIncidentGraph &  g,
PointMap  pm,
typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  e 
)

Split an edge of the graph.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<MutableFaceIncidentGraph>.
Parameters
gThe MutableFaceIncidentGraph instance from which the e edge will be split.
pmThe mesh point map which associates vertex to positions.
eThe edge to be split.
Returns
The newly inserted edge incident to inserted vertex (target vertex is the new one). In this version, the new vertex is created internally via add_vertex(g).

Definition at line 221 of file split_edge.hpp.

Here is the call graph for this function:

◆ split_edge() [3/4]

template<typename MutableFaceIncidentGraph >
boost::graph_traits<MutableFaceIncidentGraph>::edge_descriptor FEVV::Operators::split_edge ( MutableFaceIncidentGraph &  g,
typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  e 
)

Split an edge of the graph.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceIncidentGraph instance from which the e edge will be split.
eThe edge to be split.
Returns
The newly inserted edge incident to inserted vertex (target vertex is the new one). In this version, the new vertex is created internally via add_vertex(g).

Definition at line 189 of file split_edge.hpp.

Here is the call graph for this function:

◆ split_edge() [4/4]

template<typename MutableFaceIncidentGraph >
boost::graph_traits<MutableFaceIncidentGraph>::edge_descriptor FEVV::Operators::split_edge ( MutableFaceIncidentGraph &  g,
typename boost::graph_traits< MutableFaceIncidentGraph >::edge_descriptor  e,
typename boost::graph_traits< MutableFaceIncidentGraph >::vertex_descriptor  midpoint_vertex 
)

Split an edge of the graph.

Template Parameters
MutableFaceIncidentGrapha Mesh type that provides a Model of the MutableFaceIncidentGraph Concept through a boost::graph_traits<> specialization.
Parameters
gThe MutableFaceIncidentGraph instance from which the e edge will be split.
eThe edge to be split.
midpoint_vertexThe new vertex used for the splitting.
Returns
The newly inserted edge incident to inserted vertex (target vertex is the new one).

Definition at line 46 of file split_edge.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ split_edge_euler()

template<typename MutableFaceGraph , typename PointMap >
void FEVV::Operators::split_edge_euler ( MutableFaceGraph &  g,
PointMap  pm,
typename boost::graph_traits< MutableFaceGraph >::halfedge_descriptor &  h 
)

Split an edge of the graph. The edge to split is given as a halfedge.

Template Parameters
MutableFaceGrapha Mesh type that provides a Model of the MutableFaceGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
Parameters
gThe MutableFaceGraph instance from which the edge will be split.
pmThe mesh point map which associates vertex to positions.
hThe edge to be split designated through one of its halfedges.

Definition at line 44 of file split_edge_euler.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vertex_one_ring_angles_based_centroid()

template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
boost::property_traits< PointMap >::value_type FEVV::Operators::vertex_one_ring_angles_based_centroid ( typename boost::graph_traits< FaceGraph >::vertex_descriptor  v,
const FaceGraph &  g,
const PointMap &  pm,
const typename GeometryTraits::Scalar  smoothing_factor,
const GeometryTraits &  gt 
)

Angle-based smoothing of the vertex' one ring of vertex positions. Increases the min angle and decreases the max angle.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>.
Parameters
[in]vThe vertex whose one-ring angle-based centroid is computed.
[in]gThe FaceGraph instance from which the v vertex will be taken.
[in]pmThe point map which associate a vertex descriptor with a vertex position.
[in]smoothing_factorA (usually positive) factor used to compute the position of the returned centroid following V_pos + smoothing_factor x(C_computed - V_pos).
[in]gtThe geometry trait object.
Returns
The angles-based centroid of the vertex v.
Precondition
g must be a triangular mesh.

Definition at line 51 of file vertex_one_ring_angles_based_centroid.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vertex_one_ring_barycenter()

template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
boost::property_traits< PointMap >::value_type FEVV::Operators::vertex_one_ring_barycenter ( typename boost::graph_traits< FaceGraph >::vertex_descriptor  v,
const FaceGraph &  g,
const PointMap &  pm,
const typename GeometryTraits::Scalar  smoothing_factor,
const GeometryTraits &  gt 
)

Barycenter of the vertex' one ring of vertex positions.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>.
Parameters
[in]vThe vertex whose one-ring barycenter is computed.
[in]gThe FaceGraph instance from which the v vertex will be taken.
[in]pmThe point map which associate a vertex descriptor with a vertex position.
[in]smoothing_factorA (usually positive) factor used to compute the position of the returned centroid following V_pos + smoothing_factor x(C_computed - V_pos).
[in]gtThe geometry trait object.
Returns
The barycenter centroid of the vertex v.
Precondition
g must be a triangular mesh.

Definition at line 47 of file vertex_one_ring_barycenter.hpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ vertex_one_ring_geometric_laplacian()

template<typename FaceGraph , typename PointMap , typename GeometryTraits = FEVV::Geometry_traits< FaceGraph >>
boost::property_traits< PointMap >::value_type FEVV::Operators::vertex_one_ring_geometric_laplacian ( typename boost::graph_traits< FaceGraph >::vertex_descriptor  v,
const FaceGraph &  g,
const PointMap &  pm,
const typename GeometryTraits::Scalar  smoothing_factor,
const GeometryTraits &  gt 
)

Geometric Laplacian of the vertex' one ring of vertex positions.

Template Parameters
FaceGrapha Mesh type that provides a Model of the FaceGraph Concept through a boost::graph_traits<> specialization.
PointMapA modifiable point map to manage vertex positions.
GeometryTraitsThe geometric kernel when available. This is defaulted to FEVV::Geometry_traits<FaceGraph>.
Parameters
[in]vThe vertex whose one-ring geometric laplacian is computed.
[in]gThe FaceGraph instance from which the v vertex will be taken.
[in]pmThe point map which associate a vertex descriptor with a vertex position.
[in]smoothing_factorA (positive/move towards or negative/move away from) factor used to compute the position of the returned geometric laplacian V_pos + smoothing_factor x(GL_computed - V_pos).
[in]gtThe geometry trait object.
Returns
The geometric laplacian of the vertex v.
Precondition
g must be a triangular mesh.

Definition at line 47 of file vertex_one_ring_geometric_laplacian.hpp.

Here is the call graph for this function:
Here is the caller graph for this function: