De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie...
Transcript of De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie...
![Page 1: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/1.jpg)
De la geometrie algorithmique
au calcul geometrique
l’exemple
de la triangulation de Delaunay
La bibliotheque CGAL
![Page 2: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/2.jpg)
C++
![Page 3: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/3.jpg)
C++
Syntaxe de base commune avec C et java
![Page 4: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/4.jpg)
Classe
![Page 5: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/5.jpg)
Classe
class A{
private:
int i;
public:
int get();
void set(int);
};
![Page 6: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/6.jpg)
Classe
int A::get(){
return i;
}
void A::set(int n){
i = n;
}
![Page 7: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/7.jpg)
Classe
class A{
private:
int i;
public:
int get() {return i;}
void set(int n) {i=n;}
} ; // fonctions "inline"
![Page 8: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/8.jpg)
Constructeur, affectation, destruction
![Page 9: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/9.jpg)
Constructeur, affectation, destruction
class A {
int i; // private
public:
A(); // default constructor
A( const A& a); // copy constructor
A( int n); // user defined
~A(); // destructor
};
![Page 10: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/10.jpg)
Constructeur, affectation, destruction
int main() {
A a1; // appelle default c.
A a2 = a1; // copy constructor
A a3(a1); // copy constructor
A a4(1); // user constructor
} // destructor: appel a la sortie.
class A {int i; // private
public:A(); // default constructorA( const A& a); // copy constructorA( int n); // user defined~A(); // destructor
};
![Page 11: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/11.jpg)
Heritage
Surcharge
Fonctions membres virtuelles
Membres statiques
![Page 12: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/12.jpg)
Templates
![Page 13: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/13.jpg)
Templates
template <class T>
void swap( T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
![Page 14: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/14.jpg)
Templates
template <class T>
void swap( T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
int main() {
int i = 5;
int j = 7;
swap( i, j); // utilise "int" pour T.
}
![Page 15: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/15.jpg)
Templates
template <class T>
void swap( T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
int main() {
A i (5);
A j ; j.set(7)
swap( i, j); // utilise "A" pour T.
}
![Page 16: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/16.jpg)
Aller dans une classe quand on y est pas !
![Page 17: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/17.jpg)
Aller dans une classe quand on y est pas !
class A {
static int i=0;
};
int main(){
int j = A::i;
}
![Page 18: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/18.jpg)
Namespace
![Page 19: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/19.jpg)
Namespace
int main(){
int i = CGAL::max(3,4);
}
![Page 20: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/20.jpg)
STL
![Page 21: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/21.jpg)
STL
Standard Template Library
![Page 22: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/22.jpg)
Bibliotheque
![Page 23: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/23.jpg)
Bibliotheque
Structures de donnees:
list, vector, set, map
Algorithmes:
find, sort
![Page 24: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/24.jpg)
Iterator
![Page 25: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/25.jpg)
Iterator
Parcourir une structure (container)
![Page 26: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/26.jpg)
Iterator
Parcourir une structure (container)
ressemble a un pointeur
operator*()
operator->()
operator++()
operator--()
...
![Page 27: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/27.jpg)
exemple: liste
![Page 28: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/28.jpg)
exemple: liste
list<int> L;
L.push_back(0);
L.push_front(1);
L.insert(++L.begin(), 2);
copy(L.begin(), L.end(),
ostream_iterator<int>(cout, " "));
// The values that are printed are 1 2 0
![Page 29: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/29.jpg)
CGAL, vue d’ensemble
![Page 30: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/30.jpg)
Computational Geometry Algorithms Library
![Page 31: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/31.jpg)
Computational Geometry Algorithms Library
objets elementaires (points, droites. . . )
Kernel
![Page 32: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/32.jpg)
Computational Geometry Algorithms Library
Basic library
objets elementaires (points, droites. . . )
Kernel
Algorithmes et structures de donnees
![Page 33: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/33.jpg)
Computational Geometry Algorithms Library
Basic library
objets elementaires (points, droites. . . )
Kernel
Algorithmes et structures de donnees
Support library
Extension STL (circulator)Types numeriques
Entrees sorties
![Page 34: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/34.jpg)
CGAL Support library
![Page 35: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/35.jpg)
Type de nombre
![Page 36: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/36.jpg)
Type de nombre
int main(){
int n1=0;
float n2 = 3.1415927;
double n2bis=5/11;
using namespace CGAL;
Quotient<int> n3(5,11);
MP_Float n4=3.1415926535897932384626433832;
Lazy_exact_nt<Quotient<MP_Float> > n5;
// Core, GMP, Leda
}
![Page 37: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/37.jpg)
Handles
![Page 38: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/38.jpg)
Handles
Encapsulation du pointeur.
juste * et ->
![Page 39: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/39.jpg)
Circulator
![Page 40: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/40.jpg)
Circulator
Variation de l’iterator de STL
template <class Circulator, class T>
bool contains( Circulator c,
Circulator d, const T& value) {
if (c != 0) {
do {
if (*c == value)
return true;
} while (++c != d);
}
return false;
}
![Page 41: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/41.jpg)
Generateurs
![Page 42: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/42.jpg)
Generateurs
de points aleatoires sur un cercle, dans un disque, sur
une grille. . .
![Page 43: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/43.jpg)
Divers
![Page 44: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/44.jpg)
Divers
Timers
Structures de donnees (hashmap)
IO Streams
Couleurs
postscript
Qt
Geomview
![Page 45: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/45.jpg)
CGAL kernel
![Page 46: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/46.jpg)
Kernel
![Page 47: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/47.jpg)
KernelSimple_cartesian<double>
![Page 48: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/48.jpg)
KernelSimple_cartesian<double>
Kernel::Point_2
Kernel::Vector_2
Kernel::Direction_2
Kernel::Line_2
Kernel::Ray_2
Kernel::Segment_2
Kernel::Triangle_2
Kernel::Iso_rectangle_2
Kernel::Circle_2
Kernel::Object_2
Objets
![Page 49: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/49.jpg)
KernelSimple_cartesian<double>
Compare_x_2
Compare_distance_2
Has_on_2
Side_of_oriented_circle_2
Objets
![Page 50: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/50.jpg)
KernelSimple_cartesian<double>
Compare_x_2
Compare_distance_2
Has_on_2
Side_of_oriented_circle_2
Objets
Constructions
![Page 51: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/51.jpg)
CGAL Basic library
![Page 52: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/52.jpg)
Basic library
![Page 53: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/53.jpg)
Basic library
Enveloppe convexe
Polygones Polyhedres
Carte planaire, arrangement
Triangulation
Optimisation
Structures de recherche
![Page 54: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/54.jpg)
Traits class
![Page 55: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/55.jpg)
Traits class
Parametrer un algorithme/structure de donnees
typedef CGAL::Cartesian<double> Rep;
typedef CGAL::Point_2<Rep> Point;
typedef CGAL::Delaunay_triangulation_2<Rep> Delaunay;
![Page 56: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/56.jpg)
// K_ is the new kernel, and K_Base is the old kernel
template < typename K_, typename K_Base >
class MyCartesian_base
: public K_Base::template Base<K_>::Type
{
typedef typename K_Base::template Base<K_>::Type OldK;
public:
typedef K_ Kernel;
typedef MyPointC2 Point_2;
}
template < typename FT_ >
struct MyKernel
: public MyCartesian_base<MyKernel<FT_>, CGAL::Cartesian<FT_> >
{};
typedef MyKernel<double> MK;
typedef CGAL::Filtered_kernel_without_type_equality<MK> K;
typedef CGAL::Delaunay_triangulation_2<K> Delaunay;
![Page 57: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/57.jpg)
Exemple
![Page 58: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/58.jpg)
Exemple/demo/Qt_widget/basic/tutorial3/tutorial3.C
#ifndefCGAL_USE_QT
#include
<iostream>
intmain(int,
char*){
std::cout
<<
"Sorry,
thisdemo
needs
QT..."
<<
std::endl;
return
0;}
#else
#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>
typedefCGAL::Cartesian<double>
Rep;
typedefCGAL::Point_2<Rep>
Point;
typedefCGAL::Delaunay_triangulation_2<Rep>
Delaunay;
/////////////////////////////////////////////////////////
//
Lesobjetsaffiches
sontdeclares
icien
variable
globales
//
l’affichage
est
faitdans
la
methode
"draw"
ci
dessous
Delaunay
dt;
Point
the_point=Point(-1,-1);
class
My_layer:
public
CGAL::Qt_widget_layer{
voiddraw(){
*widget<<CGAL::RED<<
dt
<<
CGAL::PointSize(6)<<CGAL::BLUE<<the_point
;
}
};
class
My_window
:publicCGAL::Qt_widget
{
public:
My_window(int
x,
int
y)
{
resize(x,y);
attach(&layer);
};
private:
//this
method
is
called
whenthe
user
pressesthemouse
voidmousePressEvent(QMouseEvent
*e)
{
Qt_widget::mousePressEvent(e);
/////////////////////////////////////////////////////////////
//
C’EST
ICIQUECASE
PASSE
QUAND
ONCLIQUE!
//
if
(e->button()
==
Qt::LeftButton)
dt.insert(Point(x_real(e->x()),y_real(e->y())));
if
(e->button()
==
Qt::MidButton)
std::cout
<<
Point(x_real(e->x()),y_real(e->y()))
<<
std::endl;
if
(e->button()
==
Qt::RightButton)
the_point
=Point(x_real(e->x()),y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
} My_layer
layer;
};
intmain(
int
argc,
char**argv)
{
QApplication
app(argc,
argv
);
My_window
*W
=new
My_window(400,400);
app.setMainWidget(W);
W->show();
W->set_window(0,
400,0,400);
returnapp.exec();
} #endif
TD2/initial.C
![Page 59: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/59.jpg)
/demo/Qt_widget/basic/tutorial3/tutorial3.C
#ifndef CGAL_USE_QT
#include <iostream>
int main(int, char*){
std::cout << "Sorry, needs QT..." << std::endl; return 0;}
#else
#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> Rep;
typedef CGAL::Point_2<Rep> Point;
typedef CGAL::Delaunay_triangulation_2<Rep> Delaunay;
.............................................................
#endif
![Page 60: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/60.jpg)
/demo/Qt_widget/basic/tutorial3/tutorial3.C
#ifndef CGAL_USE_QT
#include <iostream>
int main(int, char*){
std::cout << "Sorry, needs QT..." << std::endl; return 0;}
#else
#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> Rep;
typedef CGAL::Point_2<Rep> Point;
typedef CGAL::Delaunay_triangulation_2<Rep> Delaunay;
.............................................................
#endif
![Page 61: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/61.jpg)
/demo/Qt_widget/basic/tutorial3/tutorial3.C
#ifndef CGAL_USE_QT
#include <iostream>
int main(int, char*){
std::cout << "Sorry, needs QT..." << std::endl; return 0;}
#else
#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> Rep;
typedef CGAL::Point_2<Rep> Point;
typedef CGAL::Delaunay_triangulation_2<Rep> Delaunay;
.............................................................
#endif
![Page 62: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/62.jpg)
/demo/Qt_widget/basic/tutorial3/tutorial3.C
#ifndef CGAL_USE_QT
#include <iostream>
int main(int, char*){
std::cout << "Sorry, needs QT..." << std::endl; return 0;}
#else
#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> Rep;
typedef CGAL::Point_2<Rep> Point;
typedef CGAL::Delaunay_triangulation_2<Rep> Delaunay;
.............................................................
#endif
![Page 63: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/63.jpg)
/demo/Qt_widget/basic/tutorial3/tutorial3.C
#ifndef CGAL_USE_QT
#include <iostream>
int main(int, char*){
std::cout << "Sorry, needs QT..." << std::endl; return 0;}
#else
#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> Rep;
typedef CGAL::Point_2<Rep> Point;
typedef CGAL::Delaunay_triangulation_2<Rep> Delaunay;
.............................................................
#endif
![Page 64: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/64.jpg)
/////////////////////////////////////////////////////////
.............
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(0, 400, 0, 400);
return app.exec();
}
![Page 65: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/65.jpg)
/////////////////////////////////////////////////////////
.............
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(0, 400, 0, 400);
return app.exec();
}
Gestion de la fenetre graphique
![Page 66: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/66.jpg)
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 !
//
if (e->button() == Qt::LeftButton)
dt.insert(Point(x_real(e->x()), y_real(e->y())));
if (e->button() == Qt::MidButton)
std::cout<<Point(x_real(e->x()),y_real(e->y()))<<std::endl;
if (e->button() == Qt::RightButton)
the_point = Point(x_real(e->x()), y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
}
My_layer layer;
};
![Page 67: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/67.jpg)
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 !
//
if (e->button() == Qt::LeftButton)
dt.insert(Point(x_real(e->x()), y_real(e->y())));
if (e->button() == Qt::MidButton)
std::cout<<Point(x_real(e->x()),y_real(e->y()))<<std::endl;
if (e->button() == Qt::RightButton)
the_point = Point(x_real(e->x()), y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
}
My_layer layer;
};
![Page 68: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/68.jpg)
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 !
//
if (e->button() == Qt::LeftButton)
dt.insert(Point(x_real(e->x()), y_real(e->y())));
if (e->button() == Qt::MidButton)
std::cout<<Point(x_real(e->x()),y_real(e->y()))<<std::endl;
if (e->button() == Qt::RightButton)
the_point = Point(x_real(e->x()), y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
}
My_layer layer;
};
![Page 69: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/69.jpg)
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 !
//
if (e->button() == Qt::LeftButton)
dt.insert(Point(x_real(e->x()), y_real(e->y())));
if (e->button() == Qt::MidButton)
std::cout<<Point(x_real(e->x()),y_real(e->y()))<<std::endl;
if (e->button() == Qt::RightButton)
the_point = Point(x_real(e->x()), y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
}
My_layer layer;
};
![Page 70: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/70.jpg)
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 !
//
if (e->button() == Qt::LeftButton)
dt.insert(Point(x_real(e->x()), y_real(e->y())));
if (e->button() == Qt::MidButton)
std::cout<<Point(x_real(e->x()),y_real(e->y()))<<std::endl;
if (e->button() == Qt::RightButton)
the_point = Point(x_real(e->x()), y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
}
My_layer layer;
};
![Page 71: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/71.jpg)
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 !
//
if (e->button() == Qt::LeftButton)
dt.insert(Point(x_real(e->x()), y_real(e->y())));
if (e->button() == Qt::MidButton)
std::cout<<Point(x_real(e->x()),y_real(e->y()))<<std::endl;
if (e->button() == Qt::RightButton)
the_point = Point(x_real(e->x()), y_real(e->y()));
/////////////////////////////////////////////////////////////
redraw();
}
My_layer layer;
};
![Page 72: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/72.jpg)
/////////////////////////////////////////////////////////
// Les objets affiches sont declares ici en variable globales
// l’affichage est fait dans la methode "draw" ci dessous
Delaunay dt;
Point the_point=Point(-1,-1);
class My_layer : public CGAL::Qt_widget_layer{
void draw(){
*widget << CGAL::RED << dt << CGAL::PointSize(6)
<< CGAL::BLUE << the_point;
}
};
![Page 73: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/73.jpg)
Demo CGAL
Demo ddd
Demo Doc CGAL
Demo premier TD CGAL
![Page 74: De la g´eom´etrie algorithmique au calcul g´eom´etrique l ... fileDe la g´eom´etrie algorithmique au calcul g´eom´etrique l’exemple de la triangulation de Delaunay La biblioth`eque](https://reader030.fdocuments.net/reader030/viewer/2022040314/5e10d1e3f9d8ca3fed65005b/html5/thumbnails/74.jpg)
C’est tout pour aujourd’hui