# Chapter 7
Geometric Object Generators

Susan Hert, Michael Hoffmann, Lutz Kettner, and Sven Schönherr

This chapter describes the functions and classes provided in CGAL that are useful for generating synthetic test data sets, e.g., for testing algorithms on degenerate object sets and for performance analysis. These include a class for generating random numbers and function for selecting random items from a set of objects, generators for two-dimensional and three-dimensional points sets, a generator for random convex sets and one for simple polygons. The STL algorithm std::random_shuffle is useful with these functions and classes to to achieve random permutations for otherwise regular generators ( e.g., points on a grid or segment).

### Concepts

PointGenerator
RandomConvexSetTraits_2
RandomPolygonTraits_2

### Functions

CGAL::default_random
CGAL::perturb_points_2
CGAL::points_on_segment_2
CGAL::points_on_square_grid_2
CGAL::points_on_cube_grid_3
CGAL::random_collinear_points_2
CGAL::random_convex_set_2
CGAL::random_polygon_2
CGAL::random_selection

### Classes

CGAL::Random
CGAL::Points_on_segment_2<Point_2>
CGAL::Random_points_in_cube_3<Point_3, Creator>
CGAL::Random_points_in_disc_2<Point_2, Creator>
CGAL::Random_points_in_sphere_3<Point_3, Creator>
CGAL::Random_points_in_square_2<Point_2, Creator>
CGAL::Random_points_on_circle_2<Point_2, Creator>
CGAL::Random_points_on_segment_2<Point_2, Creator>
CGAL::Random_points_on_sphere_3<Point_3, Creator>
CGAL::Random_points_on_square_2<Point_2, Creator>
CGAL::Random_points_in_iso_box_d<Point_d>

### Traits Class

CGAL::Random_convex_set_traits_2<Kernel>

- perturb_points_2

- points_on_segment_2

- Points_on_segment_2<Point_2>

- points_on_square_grid_2

- points_on_cube_grid_3

- PointGenerator

- random_collinear_points_2

- random_convex_set_2

- random_polygon_2

- random_selection

- RandomConvexSetTraits_2

- RandomPolygonTraits_2

- Random_convex_set_traits_2<Kernel>

- Random_points_in_cube_3<Point_3, Creator>

- Random_points_in_disc_2<Point_2, Creator>

- Random_points_in_sphere_3<Point_3, Creator>

- Random_points_in_square_2<Point_2, Creator>

- Random_points_on_circle_2<Point_2, Creator>

- Random_points_on_segment_2<Point_2, Creator>

- Random_points_on_sphere_3<Point_3, Creator>

- Random_points_on_square_2<Point_2, Creator>

- Random_points_in_iso_box_d<Point_d>