Skip to content
Snippets Groups Projects
Commit 6abf39e9 authored by Philip Trettner's avatar Philip Trettner
Browse files

added new splits to ranges

parent c91c0b0e
Branches
No related tags found
No related merge requests found
......@@ -734,6 +734,12 @@ vertex_handle face_collection<iterator>::split(face_handle f) const
return this->mesh->handle_of(low_level_api(this->mesh).face_split(f.idx));
}
template <class iterator>
void face_collection<iterator>::split(face_handle f, vertex_handle v) const
{
low_level_api(this->mesh).face_split(f.idx, v.idx);
}
template <class iterator>
face_handle face_collection<iterator>::fill(halfedge_handle h) const
{
......@@ -746,6 +752,12 @@ vertex_handle edge_collection<iterator>::split(edge_handle e) const
return this->mesh->handle_of(low_level_api(this->mesh).edge_split(e.idx));
}
template <class iterator>
void edge_collection<iterator>::split(edge_handle e, vertex_handle v) const
{
low_level_api(this->mesh).edge_split(e.idx, v.idx);
}
template <class iterator>
void vertex_collection<iterator>::collapse(vertex_handle v) const
{
......@@ -776,6 +788,12 @@ vertex_handle halfedge_collection<iterator>::split(halfedge_handle h) const
return this->mesh->handle_of(low_level_api(this->mesh).halfedge_split(h.idx));
}
template <class iterator>
void halfedge_collection<iterator>::split(halfedge_handle h, vertex_handle v) const
{
low_level_api(this->mesh).halfedge_split(h.idx, v.idx);
}
template <class iterator>
void halfedge_collection<iterator>::attach(halfedge_handle h, vertex_handle v) const
{
......
......@@ -236,6 +236,8 @@ struct face_collection : smart_collection<Mesh*, face_tag, iterator>
/// Preserves half-edge attributes
/// The face itself is deleted and multiple new ones are created
vertex_handle split(face_handle f) const;
/// same as before but splits at a given ISOLATED vertex
void split(face_handle f, vertex_handle v) const;
/// Fills the half-edge ring of a given boundary half-edge
/// Returns the new face
......@@ -271,6 +273,8 @@ struct edge_collection : smart_collection<Mesh*, edge_tag, iterator>
/// Preserves face attributes
/// The edge itself is deleted and two new ones are created
vertex_handle split(edge_handle e) const;
/// same as before but splits at a given ISOLATED vertex
void split(edge_handle e, vertex_handle v) const;
/// Moves both half-edges vertices to their next half-edge vertex
/// Equivalent to an edge flip if both faces are triangular
......@@ -319,6 +323,8 @@ struct halfedge_collection : smart_collection<Mesh*, halfedge_tag, iterator>
/// Contrary to edges().split, the edge is preserved and a single new one is inserted AFTER h
/// (thus h->next() is the newly inserted edge and h->vertex_to() is the returned vertex)
vertex_handle split(halfedge_handle h) const;
/// same as before but splits at a given ISOLATED vertex
void split(halfedge_handle h, vertex_handle v) const;
/// Given an isolated vertex v, inserts a self-adjacent edge at the to-vertex to v
void attach(halfedge_handle h, vertex_handle v) const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment