mirror of https://github.com/CGAL/cgal
Add test for contraction<3>
This commit is contained in:
parent
1817476e2b
commit
9a0b1d17e9
|
|
@ -779,7 +779,7 @@ namespace CGAL {
|
|||
for (CMap_dart_const_iterator_of_cell<Map,i> it(amap, adart);
|
||||
res && it.cont(); ++it)
|
||||
{
|
||||
if (it->beta(i-2)->beta(i-1) != it->beta_inv(i-2)->beta(i-1) )
|
||||
if ( it->beta(i-2)->beta(i-1)!=it->beta(i-1)->beta_inv(i-2) )
|
||||
res = false;
|
||||
}
|
||||
return res;
|
||||
|
|
@ -979,28 +979,26 @@ namespace CGAL {
|
|||
if ( dg1!=NULL )
|
||||
amap.template group_attribute<0>(dg1, dg2);
|
||||
|
||||
// 3) We modify the darts of the cells incident to the edge
|
||||
// when they are marked to remove.
|
||||
for (it=to_erase.begin(); it!=to_erase.end(); ++it)
|
||||
{ amap.update_dart_of_all_attributes(*it, mark); }
|
||||
|
||||
// 4) For each dart of the cell, we modify link of neighbors.
|
||||
for ( it=to_erase.begin(); it!=to_erase.end(); ++it )
|
||||
{
|
||||
if ( !(*it)->is_free(0) )
|
||||
{
|
||||
if ( !(*it)->is_free(1) && (*it)->beta(0)!=(*it) )
|
||||
if ( !(*it)->is_free(1) )
|
||||
{
|
||||
amap.template basic_link_beta<1>((*it)->beta(0), (*it)->beta(1));
|
||||
modified_darts.push_back((*it)->beta(0));
|
||||
modified_darts.push_back((*it)->beta(1));
|
||||
|
||||
if ( (*it)->beta(1)!=*it )
|
||||
{
|
||||
/* modified_darts.push_back((*it)->beta(0));
|
||||
if ( (*it)->beta(0)!=(*it)->beta(1) )*/
|
||||
modified_darts.push_back((*it)->beta(1));
|
||||
amap.template basic_link_beta<1>((*it)->beta(0), (*it)->beta(1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO todegroup.push(Dart_pair((*it)->beta(0), *it));
|
||||
(*it)->beta(0)->unlink_beta(1);
|
||||
modified_darts.push_back((*it)->beta(0));
|
||||
(*it)->beta(0)->unlink_beta(1);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1008,8 +1006,8 @@ namespace CGAL {
|
|||
if ( !(*it)->is_free(1) )
|
||||
{
|
||||
// TODO todegroup.push(Dart_pair((*it)->beta(1), *it));
|
||||
(*it)->beta(1)->unlink_beta(0);
|
||||
modified_darts.push_back((*it)->beta(1));
|
||||
(*it)->beta(1)->unlink_beta(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1017,7 +1015,7 @@ namespace CGAL {
|
|||
// We test the split of all the incident cells for all the non
|
||||
// void attributes.
|
||||
Map::Helper::template Foreach_enabled_attributes
|
||||
<internal::Test2_split_with_deque<Map,0> >::
|
||||
<internal::Test2_split_with_deque<Map,1> >::
|
||||
// <internal::Test_split_with_deque<Map,0> >::
|
||||
run(&amap,
|
||||
&modified_darts, -1); //mark_modified_darts);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ bool check_number_of_cells_3(LCC& lcc, unsigned int nbv, unsigned int nbe,
|
|||
assert(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
std::vector<unsigned int> nbc;
|
||||
nbc=lcc.count_all_cells();
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ bool check_number_of_cells_3(LCC& lcc, unsigned int nbv, unsigned int nbe,
|
|||
assert(false);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -82,7 +82,7 @@ typename LCC::Dart_handle make_face_two_edges(LCC& lcc,
|
|||
{
|
||||
typename LCC::Dart_handle dh1 = lcc.create_dart(p1);
|
||||
lcc.template sew<1>(dh1, lcc.create_dart(p2));
|
||||
lcc.template sew<1>(dh1, dh1->beta(1));
|
||||
lcc.template sew<0>(dh1, dh1->beta(1));
|
||||
return dh1;
|
||||
}
|
||||
|
||||
|
|
@ -93,21 +93,21 @@ bool test_LCC_3()
|
|||
|
||||
typedef typename LCC::Dart_handle Dart_handle;
|
||||
typedef typename LCC::Point Point;
|
||||
|
||||
|
||||
// Construction operations
|
||||
Dart_handle dh1=lcc.make_segment(Point(0,0,0),Point(1,0,0));
|
||||
Dart_handle dh2=lcc.make_segment(Point(2,0,0),Point(2,1,0));
|
||||
Dart_handle dh3=lcc.make_segment(Point(2,2,0),Point(3,1,0));
|
||||
if ( !check_number_of_cells_3(lcc, 6, 3, 6, 3, 3) )
|
||||
return false;
|
||||
|
||||
|
||||
lcc.template sew<0>(dh2,dh1);
|
||||
lcc.template sew<1>(dh2,dh3);
|
||||
if ( !check_number_of_cells_3(lcc, 4, 3, 4, 1, 1) )
|
||||
return false;
|
||||
|
||||
Dart_handle dh5=lcc.make_triangle(Point(5,5,3),Point(7,5,3),Point(6,6,3));
|
||||
Dart_handle dh6=lcc.make_triangle(Point(5,4,3),Point(7,4,3),Point(6,3,3));
|
||||
Dart_handle dh6=lcc.make_triangle(Point(5,4,3),Point(7,4,3),Point(6,3,3));
|
||||
if ( !check_number_of_cells_3(lcc, 10, 9, 6, 3, 3) )
|
||||
return false;
|
||||
|
||||
|
|
@ -164,7 +164,7 @@ bool test_LCC_3()
|
|||
CGAL::remove_cell<LCC,1>(lcc, dh14);
|
||||
if ( !check_number_of_cells_3(lcc, 18, 26, 17, 4, 3) )
|
||||
return false;
|
||||
|
||||
|
||||
lcc.template unsew<3>(dh12);
|
||||
if ( !check_number_of_cells_3(lcc, 21, 29, 18, 4, 4) )
|
||||
return false;
|
||||
|
|
@ -173,7 +173,7 @@ bool test_LCC_3()
|
|||
CGAL::remove_cell<LCC,3>(lcc, dh12);
|
||||
if ( !check_number_of_cells_3(lcc, 13, 17, 10, 2, 2) )
|
||||
return false;
|
||||
|
||||
|
||||
CGAL::remove_cell<LCC,1>(lcc, dh11);
|
||||
if ( !check_number_of_cells_3(lcc, 12, 16, 10, 2, 2) )
|
||||
return false;
|
||||
|
|
@ -184,14 +184,14 @@ bool test_LCC_3()
|
|||
itend=lcc.template darts_of_cell<0,2>(dh10).end();
|
||||
it!=itend; ++it )
|
||||
toremove.push_back( it );
|
||||
|
||||
|
||||
for ( typename std::vector<Dart_handle>::iterator
|
||||
it=toremove.begin(), itend=toremove.end(); it!=itend; ++it )
|
||||
CGAL::remove_cell<LCC,1>(lcc, *it);
|
||||
toremove.clear();
|
||||
if ( !check_number_of_cells_3(lcc, 11, 13, 8, 2, 2) )
|
||||
return false;
|
||||
|
||||
|
||||
CGAL::remove_cell<LCC,0>(lcc, dh9);
|
||||
if ( !check_number_of_cells_3(lcc, 10, 12, 8, 2, 2) )
|
||||
return false;
|
||||
|
|
@ -201,14 +201,14 @@ bool test_LCC_3()
|
|||
itend=lcc.template darts_of_cell<0,2>(dh8).end();
|
||||
it!=itend; ++it )
|
||||
toremove.push_back( it );
|
||||
|
||||
|
||||
for ( typename std::vector<Dart_handle>::iterator
|
||||
it=toremove.begin(), itend=toremove.end(); it!=itend; ++it )
|
||||
CGAL::remove_cell<LCC,1>(lcc, *it);
|
||||
toremove.clear();
|
||||
if ( !check_number_of_cells_3(lcc, 9, 9, 6, 2, 2) )
|
||||
return false;
|
||||
|
||||
|
||||
CGAL::remove_cell<LCC,0>(lcc, dh7);
|
||||
if ( !check_number_of_cells_3(lcc, 8, 8, 6, 2, 2) )
|
||||
return false;
|
||||
|
|
@ -226,13 +226,13 @@ bool test_LCC_3()
|
|||
if ( !check_number_of_cells_3(lcc, 5, 3, 5, 2, 2) )
|
||||
return false;
|
||||
|
||||
lcc.template unsew<0>(dh2);
|
||||
lcc.template unsew<0>(dh2);
|
||||
if ( !check_number_of_cells_3(lcc, 6, 3, 6, 3, 3) )
|
||||
return false;
|
||||
|
||||
CGAL::remove_cell<LCC,1>(lcc, dh1);
|
||||
CGAL::remove_cell<LCC,1>(lcc, dh2);
|
||||
CGAL::remove_cell<LCC,1>(lcc, dh3);
|
||||
CGAL::remove_cell<LCC,1>(lcc, dh3);
|
||||
if ( !check_number_of_cells_3(lcc, 0, 0, 0, 0, 0) )
|
||||
return false;
|
||||
|
||||
|
|
@ -357,7 +357,7 @@ bool test_LCC_3()
|
|||
dh2 = lcc.make_triangle(Point(5,4,3),Point(7,4,3),Point(6,3,3));
|
||||
lcc.template sew<2>(dh1, dh2);
|
||||
|
||||
dh2 = lcc.make_triangle(Point(5,5,4),Point(7,5,4),Point(6,6,4));
|
||||
dh3 = lcc.make_triangle(Point(5,5,4),Point(7,5,4),Point(6,6,4));
|
||||
lcc.template sew<3>(dh1, dh3);
|
||||
|
||||
dh3 = lcc.make_triangle(Point(5,4,4),Point(7,4,4),Point(6,3,4));
|
||||
|
|
@ -442,7 +442,7 @@ bool test_LCC_3()
|
|||
if ( !check_number_of_cells_3(lcc, 9, 17, 11, 2, 1) )
|
||||
return false;
|
||||
|
||||
CGAL::contract_cell<LCC,1>(lcc,dh1->beta(1));
|
||||
CGAL::contract_cell<LCC,1>(lcc,dh1);
|
||||
if ( !check_number_of_cells_3(lcc, 10, 16, 10, 2, 2 ) )
|
||||
return false;
|
||||
lcc.clear();
|
||||
|
|
@ -614,16 +614,44 @@ bool test_LCC_3()
|
|||
return false;
|
||||
|
||||
dh1 = lcc.make_segment(Point(0,0,0),Point(1,0,0));
|
||||
lcc.template sew<1>(dh1, dh1);
|
||||
lcc.template sew<1>(dh1, dh1); lcc.template sew<1>(dh1->beta(2), dh1->beta(2));
|
||||
CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
if ( !check_number_of_cells_3(lcc, 0, 0, 0, 0, 0) )
|
||||
return false;
|
||||
lcc.clear();
|
||||
|
||||
dh1 = lcc.make_segment(Point(0,0,0),Point(1,0,0));
|
||||
lcc.template sew<1>(dh1, dh1); lcc.template sew<1>(dh1->beta(2), dh1->beta(2));
|
||||
CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
if ( !check_number_of_cells_3(lcc, 0, 0, 0, 0, 0) )
|
||||
dh1 = lcc.
|
||||
make_hexahedron(Point(0,0,0),Point(1,0,0),Point(1,1,0),Point(0,1,0),
|
||||
Point(0,1,1),Point(0,0,1),Point(1,0,1),Point(1,1,1));
|
||||
dh2 = lcc.
|
||||
make_hexahedron(Point(0,3,0),Point(1,3,0),Point(1,4,0),Point(0,4,0),
|
||||
Point(0,4,1),Point(0,3,1),Point(1,3,1),Point(1,4,1));
|
||||
dh2 = lcc.beta(dh2, 2,1,1,2);
|
||||
lcc.template sew<3>(dh1,dh2);
|
||||
|
||||
CGAL::contract_cell<LCC,1>(lcc,lcc.beta(dh2,2,1));
|
||||
CGAL::contract_cell<LCC,1>(lcc,lcc.beta(dh2,2,0));
|
||||
CGAL::contract_cell<LCC,1>(lcc,lcc.beta(dh2,1,1,2,0));
|
||||
CGAL::contract_cell<LCC,1>(lcc,lcc.beta(dh2,1,1,2,1));
|
||||
|
||||
if ( !check_number_of_cells_3(lcc, 8, 16, 11, 2, 1) )
|
||||
return false;
|
||||
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,0,2));
|
||||
if ( !check_number_of_cells_3(lcc, 8, 15, 10, 2, 1 ) )
|
||||
return false;
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,1,1,2));
|
||||
if ( !check_number_of_cells_3(lcc, 8, 14, 9, 2, 1 ) )
|
||||
return false;
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,1,2));
|
||||
if ( !check_number_of_cells_3(lcc, 8, 13, 8, 2, 1 ) )
|
||||
return false;
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,2));
|
||||
if ( !check_number_of_cells_3(lcc, 8, 12, 7, 2, 1 ) )
|
||||
return false;
|
||||
|
||||
CGAL::contract_cell<LCC,3>(lcc,dh2);
|
||||
if ( !check_number_of_cells_3(lcc, 8, 12, 6, 1, 1 ) )
|
||||
return false;
|
||||
lcc.clear();
|
||||
|
||||
|
|
@ -649,71 +677,24 @@ bool test_LCC_3()
|
|||
if ( !check_number_of_cells_3(lcc, 12, 24, 16, 3, 1) )
|
||||
return false;
|
||||
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,2,1));
|
||||
if ( !check_number_of_cells_3(lcc, 10, 16, 10, 2, 2 ) )
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,0,2));
|
||||
if ( !check_number_of_cells_3(lcc, 12, 23, 15, 3, 1 ) )
|
||||
return false;
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,1,1,2));
|
||||
if ( !check_number_of_cells_3(lcc, 12, 22, 14, 3, 1 ) )
|
||||
return false;
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,1,2));
|
||||
if ( !check_number_of_cells_3(lcc, 12, 21, 13, 3, 1 ) )
|
||||
return false;
|
||||
CGAL::contract_cell<LCC,2>(lcc,lcc.beta(dh2,2));
|
||||
if ( !check_number_of_cells_3(lcc, 12, 20, 12, 3, 1 ) )
|
||||
return false;
|
||||
|
||||
CGAL::contract_cell<LCC,3>(lcc,dh2);
|
||||
if ( !check_number_of_cells_3(lcc, 12, 20, 11, 2, 1 ) )
|
||||
return false;
|
||||
lcc.clear();
|
||||
|
||||
/*
|
||||
|
||||
dh1 = make_triangle(lcc,, , );
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract volume5: " << flush; CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
lcc.clear();
|
||||
|
||||
dh1 = make_triangle(lcc,, , );
|
||||
dh2 = make_triangle(lcc,, , );
|
||||
lcc.template sew<2>(dh1, dh2);lcc.template sew<2>(dh1->beta(0), dh2->beta(1));
|
||||
lcc.template sew<2>(dh1->beta(1), dh2->beta(0));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract volume6: " << flush; CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
lcc.clear();
|
||||
|
||||
dh1 = make_triangle(lcc,, , );
|
||||
dh2 = make_triangle(lcc,, , );
|
||||
lcc.template sew<3>(dh1, dh2);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract volume7: " << flush; CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
lcc.clear();
|
||||
|
||||
dh1 = make_combinatorial_tetrahedron(lcc,, , ,
|
||||
);
|
||||
dh2 = make_combinatorial_tetrahedron(lcc,, , ,
|
||||
);
|
||||
lcc.template sew<3>(dh1, dh2);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract edge8: " << flush; CGAL::contract_cell<LCC,1>(lcc,dh1->beta(1,2,1));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract facet8: " << flush; CGAL::contract_cell<LCC,2>(lcc,dh1->beta(2));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract facet8: " << flush; CGAL::contract_cell<LCC,2>(lcc,dh1->beta(1,2));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract volume8: " << flush; CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
lcc.clear();
|
||||
|
||||
dh1 = make_combinatorial_tetrahedron(lcc,, , ,
|
||||
);
|
||||
dh2 = make_combinatorial_tetrahedron(lcc,, , ,
|
||||
);
|
||||
dh3 = make_combinatorial_tetrahedron(lcc,, , ,
|
||||
);
|
||||
lcc.template sew<3>(dh1, dh2); lcc.template sew<3>(dh1->beta(2), dh3);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract edge9: " << flush; CGAL::contract_cell<LCC,1>(lcc,dh1->beta(1,2,1));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract facet9: " << flush; CGAL::contract_cell<LCC,2>(lcc,dh1->beta(2));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract facet9: " << flush; CGAL::contract_cell<LCC,2>(lcc,dh1->beta(1,2));
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
cout << "contract volume8: " << flush; CGAL::contract_cell<LCC,3>(lcc,dh1);
|
||||
lcc.display_characteristics(cout) << ", valid=" << lcc.is_valid() << endl;
|
||||
lcc.clear();
|
||||
*/
|
||||
|
||||
// Construction from Polyhedron_3
|
||||
{
|
||||
CGAL::Polyhedron_3<typename LCC::Traits> P;
|
||||
|
|
@ -748,7 +729,7 @@ bool test_LCC_3()
|
|||
return false;
|
||||
lcc.clear();
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue