mirror of https://github.com/CGAL/cgal
adaptation to new ID_support
This commit is contained in:
parent
45c33082f0
commit
2faca5a6e5
|
|
@ -408,16 +408,10 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
|
|
||||||
SFace_handle sf;
|
SFace_handle sf;
|
||||||
if(!CGAL::assign(sf,o)) {
|
if(!CGAL::assign(sf,o)) {
|
||||||
SHalfedge_handle se;
|
|
||||||
if(CGAL::assign(se,o))
|
|
||||||
CGAL_NEF_TRACEN("on sedge " << PH(se) << " on facet " << se->facet()->plane());
|
|
||||||
SVertex_handle sv;
|
|
||||||
if(CGAL::assign(sv,o))
|
|
||||||
CGAL_NEF_TRACEN("on svertex " << sv->point());
|
|
||||||
CGAL_assertion_msg( 0, "it is not possible to decide which one is a visible facet (if any)");
|
CGAL_assertion_msg( 0, "it is not possible to decide which one is a visible facet (if any)");
|
||||||
return Halffacet_handle();
|
return Halffacet_handle();
|
||||||
}
|
}
|
||||||
|
|
||||||
SFace_cycle_iterator fc = sf->sface_cycles_begin(),
|
SFace_cycle_iterator fc = sf->sface_cycles_begin(),
|
||||||
fce = sf->sface_cycles_end();
|
fce = sf->sface_cycles_end();
|
||||||
if( is_empty_range( fc, fce)) {
|
if( is_empty_range( fc, fce)) {
|
||||||
|
|
@ -682,7 +676,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
const Selection& BOP, SNC_structure& rsnc
|
const Selection& BOP, SNC_structure& rsnc
|
||||||
,Association& A)
|
,Association& A)
|
||||||
/*{\opOverlays two spheres maps.}*/ {
|
/*{\opOverlays two spheres maps.}*/ {
|
||||||
|
// CGAL_NEF_SETDTHREAD(19*43*131);
|
||||||
//#define CGAL_NEF3_DUMP_SPHERE_MAPS
|
//#define CGAL_NEF3_DUMP_SPHERE_MAPS
|
||||||
#ifdef CGAL_NEF3_DUMP_SPHERE_MAPS
|
#ifdef CGAL_NEF3_DUMP_SPHERE_MAPS
|
||||||
typedef SM_io_parser<SM_const_decorator> SM_io_parser;
|
typedef SM_io_parser<SM_const_decorator> SM_io_parser;
|
||||||
|
|
@ -711,7 +705,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
std::cerr << "back " << sei2->twin()->get_index() << std::endl;
|
std::cerr << "back " << sei2->twin()->get_index() << std::endl;
|
||||||
} */
|
} */
|
||||||
O.select( BOP);
|
O.select( BOP);
|
||||||
O.simplify();
|
O.simplify(A);
|
||||||
|
|
||||||
#ifdef CGAL_NEF3_DUMP_SPHERE_MAPS
|
#ifdef CGAL_NEF3_DUMP_SPHERE_MAPS
|
||||||
CGAL_NEF_TRACEN(" result sphere map:");
|
CGAL_NEF_TRACEN(" result sphere map:");
|
||||||
|
|
@ -740,6 +734,22 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
return v01;
|
return v01;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Selection>
|
||||||
|
Vertex_handle binop_local_views(Vertex_const_handle v0,
|
||||||
|
Vertex_const_handle v1,
|
||||||
|
const Selection& BOP,
|
||||||
|
SNC_structure& rsnc) {
|
||||||
|
|
||||||
|
CGAL_assertion( v0->point() == v1->point());
|
||||||
|
Vertex_handle v01 = rsnc.new_vertex( v0->point(), BOP( v0->mark(),v1->mark()));
|
||||||
|
CGAL_NEF_TRACEN(" binop result on vertex "<<&*v01<<" on "<<&*(v01->sncp()));
|
||||||
|
SM_overlayer O(&*v01);
|
||||||
|
O.subdivide( &*v0, &*v1);
|
||||||
|
O.select( BOP);
|
||||||
|
O.simplify();
|
||||||
|
return v01;
|
||||||
|
}
|
||||||
|
|
||||||
Vertex_handle create_local_view_on( const Point_3& p, Halfedge_handle e) {
|
Vertex_handle create_local_view_on( const Point_3& p, Halfedge_handle e) {
|
||||||
SNC_constructor C(*sncp());
|
SNC_constructor C(*sncp());
|
||||||
return C.create_from_edge( e, p);
|
return C.create_from_edge( e, p);
|
||||||
|
|
@ -871,9 +881,16 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
v1 = D.create_local_view_on( p, e);
|
v1 = D.create_local_view_on( p, e);
|
||||||
if( inverse_order)
|
if( inverse_order)
|
||||||
std::swap( v0, v1);
|
std::swap( v0, v1);
|
||||||
|
SNC_constructor C(result);
|
||||||
|
#ifdef CGAL_NEF_EXPERIMENTAL_CODE
|
||||||
|
Sphere_map* M0 = C.create_edge_edge_overlay(e0, e, p, bop, inverse_order, A);
|
||||||
|
// SM_overlayer O(M0);
|
||||||
|
// O.simplify(A);
|
||||||
|
#else
|
||||||
D.binop_local_views( v0, v1, bop, result,A);
|
D.binop_local_views( v0, v1, bop, result,A);
|
||||||
result.delete_vertex(v0);
|
result.delete_vertex(v0);
|
||||||
result.delete_vertex(v1);
|
result.delete_vertex(v1);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if( CGAL::assign( f, o1)) {
|
else if( CGAL::assign( f, o1)) {
|
||||||
#ifdef CGAL_NEF3_OVERLAY_BY_HAND_OFF
|
#ifdef CGAL_NEF3_OVERLAY_BY_HAND_OFF
|
||||||
|
|
@ -890,7 +907,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
SNC_constructor C(result);
|
SNC_constructor C(result);
|
||||||
Sphere_map* M0 = C.create_edge_facet_overlay(e0, f, p, bop, inverse_order, A);
|
Sphere_map* M0 = C.create_edge_facet_overlay(e0, f, p, bop, inverse_order, A);
|
||||||
SM_overlayer O(M0);
|
SM_overlayer O(M0);
|
||||||
O.simplify();
|
O.simplify(A);
|
||||||
#endif // CGAL_NEF3_OVERLAY_BY_HAND_OFF
|
#endif // CGAL_NEF3_OVERLAY_BY_HAND_OFF
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -923,7 +940,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
\precondition: the structure |result| is empty.}*/ {
|
\precondition: the structure |result| is empty.}*/ {
|
||||||
|
|
||||||
// std::cerr << "check order " << &snc1 << ", " << &snc2 << std::endl;
|
// std::cerr << "check order " << &snc1 << ", " << &snc2 << std::endl;
|
||||||
|
// CGAL_NEF_SETDTHREAD(23);
|
||||||
CGAL_assertion( sncp()->is_empty());
|
CGAL_assertion( sncp()->is_empty());
|
||||||
CGAL_assertion( pl1 != NULL && pl2 != NULL);
|
CGAL_assertion( pl1 != NULL && pl2 != NULL);
|
||||||
// CGAL_NEF_SETDTHREAD(19*131*43);
|
// CGAL_NEF_SETDTHREAD(19*131*43);
|
||||||
|
|
@ -984,9 +1001,18 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
CGAL_NEF_TRACEN("=> for all v0 in snc1, qualify v0 with respect snc2");
|
CGAL_NEF_TRACEN("=> for all v0 in snc1, qualify v0 with respect snc2");
|
||||||
// int i=2;
|
// int i=2;
|
||||||
Association A;
|
Association A;
|
||||||
|
SHalfedge_const_iterator sei;
|
||||||
|
CGAL_forall_shalfedges(sei, snc1)
|
||||||
|
A.initialize_hash(sei);
|
||||||
|
CGAL_forall_shalfedges(sei, snc2)
|
||||||
|
A.initialize_hash(sei);
|
||||||
|
SHalfloop_const_iterator sli;
|
||||||
|
CGAL_forall_shalfloops(sli, snc1)
|
||||||
|
A.initialize_hash(sli);
|
||||||
|
CGAL_forall_shalfloops(sli, snc2)
|
||||||
|
A.initialize_hash(sli);
|
||||||
|
|
||||||
CGAL_forall_vertices( v0, snc1) {
|
CGAL_forall_vertices( v0, snc1) {
|
||||||
// if(i-- > 0){ std::cerr << "skip" << std::endl; continue;}
|
|
||||||
CGAL_assertion(!ignore[v0]);
|
CGAL_assertion(!ignore[v0]);
|
||||||
Point_3 p0(v0->point());
|
Point_3 p0(v0->point());
|
||||||
Vertex_handle v;
|
Vertex_handle v;
|
||||||
|
|
@ -1008,27 +1034,23 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
timer_overlay.start();
|
timer_overlay.start();
|
||||||
#endif
|
#endif
|
||||||
if( CGAL::assign( v, o)) {
|
if( CGAL::assign( v, o)) {
|
||||||
// std::cerr << "v" << std::endl; return;
|
|
||||||
CGAL_NEF_TRACEN("p0 found on vertex");
|
CGAL_NEF_TRACEN("p0 found on vertex");
|
||||||
binop_local_views( v0, v, BOP, *sncp(),A);
|
binop_local_views( v0, v, BOP, *sncp(),A);
|
||||||
ignore[v] = true;
|
ignore[v] = true;
|
||||||
}
|
}
|
||||||
else if( CGAL::assign( e, o)) {
|
else if( CGAL::assign( e, o)) {
|
||||||
// std::cerr << "e" << std::endl;
|
|
||||||
CGAL_NEF_TRACEN("p0 found on edge");
|
CGAL_NEF_TRACEN("p0 found on edge");
|
||||||
Vertex_handle v1 = create_local_view_on( p0, e);
|
Vertex_handle v1 = create_local_view_on( p0, e);
|
||||||
binop_local_views( v0, v1, BOP, *sncp(),A);
|
binop_local_views( v0, v1, BOP, *sncp(),A);
|
||||||
sncp()->delete_vertex(v1);
|
sncp()->delete_vertex(v1);
|
||||||
}
|
}
|
||||||
else if( CGAL::assign( f, o)) {
|
else if( CGAL::assign( f, o)) {
|
||||||
// std::cerr << "f" << std::endl;
|
|
||||||
CGAL_NEF_TRACEN("p0 found on facet" << f->plane());
|
CGAL_NEF_TRACEN("p0 found on facet" << f->plane());
|
||||||
Vertex_handle v1 = create_local_view_on( p0, f);
|
Vertex_handle v1 = create_local_view_on( p0, f);
|
||||||
binop_local_views( v0, v1, BOP, *sncp(),A);
|
binop_local_views( v0, v1, BOP, *sncp(),A);
|
||||||
sncp()->delete_vertex(v1);
|
sncp()->delete_vertex(v1);
|
||||||
}
|
}
|
||||||
else if( CGAL::assign( c, o)) {
|
else if( CGAL::assign( c, o)) {
|
||||||
// std::cerr << "c" << std::endl;
|
|
||||||
CGAL_NEF_TRACEN("p0 found on volume with mark " << c->mark());
|
CGAL_NEF_TRACEN("p0 found on volume with mark " << c->mark());
|
||||||
#ifdef CGAL_NEF3_OVERLAY_IF_NEEDED_OFF
|
#ifdef CGAL_NEF3_OVERLAY_IF_NEEDED_OFF
|
||||||
if(true) {
|
if(true) {
|
||||||
|
|
@ -1045,7 +1067,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
SM_decorator SM(&*v1);
|
SM_decorator SM(&*v1);
|
||||||
SM.change_marks(BOP, c->mark());
|
SM.change_marks(BOP, c->mark());
|
||||||
SM_overlayer O(&*v1);
|
SM_overlayer O(&*v1);
|
||||||
O.simplify();
|
O.simplify(A);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
CGAL_NEF_TRACEN("vertex in volume deleted " << std::endl <<
|
CGAL_NEF_TRACEN("vertex in volume deleted " << std::endl <<
|
||||||
|
|
@ -1115,7 +1137,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
SM_decorator SM(&*v1);
|
SM_decorator SM(&*v1);
|
||||||
SM.change_marks(c->mark(), BOP);
|
SM.change_marks(c->mark(), BOP);
|
||||||
SM_overlayer O(&*v1);
|
SM_overlayer O(&*v1);
|
||||||
O.simplify();
|
O.simplify(A);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
CGAL_NEF_TRACEN("vertex in volume deleted " << std::endl <<
|
CGAL_NEF_TRACEN("vertex in volume deleted " << std::endl <<
|
||||||
|
|
@ -1224,7 +1246,7 @@ class SNC_decorator : public SNC_const_decorator<Map> {
|
||||||
CGAL_NEF_TRACEN(&*v0<<" "<<v0->point()));
|
CGAL_NEF_TRACEN(&*v0<<" "<<v0->point()));
|
||||||
|
|
||||||
SNC_external_structure es(*sncp(), pl0);
|
SNC_external_structure es(*sncp(), pl0);
|
||||||
es.build_after_binary_operation();
|
es.build_after_binary_operation(A);
|
||||||
|
|
||||||
#ifdef CGAL_NEF3_DUMP_SNC_OPERATORS
|
#ifdef CGAL_NEF3_DUMP_SNC_OPERATORS
|
||||||
CGAL_NEF_TRACEN("=> construction completed, result: ");
|
CGAL_NEF_TRACEN("=> construction completed, result: ");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue