/// \defgroup PkgPointSetProcessing3Ref Reference Manual

/*!
\defgroup PkgPointSetProcessing3Algorithms Algorithms
\ingroup PkgPointSetProcessing3Ref

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

\defgroup PkgPointSetProcessing3IO I/O Functions
\ingroup PkgPointSetProcessing3Ref


\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, Sven Oesau, Laurent Saboret, Nader Salman, Shihao Wu, and Necip Fazil Yildiran}
\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, feature edges estimation and registration.}
\cgalPkgManuals{Chapter_Point_Set_Processing,PkgPointSetProcessing3Ref}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{3.5}
\cgalPkgDependsOn{\ref PkgSolverInterface}
\cgalPkgBib{cgal:ass-psp}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\cgalPkgDemo{CGAL Lab,CGALlab.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::OpenGR::compute_registration_transformation()`
- `CGAL::OpenGR::register_point_sets()`
- `CGAL::pointmatcher::compute_registration_transformation()`
- `CGAL::pointmatcher::register_point_sets()`
- `CGAL::remove_outliers()`
- `CGAL::cluster_point_set()`
- `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::scanline_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()`
- `CGAL::poisson_eliminate()`

\cgalCRPSection{I/O (All Formats)}

- `CGAL::IO::read_points()`
- `CGAL::IO::write_points()`

\cgalCRPSection{I/O (XYZ/OFF Formats)}

- \link PkgStreamSupportIoFuncsOFF OFF I/O Functions (`read_OFF()` and `write_OFF()`)\endlink
- \link PkgStreamSupportIoFuncsXYZ XYZ I/O Functions (`read_XYZ()` and `write_XYZ()`)\endlink

\cgalCRPSection{I/O (PLY Format)}

- \link PkgStreamSupportIoFuncsPLY `CGAL::IO::read_PLY()` \endlink
- `CGAL::IO::read_PLY_with_properties()`
- \link PkgStreamSupportIoFuncsPLY `CGAL::IO::write_PLY()` \endlink
- `CGAL::IO::write_PLY_with_properties()`
- `CGAL::IO::PLY_property<T>`
- `CGAL::IO::make_ply_point_reader()`
- `CGAL::IO::make_ply_point_writer()`
- `CGAL::IO::make_ply_normal_reader()`
- `CGAL::IO::make_ply_normal_writer()`

\cgalCRPSection{I/O (LAS Format)}

- `CGAL::IO::read_LAS()`
- `CGAL::IO::read_LAS_with_properties()`
- `CGAL::IO::write_LAS()`
- `CGAL::IO::write_LAS_with_properties()`
- `CGAL::IO::make_las_point_reader()`
- `CGAL::IO::make_las_point_writer()`

*/
