/*!
\defgroup PkgShapeDetectionRef Reference Manual

\defgroup PkgShapeDetectionRANSAC Efficient RANSAC
\ingroup PkgShapeDetectionRef

Classified Reference Manual for the Efficient RANSAC shape detection component.

# Concepts #
- `EfficientRANSACTraits`

# Algorithm #
- `CGAL::Shape_detection::Efficient_RANSAC_traits<GeomTraits, InputRange, PointMap, NormalMap>`
- `CGAL::Shape_detection::Efficient_RANSAC<Traits>`

# Shapes #
- `CGAL::Shape_detection::Plane<Traits>`
- `CGAL::Shape_detection::Sphere<Traits>`
- `CGAL::Shape_detection::Cylinder<Traits>`
- `CGAL::Shape_detection::Cone<Traits>`
- `CGAL::Shape_detection::Torus<Traits>`

# Shape Interface #
- `CGAL::Shape_detection::Shape_base<Traits>`

# Property Maps #
- `CGAL::Shape_detection::Plane_map<Traits>`
- `CGAL::Shape_detection::Point_to_shape_index_map<Traits>`

\defgroup PkgShapeDetectionRANSACConcepts Concepts
\ingroup PkgShapeDetectionRANSAC

Concepts used for the parameters of the `CGAL::Shape_detection::Efficient_RANSAC`.

\defgroup PkgShapeDetectionRANSACShapes Shapes
\ingroup PkgShapeDetectionRANSAC

Shape models that can be used with the `CGAL::Shape_detection::Efficient_RANSAC`.

\defgroup PkgShapeDetectionRANSACPropertyMaps Property Maps
\ingroup PkgShapeDetectionRANSAC

Property maps that can be used with the `CGAL::Shape_detection::Efficient_RANSAC`.

*/

// Region growing

/*!

\defgroup PkgShapeDetectionRG Region Growing
\ingroup PkgShapeDetectionRef

Classified Reference Manual for the Region Growing shape detection component.

# Concepts #
- `NeighborQuery`
- `RegionType`

# Algorithm #
- `CGAL::Shape_detection::Region_growing<%NeighborQuery, %RegionType, RegionMap>`

# Point Set #
## Neighbord Query Classes ##
- `CGAL::Shape_detection::Point_set::K_neighbor_query<GeomTraits, Item, PointMap>`
- `CGAL::Shape_detection::Point_set::Sphere_neighbor_query<GeomTraits, Item, PointMap>`

## Sorting and Fitting Classes ##
- `CGAL::Shape_detection::Point_set::Least_squares_line_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_line_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`

- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_circle_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`

- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_plane_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`

- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_sphere_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap>`

- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_region<GeomTraits, Item, PointMap, NormalMap>`
- `CGAL::Shape_detection::Point_set::Least_squares_cylinder_fit_sorting<GeomTraits, Item, %NeighborQuery, PointMap, NormalMap>`

## Convenience Aliases and Functions for `%CGAL::Point_set_3` ##

When the input point set is an instance of the class `CGAL::Point_set_3`, template aliases and free functions are provided
to simplify the definition and creation of the different classes. The naming convention used is to append a suffix `_for_point_set` to the neighbor query, sorting and fitting classes. Free functions are prefixed by `make_` followed by the class name in lower case. For the complete list see \ref PkgShapeDetectionRGOnPointSet3.

# Segment Set #
- `CGAL::Shape_detection::Segment_set::Least_squares_line_fit_region<GeomTraits, Item, SegmentMap>`
- `CGAL::Shape_detection::Segment_set::Least_squares_line_fit_sorting<GeomTraits, Item, %NeighborQuery, SegmentMap>`

# Polygon Mesh #
- `CGAL::Shape_detection::Polygon_mesh::One_ring_neighbor_query<PolygonMesh>`
- `CGAL::Shape_detection::Polygon_mesh::Polyline_graph<GeomTraits, PolygonMesh, VertexPointMap>`
- `CGAL::Shape_detection::Polygon_mesh::Least_squares_plane_fit_region<GeomTraits, PolygonMesh, VertexToPointMap>`
- `CGAL::Shape_detection::Polygon_mesh::Least_squares_plane_fit_sorting<GeomTraits, PolygonMesh, %NeighborQuery, VertexToPointMap>`


\defgroup PkgShapeDetectionRGConcepts Concepts
\ingroup PkgShapeDetectionRG

Concepts used for the parameters of the `CGAL::Shape_detection::Region_growing`.

\defgroup PkgShapeDetectionRGOnPoints Point Set
\ingroup PkgShapeDetectionRG

\defgroup PkgShapeDetectionRGOnPointSet3 Convenience Aliases and Functions for Point_set_3
\ingroup PkgShapeDetectionRG

Models that can be used with the `CGAL::Shape_detection::Region_growing`
for shape detection in a point set.

\defgroup PkgShapeDetectionRGOnSegments Segment Set
\ingroup PkgShapeDetectionRG

Models that can be used with the `CGAL::Shape_detection::Region_growing`
for shape detection in a segment set.

\defgroup PkgShapeDetectionRGOnMesh Polygon Mesh
\ingroup PkgShapeDetectionRG

Models that can be used with the `CGAL::Shape_detection::Region_growing`
for shape detection on a polygon mesh.

\addtogroup PkgShapeDetectionRef

\cgalPkgDescriptionBegin{Shape Detection, PkgShapeDetection}
\cgalPkgPicture{shapes_detail.png}

\cgalPkgSummaryBegin
\cgalPkgAuthors{Sven Oesau, Yannick Verdie, Clément Jamin, Pierre Alliez, Florent Lafarge, Simon Giraudot, Thien Hoang, and Dmitry Anisimov}
\cgalPkgDesc{This package implements the Efficient RANSAC (RANdom SAmple Consensus) approach
for detecting arbitrary shapes in an unorganized point set with unoriented normals
and the Region Growing approach for detecting shapes in a set of arbitrary items.}
\cgalPkgManuals{Chapter_Shape_Detection, PkgShapeDetectionRef}
\cgalPkgSummaryEnd

\cgalPkgShortInfoBegin
\cgalPkgSince{4.7}
\cgalPkgDependsOn{\ref thirdpartyEigen}
\cgalPkgBib{cgal:ovja-pssd}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{CGAL Lab,CGALlab.zip}
\cgalPkgShortInfoEnd

\cgalPkgDescriptionEnd

\cgalClassifedRefPages

- \link PkgShapeDetectionRANSAC Efficient RANSAC \endlink

- \link PkgShapeDetectionRG Region Growing \endlink



*/
