/// \defgroup PkgPointSetProcessing3Ref Point Set Processing Reference

/*!
\defgroup PkgPointSetProcessing3Algorithms Algorithms
\ingroup PkgPointSetProcessing3Ref

Collection of algorithms of point set processing (smoothing,
simplification, etc.).

\defgroup PkgPointSetProcessing3IO IO (XYZ/OFF Formats)
\ingroup PkgPointSetProcessing3Ref

Read and write points (with or without normal vectors) in XYZ and OFF
formats.

\defgroup PkgPointSetProcessing3IOPly IO (PLY Format)
\ingroup PkgPointSetProcessing3Ref

Read and write points (with or without additional properties) in PLY
format.

\defgroup PkgPointSetProcessing3IOLas IO (LAS Format)
\ingroup PkgPointSetProcessing3Ref

Read and write points (with or without additional properties) in LAS
format.

\addtogroup PkgPointSetProcessing3Ref
\cgalPkgDescriptionBegin{Point Set Processing,PkgPointSetProcessing3}
\cgalPkgPicture{point_set_processing_detail.png}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Pierre Alliez, Simon Giraudot, Clément Jamin, Florent Lafarge, Quentin Mérigot, Jocelyn Meyron, Laurent Saboret, Nader Salman, Shihao Wu}
\cgalPkgDesc{This \cgal component implements methods to analyze and process unorganized point sets. The input is an unorganized point set, possibly with normal attributes (unoriented or oriented). The point set can be analyzed to measure its average spacing, and processed through functions devoted to the simplification, outlier removal, smoothing, normal estimation, normal orientation and feature edges estimation.}
\cgalPkgManuals{Chapter_Point_Set_Processing,PkgPointSetProcessing3Ref}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{3.5}
\cgalPkgDependsOn{\ref PkgSolverInterface} 
\cgalPkgBib{cgal:ass-psp}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{Polyhedron demo,polyhedron_3.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

\cgalClassifedRefPages

\cgalCRPSection{Algorithms}

- `CGAL::compute_average_spacing()`
- `CGAL::estimate_global_k_neighbor_scale()`
- `CGAL::estimate_global_range_scale()`
- `CGAL::estimate_local_k_neighbor_scales()`
- `CGAL::estimate_local_range_scales()`
- `CGAL::remove_outliers()`
- `CGAL::grid_simplify_point_set()`
- `CGAL::random_simplify_point_set()`
- `CGAL::hierarchy_simplify_point_set()`	
- `CGAL::wlop_simplify_and_regularize_point_set()`
- `CGAL::jet_smooth_point_set()`
- `CGAL::bilateral_smooth_point_set()`
- `CGAL::jet_estimate_normals()`
- `CGAL::pca_estimate_normals()`
- `CGAL::mst_orient_normals()`
- `CGAL::edge_aware_upsample_point_set()`
- `CGAL::compute_vcm()`
- `CGAL::vcm_estimate_normals()`
- `CGAL::vcm_is_on_feature_edge()`
- `CGAL::structure_point_set()`

\cgalCRPSection{IO (XYZ/OFF Formats)}

- `CGAL::read_off_points()`
- `CGAL::read_xyz_points()`
- `CGAL::write_off_points()`
- `CGAL::write_xyz_points()`

\cgalCRPSection{IO (PLY Format)}

- `CGAL::read_ply_points()`
- `CGAL::read_ply_points_with_properties()`
- `CGAL::write_ply_points()`
- `CGAL::write_ply_points_with_properties()`
- `CGAL::PLY_property<T>`
- `CGAL::make_ply_point_reader()`
- `CGAL::make_ply_point_writer()`
- `CGAL::make_ply_normal_reader()`
- `CGAL::make_ply_normal_writer()`

\cgalCRPSection{IO (LAS Format)}

- `CGAL::read_las_points()`
- `CGAL::read_las_points_with_properties()`
- `CGAL::write_las_points()`
- `CGAL::write_las_points_with_properties()`
- `CGAL::make_las_point_reader()`
- `CGAL::make_las_point_writer()`

*/

