mirror of https://github.com/CGAL/cgal
Use is_valid_*_descriptor
This commit is contained in:
parent
b597aa8aab
commit
34ea88c73d
|
|
@ -43,6 +43,7 @@ join_face(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
|
||||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
|
||||
halfedge_descriptor hop = opposite(h,g);
|
||||
halfedge_descriptor hprev = prev(h, g), gprev = prev(hop, g);
|
||||
|
|
@ -117,6 +118,8 @@ join_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename Traits::vertex_descriptor vertex_descriptor;
|
||||
typedef Halfedge_around_target_iterator<Graph> halfedge_around_vertex_iterator;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
|
||||
halfedge_descriptor hop = opposite(h, g)
|
||||
, hprev = prev(hop, g)
|
||||
, gprev = prev(h, g)
|
||||
|
|
@ -191,8 +194,9 @@ split_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
|
|||
typename boost::graph_traits<Graph>::halfedge_descriptor h2,
|
||||
Graph& g)
|
||||
{
|
||||
CGAL_assertion(h1 != h2);
|
||||
CGAL_assertion(target(h1, g) == target(h2, g));
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
|
||||
CGAL_precondition(h1 != h2);
|
||||
CGAL_precondition(target(h1, g) == target(h2, g));
|
||||
|
||||
typename boost::graph_traits<Graph>::halfedge_descriptor
|
||||
hnew = halfedge(add_edge(g), g),
|
||||
|
|
@ -226,8 +230,11 @@ split_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
|
|||
template<typename Graph>
|
||||
typename boost::graph_traits<Graph>::halfedge_descriptor
|
||||
split_edge(typename boost::graph_traits<Graph>::halfedge_descriptor h, Graph& g)
|
||||
{ return opposite(split_vertex(prev(h,g), opposite(h,g),g), g); }
|
||||
{
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
|
||||
return opposite(split_vertex(prev(h,g), opposite(h,g),g), g);
|
||||
}
|
||||
|
||||
/**
|
||||
* joins the two faces incident to `h` and `opposite(h,g)`.
|
||||
|
|
@ -288,6 +295,12 @@ split_face(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
|
|||
typedef typename boost::graph_traits<Graph> Traits;
|
||||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
|
||||
CGAL_precondition(h1 != h2);
|
||||
CGAL_precondition(face(h1, g) == face(h2, g));
|
||||
CGAL_precondition(next(h1, g) != h2 && next(h2, g) != h1);
|
||||
|
||||
halfedge_descriptor hnew = halfedge(add_edge(g), g);
|
||||
face_descriptor fnew = add_face(g);
|
||||
internal::insert_tip( hnew, h2, g);
|
||||
|
|
@ -326,7 +339,9 @@ join_loop(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
|
|||
typedef typename boost::graph_traits<Graph> Traits;
|
||||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
|
||||
CGAL_precondition( is_border(h1,g) || face(h1, g) != face(h2, g));
|
||||
|
||||
if (! is_border(h1,g))
|
||||
remove_face(face(h1, g), g);
|
||||
if (! is_border(h2,g))
|
||||
|
|
@ -400,13 +415,18 @@ split_loop(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
|
|||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) &&
|
||||
is_valid_halfedge_descriptor(h2, g) &&
|
||||
is_valid_halfedge_descriptor(h3, g));
|
||||
|
||||
halfedge_descriptor h = h1, i = h2, j = h3;
|
||||
CGAL_precondition( h != i);
|
||||
CGAL_precondition( h != j);
|
||||
CGAL_precondition( i != j);
|
||||
CGAL_precondition( target(h,g) == target(opposite(i,g),g));
|
||||
CGAL_precondition( target(i,g) == target(opposite(j,g),g));
|
||||
CGAL_precondition( target(j,g) == target(opposite(h,g),g));
|
||||
CGAL_precondition(h != i);
|
||||
CGAL_precondition(h != j);
|
||||
CGAL_precondition(i != j);
|
||||
CGAL_precondition(target(h,g) == target(opposite(i,g),g));
|
||||
CGAL_precondition(target(i,g) == target(opposite(j,g),g));
|
||||
CGAL_precondition(target(j,g) == target(opposite(h,g),g));
|
||||
|
||||
// Create a copy of the triangle.
|
||||
halfedge_descriptor hnew = internal::copy(h,g);
|
||||
halfedge_descriptor inew = internal::copy(i,g);
|
||||
|
|
@ -504,6 +524,7 @@ void remove_face(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
CGAL_precondition(! is_border(h,g));
|
||||
|
||||
face_descriptor f = face(h, g);
|
||||
|
|
@ -551,6 +572,8 @@ add_edge(typename boost::graph_traits<Graph>::vertex_descriptor s,
|
|||
typename boost::graph_traits<Graph>::vertex_descriptor t,
|
||||
Graph& g)
|
||||
{
|
||||
CGAL_precondition(is_valid_vertex_descriptor(s, g) && is_valid_vertex_descriptor(t, g));
|
||||
|
||||
typename boost::graph_traits<Graph>::edge_descriptor e = add_edge(g);
|
||||
set_target(halfedge(e, g), t, g);
|
||||
set_target(opposite(halfedge(e, g), g), s, g);
|
||||
|
|
@ -568,6 +591,9 @@ bool can_add_face(const VertexRange& vrange, const PMesh& sm)
|
|||
typedef typename boost::graph_traits<PMesh>::vertex_descriptor vertex_descriptor;
|
||||
typedef typename boost::graph_traits<PMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition_code(for(vertex_descriptor v : vrange))
|
||||
CGAL_precondition(is_valid_vertex_descriptor(v, sm));
|
||||
|
||||
std::vector<typename boost::graph_traits<PMesh>::vertex_descriptor> face(vrange.begin(), vrange.end());
|
||||
|
||||
std::size_t N = face.size();
|
||||
|
|
@ -697,6 +723,9 @@ add_face(const VertexRange& vr, Graph& g)
|
|||
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
|
||||
typedef typename boost::graph_traits<Graph>::edge_descriptor edge_descriptor;
|
||||
|
||||
CGAL_precondition_code(for(vertex_descriptor v : vr))
|
||||
CGAL_precondition(is_valid_vertex_descriptor(v, g));
|
||||
|
||||
std::vector<vertex_descriptor> vertices(vr.begin(), vr.end()); // quick and dirty copy
|
||||
unsigned int n = (unsigned int)vertices.size();
|
||||
//check that every vertex is unique
|
||||
|
|
@ -1115,7 +1144,9 @@ void make_hole(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
typedef Halfedge_around_face_iterator<Graph> halfedge_around_face_iterator;
|
||||
|
||||
CGAL_precondition(! is_border(h,g));
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
CGAL_precondition(!is_border(h, g));
|
||||
|
||||
face_descriptor fd = face(h, g);
|
||||
halfedge_around_face_iterator hafib, hafie;
|
||||
for(boost::tie(hafib, hafie) = halfedges_around_face(h, g);
|
||||
|
|
@ -1139,6 +1170,9 @@ void fill_hole(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
CGAL_precondition(!is_border(h, g));
|
||||
|
||||
face_descriptor f = add_face(g);
|
||||
for(halfedge_descriptor hd : halfedges_around_face(h,g)){
|
||||
set_face(hd, f,g);
|
||||
|
|
@ -1179,6 +1213,9 @@ add_center_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
CGAL_precondition(!is_border(h, g));
|
||||
|
||||
halfedge_descriptor hnew = halfedge(add_edge(g),g);
|
||||
vertex_descriptor vnew = add_vertex(g);
|
||||
internal::close_tip(hnew, vnew, g);
|
||||
|
|
@ -1236,6 +1273,8 @@ remove_center_vertex(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename boost::graph_traits<Graph> Traits;
|
||||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
|
||||
// h points to the vertex that gets removed
|
||||
halfedge_descriptor h2 = opposite(next(h, g), g);
|
||||
halfedge_descriptor hret = prev(h, g);
|
||||
|
|
@ -1283,14 +1322,28 @@ add_vertex_and_face_to_border(typename boost::graph_traits<Graph>::halfedge_desc
|
|||
typename boost::graph_traits<Graph>::halfedge_descriptor h2,
|
||||
Graph& g)
|
||||
{
|
||||
typename boost::graph_traits<Graph>::vertex_descriptor v = add_vertex(g);
|
||||
typename boost::graph_traits<Graph>::face_descriptor f = add_face(g);
|
||||
typename boost::graph_traits<Graph>::edge_descriptor e1 = add_edge(g);
|
||||
typename boost::graph_traits<Graph>::edge_descriptor e2 = add_edge(g);
|
||||
typename boost::graph_traits<Graph>::halfedge_descriptor he1= halfedge(e1, g);
|
||||
typename boost::graph_traits<Graph>::halfedge_descriptor he2= halfedge(e2, g);
|
||||
typename boost::graph_traits<Graph>::halfedge_descriptor ohe1= opposite(he1, g);
|
||||
typename boost::graph_traits<Graph>::halfedge_descriptor ohe2= opposite(he2, g);
|
||||
typedef typename boost::graph_traits<Graph>::vertex_descriptor vertex_descriptor;
|
||||
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename boost::graph_traits<Graph>::edge_descriptor edge_descriptor;
|
||||
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
|
||||
CGAL_precondition(is_border(h1, g) && is_border(h2, g));
|
||||
CGAL_precondition(h1 != h2);
|
||||
|
||||
CGAL_precondition_code(halfedge_descriptor h = h1;)
|
||||
CGAL_precondition_code(const halfedge_descriptor done = h1;)
|
||||
CGAL_precondition_code(do { if(h == h2) break; h = next(h, g); } while(h != done);)
|
||||
CGAL_precondition(h != done);
|
||||
|
||||
vertex_descriptor v = add_vertex(g);
|
||||
face_descriptor f = add_face(g);
|
||||
edge_descriptor e1 = add_edge(g);
|
||||
edge_descriptor e2 = add_edge(g);
|
||||
halfedge_descriptor he1 = halfedge(e1, g);
|
||||
halfedge_descriptor he2 = halfedge(e2, g);
|
||||
halfedge_descriptor ohe1= opposite(he1, g);
|
||||
halfedge_descriptor ohe2= opposite(he2, g);
|
||||
|
||||
set_next(ohe1, next(h1,g),g);
|
||||
set_next(h1,he1,g);
|
||||
|
|
@ -1340,6 +1393,7 @@ add_face_to_border(typename boost::graph_traits<Graph>::halfedge_descriptor h1,
|
|||
typename boost::graph_traits<Graph>::halfedge_descriptor h2,
|
||||
Graph& g)
|
||||
{
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
|
||||
CGAL_precondition(is_border(h1,g) == true);
|
||||
CGAL_precondition(is_border(h2,g) == true);
|
||||
CGAL_precondition(h1 != h2);
|
||||
|
|
@ -1409,6 +1463,8 @@ collapse_edge(typename boost::graph_traits<Graph>::edge_descriptor e,
|
|||
typedef typename Traits::vertex_descriptor vertex_descriptor;
|
||||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_edge_descriptor(e, g));
|
||||
|
||||
halfedge_descriptor pq = halfedge(e,g);
|
||||
halfedge_descriptor qp = opposite(pq, g);
|
||||
halfedge_descriptor pt = opposite(prev(pq, g), g);
|
||||
|
|
@ -1527,8 +1583,10 @@ collapse_edge(typename boost::graph_traits<Graph>::edge_descriptor v0v1,
|
|||
typedef typename Traits::vertex_descriptor vertex_descriptor;
|
||||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_edge_descriptor(v0v1, g));
|
||||
CGAL_precondition(!get(Edge_is_constrained_map, v0v1));
|
||||
|
||||
halfedge_descriptor pq = halfedge(v0v1,g);
|
||||
CGAL_assertion( !get(Edge_is_constrained_map,v0v1) );
|
||||
|
||||
halfedge_descriptor qp = opposite(pq,g);
|
||||
halfedge_descriptor pt = opposite(prev(pq,g),g);
|
||||
|
|
@ -1666,6 +1724,8 @@ flip_edge(typename boost::graph_traits<Graph>::halfedge_descriptor h,
|
|||
typedef typename Traits::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename Traits::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, g));
|
||||
|
||||
vertex_descriptor s = source(h,g);
|
||||
vertex_descriptor t = target(h,g);
|
||||
halfedge_descriptor nh = next(h,g), nnh = next(nh,g), oh = opposite(h,g), noh = next(oh,g), nnoh = next(noh,g);
|
||||
|
|
@ -1706,6 +1766,8 @@ does_satisfy_link_condition(typename boost::graph_traits<Graph>::edge_descriptor
|
|||
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef CGAL::Halfedge_around_source_iterator<Graph> out_edge_iterator;
|
||||
|
||||
CGAL_precondition(is_valid_edge_descriptor(e, g));
|
||||
|
||||
halfedge_descriptor v0_v1 = halfedge(e,g);
|
||||
halfedge_descriptor v1_v0 = opposite(v0_v1,g);
|
||||
|
||||
|
|
|
|||
|
|
@ -195,6 +195,11 @@ make_quad(typename boost::graph_traits<Graph>::vertex_descriptor v0,
|
|||
typename boost::graph_traits<Graph>::vertex_descriptor v3,
|
||||
Graph& g)
|
||||
{
|
||||
CGAL_precondition(is_valid_vertex_descriptor(v0, g) &&
|
||||
is_valid_vertex_descriptor(v1, g) &&
|
||||
is_valid_vertex_descriptor(v2, g) &&
|
||||
is_valid_vertex_descriptor(v3, g));
|
||||
|
||||
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
|
||||
halfedge_descriptor h0 = halfedge(add_edge(g), g);
|
||||
|
|
|
|||
|
|
@ -803,6 +803,8 @@ bool is_hexahedron(typename boost::graph_traits<FaceGraph>::halfedge_descriptor
|
|||
{
|
||||
typedef typename boost::graph_traits<FaceGraph>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(hd, g));
|
||||
|
||||
halfedge_descriptor h1 = hd;
|
||||
if(is_border(h1,g)) return false;
|
||||
typedef typename boost::graph_traits<FaceGraph>::halfedge_descriptor halfedge_descriptor;
|
||||
|
|
@ -863,6 +865,8 @@ void swap_vertices(typename boost::graph_traits<FaceGraph>::vertex_descriptor& p
|
|||
{
|
||||
typedef typename boost::graph_traits<FaceGraph>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_vertex_descriptor(p, g) && is_valid_vertex_descriptor(q, g));
|
||||
|
||||
halfedge_descriptor hq=halfedge(q, g);
|
||||
halfedge_descriptor hp=halfedge(p, g);
|
||||
for(halfedge_descriptor h : halfedges_around_target(hq, g))
|
||||
|
|
@ -881,6 +885,9 @@ void swap_edges(const typename boost::graph_traits<FaceGraph>::halfedge_descript
|
|||
typedef typename boost::graph_traits<FaceGraph>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename boost::graph_traits<FaceGraph>::face_descriptor face_descriptor;
|
||||
typedef typename boost::graph_traits<FaceGraph>::vertex_descriptor vertex_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h1, g) && is_valid_halfedge_descriptor(h2, g));
|
||||
|
||||
const halfedge_descriptor oh1 = opposite(h1, g), oh2 = opposite(h2, g);
|
||||
|
||||
// backup vertex pointers
|
||||
|
|
@ -1010,6 +1017,8 @@ int vertex_index_in_face(const typename boost::graph_traits<Graph>::vertex_descr
|
|||
{
|
||||
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_vertex_descriptor(vd, g) && is_valid_face_descriptor(fd, g));
|
||||
|
||||
halfedge_descriptor start = halfedge(fd, g);
|
||||
halfedge_descriptor current = start;
|
||||
int counter = 0;
|
||||
|
|
@ -1050,7 +1059,7 @@ int halfedge_index_in_face(typename boost::graph_traits<Graph>::halfedge_descrip
|
|||
typedef typename boost::graph_traits<Graph>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename boost::graph_traits<Graph>::face_descriptor face_descriptor;
|
||||
|
||||
CGAL_precondition(he != boost::graph_traits<Graph>::null_halfedge());
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(he, g));
|
||||
CGAL_precondition(!is_border(he, g));
|
||||
|
||||
face_descriptor f = face(he, g);
|
||||
|
|
|
|||
|
|
@ -179,6 +179,8 @@ namespace CGAL {
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_edge_descriptor(ed, pmesh));
|
||||
|
||||
typename GetVertexPointMap<PolygonMesh, NamedParameters>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(CGAL::vertex_point, pmesh));
|
||||
|
|
@ -234,6 +236,8 @@ namespace CGAL {
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(fd, pmesh));
|
||||
|
||||
typename GetVertexPointMap<PolygonMesh, NamedParameters>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(CGAL::vertex_point, pmesh));
|
||||
|
|
|
|||
|
|
@ -89,6 +89,8 @@ void sum_normals(const PM& pmesh,
|
|||
|
||||
typedef typename boost::property_traits<VertexPointMap>::reference Point_ref;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(f, pmesh));
|
||||
|
||||
halfedge_descriptor he = halfedge(f, pmesh);
|
||||
vertex_descriptor v = source(he, pmesh);
|
||||
vertex_descriptor the = target(he,pmesh);
|
||||
|
|
@ -172,6 +174,8 @@ compute_face_normal(typename boost::graph_traits<PolygonMesh>::face_descriptor f
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(f, pmesh));
|
||||
|
||||
typedef typename GetGeomTraits<PolygonMesh, NamedParameters>::type GT;
|
||||
GT traits = choose_parameter<GT>(get_parameter(np, internal_np::geom_traits));
|
||||
|
||||
|
|
@ -665,6 +669,8 @@ compute_vertex_normal(typename boost::graph_traits<PolygonMesh>::vertex_descript
|
|||
using parameters::is_default_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_vertex_descriptor(v, pmesh));
|
||||
|
||||
typedef typename boost::graph_traits<PolygonMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename boost::graph_traits<PolygonMesh>::face_descriptor face_descriptor;
|
||||
|
||||
|
|
|
|||
|
|
@ -57,6 +57,8 @@ is_sharp(const typename boost::graph_traits<PolygonMesh>::halfedge_descriptor h,
|
|||
|
||||
typedef typename boost::graph_traits<PolygonMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, pmesh));
|
||||
|
||||
if(is_border_edge(h, pmesh))
|
||||
return false;
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ private:
|
|||
{
|
||||
for(face_descriptor fd : faces)
|
||||
{
|
||||
CGAL_assertion(fd != boost::graph_traits<PolygonMesh>::null_face());
|
||||
CGAL_assertion(is_valid_face_descriptor(fd, pmesh));
|
||||
|
||||
vertex_descriptor vi = target(halfedge(fd,pmesh),pmesh);
|
||||
vertex_descriptor vj = target(next(halfedge(fd,pmesh),pmesh),pmesh);
|
||||
|
|
|
|||
|
|
@ -442,8 +442,8 @@ random_location_on_face(typename boost::graph_traits<TriangleMesh>::face_descrip
|
|||
CGAL::Random& rnd = get_default_random())
|
||||
{
|
||||
CGAL_USE(tm);
|
||||
CGAL_precondition(CGAL::is_triangle_mesh(tm));
|
||||
CGAL_precondition(fd != boost::graph_traits<TriangleMesh>::null_face());
|
||||
CGAL_precondition(is_valid_face_descriptor(fd, tm));
|
||||
CGAL_precondition(is_triangle(halfedge(fd, tm), tm));
|
||||
|
||||
// calling 'rnd.uniform real' with double in case FT comes from an EPECK kernel (which doesn't seem to work too well)
|
||||
FT u(rnd.uniform_real(0., 1.));
|
||||
|
|
@ -523,8 +523,8 @@ get_descriptor_from_location(const std::pair<typename boost::graph_traits<Triang
|
|||
const face_descriptor fd = loc.first;
|
||||
const Barycentric_coordinates& bar = loc.second;
|
||||
|
||||
CGAL_precondition(CGAL::is_triangle_mesh(tm));
|
||||
CGAL_precondition(fd != boost::graph_traits<TriangleMesh>::null_face());
|
||||
CGAL_precondition(is_valid_face_descriptor(fd, tm));
|
||||
CGAL_precondition(is_triangle(halfedge(fd, tm), tm));
|
||||
CGAL_precondition(is_in_face(loc, tm));
|
||||
|
||||
// the first barycentric coordinate corresponds to source(halfedge(fd, tm), tm)
|
||||
|
|
@ -942,11 +942,10 @@ locate_vertex(typename boost::graph_traits<TriangleMesh>::vertex_descriptor vd,
|
|||
}
|
||||
}
|
||||
|
||||
CGAL_postcondition(!CGAL::is_border(hd, tm)); // must find a 'real' face incident to 'vd'
|
||||
CGAL_postcondition(!is_border(hd, tm)); // must find a 'real' face incident to 'vd'
|
||||
CGAL_assertion(target(hd, tm) == vd);
|
||||
|
||||
face_descriptor fd = face(hd, tm);
|
||||
|
||||
CGAL_assertion(target(hd, tm) == vd);
|
||||
CGAL_assertion(fd != boost::graph_traits<TriangleMesh>::null_face());
|
||||
|
||||
// isolated vertex
|
||||
|
|
@ -989,7 +988,7 @@ locate_vertex(const typename boost::graph_traits<TriangleMesh>::vertex_descripto
|
|||
const typename boost::graph_traits<TriangleMesh>::face_descriptor fd,
|
||||
const TriangleMesh& tm)
|
||||
{
|
||||
CGAL_precondition(fd != boost::graph_traits<TriangleMesh>::null_face());
|
||||
CGAL_precondition(is_valid_vertex_descriptor(vd, tm) && is_valid_face_descriptor(fd, tm));
|
||||
|
||||
FT coords[3] = { FT(0), FT(0), FT(0) };
|
||||
std::size_t vertex_local_index = vertex_index_in_face(vd, fd, tm);
|
||||
|
|
@ -1121,14 +1120,14 @@ locate_in_face(const typename internal::Location_traits<TriangleMesh, NamedParam
|
|||
using parameters::get_parameter;
|
||||
using parameters::choose_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(fd, tm));
|
||||
|
||||
VertexPointMap vpm = parameters::choose_parameter(parameters::get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(boost::vertex_point, tm));
|
||||
Geom_traits gt = choose_parameter<Geom_traits>(get_parameter(np, internal_np::geom_traits));
|
||||
|
||||
FT snap_tolerance = choose_parameter(get_parameter(np, internal_np::snapping_tolerance), 0);
|
||||
|
||||
CGAL_precondition(fd != boost::graph_traits<TriangleMesh>::null_face());
|
||||
|
||||
vertex_descriptor vd0 = source(halfedge(fd, tm), tm);
|
||||
vertex_descriptor vd1 = target(halfedge(fd, tm), tm);
|
||||
vertex_descriptor vd2 = target(next(halfedge(fd, tm), tm), tm);
|
||||
|
|
@ -1288,10 +1287,9 @@ locate_in_common_face(std::pair<typename boost::graph_traits<TriangleMesh>::face
|
|||
else if(const halfedge_descriptor* hd_ptr = boost::get<halfedge_descriptor>(&dv))
|
||||
{
|
||||
const halfedge_descriptor hd = *hd_ptr;
|
||||
face_descriptor fd = face(hd, tm);
|
||||
|
||||
if(fd != boost::graph_traits<TriangleMesh>::null_face())
|
||||
if(!is_border(hd, tm))
|
||||
{
|
||||
face_descriptor fd = face(hd, tm);
|
||||
query_location = locate_in_face(query, fd, tm, np);
|
||||
internal::snap_location_to_border<FT>(query_location, tm, tolerance); // @tmp keep or not ?
|
||||
is_query_location_in_face = is_in_face(query_location, tm);
|
||||
|
|
@ -1299,7 +1297,7 @@ locate_in_common_face(std::pair<typename boost::graph_traits<TriangleMesh>::face
|
|||
|
||||
if(!is_query_location_in_face)
|
||||
{
|
||||
fd = face(opposite(hd, tm), tm);
|
||||
face_descriptor fd = face(opposite(hd, tm), tm);
|
||||
query_location = locate_in_face(query, fd, tm, np);
|
||||
is_query_location_in_face = is_in_face(query_location, tm);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ edge_length(typename boost::graph_traits<PolygonMesh>::halfedge_descriptor h,
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(boost::graph_traits<PolygonMesh>::null_halfedge() != h);
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, pmesh));
|
||||
|
||||
typename GetVertexPointMap<PolygonMesh, NamedParameters>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
@ -132,6 +132,8 @@ edge_length(typename boost::graph_traits<PolygonMesh>::edge_descriptor e,
|
|||
const PolygonMesh& pmesh,
|
||||
const NamedParameters& np = parameters::default_values())
|
||||
{
|
||||
CGAL_precondition(is_valid_edge_descriptor(e, pmesh));
|
||||
|
||||
return edge_length(halfedge(e, pmesh), pmesh, np);
|
||||
}
|
||||
|
||||
|
|
@ -187,7 +189,7 @@ squared_edge_length(typename boost::graph_traits<PolygonMesh>::halfedge_descript
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(boost::graph_traits<PolygonMesh>::null_halfedge() != h);
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, pmesh));
|
||||
|
||||
typename GetVertexPointMap<PolygonMesh, NamedParameters>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
@ -208,6 +210,8 @@ squared_edge_length(typename boost::graph_traits<PolygonMesh>::edge_descriptor e
|
|||
const PolygonMesh& pmesh,
|
||||
const NamedParameters& np = parameters::default_values())
|
||||
{
|
||||
CGAL_precondition(is_valid_edge_descriptor(e, pmesh));
|
||||
|
||||
return squared_edge_length(halfedge(e, pmesh), pmesh, np);
|
||||
}
|
||||
|
||||
|
|
@ -415,7 +419,7 @@ face_area(typename boost::graph_traits<TriangleMesh>::face_descriptor f,
|
|||
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(boost::graph_traits<TriangleMesh>::null_face() != f);
|
||||
CGAL_precondition(is_valid_face_descriptor(f, tmesh));
|
||||
|
||||
typename GetVertexPointMap<TriangleMesh, CGAL_NP_CLASS>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
@ -486,7 +490,7 @@ squared_face_area(typename boost::graph_traits<TriangleMesh>::face_descriptor f,
|
|||
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
CGAL_precondition(boost::graph_traits<TriangleMesh>::null_face() != f);
|
||||
CGAL_precondition(is_valid_face_descriptor(f, tmesh));
|
||||
|
||||
typename GetVertexPointMap<TriangleMesh, CGAL_NP_CLASS>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
@ -741,7 +745,7 @@ face_aspect_ratio(typename boost::graph_traits<TriangleMesh>::face_descriptor f,
|
|||
const TriangleMesh& tmesh,
|
||||
const CGAL_NP_CLASS& np = parameters::default_values())
|
||||
{
|
||||
CGAL_precondition(f != boost::graph_traits<TriangleMesh>::null_face());
|
||||
CGAL_precondition(is_valid_face_descriptor(f, tmesh));
|
||||
CGAL_precondition(is_triangle(halfedge(f, tmesh), tmesh));
|
||||
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
|
|
|||
|
|
@ -292,6 +292,8 @@ void merge_duplicated_vertices_in_boundary_cycle(typename boost::graph_traits<Po
|
|||
using parameters::get_parameter;
|
||||
using parameters::choose_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, pm));
|
||||
|
||||
Vpm vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(vertex_point, pm));
|
||||
|
||||
|
|
|
|||
|
|
@ -127,9 +127,8 @@ public:
|
|||
for(std::size_t j = 0; j < size; ++j)
|
||||
vr[j] = vertices[polygon[j] ];
|
||||
|
||||
typename boost::graph_traits<PolygonMesh>::face_descriptor fd =
|
||||
CGAL::Euler::add_face(vr, pmesh);
|
||||
CGAL_assertion(fd != boost::graph_traits<PolygonMesh>::null_face());
|
||||
typename boost::graph_traits<PolygonMesh>::face_descriptor fd = CGAL::Euler::add_face(vr, pmesh);
|
||||
CGAL_postcondition(is_valid_face_descriptor(fd, pmesh));
|
||||
*i2f++ = std::make_pair(i, fd);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,6 +80,8 @@ bool is_degenerate_edge(typename boost::graph_traits<PolygonMesh>::edge_descript
|
|||
using parameters::get_parameter;
|
||||
using parameters::choose_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_edge_descriptor(e, pm));
|
||||
|
||||
typedef typename GetVertexPointMap<PolygonMesh, NamedParameters>::const_type VertexPointMap;
|
||||
VertexPointMap vpmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(vertex_point, pm));
|
||||
|
|
@ -190,11 +192,12 @@ bool is_degenerate_triangle_face(typename boost::graph_traits<TriangleMesh>::fac
|
|||
const TriangleMesh& tm,
|
||||
const NamedParameters& np = parameters::default_values())
|
||||
{
|
||||
CGAL_precondition(CGAL::is_triangle(halfedge(f, tm), tm));
|
||||
|
||||
using parameters::get_parameter;
|
||||
using parameters::choose_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(f, tm));
|
||||
CGAL_precondition(CGAL::is_triangle(halfedge(f, tm), tm));
|
||||
|
||||
typedef typename GetVertexPointMap<TriangleMesh, NamedParameters>::const_type VertexPointMap;
|
||||
VertexPointMap vpmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(vertex_point, tm));
|
||||
|
|
@ -396,14 +399,14 @@ is_needle_triangle_face(typename boost::graph_traits<TriangleMesh>::face_descrip
|
|||
const double threshold,
|
||||
const NamedParameters& np = parameters::default_values())
|
||||
{
|
||||
CGAL_precondition(threshold >= 1.);
|
||||
CGAL_precondition(f != boost::graph_traits<TriangleMesh>::null_face());
|
||||
CGAL_precondition(CGAL::is_triangle(halfedge(f, tm), tm));
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
using parameters::get_parameter;
|
||||
using parameters::choose_parameter;
|
||||
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
CGAL_precondition(is_valid_face_descriptor(f, tm));
|
||||
CGAL_precondition(CGAL::is_triangle(halfedge(f, tm), tm));
|
||||
CGAL_precondition(threshold >= 1.);
|
||||
|
||||
typedef typename GetVertexPointMap<TriangleMesh, NamedParameters>::const_type VertexPointMap;
|
||||
VertexPointMap vpmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
@ -545,15 +548,15 @@ is_cap_triangle_face(typename boost::graph_traits<TriangleMesh>::face_descriptor
|
|||
const double threshold,
|
||||
const NamedParameters& np = parameters::default_values())
|
||||
{
|
||||
CGAL_precondition(f != boost::graph_traits<TriangleMesh>::null_face());
|
||||
CGAL_precondition(CGAL::is_triangle(halfedge(f, tm), tm));
|
||||
CGAL_precondition(threshold >= -1.);
|
||||
CGAL_precondition(threshold <= 0.);
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
|
||||
using parameters::get_parameter;
|
||||
using parameters::choose_parameter;
|
||||
|
||||
typedef typename boost::graph_traits<TriangleMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
CGAL_precondition(is_valid_face_descriptor(f, tm));
|
||||
CGAL_precondition(CGAL::is_triangle(halfedge(f, tm), tm));
|
||||
CGAL_precondition(threshold >= -1.);
|
||||
CGAL_precondition(threshold <= 0.);
|
||||
|
||||
typedef typename GetVertexPointMap<TriangleMesh, NamedParameters>::const_type VertexPointMap;
|
||||
VertexPointMap vpmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
|
|||
|
|
@ -1063,7 +1063,7 @@ std::size_t stitch_boundary_cycle(const typename boost::graph_traits<PolygonMesh
|
|||
typedef typename boost::graph_traits<PolygonMesh>::halfedge_descriptor halfedge_descriptor;
|
||||
typedef typename std::pair<halfedge_descriptor, halfedge_descriptor> halfedges_pair;
|
||||
|
||||
CGAL_precondition(h != boost::graph_traits<PolygonMesh>::null_halfedge());
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(h, pmesh));
|
||||
CGAL_precondition(is_border(h, pmesh));
|
||||
CGAL_precondition(is_valid(pmesh));
|
||||
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ triangle(typename boost::graph_traits<TriangleMesh>::face_descriptor fd,
|
|||
using CGAL::parameters::choose_parameter;
|
||||
using CGAL::parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(fd, tmesh));
|
||||
|
||||
typename GetVertexPointMap<TriangleMesh, CGAL_NP_CLASS>::const_type
|
||||
vpm = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
get_const_property_map(CGAL::vertex_point, tmesh));
|
||||
|
|
|
|||
|
|
@ -474,6 +474,8 @@ bool triangulate_face(typename boost::graph_traits<PolygonMesh>::face_descriptor
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter;
|
||||
|
||||
CGAL_precondition(is_valid_face_descriptor(f, pmesh));
|
||||
|
||||
//VertexPointMap
|
||||
typedef typename GetVertexPointMap<PolygonMesh, NamedParameters>::type VPMap;
|
||||
VPMap vpmap = choose_parameter(get_parameter(np, internal_np::vertex_point),
|
||||
|
|
|
|||
|
|
@ -468,6 +468,8 @@ namespace Polygon_mesh_processing {
|
|||
using parameters::choose_parameter;
|
||||
using parameters::get_parameter_reference;
|
||||
|
||||
CGAL_precondition(is_valid_halfedge_descriptor(border_halfedge, pmesh));
|
||||
|
||||
std::vector<typename boost::graph_traits<PolygonMesh>::vertex_descriptor> patch;
|
||||
face_out = triangulate_and_refine_hole
|
||||
(pmesh, border_halfedge, face_out, std::back_inserter(patch), np).first;
|
||||
|
|
|
|||
Loading…
Reference in New Issue