Bonjour à tous,

J'essaye d'utiliser CGAL pour triangulariser une forme 2D.

J'ai actuellement les points d'un polygon, ainsi que les points des différents polygon internes, les trous.

Le but est d'avoir les triangle composants ce polygn, sans les trous biensûr.

CGAL fait une multitude de trucs concernant ce sujet, mais je me retrouve perdu dans tout ça.

Pour commencer, j'ai définit un carré de 10 / 10, avec un trou à l'intérieur de 5/5 :

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
 
typedef CGAL::Exact_predicates_inexact_constructions_kernel				K;
 
typedef K::Point_2														Point;
typedef CGAL::Polygon_2<K>												Polygon;
typedef CGAL::Polygon_with_holes_2<K>									Polygon_with_holes;
typedef boost::shared_ptr<Polygon>										PolygonPtr;
typedef std::vector<PolygonPtr>											PolygonSequence ;
 
typedef CGAL::Straight_skeleton_2<K>									Ss;
typedef boost::shared_ptr<Ss>											SsPtr;
 
typedef CGAL::Polygon_offset_builder_traits_2<K>		               OffsetBuilderTraits;
typedef CGAL::Polygon_offset_builder_2<Ss,OffsetBuilderTraits,Polygon> OffsetBuilder;
 
Polygon outer;
outer.push_back(Point(0.,0.));
outer.push_back(Point(0.,10.));
outer.push_back(Point(10.,10.));
outer.push_back(Point(10.,0.));
 
Polygon_with_holes poly(outer);
 
Polygon inner;
inner.push_back(Point(2.5, 2.5));
inner.push_back(Point(2.5, 7.5));
inner.push_back(Point(7.5, 7.5));
inner.push_back(Point(7.5, 2.5));
poly.add_hole(inner);
 
SsPtr iss = CGAL::create_interior_straight_skeleton_2(poly);
OffsetBuilder ob(*iss);
 
PolygonSequence polygons;
ob.construct_offset_contours(3., std::back_inserter(polygons));
Déjà l'offset (le 3.), je ne comprends pas ce que c'est, pourriez vous m'expliquer ?

Ensuite, le résultat me donne un polygon, avec 4 côté :
3.3
7.3
7.7
3.7

Je pensais avoir deux polygons, un pour la boîte extérieur, un pour le trou à l'intérieur..

Pourriez-vous m'aider ?

Merci beaucoup,

A bientôt