From 745d397f9cfe05076898ab77d1c9f0eb595123ea Mon Sep 17 00:00:00 2001 From: Monique Teillaud Date: Fri, 4 Dec 1998 09:09:26 +0000 Subject: [PATCH] *** empty log message *** --- Packages/Triangulation_3/demo/essai.C | 375 ++++++++++++++++++++++---- 1 file changed, 321 insertions(+), 54 deletions(-) diff --git a/Packages/Triangulation_3/demo/essai.C b/Packages/Triangulation_3/demo/essai.C index d4b3c2e4f1a..9455ac55c68 100644 --- a/Packages/Triangulation_3/demo/essai.C +++ b/Packages/Triangulation_3/demo/essai.C @@ -16,6 +16,7 @@ #include #include #include +#include #include @@ -42,12 +43,13 @@ typedef CGAL_Triangulation_ds_facet_iterator_3 TDSFacet_iterator; typedef CGAL_Triangulation_ds_cell_circulator_3 TDSCell_circulator; typedef CGAL_Triangulation_3 Triangulation_3; +typedef CGAL_Delaunay_triangulation_3 Delaunay; typedef CGAL_Triangulation_vertex_iterator_3 Vertex_iterator; typedef CGAL_Triangulation_edge_iterator_3 Edge_iterator; typedef CGAL_Triangulation_cell_iterator_3 Cell_iterator; typedef CGAL_Triangulation_facet_iterator_3 Facet_iterator; -// typedef CGAL_Triangulation_cell_circulator_3 Cell_circulator; +typedef CGAL_Triangulation_cell_circulator_3 Cell_circulator; typedef typename Triangulation_3::Cell Cell; typedef typename Triangulation_3::Vertex Vertex; @@ -57,6 +59,10 @@ typedef typename Triangulation_3::Locate_type Locate_type; typedef Gt::Point Point; +////////////////////// +// TDS +////////////////////// + void affiche_sommets(TDS& T) { cout << "sommets TDS : " << endl ; @@ -71,13 +77,41 @@ void affiche_sommets(TDS& T) } cout << endl; } +void affiche_cellules(TDS & T) +{ + cout << "cellules TDS : " << endl ; + TDSCell_iterator it = T.cells_begin(); + TDSCell_iterator done = T.cells_end(); -void affiche_validite(Triangulation_3& T) + if ( it == done ) { cout << "debut=fin" << endl ;} + else { + while(it != done) { + cout << it->vertex(0)->point() << ", " + << it->vertex(1)->point() << ", " + << it->vertex(2)->point() << ", " + << it->vertex(3)->point() << endl; + ++it; + } + } + cout << endl; +} +void affiche_validite(TDS& T) { bool b = T.is_valid(true,0); cout << "validite " << b << endl << endl; } -void affiche_sommets(Triangulation_3& T) + +////////////////////// +// Triangulation +////////////////////// +template +void affiche_validite(TRIANGULATION& T) +{ + bool b = T.is_valid(true,0); + cout << "validite " << b << endl << endl; +} +template +void affiche_sommets(TRIANGULATION& T) { cout << "sommets : " << endl ; Vertex_iterator vit = T.all_vertices_begin(), vdone = T.vertices_end(); @@ -91,9 +125,10 @@ void affiche_sommets(Triangulation_3& T) } cout << endl; } -void affiche_aretes(Triangulation_3& T) +template +void affiche_aretes_plus(TRIANGULATION& T) { - cout << "aretes : " << endl ; + cout << "aretes plus : " << endl ; Edge_iterator eit = T.all_edges_begin(), edone = T.edges_end(); if ( eit == edone ) { cout << "debut=fin" << endl ;} else { @@ -105,9 +140,25 @@ void affiche_aretes(Triangulation_3& T) } cout << endl; } -void affiche_faces(Triangulation_3& T) +template +void affiche_aretes_minus(TRIANGULATION& T) { - cout << "faces : " << endl ; + cout << "aretes minus : " << endl ; + Edge_iterator edone = T.all_edges_begin(), eit = T.edges_end(); + if ( eit == edone ) { cout << "debut=fin" << endl ;} + else { + while(eit != edone) { + --eit; + cout << (*eit).first->vertex((*eit).second)->point() << ", " + << (*eit).first->vertex((*eit).third)->point() << endl; + } + } + cout << endl; +} +template +void affiche_faces_plus(TRIANGULATION& T) +{ + cout << "faces plus : " << endl ; Facet_iterator fit = T.all_facets_begin(), fdone = T.facets_end(); int i; if ( fit == fdone ) { cout << "debut=fin" << endl ;} @@ -123,7 +174,27 @@ void affiche_faces(Triangulation_3& T) } cout << endl; } -void affiche_faces_voisins(Triangulation_3& T) +template +void affiche_faces_minus(TRIANGULATION& T) +{ + cout << "faces minus : " << endl ; + Facet_iterator fdone = T.all_facets_begin(), fit = T.facets_end(); + int i; + if ( fit == fdone ) { cout << "debut=fin" << endl ;} + else { + while(fit != fdone) { + --fit; + for ( i=0; i<4 ; i++ ) { + if ( (*fit).second != i ) + { cout << (*fit).first->vertex(i)->point() << ", "; } + } + cout << endl; + } + } + cout << endl; +} +template +void affiche_faces_voisins(TRIANGULATION& T) { cout << "faces (dim 2 seulement) : " << endl ; Facet_iterator fit = T.all_facets_begin(), fdone = T.facets_end(); @@ -147,7 +218,8 @@ void affiche_faces_voisins(Triangulation_3& T) } cout << endl; } -void affiche_cellules(Triangulation_3 & T) +template +void affiche_cellules( TRIANGULATION& T) { cout << "cellules : " << endl ; Cell_iterator it = T.all_cells_begin(); @@ -259,7 +331,8 @@ void insere_dehors(Triangulation_3& T, Point p) << T.dimension() << endl; } -void insere(CGAL_Geomview_stream & os, Triangulation_3& T, Point p) +template +void insere(CGAL_Geomview_stream & os, TRIANGULATION & T, Point p) { cout << p << endl; os << p; @@ -296,21 +369,21 @@ void insere(CGAL_Geomview_stream & os, Triangulation_3& T, Point p) cout << "validite " << T.is_valid(true) << endl; } - CGAL_Geomview_stream gv(CGAL_Bbox_3(0,0,0, 2, 2, 2)); - Triangulation_3 T; +// CGAL_Geomview_stream gv(CGAL_Bbox_3(0,0,0, 2, 2, 2)); +// Delaunay* D; int main(int argc, char* argv[]) { // Cell essaicell; - // CGAL_Geomview_stream gv(CGAL_Bbox_3(0,0,0, 2, 2, 2)); - gv.set_line_width(4); - gv.set_trace(false); - gv.set_bg_color(CGAL_Color(200, 200, 200)); - gv.set_face_color(CGAL_RED); - gv.set_edge_color(CGAL_GREEN); - gv.set_vertex_color(CGAL_BLUE); +// // CGAL_Geomview_stream gv(CGAL_Bbox_3(0,0,0, 2, 2, 2)); +// gv.set_line_width(4); +// gv.set_trace(false); +// gv.set_bg_color(CGAL_Color(200, 200, 200)); +// gv.set_face_color(CGAL_RED); +// gv.set_edge_color(CGAL_GREEN); +// gv.set_vertex_color(CGAL_BLUE); Point p0(0,0,0); // pp_point(p0); @@ -321,8 +394,16 @@ int main(int argc, char* argv[]) Point pz(0,0,1); // pp_point(p0); + // Delaunay T; + // D = &T; + Triangulation_3 T; + // test dim 3 - // Triangulation_3 T(p0,px,py,pz); + // Triangulation_3 T(p0,px,py,pz); +// T.insert_outside_affine_hull(p0); +// T.insert_outside_affine_hull(px); +// T.insert_outside_affine_hull(py); +// T.insert_outside_affine_hull(pz); //Point q(0.2,0.2,0.2); // ok repond CELL // Point q(.5,.5,0); // ok repond edge @@ -353,7 +434,7 @@ int main(int argc, char* argv[]) // Point q(2,0,0); // ok outside_convex_hull // test dim 0 - Triangulation_3 T; + //Triangulation_3 T; // T.insert_outside_affine_hull(p0); // Point q(0,1,0);// ok outside_affine_hull @@ -373,7 +454,7 @@ int main(int argc, char* argv[]) // visu_aretes(gv,T); // visu_sommets(gv,T); - cout << "validite " << T.is_valid(true) << endl; + // cout << "validite " << T.is_valid(true) << endl; // test locate // gv << q; @@ -442,11 +523,6 @@ int main(int argc, char* argv[]) // } // } - Point nouv; - - cout << "point ? " << endl; - cin >> nouv ; - // char entree; // ifstream is(entree, os::in, filebuf::openprot); @@ -458,34 +534,225 @@ int main(int argc, char* argv[]) // CGAL_set_ascii_mode(is); // is >> nouv; + + Triangulation_3 T2; + int x,y,z=0; + for (z=0 ; z<2 ; z++) + for (y=0 ; y<5 ; y++) + for (x=0 ; x<5 ; x++) { + T2.insert(Point(x,y,z)); + assert(T2.is_valid(true)); + } + // assert(T2.number_of_vertices()==125); + // assert(T2.dimension()==3); + + affiche_aretes_plus(T2); + affiche_aretes_minus(T2); + + affiche_faces_plus(T2); + affiche_faces_minus(T2); + +// Point nouv; - while ( nouv.x() != 3000 ) { - insere(gv,T,nouv); - switch (T.dimension()) { - case 0: - { - visu_sommets(gv,T); - break; - } - case 1: - { - visu_aretes(gv,T); - break; - } - case 2: - { - visu_faces(gv,T); - break; - } - case 3: - { - visu_cellules(gv,T); - break; - } - } - cout << "point ? " << endl; - cin >> nouv ; - } +// cout << "point ? " << endl; +// cin >> nouv ; + +// while ( nouv.x() != 3000 ) { +// insere(gv,T,nouv); +// gv.clear(); +// switch (T.dimension()) { +// case 0: +// { +// visu_sommets(gv,T); +// break; +// } +// case 1: +// { +// visu_aretes(gv,T); +// break; +// } +// case 2: +// { +// visu_faces(gv,T); +// break; +// } +// case 3: +// { +// visu_cellules(gv,T); +// break; +// } +// } +// cout << "point ? " << endl; +// cin >> nouv ; +// } + +// cout << "copy constructeur" << endl; +// cout << "validite T " << T.is_valid(true) << endl; +// Delaunay T1(T); +// cout << "validite copie " << T1.is_valid(true) << endl; +// cout << "assert T valid" << endl; +// assert(T.is_valid(true)); +// cout << "assert T1 valid" << endl; +// assert(T1.is_valid(true)); + + +// Cell_handle c = T2.infinite_cell(); +// Edge e = CGAL_make_triple(c,0,1); +// Cell_circulator ccir = T2.incident_cells(e,c); + +// // TDS tds1(T2.tds()); +// // TDS tds2; +// // tds1.clear(); +// // tds2.clear(); + +// TDSVertex* v1 = new TDSVertex(Point(1,0,0)); +// TDSVertex* v2 = new TDSVertex(Point(2,0,0)); +// TDSVertex* v3 = new TDSVertex(Point(3,0,0)); +// TDSVertex* v4 = new TDSVertex(Point(4,0,0)); +// TDSVertex* v5 = new TDSVertex(Point(5,0,0)); + +// cout << " insertions" << endl; +// TDS tds0; +// tds0.insert_outside_affine_hull(v1, NULL); +// cout << "avec v1" << endl; +// affiche_sommets(tds0); +// affiche_validite(tds0); +// tds0.insert_outside_affine_hull(v2,v1); +// cout << "avec v2" << endl; +// affiche_sommets(tds0); +// affiche_validite(tds0); +// tds0.insert_outside_affine_hull(v3,v2); +// cout << "avec v3" << endl; +// affiche_sommets(tds0); +// affiche_validite(tds0); +// tds0.insert_outside_affine_hull(v4,v3); +// cout << "avec v4" << endl; +// affiche_sommets(tds0); +// affiche_validite(tds0); +// tds0.insert_outside_affine_hull(v5,v4); +// cout << "avec v5" << endl; +// affiche_sommets(tds0); +// affiche_validite(tds0); + +// v1 = new TDSVertex(Point(10,0,0)); +// v2 = new TDSVertex(Point(20,0,0)); +// v3 = new TDSVertex(Point(30,0,0)); +// v4 = new TDSVertex(Point(40,0,0)); +// v5 = new TDSVertex(Point(50,0,0)); + +// cout << " constructors" << endl; +// TDS tds1; +// TDS tds2; +// // cout << "tds1" << endl; +// // affiche_sommets(tds1); +// cout << "tds1" << endl; +// affiche_validite(tds1); + +// tds2.insert_outside_affine_hull(v1, NULL); +// cout << "tds2" << endl; +// affiche_validite(tds2); +// affiche_sommets(tds2); + +// TDS tds3(tds2); +// cout << "tds3 avant" << endl; +// affiche_validite(tds3); +// affiche_sommets(tds3); +// tds3.insert_outside_affine_hull(v2,v1); +// cout << "tds3 apres" << endl; +// affiche_validite(tds3); +// affiche_sommets(tds3); + +// tds3.insert_outside_affine_hull(v3,v2); +// cout << "tds3 + v3"<< endl; +// affiche_validite(tds3); +// affiche_sommets(tds3); + +// TDS tds4 = tds3; +// cout << "tds4 avant" << endl; +// affiche_validite(tds4); +// affiche_sommets(tds4); +// tds4.insert_outside_affine_hull(v3,v2); +// cout << "tds4 apres" << endl; +// affiche_validite(tds4); +// affiche_sommets(tds4); + +// TDS tds5; +// tds5.swap(tds4); +// cout << "tds5 avant" << endl; +// affiche_validite(tds5); +// affiche_sommets(tds5); +// tds5.insert_outside_affine_hull(v4,v3); +// cout << "tds5 apres" << endl; +// affiche_validite(tds5); +// affiche_sommets(tds5); + +// TDS tds6; +// tds6.swap(tds5); +// cout << "tds6 avant" << endl; +// affiche_validite(tds6); +// affiche_sommets(tds6); +// tds6.insert_outside_affine_hull(v5,v4); +// cout << "tds6 apres" << endl; +// affiche_validite(tds6); +// affiche_sommets(tds6); + +// // Test constructors +// cout << " constructors" << endl; +// TDS tds1; +// TDS tds2; + +// TDSVertex_iterator vit; + +// tds2.insert_outside_affine_hull(v1, NULL); +// cout << "tds2" << endl; +// affiche_validite(tds2); +// affiche_sommets(tds2); + +// TDS tds3(tds2); +// cout << "tds3 avant" << endl; +// affiche_validite(tds3); +// affiche_sommets(tds3); + +// vit=tds3.vertices_begin(); +// tds3.insert_outside_affine_hull(v2,&*vit); +// cout << "tds3 apres" << endl; +// affiche_validite(tds3); +// affiche_sommets(tds3); + +// TDS tds4 = tds3; +// cout << "tds4 avant" << endl; +// affiche_validite(tds4); +// affiche_sommets(tds4); + +// vit=tds4.vertices_begin(); +// tds4.insert_outside_affine_hull(v3,&*vit); +// cout << "tds4 apres" << endl; +// affiche_validite(tds4); +// affiche_sommets(tds4); + +// TDS tds5; +// tds5.swap(tds4); +// cout << "tds5 avant" << endl; +// affiche_validite(tds5); +// affiche_sommets(tds5); + +// vit=tds5.vertices_begin(); +// tds5.insert_outside_affine_hull(v4,&*vit); +// cout << "tds5 apres" << endl; +// affiche_validite(tds5); +// affiche_sommets(tds5); + +// TDS tds6; +// tds6.swap(tds5); +// cout << "tds6 avant" << endl; +// affiche_validite(tds6); +// affiche_sommets(tds6); + +// vit=tds6.vertices_begin(); +// tds6.insert_outside_affine_hull(v5,&*vit); +// cout << "tds6 apres" << endl; +// affiche_validite(tds6); +// affiche_sommets(tds6); char ch; cin >> ch;