demarrage dualboot sur Linux Ubuntu: fn+f12 -----------------------TD1----------------------- intro cgal, generic programing, robustesse, parcourir la doc: http://doc.cgal.org/latest/Kernel_23/index.html#Chapter_2D_and_3D_Geometry_Kernel BUT: ----------------------- 1. convaincre qu'il y a des pb à faire de la geometry en precision fixée 2. utiliser les outils adaptés, comprendre les mécanismes 3. tester et evaluer l'efficacite de la construction de la triangulation de Delaunay de CGAL -----------------SETUP------------- 0. Sauver le fichier https://members.loria.fr/MPouget/files/enseignement/TD1/bug.C dans un repertoire puis executer les commandes suivantes dans ce repertoire à partir d'un terminal. 1. Aller dans le rep du programme bug.C, générer un makefile et lancer cmake: >>> cd /path/to/your/program >>> /usr/bin/cgal_create_CMakeLists -s bug >>> cmake -DCMAKE_BUILD_TYPE=Debug . Ne pas oublier le "." à la fin Note : faire eventuellement: rm CMakeCache.txt, s'il existe deja ou pose probleme. 2. Compiler (à refaire chaque fois que vous changez le code source dans bug.C ) : >>> make 3. Execution du programme >>> ./bug ------------ -----------------SUJET------------- 0. Le programme fourni plante pour un nombre de points assez grand. ./bug donne une erreur du type: CGAL error: precondition violation! Expression : orientation(f->vertex(i)->point(), f->vertex(cw(i))->point(), mirror_vertex(f,i)->point()) == RIGHT_TURN && orientation(f->vertex(i)->point(), f->vertex(ccw(i))->point(), mirror_vertex(f,i)->point()) == LEFT_TURN Remarque: pour changer la suite pseudo-aleatoire utilisée pour generer les points, changer la valeur numerique dans: CGAL::Random random(5); Dès que vous changez le source bug.C, faire "make" pour recompiler 1. Comprendre cette erreur en regardant la doc et en faisant un dessin. http://www.cgal.org/Manual/latest/doc_html/cgal_manual/TDS_2/Chapter_main.html 2. Changer float en double, que constatez vous ? Changer aussi de la valeur dans: CGAL::Random random(). 3. Utiliser un type de nombre exact http://www.cgal.org/Manual/latest/doc_html/cgal_manual/NumberTypeSupport/Chapter_main.html 4. Utiliser le noyau Exact_predicates_inexact_constructions_kernel https://doc.cgal.org/latest/Kernel_23/index.html#title9 5. Comparer les temps d'exécution de ces différentes solutions pour 5000 points: - dans le cas dégénéré de points sur une droite, - dans le cas de points aléatoires dans le plan. 6. Inserer des points sur une parabole ( (x,x^2) avec x>1); Utiliser le noyau Exact_predicates_inexact_constructions_kernel A. dans l'ordre croissant en x B. dans l'ordre decroissant en x C. comparer les temps d'execution TAKE HOME MESSAGE : Utiliser le noyau le noyau Exact_predicates_inexact_constructions_kernel qui assure un resultat correct avec un temps de calcul optimisé.