Changing the testsuite to the new interface

TODO: Union of balls example
This commit is contained in:
Nico Kruithof 2006-06-13 15:08:29 +00:00
parent 5c457fa2f3
commit abd4797802
3 changed files with 120 additions and 140 deletions

View File

@ -1,6 +1,6 @@
// examples/Skin_surface_3/union_of_balls_simple.C // examples/Skin_surface_3/union_of_balls_simple.C
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Union_of_balls_3.h> #include <CGAL/union_of_balls_3.h>
#include <CGAL/Polyhedron_3.h> #include <CGAL/Polyhedron_3.h>
// #include <CGAL/mesh_union_of_balls_3.h> // #include <CGAL/mesh_union_of_balls_3.h>
#include <list> #include <list>

View File

@ -32,63 +32,92 @@ bool test(char * filename, double shrink) {
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
bool result; bool result;
char *filename;
result = test("data/caffeine.cin", .5); filename = "data/caffeine.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/ball.cin", .5); filename = "data/ball.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/degenerate.cin", .5); filename = "data/degenerate.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test1.cin", .5); filename = "data/test1.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test2.cin", .5); filename = "data/test2.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test3.cin", .5); filename = "data/test3.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test4.cin", .5); filename = "data/test4.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test5.cin", .5); filename = "data/test5.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test6.cin", .5); filename = "data/test6.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test7.cin", .5); filename = "data/test7.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test8.cin", .5); filename = "data/test8.cin";
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test9.cin", .5); result = test(filename, .5);
filename = "data/test9.cin";
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test10.cin", .5); result = test(filename, .5);
filename = "data/test10.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test11.cin", .5); filename = "data/test11.cin";
result = test(filename, .5);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/caffeine.cin", .85); filename = "data/caffeine.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/ball.cin", .85); filename = "data/ball.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/degenerate.cin", .85); filename = "data/degenerate.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test1.cin", .85); filename = "data/test1.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test2.cin", .85); filename = "data/test2.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test3.cin", .85); filename = "data/test3.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test4.cin", .85); filename = "data/test4.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test5.cin", .85); filename = "data/test5.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test6.cin", .85); filename = "data/test6.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test7.cin", .85); filename = "data/test7.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test8.cin", .85); filename = "data/test8.cin";
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test9.cin", .85); result = test(filename, .85);
filename = "data/test9.cin";
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test10.cin", .85); result = test(filename, .85);
filename = "data/test10.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
result = test("data/test11.cin", .85); filename = "data/test11.cin";
result = test(filename, .85);
CGAL_assertion(result); CGAL_assertion(result);
return 0; return 0;

View File

