Bonjour,
j'ai un projet en C++, que je connais pas du tout, et je dois utiliser CGAL. Est-ce possible que qn m'aide à cette réalisation (j'ai jours, je vous dis même pas comment je me sens). Voici le sujet :
* Engendrer dans un tableau N points aléatoires dans un carré.
* Construire une première triangulation de Delaunay en insérant ces points dans l'ordre (aléatoire) du tableau.
* Recommencer après avoir trié le tableau en x
* Engendrer dans un tableau N points sur la spirale t*(cos(t), sin(t)) pour t dans [0,10.Pi].
* Construire une triangulation de Delaunay en insérant ces points dans l'ordre la spirale (intérieur vers extérieur).
* Recommencer dans l'ordre inverse
* Recommencer avec des points aléatoires sur la spirale.
Pour tous ces calculs, mesurer les temps d'execution pour N variant entre 1000 et 1 000 000 (si les temps de calculs restent raisonnable, moins de 100 secondes par exemple). Vous comparerez aussi le Delaunay simple (localisation par marche) avec la hiérarchie de Delaunay. Enfin, vous ferez des tests avec differents noyaux CGAL. Vous presenterez les resultats dans des tableaux de synthèse, permettant de comparer facilement les resultats et de les commenter pour la soutenance.
et voici le squelette donné :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 #include <iostream> #include <vector> #include <CGAL/Cartesian.h> #include <CGAL/Point_2.h> #include <CGAL/Delaunay_triangulation_2.h> #include <CGAL/IO/Qt_widget_Delaunay_triangulation_2.h> #include <CGAL/IO/Qt_widget.h> #include <CGAL/IO/Qt_widget_layer.h> #include <qapplication.h> typedef CGAL::Cartesian<double> K; typedef CGAL::Point_2<K> Point; typedef CGAL::Delaunay_triangulation_2<K> Delaunay; class My_layer : public CGAL::Qt_widget_layer{ void draw(){ ; } }; class My_window : public CGAL::Qt_widget { public: My_window(int x, int y) { resize(x,y); attach(&layer); }; private: //this method is called when the user presses the mouse void mousePressEvent(QMouseEvent *e) { Qt_widget::mousePressEvent(e); ///////////////////////////////////////////////////////////// // C'EST ICI QUE CA SE PASSE QUAND ON CLIQUE ! // exit(1); ///////////////////////////////////////////////////////////// redraw(); } My_layer layer; }; int main( int argc, char **argv ) { QApplication app( argc, argv ); My_window *W = new My_window(400,400); app.setMainWidget(W); W->show(); W->set_window(-1, 1, -1, 1); int Nb_points; std::cout<<" Nombre de points ? "<<std::endl; std::cin>>Nb_points; std::vector<Point> points(Nb_points); for( int i = 0 ; i<Nb_points;++i) { double x= (Nb_points-i) / (double)Nb_points; points[i] = Point(x,x*x); } Delaunay dt1; for( int i = 0 ; i<Nb_points;++i) { dt1.insert( points[i] ); } *W << CGAL::GREEN<<dt1; std::cout<<Nb_points<<" points "<<std::endl; return app.exec(); }
Aidez-moi...SVP !!!![]()
Partager