Merge pull request #7034 from sloriot/PMP-coref_open_mesh_case_fix

Fix inconsistency check
This commit is contained in:
Laurent Rineau 2022-11-15 17:00:45 +01:00
commit 868793754b
4 changed files with 54 additions and 4 deletions

View File

@ -1068,15 +1068,15 @@ public:
if (!used_to_clip_a_surface && !used_to_classify_patches && (!is_tm1_closed || !is_tm2_closed))
{
//make sure there is no ambiguity in tm1
if( (patch_status_was_not_already_set[0] && previous_bitvalue[0]!=is_patch_inside_tm2[patch_id_p1] ) ||
(patch_status_was_not_already_set[1] && previous_bitvalue[1]!=is_patch_inside_tm2[patch_id_p2] ) )
if( (!patch_status_was_not_already_set[0] && previous_bitvalue[0]!=is_patch_inside_tm2.test(patch_id_p1) ) ||
(!patch_status_was_not_already_set[1] && previous_bitvalue[1]!=is_patch_inside_tm2.test(patch_id_p2) ) )
{
impossible_operation.set();
return true;
}
//make sure there is no ambiguity in tm2
if( (patch_status_was_not_already_set[2] && previous_bitvalue[2]!=is_patch_inside_tm2[patch_id_q1] ) ||
(patch_status_was_not_already_set[3] && previous_bitvalue[3]!=is_patch_inside_tm2[patch_id_q2] ) )
if( (!patch_status_was_not_already_set[2] && previous_bitvalue[2]!=is_patch_inside_tm1.test(patch_id_q1) ) ||
(!patch_status_was_not_already_set[3] && previous_bitvalue[3]!=is_patch_inside_tm1.test(patch_id_q2) ) )
{
impossible_operation.set();
return true;
@ -1091,6 +1091,15 @@ public:
patch_status_not_set_tm2.reset(patch_id_q1);
patch_status_not_set_tm2.reset(patch_id_q2);
// restore initial state, needed when checking in `inconsistent_classification()`
if (!is_tm1_closed || !is_tm2_closed)
{
is_patch_inside_tm2.reset(patch_id_p1);
is_patch_inside_tm2.reset(patch_id_p2);
is_patch_inside_tm1.reset(patch_id_q1);
is_patch_inside_tm1.reset(patch_id_q2);
}
#ifdef CGAL_COREFINEMENT_POLYHEDRA_DEBUG
#warning: Factorize the orientation predicates.
#endif //CGAL_COREFINEMENT_POLYHEDRA_DEBUG

View File

@ -0,0 +1,16 @@
OFF
8 4 0
0 0 1
1 0 1
1 1 1
0 1 1
0 0 0
1 0 0
1 1 0
0 1 0
3 0 1 2
3 2 3 0
3 6 5 4
3 4 7 6

View File

@ -0,0 +1,24 @@
OFF
8 12 0
0.75 0.75 -1
0.25 0.75 -1
0.25 0.25 -1
0.75 0.25 -1
0.75 0.25 1
0.75 0.75 1
0.25 0.75 1
0.25 0.25 1
3 4 5 6
3 0 3 2
3 1 2 7
3 0 1 6
3 3 0 5
3 2 3 4
3 6 7 4
3 2 1 0
3 7 6 1
3 6 5 0
3 5 4 3
3 4 7 2

View File

@ -1,2 +1,3 @@
${CGAL_DATA_DIR}/meshes/elephant.off ${CGAL_DATA_DIR}/meshes/sphere.off ALL 1 1 1 1
${CGAL_DATA_DIR}/meshes/open_cube.off data-coref/incompatible_with_open_cube.off ALL 0 0 0 0
data-coref/floating_squares.off data-coref/hexa.off ALL 1 1 1 1