@ -1,128 +1,79 @@
// test/Skin_surface_3/subdivision_test.C // test/Skin_surface_3/subdivision_test.C
#include <CGAL/skin_surface_3.h> #include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Skin_surface_traits_3.h> #include <CGAL/Skin_surface_3.h>
#include <CGAL/Regular_triangulation_euclidean_traits_3.h>
#include <CGAL/Regular_triangulation_3.h>
#include <CGAL/Triangulated_mixed_complex_3.h>
#include <CGAL/triangulate_mixed_complex_3.h>
#include <CGAL/Marching_tetrahedra_traits_skin_surface_3.h>
#include <CGAL/Marching_tetrahedra_observer_default_3.h>
#include <CGAL/Marching_tetrahedra_observer_skin_surface_3.h>
#include <CGAL/marching_tetrahedra_3.h>
#include <CGAL/Polyhedron_3.h> #include <CGAL/Polyhedron_3.h>
#include <CGAL/mesh_skin_surface_3.h>
#include <CGAL/Skin_surface_refinement_traits_3.h> #include <CGAL/subdivide_skin_surface_mesh_3.h>
#include <CGAL/Skin_surface_refinement_traits_with_face_info_3.h> #include <list>
#include <CGAL/Skin_surface_polyhedral_items_3.h>
#include <CGAL/skin_surface_sqrt3_3.h>
typedef CGAL::Skin_surface_traits_3<> Skin_traits;
typedef Skin_traits::Regular_traits Regular_traits;
typedef CGAL::Regular_triangulation_3<Regular_traits> Regular;
typedef Regular_traits::Weighted_point Reg_weighted_point;
typedef Regular_traits::Bare_point Reg_point;
typedef CGAL::Triangulated_mixed_complex_3<Skin_traits> Tr2;
typedef Tr2::Cell_handle Tr2_cell_handle;
typedef Tr2::Finite_cells_iterator Tr2_Fin_cells_it;
typedef Tr2::Finite_vertices_iterator Tr2_Fin_vertices_it;
typedef Skin_traits::Polyhedron_traits Polyhedron_kernel;
typedef CGAL::Polyhedron_3<Polyhedron_kernel> Polyhedron;
typedef CGAL::Skin_surface_polyhedral_items_3<Tr2> Polyhedral_items;
typedef CGAL::Polyhedron_3<Polyhedron_kernel, Polyhedral_items>
Polyhedron_plus;
typedef Polyhedron_kernel::RT Polyhedron_rt;
typedef CGAL::Marching_tetrahedra_traits_skin_surface_3<
Tr2, Polyhedron, Skin_traits::T2P_converter> Marching_tetrahedra_traits;
typedef CGAL::Marching_tetrahedra_observer_default_3<
Tr2, Polyhedron> Marching_observer_default;
typedef CGAL::Marching_tetrahedra_observer_skin_surface_3<
Tr2, Polyhedron_plus> Marching_observer_skin_surface;
typedef CGAL::Skin_surface_refinement_traits_3<
Tr2,
Polyhedron,
Skin_traits::T2P_converter,
Skin_traits::P2T_converter> Skin_refinement_traits;
typedef CGAL::Skin_surface_refinement_traits_with_face_info_3<
Tr2,
Polyhedron_plus,
Skin_traits::T2P_converter,
Skin_traits::P2T_converter> Skin_refinement_traits_plus;
#include <fstream> #include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Regular_triangulation_euclidean_traits_3<K> Traits;
typedef CGAL::Skin_surface_3<Traits> Skin_surface_3;
typedef Skin_surface_3::FT FT;
typedef Skin_surface_3::Weighted_point Weighted_point;
typedef Skin_surface_3::Bare_point Bare_point;
typedef CGAL::Polyhedron_3<K> Polyhedron;
template < class Triangulated_mixed_complex, typedef CGAL::Skin_surface_polyhedral_items_3<Skin_surface_3> Poly_items_skin;
class Polyhedron, typedef CGAL::Polyhedron_3<K,Poly_items_skin> Polyhedron_skin;
class Marching_traits,
class Marching_observer,
class Skin_surface_refinement_traits>
void construct_and_subdivide_mesh(
Triangulated_mixed_complex &triangulated_mixed_complex,
Polyhedron &polyhedron,
Marching_traits &marching_traits,
Marching_observer &marching_observer,
Skin_surface_refinement_traits &refinement_traits) {
CGAL::marching_tetrahedra_3( #include <fstream>
triangulated_mixed_complex, polyhedron, marching_traits, marching_observer);
CGAL::skin_surface_sqrt3(polyhedron, refinement_traits, 4); Skin_surface_3 create_skin_surface(char * filename, double shrink) {
std::list<Weighted_point> l;
std::ifstream in(filename);
CGAL_assertion(in.is_open());
Weighted_point wp;
while (in >> wp) l.push_front(wp);
return Skin_surface_3(l.begin(), l.end(), shrink);
}
template < class Skin_surface_3, class Polyhedron>
bool construct_and_subdivide_mesh(Skin_surface_3 &skin_surface,
Polyhedron &polyhedron)
{
CGAL::mesh_skin_surface_3(skin_surface, polyhedron);
CGAL_assertion(polyhedron.is_valid() && polyhedron.is_closed());
CGAL::subdivide_skin_surface_mesh_3(polyhedron, skin_surface);
return (polyhedron.is_valid() && polyhedron.is_closed());
} }
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
double shrink = .85; bool result;
Skin_traits skin_traits(shrink);
Marching_tetrahedra_traits marching_traits;
while (argc>1) {
argc--; argv++;
std::ifstream is(argv[0]);
Regular regular; std::vector<char *> filenames;
Reg_weighted_point wp; filenames.push_back("data/caffeine.cin");
filenames.push_back("data/ball.cin");
filenames.push_back("data/degenerate.cin");
filenames.push_back("data/test1.cin");
filenames.push_back("data/test2.cin");
filenames.push_back("data/test3.cin");
filenames.push_back("data/test4.cin");
filenames.push_back("data/test5.cin");
filenames.push_back("data/test6.cin");
filenames.push_back("data/test7.cin");
filenames.push_back("data/test8.cin");
filenames.push_back("data/test9.cin");
filenames.push_back("data/test10.cin");
filenames.push_back("data/test11.cin");
while (is >> wp) regular.insert(wp); Polyhedron p;
CGAL::skin_surface_construct_bounding_box_3(regular, skin_traits); Polyhedron_skin p_skin;
for (std::vector<char *>::size_type i=0; i<filenames.size(); i++) {
Skin_surface_3 skin_surface = create_skin_surface(filenames[i], .5);
Polyhedron p;
// Triangulate mixed complex: result = construct_and_subdivide_mesh(skin_surface, p);
Tr2 triangulated_mixed_complex; CGAL_assertion(result);
CGAL::triangulate_mixed_complex_3( p.clear();
regular, triangulated_mixed_complex, skin_traits);
Polyhedron polyhedron;
Marching_tetrahedra_traits marching_traits;
Marching_observer_default marching_observer;
Skin_refinement_traits refinement_traits(triangulated_mixed_complex);
// Without additional face information in the polyhedron
construct_and_subdivide_mesh(
triangulated_mixed_complex, polyhedron,
marching_traits, marching_observer,
refinement_traits);
Polyhedron_plus polyhedron_plus;
Marching_observer_skin_surface marching_observer_plus;
Skin_refinement_traits_plus
refinement_traits_plus(triangulated_mixed_complex);
// With additional face information in the polyhedron
construct_and_subdivide_mesh(
triangulated_mixed_complex, polyhedron_plus,
marching_traits, marching_observer_plus,
refinement_traits_plus);
result = construct_and_subdivide_mesh(skin_surface, p_skin);
CGAL_assertion(result);
p_skin.clear();
} }
return 0; return 0;