diff --git a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/jet_smooth_point_set.tex b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/jet_smooth_point_set.tex index 1e8f3b16bca..98f6b847f3c 100644 --- a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/jet_smooth_point_set.tex +++ b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/jet_smooth_point_set.tex @@ -19,7 +19,9 @@ \ccDefinition -\ccc{CGAL::jet_smooth_point_set()} smooths a point set by fitting for each point a jet surface and projecting it onto the jet. The default jet surfaces are quadrics. The function exists in four variants: it may either alter (mutate) the input point set or create a copy; and it may either require a kernel or deduce it from input data. +\ccc{CGAL::jet_smooth_point_set()} smooths a point set by fitting for each point a jet surface and projecting it onto the jet. The default jet surfaces are quadrics. + +The function exists in four variants: it may either alter (mutate) the input point set or create a copy; and it may either require a kernel or deduce it from input data. \ccInclude{CGAL/jet_smooth_point_set.h} @@ -41,7 +43,7 @@ Smooth a point set using jet fitting on the k nearest neighbors and reprojection \ccGlue \ccFunction{template void jet_smooth_point_set(ForwardIterator first, ForwardIterator beyond, unsigned int k, const Kernel& kernel, const unsigned int degree_fitting = 2, const unsigned int degree_monge = 2);} { -Smooth a point set using jet fitting on the k nearest neighbors and reprojection onto the jet. This function is mutating the input point set. This variant requires the kernel. +Smooth a point set using jet fitting on the k nearest neighbors and reprojection onto the jet. This variant is mutating the input point set and requires the kernel. Warning: This method moves the points, thus should not be called on containers sorted wrt points position. \ccPrecond k $>$= 2. \ccCommentHeading{Template Parameters} @@ -67,7 +69,7 @@ Smooths points by fitting jet surfaces over their k nearest neighbors and projec \ccGlue \ccFunction{template void jet_smooth_point_set(ForwardIterator first, ForwardIterator beyond, unsigned int k, const unsigned int degree_fitting = 2, const unsigned int degree_monge = 2);} { -Smooths points by fitting jet surfaces over their k nearest neighbors and projecting onto the jets. This function is mutating the input point set. This variant deduces the kernel from iterator types. +Smooths points by fitting jet surfaces over their k nearest neighbors and projecting onto the jets. This function is mutating the input point set and deduces the kernel from iterator types. Warning: As this method relocates the points, it should not be called on containers sorted w.r.t. point locations. \ccPrecond k $>$= 2. \ccCommentHeading{Template Parameters} diff --git a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/merge_simplify_point_set.tex b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/merge_simplify_point_set.tex index dc83170696c..5529b533851 100644 --- a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/merge_simplify_point_set.tex +++ b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/merge_simplify_point_set.tex @@ -45,7 +45,7 @@ Merge points which belong to the same cell of a grid of cell size = epsilon. Thi \ccGlue \ccFunction{template ForwardIterator merge_simplify_point_set(ForwardIterator first, ForwardIterator beyond, double epsilon, const Kernel& kernel);} { -Merge points which belong to the same cell of a grid of cell size = epsilon. This function is mutating the input point set. This variant requires the kernel. +Merge points which belong to the same cell of a grid of cell size = epsilon. This variant is mutating the input point set and requires the kernel. Warning: This method modifies the order of points, thus should not be called on sorted containers. \ccPrecond epsilon $>$ 0. \ccCommentHeading{Template Parameters} @@ -72,7 +72,7 @@ Merge points which belong to the same cell of a grid of cell size = epsilon. Thi \ccGlue \ccFunction{template ForwardIterator merge_simplify_point_set(ForwardIterator first, ForwardIterator beyond, double epsilon);} { -Merge points which belong to the same cell of a grid of cell size = epsilon. This function is mutating the input point set. This variant deduces the kernel from iterator types. +Merge points which belong to the same cell of a grid of cell size = epsilon. This variant is mutating the input point set and deduces the kernel from iterator types. Warning: This method modifies the order of points, thus should not be called on sorted containers. \ccPrecond epsilon $>$ 0. \ccCommentHeading{Template Parameters} diff --git a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/random_simplify_point_set.tex b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/random_simplify_point_set.tex index 7a88f0607a0..13a07bd732e 100644 --- a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/random_simplify_point_set.tex +++ b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/random_simplify_point_set.tex @@ -43,7 +43,7 @@ Randomly deletes a user-specified fraction of the input points. This variant req \ccGlue \ccFunction{template ForwardIterator random_simplify_point_set(ForwardIterator first, ForwardIterator beyond, double threshold_percent, const Kernel& kernel);} { -Randomly deletes a user-specified fraction of the input points. This function is mutating the input point set. This variant requires the kernel. +Randomly deletes a user-specified fraction of the input points. This variant is mutating the input point set and requires the kernel. Warning: This method modifies the order of points, thus should not be called on sorted containers. \ccCommentHeading{Template Parameters} \begin{description} @@ -68,7 +68,7 @@ Randomly deletes a user-specified fraction of the input points. This variant ded \ccGlue \ccFunction{template ForwardIterator random_simplify_point_set(ForwardIterator first, ForwardIterator beyond, double threshold_percent);} { -Randomly deletes a user-specified fraction of the input points. This function is mutating the input point set. This variant deduces the kernel from iterator types. +Randomly deletes a user-specified fraction of the input points. This variant is mutating the input point set and deduces the kernel from iterator types. Warning: This method modifies the order of points, thus should not be called on sorted containers. \ccCommentHeading{Template Parameters} \ccc{ForwardIterator}: \ccc{value_type} must be convertible to \ccc{Point_3}. diff --git a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/remove_outliers.tex b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/remove_outliers.tex index b9826faf2f6..e23a7d9c810 100644 --- a/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/remove_outliers.tex +++ b/Point_set_processing_3/doc_tex/Point_set_processing_3_ref/remove_outliers.tex @@ -47,7 +47,7 @@ Remove outliers:\begin{itemize} \ccFunction{template ForwardIterator remove_outliers(ForwardIterator first, ForwardIterator beyond, unsigned int k, const Kernel& kernel, double threshold_percent);} { Remove outliers:\begin{itemize} -\item compute average squared distance to the K nearest neighbors,\item sort the points in increasing order of average distance. This function is mutating the input point set. This variant requires the kernel.\end{itemize} +\item compute average squared distance to the K nearest neighbors,\item sort the points in increasing order of average distance. This variant is mutating the input point set and requires the kernel.\end{itemize} Warning: This method modifies the order of points, thus should not be called on sorted containers. \ccPrecond k $>$= 2. \ccCommentHeading{Template Parameters} @@ -76,7 +76,7 @@ Remove outliers:\begin{itemize} \ccFunction{template ForwardIterator remove_outliers(ForwardIterator first, ForwardIterator beyond, unsigned int k, double threshold_percent);} { Remove outliers:\begin{itemize} -\item compute average squared distance to the k nearest neighbors,\item sort the points in increasing order of average distance. This function is mutating the input point set. This variant deduces the kernel from iterator types.\end{itemize} +\item compute average squared distance to the k nearest neighbors,\item sort the points in increasing order of average distance. This variant is mutating the input point set and deduces the kernel from iterator types.\end{itemize} Warning: This method modifies the order of points, thus should not be called on sorted containers. \ccPrecond k $>$= 2. \ccCommentHeading{Template Parameters} diff --git a/Point_set_processing_3/include/CGAL/improved_laplacian_smooth_point_set.h b/Point_set_processing_3/include/CGAL/improved_laplacian_smooth_point_set.h index 700be4c2641..0de3f70de5c 100644 --- a/Point_set_processing_3/include/CGAL/improved_laplacian_smooth_point_set.h +++ b/Point_set_processing_3/include/CGAL/improved_laplacian_smooth_point_set.h @@ -283,8 +283,7 @@ improved_laplacian_smooth_point_set( /// Improved Laplacian smoothing (Vollmer et al) /// on the k nearest neighbors. -/// This function is mutating the input point set. -/// This variant requires the kernel. +/// This variant is mutating the input point set and requires the kernel. /// /// Warning: /// This method moves the points, thus @@ -405,8 +404,7 @@ improved_laplacian_smooth_point_set( /// Improved Laplacian smoothing (Vollmer et al) /// on the k nearest neighbors. -/// This function is mutating the input point set. -/// This variant deduces the kernel from iterator types. +/// This variant is mutating the input point set and deduces the kernel from iterator types. /// /// Warning: /// As this method relocates the points, it diff --git a/Point_set_processing_3/include/CGAL/jet_smooth_point_set.h b/Point_set_processing_3/include/CGAL/jet_smooth_point_set.h index 163644fc4b2..11ab19ad3fa 100644 --- a/Point_set_processing_3/include/CGAL/jet_smooth_point_set.h +++ b/Point_set_processing_3/include/CGAL/jet_smooth_point_set.h @@ -161,8 +161,7 @@ jet_smooth_point_set(InputIterator first, ///< iterator over the first input /// Smooth a point set using jet fitting on the k /// nearest neighbors and reprojection onto the jet. -/// This function is mutating the input point set. -/// This variant requires the kernel. +/// This variant is mutating the input point set and requires the kernel. /// /// Warning: /// This method moves the points, thus @@ -241,8 +240,7 @@ jet_smooth_point_set(InputIterator first, ///< iterator over the first input poi /// Smooths points by fitting jet surfaces over their k /// nearest neighbors and projecting onto the jets. -/// This function is mutating the input point set. -/// This variant deduces the kernel from iterator types. +/// This function is mutating the input point set and deduces the kernel from iterator types. /// /// Warning: /// As this method relocates the points, it diff --git a/Point_set_processing_3/include/CGAL/merge_simplify_point_set.h b/Point_set_processing_3/include/CGAL/merge_simplify_point_set.h index 7d469544bd1..071b40286d5 100644 --- a/Point_set_processing_3/include/CGAL/merge_simplify_point_set.h +++ b/Point_set_processing_3/include/CGAL/merge_simplify_point_set.h @@ -147,8 +147,7 @@ merge_simplify_point_set( } /// Merge points which belong to the same cell of a grid of cell size = epsilon. -/// This function is mutating the input point set. -/// This variant requires the kernel. +/// This variant is mutating the input point set and requires the kernel. /// /// Warning: /// This method modifies the order of points, thus @@ -222,8 +221,7 @@ merge_simplify_point_set( } /// Merge points which belong to the same cell of a grid of cell size = epsilon. -/// This function is mutating the input point set. -/// This variant deduces the kernel from iterator types. +/// This variant is mutating the input point set and deduces the kernel from iterator types. /// /// Warning: /// This method modifies the order of points, thus diff --git a/Point_set_processing_3/include/CGAL/random_simplify_point_set.h b/Point_set_processing_3/include/CGAL/random_simplify_point_set.h index 0030feb5618..c9c95b3ee2a 100644 --- a/Point_set_processing_3/include/CGAL/random_simplify_point_set.h +++ b/Point_set_processing_3/include/CGAL/random_simplify_point_set.h @@ -65,8 +65,7 @@ random_simplify_point_set( } /// Randomly deletes a user-specified fraction of the input points. -/// This function is mutating the input point set. -/// This variant requires the kernel. +/// This variant is mutating the input point set and requires the kernel. /// /// Warning: /// This method modifies the order of points, thus @@ -127,8 +126,7 @@ random_simplify_point_set( } /// Randomly deletes a user-specified fraction of the input points. -/// This function is mutating the input point set. -/// This variant deduces the kernel from iterator types. +/// This variant is mutating the input point set and deduces the kernel from iterator types. /// /// Warning: /// This method modifies the order of points, thus diff --git a/Point_set_processing_3/include/CGAL/remove_outliers.h b/Point_set_processing_3/include/CGAL/remove_outliers.h index e9fd5c8f0d2..44a7406620a 100644 --- a/Point_set_processing_3/include/CGAL/remove_outliers.h +++ b/Point_set_processing_3/include/CGAL/remove_outliers.h @@ -170,8 +170,7 @@ remove_outliers( /// Remove outliers: /// - compute average squared distance to the K nearest neighbors, /// - sort the points in increasing order of average distance. -/// This function is mutating the input point set. -/// This variant requires the kernel. +/// This variant is mutating the input point set and requires the kernel. /// /// Warning: /// This method modifies the order of points, thus @@ -276,8 +275,7 @@ remove_outliers( /// Remove outliers: /// - compute average squared distance to the k nearest neighbors, /// - sort the points in increasing order of average distance. -/// This function is mutating the input point set. -/// This variant deduces the kernel from iterator types. +/// This variant is mutating the input point set and deduces the kernel from iterator types. /// /// Warning: /// This method modifies the order of points, thus diff --git a/Point_set_processing_3/include/CGAL/remove_outliers_wrt_median_knn_sq_distance.h b/Point_set_processing_3/include/CGAL/remove_outliers_wrt_median_knn_sq_distance.h index 9fe6ab1541c..cb5c2bda733 100644 --- a/Point_set_processing_3/include/CGAL/remove_outliers_wrt_median_knn_sq_distance.h +++ b/Point_set_processing_3/include/CGAL/remove_outliers_wrt_median_knn_sq_distance.h @@ -227,8 +227,7 @@ remove_outliers_wrt_median_knn_sq_distance( /// Remove outliers: /// - compute median squared distance to the K nearest neighbors, /// - sort the points in increasing order of computed distance. -/// This function is mutating the input point set. -/// This variant requires the kernel. +/// This variant is mutating the input point set and requires the kernel. /// /// Warning: /// This method modifies the order of points, thus @@ -333,8 +332,7 @@ remove_outliers_wrt_median_knn_sq_distance( /// Remove outliers: /// - compute median squared distance to the K nearest neighbors, /// - sort the points in increasing order of computed distance. -/// This function is mutating the input point set. -/// This variant deduces the kernel from iterator types. +/// This variant is mutating the input point set and deduces the kernel from iterator types. /// /// Warning: /// This method modifies the order of points, thus diff --git a/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/poisson/include/poisson_dt3.h b/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/poisson/include/poisson_dt3.h index b2b91bcdfdb..612aa4df28b 100644 --- a/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/poisson/include/poisson_dt3.h +++ b/Surface_reconstruction_points_3/demo/Surface_reconstruction_points_3/poisson/include/poisson_dt3.h @@ -37,10 +37,12 @@ private: // Public types public: + /// Geometric traits class / Point_3 is a model of PointWithNormal_3. + typedef Gt Geom_traits; + // Repeat Reconstruction_triangulation_3 public types /// @cond SKIP_IN_MANUAL typedef Tds Triangulation_data_structure; - typedef Gt Geom_traits; ///< Geometric traits class / Point_3 is a model of PointWithNormal_3. typedef typename Base::Segment Segment; typedef typename Base::Triangle Triangle; typedef typename Base::Tetrahedron Tetrahedron; @@ -72,7 +74,6 @@ public: typedef typename Base::Normal_iterator Normal_iterator; /// @endcond - /// The geometric traits class's Point_3 type is a model of PointWithNormal_3 typedef typename Geom_traits::Point_3 Point; ///< Model of PointWithNormal_3 typedef typename Geom_traits::Point_3 Point_with_normal; ///< Model of PointWithNormal_3 typedef typename Point_with_normal::Normal Normal; ///< Model of Kernel::Vector_3 concept. diff --git a/Surface_reconstruction_points_3/doc/concepts/ReconstructionTriangulation_3.h b/Surface_reconstruction_points_3/doc/concepts/ReconstructionTriangulation_3.h index abe27af56d4..b23716085a4 100644 --- a/Surface_reconstruction_points_3/doc/concepts/ReconstructionTriangulation_3.h +++ b/Surface_reconstruction_points_3/doc/concepts/ReconstructionTriangulation_3.h @@ -39,14 +39,13 @@ class ReconstructionTriangulation_3 : public DelaunayTriangulation_3, public: /// Geometric traits class / Point_3 is a model of PointWithNormal_3. - typedef Gt Geom_traits; + typedef Gt Geom_traits; // Geometric types typedef typename Geom_traits::FT FT; typedef typename Geom_traits::Vector_3 Vector; typedef typename Geom_traits::Sphere_3 Sphere; - /// The geometric traits class's Point_3 type is a model of PointWithNormal_3 typedef typename Geom_traits::Point_3 Point; ///< Model of PointWithNormal_3 typedef typename Geom_traits::Point_3 Point_with_normal; ///< Model of PointWithNormal_3 typedef typename Point_with_normal::Normal Normal; ///< Model of Kernel::Vector_3 concept. @@ -55,7 +54,7 @@ public: typedef xxx Normal_iterator; /// Point type - enum Point_type { + enum Point_type { INPUT, ///< Input point. STEINER ///< Steiner point created by Delaunay refinement. }; @@ -89,9 +88,9 @@ public: /// Get the bounding sphere of input points. Sphere input_points_bounding_sphere() const; - /// Insert point (model of PointWithNormal_3) in the triangulation. + /// Insert point in the triangulation. /// Default type is INPUT. - Vertex_handle insert(const Point& p, + Vertex_handle insert(const Point_with_normal& p, Point_type type = INPUT, Cell_handle start = Cell_handle()); @@ -112,7 +111,7 @@ public: /// insert STEINER point in the triangulation. template Vertex_handle - insert_in_hole(const Point & p, CellIt cell_begin, CellIt cell_end, + insert_in_hole(const Point_with_normal & p, CellIt cell_begin, CellIt cell_end, Cell_handle begin, int i, Point_type type = STEINER); diff --git a/Surface_reconstruction_points_3/doc/concepts/ReconstructionVertexBase_3.h b/Surface_reconstruction_points_3/doc/concepts/ReconstructionVertexBase_3.h index d4a12a49dc9..8d0e1b12cd0 100644 --- a/Surface_reconstruction_points_3/doc/concepts/ReconstructionVertexBase_3.h +++ b/Surface_reconstruction_points_3/doc/concepts/ReconstructionVertexBase_3.h @@ -50,8 +50,8 @@ public: public: ReconstructionVertexBase_3(); - ReconstructionVertexBase_3(const Point & p); - ReconstructionVertexBase_3(const Point & p, Cell_handle c); + ReconstructionVertexBase_3(const Point_with_normal & p); + ReconstructionVertexBase_3(const Point_with_normal & p, Cell_handle c); ReconstructionVertexBase_3(Cell_handle c); /// Is vertex constrained, i.e. diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/APSS_reconstruction_function.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/APSS_reconstruction_function.tex index 4291e5eca67..ad21b4fb6d2 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/APSS_reconstruction_function.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/APSS_reconstruction_function.tex @@ -22,7 +22,11 @@ % The section below is automatically generated. Do not edit! %START-AUTO(\ccDefinition) -\ccc{APSS_reconstruction_function} computes an implicit function that defines a Point Set Surface (PSS) based on moving least squares (MLS) fitting of algebraic spheres. See {\em Algebraic Point Set Surfaces} by Guennebaud and Gross \cite{Guennebaud07}. +\ccc{APSS_reconstruction_function} computes an implicit function that defines a Point Set Surface (PSS) based on moving least squares (MLS) fitting of algebraic spheres. + +See {\em Algebraic Point Set Surfaces} by Guennebaud and Gross \cite{Guennebaud07}. + +Note that APSS reconstruction may create small {\em ghost} connected components close to the reconstructed surface that you should delete. For this purpose, you may call \ccc{erase_small_polyhedron_connected_components}() after \ccc{make_surface_mesh}(). %END-AUTO(\ccDefinition) @@ -74,14 +78,12 @@ Kernel's geometric traits. \ccGlue \ccNestedType{Point} { +== \ccc{Point_3} } \ccGlue \ccNestedType{Vector} { -} -\ccGlue -\ccNestedType{Iso_cuboid} -{ +== \ccc{Vector_3} } \ccGlue \ccNestedType{Sphere} @@ -95,7 +97,7 @@ Kernel's geometric traits. \ccGlue \ccNestedType{Normal} { -== \ccc{Vector_3} +== \ccc{Vector_3} } \ccGlue @@ -109,11 +111,11 @@ Kernel's geometric traits. \ccConstructor{template APSS_reconstruction_function(InputIterator first, InputIterator beyond, unsigned int k);} { -Create an APSS implicit function from a point set. +Creates an APSS implicit function from a set of oriented points. \ccPrecond InputIterator \ccc{value_type} must be convertible to \ccc{Point_with_normal}. \ccCommentHeading{Parameters} \begin{description} -\item \ccc{first}: Iterator over first point to add. \item \ccc{beyond}: Past-the-end iterator to add. \item \ccc{k}: neighbors for APSS sphere fitting. \end{description} +\item \ccc{first}: Iterator over first point. \item \ccc{beyond}: Past-the-end iterator. \item \ccc{k}: number of neighbors for APSS sphere fitting. \end{description} } \ccGlue \ccConstructor{APSS_reconstruction_function(const APSS_reconstruction_function& other);} @@ -136,11 +138,7 @@ operator =() \ccGlue \ccMethod{void set_numbers_of_neighbors(unsigned int k);} { -} -\ccGlue -\ccMethod{Iso_cuboid bounding_box() const;} -{ -Get the bounding box. +Set number of neighbors for APSS sphere fitting. } \ccGlue \ccMethod{const Sphere& bounding_sphere() const;} @@ -148,14 +146,9 @@ Get the bounding box. Returns a sphere bounding the inferred surface. } \ccGlue -\ccMethod{Sphere region_of_interest() const;} -{ -Get the region of interest, ignoring the outliers. This method is used to define the OpenGL arcball sphere. -} -\ccGlue \ccMethod{FT operator()(const Point& p) const;} { -Evaluate implicit function for any 3D point. (\ccc{ImplicitFunction} interface) +\ccc{ImplicitFunction} interface: evaluate implicit function for any 3D point. } \ccGlue \ccMethod{Point get_inner_point() const;} diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex index 03e1b1390a0..16294f7539e 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Poisson_reconstruction_function.tex @@ -22,7 +22,9 @@ % The section below is automatically generated. Do not edit! %START-AUTO(\ccDefinition) -\ccc{Poisson_reconstruction_function} computes an indicator function f() piecewise-linear over the tetrahedra. We solve the Poisson equation Laplacian(f) = divergent(normals field) at each vertex of the triangulation via the TAUCS sparse linear solver. One vertex outside of the surface will be constrained to a value of 0.0. +Kazhdan, Bolitho and Hoppe introduced the Poisson Surface Reconstruction algorithm \cite{Kazhdan06}. Given a set of 3D points with oriented normals sampled on the boundary of a 3D solid, this method solves for an approximate indicator function of the inferred solid, whose gradient best matches the input normals. The output scalar function, represented in an adaptive octree, is then iso-contoured using an adaptive marching cubes. + +\ccc{Poisson_reconstruction_function} implements a variant of this algorithm which solves for a piecewise linear function on a 3D Delaunay triangulation instead of an adaptive octree the TAUCS sparse linear solver. In order to get a unique solution, one vertex outside of the surface is constrained to a value of 0.0. %END-AUTO(\ccDefinition) @@ -47,7 +49,7 @@ class \ccc{Poisson_reconstruction_function}; \ccCommentHeading{Parameters} \begin{description} -\item \ccc{Gt}: Geometric traits class \item \ccc{ReconstructionTriangulation_3}: 3D Delaunay triangulation, model of \ccc{ReconstructionTriangulation_3} concept. \end{description} +\item \ccc{Gt}: Geometric traits class. \item \ccc{ReconstructionTriangulation_3}: 3D Delaunay triangulation, model of \ccc{ReconstructionTriangulation_3} concept. \end{description} %END-AUTO(\ccParameters) @@ -86,10 +88,6 @@ Kernel's geometric traits. { } \ccGlue -\ccNestedType{Iso_cuboid} -{ -} -\ccGlue \ccNestedType{Sphere} { } @@ -127,7 +125,7 @@ Creates a scalar function from a set of oriented points. Inserts the iterator ra \ccPrecond InputIterator \ccc{value_type} must be convertible to \ccc{Point_with_normal}. \ccCommentHeading{Parameters} \begin{description} -\item \ccc{tr}: \ccc{ReconstructionTriangulation_3} base of the Poisson indicator function. \item \ccc{first}: Iterator over first point to add to \ccc{tr}. \item \ccc{beyond}: Past-the-end iterator to add to \ccc{tr}. \end{description} +\item \ccc{tr}: \ccc{ReconstructionTriangulation_3} base of the Poisson indicator function. \item \ccc{first}: Iterator over first point to add. \item \ccc{beyond}: Past-the-end iterator to add. \end{description} } \ccGlue @@ -144,7 +142,7 @@ Insert points. \ccPrecond InputIterator \ccc{value_type} must be convertible to \ccc{Point_with_normal}. \ccCommentHeading{Parameters} \begin{description} -\item \ccc{first}: Iterator over first point to add to \ccc{tr}. \item \ccc{beyond}: Past-the-end iterator to add to \ccc{tr}. \end{description} +\item \ccc{first}: Iterator over first point to add. \item \ccc{beyond}: Past-the-end iterator to add. \end{description} \ccCommentHeading{Returns} the number of inserted points. } \ccGlue @@ -162,21 +160,11 @@ Get embedded triangulation. { } \ccGlue -\ccMethod{Iso_cuboid bounding_box() const;} -{ -Returns a bounding box of the inferred surface. -} -\ccGlue \ccMethod{Sphere bounding_sphere() const;} { Returns a sphere bounding the inferred surface. } \ccGlue -\ccMethod{Sphere region_of_interest() const;} -{ -Get the region of interest, ignoring the outliers. This method is used to define the OpenGL arcball sphere. -} -\ccGlue \ccMethod{bool compute_implicit_function();} { The function \ccc{compute_implicit_function}() must be called after each insertion of oriented points. It computes the piecewise linear scalar function \ccc{f} by:\begin{itemize} @@ -184,52 +172,6 @@ The function \ccc{compute_implicit_function}() must be called after each inserti Returns false if the linear solver fails. } \ccGlue -\ccMethod{void average_spacing_avg_knn_sq_distance_3();} -{ -} -\ccGlue -\ccMethod{unsigned int delaunay_refinement(FT radius_edge_ratio_bound, FT cell_radius_bound, unsigned int max_vertices, FT enlarge_ratio);} -{ -Delaunay refinement (break bad tetrahedra, where bad means badly shaped or too big). The normal of Steiner points is set to zero. Return the number of vertices inserted. -\ccCommentHeading{Parameters} -\begin{description} -\item \ccc{radius_edge_ratio_bound}: radius edge ratio bound (ignored if zero) \item \ccc{cell_radius_bound}: cell radius bound (ignored if zero) \item \ccc{max_vertices}: number of vertices bound \item \ccc{enlarge_ratio}: bounding box enlarge ratio \end{description} -} -\ccGlue -\ccMethod{unsigned int delaunay_refinement_shell(FT size_shell, FT sizing, unsigned int max_vertices);} -{ -} -\ccGlue -\ccMethod{void extrapolate_normals();} -{ -Extrapolate the normals field: compute null normals by averaging neighbor normals. -} -\ccGlue -\ccMethod{FT gaussian_function(FT sigma, FT distance);} -{ -} -\ccGlue -\ccMethod{int extrapolate_normals_using_gaussian_kernel();} -{ -Extrapolate the normals field. Return the number of normals computed. -} -\ccGlue -\ccMethod{bool solve_poisson(double lambda, double * duration_assembly, double * duration_factorization, double * duration_solve, bool is_normalized = false);} -{ -Poisson reconstruction. Return false on error. -} -\ccGlue -\ccMethod{void SaveAsMeshFile();} -{ -} -\ccGlue -\ccMethod{FT set_contouring_value(FT contouring_value);} -{ -Shift and orient the implicit function such that:\begin{itemize} -\item the implicit function = 0 for points / f() = \ccc{contouring_value},\item the implicit function $<$ 0 inside the surface.\end{itemize} -Return the minimum value of the implicit function. -} -\ccGlue \ccMethod{FT f(const Point& p) const;} { Evaluates the implicit function at a given 3D query point. @@ -237,7 +179,7 @@ Evaluates the implicit function at a given 3D query point. \ccGlue \ccMethod{FT operator()(const Point& p) const;} { -Evaluates the implicit function at a given 3D query point. (\ccc{ImplicitFunction} interface) +\ccc{ImplicitFunction} interface: evaluate implicit function for any 3D point. } \ccGlue \ccMethod{Point get_inner_point() const;} @@ -245,43 +187,12 @@ Evaluates the implicit function at a given 3D query point. (\ccc{ImplicitFunctio Returns a point located inside the inferred surface. } \ccGlue -\ccMethod{FT average_value_at_input_vertices() const;} -{ -Get average value of the implicit function over input vertices. -} -\ccGlue -\ccMethod{FT median_value_at_input_vertices() const;} -{ -Get median value of the implicit function over input vertices. -} -\ccGlue -\ccMethod{FT min_value_at_input_vertices() const;} -{ -Get min value of the implicit function over input vertices. -} -\ccGlue -\ccMethod{FT max_value_at_input_vertices() const;} -{ -Get max value of the implicit function over input vertices. -} -\ccGlue -\ccMethod{FT median_value_at_convex_hull() const;} -{ -Get median value of the implicit function over convex hull vertices. -} -\ccGlue -\ccMethod{FT average_value_at_convex_hull() const;} -{ -Get average value of the implicit function over convex hull vertices. -} -\ccGlue %END-AUTO(\ccOperations) \ccSeeAlso \ccRefIdfierPage{CGAL::Reconstruction_triangulation_3} \\ -\ccRefIdfierPage{CGAL::Reconstruction_cell_base_3} \\ \ccRefIdfierPage{CGAL::Reconstruction_vertex_base_3} \\ \ccRefIdfierPage{CGAL::APSS_reconstruction_function} \\ diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionTriangulation_3.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionTriangulation_3.tex index 6169c35f739..336a4cbef96 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionTriangulation_3.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionTriangulation_3.tex @@ -22,13 +22,10 @@ % The section below is automatically generated. Do not edit! %START-AUTO(\ccDefinition) -The \ccc{ReconstructionTriangulation_3} concept defines the interface of a 3D Delaunay triangulation requested by the \ccc{Poisson_reconstruction_function} class. The cell class must be a model of \ccc{ReconstructionCellBase_3} and the vertex class must be a model of \ccc{ReconstructionVertexBase_3}. +The \ccc{ReconstructionTriangulation_3} concept defines the interface of a 3D Delaunay triangulation requested by the \ccc{Poisson_reconstruction_function} class. The vertex class must be a model of \ccc{ReconstructionVertexBase_3}. It provides the interface requested by the \ccc{Poisson_reconstruction_function} class:\begin{itemize} -\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. contributes to the right or left member of the linear system), and has a unique index.\end{itemize} - - -CAUTION: User is responsible to call \ccc{invalidate_bounds}() after adding or removing points. +\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. may contribute to the right or left member of the linear system), and has a unique index.\end{itemize} %END-AUTO(\ccDefinition) @@ -46,6 +43,11 @@ CAUTION: User is responsible to call \ccc{invalidate_bounds}() after adding or r % The section below is automatically generated. Do not edit! %START-AUTO(\ccTypes) +\ccNestedType{Geom_traits} +{ +Geometric traits class / \ccc{Point_3} is a model of \ccc{PointWithNormal_3}. +} +\ccGlue \ccNestedType{FT} { } @@ -54,18 +56,13 @@ CAUTION: User is responsible to call \ccc{invalidate_bounds}() after adding or r { } \ccGlue -\ccNestedType{Iso_cuboid} -{ -} -\ccGlue \ccNestedType{Sphere} { } \ccGlue \ccNestedType{Point} { -The geometric traits class's \ccc{Point_3} type is a model of \ccc{PointWithNormal_3}. -Model of \ccc{PointWithNormal_3} +Model of \ccc{PointWithNormal_3}. } \ccGlue \ccNestedType{Point_with_normal} @@ -108,7 +105,7 @@ Point type. \ccGlue \ccCommentHeading{Values} \begin{description} -\item \ccc{INPUT}: Input point. \item \ccc{STEINER}: \end{description} +\item \ccc{INPUT}: Input point. \item \ccc{STEINER}: Steiner point created by Delaunay refinement. \end{description} \ccGlue %END-AUTO(\ccConstants) @@ -151,16 +148,6 @@ Get iterator over the first input point. Get past-the-end iterator over input points. } \ccGlue -\ccMethod{Iso_cuboid bounding_box() const;} -{ -Get the bounding box of all points. -} -\ccGlue -\ccMethod{Iso_cuboid input_points_bounding_box() const;} -{ -Get the bounding box of input points. -} -\ccGlue \ccMethod{Sphere bounding_sphere() const;} { Get the bounding sphere of all points. @@ -171,21 +158,6 @@ Get the bounding sphere of all points. Get the bounding sphere of input points. } \ccGlue -\ccMethod{Point barycenter() const;} -{ -Get the barycenter of all points. -} -\ccGlue -\ccMethod{FT diameter_standard_deviation() const;} -{ -Get the standard deviation of the distance to barycenter (for all points). -} -\ccGlue -\ccMethod{void invalidate_bounds();} -{ -Update barycenter, bounding box, bounding sphere and standard deviation. User is responsible to call \ccc{invalidate_bounds}() after adding or removing points. -} -\ccGlue \ccMethod{Vertex_handle insert(const Point& p, Point_type type = INPUT, Cell_handle start = Cell_handle());} { Insert point (model of \ccc{PointWithNormal_3}) in the triangulation. Default type is INPUT. @@ -206,12 +178,6 @@ Insert points in the triangulation using a spatial sort. Default type is INPUT. Delaunay refinement callback: insert STEINER point in the triangulation. } \ccGlue -\ccMethod{unsigned int index_vertices();} -{ -Index all finite vertices following the order of \ccc{Finite_vertices_iterator}. -\ccCommentHeading{Returns} the number of finite vertices. -} -\ccGlue \ccMethod{unsigned int index_unconstrained_vertices();} { Index unconstrained vertices following the order of \ccc{Finite_vertices_iterator}. diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionVertexBase_3.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionVertexBase_3.tex index 61d94311eeb..cd180862fbe 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionVertexBase_3.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/ReconstructionVertexBase_3.tex @@ -23,7 +23,7 @@ %START-AUTO(\ccDefinition) The \ccc{ReconstructionVertexBase_3} concept defines the interface of the vertex class of the \ccc{ReconstructionTriangulation_3} concept. It provides the interface requested by the \ccc{Poisson_reconstruction_function} class:\begin{itemize} -\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. contributes to the right or left member of the linear system), and has a unique index.\end{itemize} +\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. may contribute to the right or left member of the linear system), and has a unique index.\end{itemize} @@ -45,6 +45,11 @@ The \ccc{ReconstructionVertexBase_3} concept defines the interface of the vertex % The section below is automatically generated. Do not edit! %START-AUTO(\ccTypes) +\ccNestedType{Geom_traits} +{ +Geometric traits class / \ccc{Point_3} is a model of \ccc{PointWithNormal_3}. +} +\ccGlue \ccNestedType{FT} { } @@ -115,15 +120,6 @@ Get/set the value of the implicit function. Default value is 0.0. { } \ccGlue -\ccMethod{double average_spacing() const;} -{ -Get/set average spacing at each input point. -} -\ccGlue -\ccMethod{double& average_spacing();} -{ -} -\ccGlue \ccMethod{unsigned char type() const;} { Get/set the type = INPUT or STEINER. @@ -151,15 +147,6 @@ Get/set normal (vector + orientation). Default value is null vector. { } \ccGlue -\ccMethod{int tag() const;} -{ -General purpose tag. -} -\ccGlue -\ccMethod{int& tag();} -{ -} -\ccGlue %END-AUTO(\ccOperations) diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_triangulation_3.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_triangulation_3.tex index 10c4f5a2e16..480e03e33be 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_triangulation_3.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_triangulation_3.tex @@ -22,13 +22,10 @@ % The section below is automatically generated. Do not edit! %START-AUTO(\ccDefinition) -The \ccc{Reconstruction_triangulation_3} class is the default implementation of the \ccc{ReconstructionTriangulation_3} concept. The cell class must be a model of \ccc{ReconstructionCellBase_3} and the vertex class must be a model of \ccc{ReconstructionVertexBase_3}. +The \ccc{Reconstruction_triangulation_3} class is the default implementation of the \ccc{ReconstructionTriangulation_3} concept. The vertex class must be a model of \ccc{ReconstructionVertexBase_3}. It provides the interface requested by the \ccc{Poisson_reconstruction_function} class:\begin{itemize} -\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. contributes to the right or left member of the linear system), and has a unique index.\end{itemize} - - -CAUTION: User is responsible to call \ccc{invalidate_bounds}() after adding or removing points. +\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. may contribute to the right or left member of the linear system), and has a unique index.\end{itemize} %END-AUTO(\ccDefinition) @@ -49,12 +46,12 @@ The full template declaration is: template$<$ \\ class BaseGt, \\ class Gt = \ccc{Reconstruction_triangulation_default_geom_traits_3}, \\ -class Tds = \ccc{Triangulation_data_structure_3}, \ccc{Reconstruction_cell_base_3} $>$$>$ \\ +class Tds = \ccc{Triangulation_data_structure_3} $>$$>$ \\ class \ccc{Reconstruction_triangulation_3}; \ccCommentHeading{Parameters} \begin{description} -\item \ccc{BaseGt}: Kernel's geometric traits. \item \ccc{Gt}: Geometric traits class / \ccc{Point_3} is a model of \ccc{PointWithNormal_3}. \item \ccc{Tds}: Model of \ccc{TriangulationDataStructure_3}. The cell class must be a model of \ccc{ReconstructionCellBase_3} and the vertex class must be a model of \ccc{ReconstructionVertexBase_3}. \end{description} +\item \ccc{BaseGt}: Kernel's geometric traits. \item \ccc{Gt}: Geometric traits class / \ccc{Point_3} is a model of \ccc{PointWithNormal_3}. \item \ccc{Tds}: Model of \ccc{TriangulationDataStructure_3}. The vertex class must be a model of \ccc{ReconstructionVertexBase_3}. \end{description} %END-AUTO(\ccParameters) @@ -81,6 +78,11 @@ Model of the \ccc{ReconstructionTriangulation_3} concept. % The section below is automatically generated. Do not edit! %START-AUTO(\ccTypes) +\ccNestedType{Geom_traits} +{ +Geometric traits class / \ccc{Point_3} is a model of \ccc{PointWithNormal_3}. +} +\ccGlue \ccNestedType{FT} { } @@ -89,18 +91,13 @@ Model of the \ccc{ReconstructionTriangulation_3} concept. { } \ccGlue -\ccNestedType{Iso_cuboid} -{ -} -\ccGlue \ccNestedType{Sphere} { } \ccGlue \ccNestedType{Point} { -The geometric traits class's \ccc{Point_3} type is a model of \ccc{PointWithNormal_3}. -Model of \ccc{PointWithNormal_3} +Model of \ccc{PointWithNormal_3}. } \ccGlue \ccNestedType{Point_with_normal} @@ -143,7 +140,7 @@ Point type. \ccGlue \ccCommentHeading{Values} \begin{description} -\item \ccc{INPUT}: Input point. \item \ccc{STEINER}: \end{description} +\item \ccc{INPUT}: Input point. \item \ccc{STEINER}: Steiner point created by Delaunay refinement. \end{description} \ccGlue %END-AUTO(\ccConstants) @@ -197,16 +194,6 @@ Get iterator over the first input point. Get past-the-end iterator over input points. } \ccGlue -\ccMethod{Iso_cuboid bounding_box() const;} -{ -Get the bounding box of all points. -} -\ccGlue -\ccMethod{Iso_cuboid input_points_bounding_box() const;} -{ -Get the bounding box of input points. -} -\ccGlue \ccMethod{Sphere bounding_sphere() const;} { Get the bounding sphere of all points. @@ -217,21 +204,6 @@ Get the bounding sphere of all points. Get the bounding sphere of input points. } \ccGlue -\ccMethod{Point barycenter() const;} -{ -Get the barycenter of all points. -} -\ccGlue -\ccMethod{FT diameter_standard_deviation() const;} -{ -Get the standard deviation of the distance to barycenter (for all points). -} -\ccGlue -\ccMethod{void invalidate_bounds();} -{ -Update barycenter, bounding box, bounding sphere and standard deviation. User is responsible to call \ccc{invalidate_bounds}() after adding or removing points. -} -\ccGlue \ccMethod{Vertex_handle insert(const Point& p, Point_type type = INPUT, Cell_handle start = Cell_handle());} { Insert point (model of \ccc{PointWithNormal_3}) in the triangulation. Default type is INPUT. @@ -252,12 +224,6 @@ Insert points in the triangulation using a spatial sort. Default type is INPUT. Delaunay refinement callback: insert STEINER point in the triangulation. } \ccGlue -\ccMethod{unsigned int index_vertices();} -{ -Index all finite vertices following the order of \ccc{Finite_vertices_iterator}. -\ccCommentHeading{Returns} the number of finite vertices. -} -\ccGlue \ccMethod{unsigned int index_unconstrained_vertices();} { Index unconstrained vertices following the order of \ccc{Finite_vertices_iterator}. diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_vertex_base_3.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_vertex_base_3.tex index 5e5a65c1824..926ab759cf3 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_vertex_base_3.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/Reconstruction_vertex_base_3.tex @@ -32,7 +32,7 @@ The \ccc{Reconstruction_vertex_base_3} class is the default vertex class of the \ccc{Reconstruction_triangulation_3} class. It provides the interface requested by the \ccc{Poisson_reconstruction_function} class:\begin{itemize} -\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. contributes to the right or left member of the linear system), and has a unique index.\end{itemize} +\item Each vertex stores a normal vector.\item A vertex is either an input point or a Steiner point added by Delaunay refinement.\item In order to solve a linear system over the triangulation, a vertex may be constrained or not (i.e. may contribute to the right or left member of the linear system), and has a unique index.\end{itemize} %END-AUTO(\ccDefinition) @@ -75,6 +75,11 @@ Model of the \ccc{ReconstructionVertexBase_3} concept. % The section below is automatically generated. Do not edit! %START-AUTO(\ccTypes) +\ccNestedType{Geom_traits} +{ +Geometric traits class / \ccc{Point_3} is a model of \ccc{PointWithNormal_3}. +} +\ccGlue \ccNestedType{FT} { } @@ -145,15 +150,6 @@ Get/set the value of the implicit function. Default value is 0.0. { } \ccGlue -\ccMethod{double average_spacing() const;} -{ -Get/set average spacing at each input point. -} -\ccGlue -\ccMethod{double& average_spacing();} -{ -} -\ccGlue \ccMethod{unsigned char type() const;} { Get/set the type = INPUT or STEINER. @@ -181,22 +177,12 @@ Get/set normal (vector + orientation). Default value is null vector. { } \ccGlue -\ccMethod{int tag() const;} -{ -General purpose tag. -} -\ccGlue -\ccMethod{int& tag();} -{ -} -\ccGlue %END-AUTO(\ccOperations) \ccSeeAlso \ccRefIdfierPage{CGAL::Reconstruction_triangulation_3} \\ -\ccRefIdfierPage{CGAL::Reconstruction_cell_base_3} \\ \ccRefIdfierPage{CGAL::Poisson_reconstruction_function} \\ \end{ccRefClass} diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/erase_small_polyhedron_connected_components.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/erase_small_polyhedron_connected_components.tex index b327d35609f..f58dfcd1f9f 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/erase_small_polyhedron_connected_components.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/erase_small_polyhedron_connected_components.tex @@ -26,7 +26,7 @@ \ccFunction{template unsigned int erase_small_polyhedron_connected_components(Polyhedron& polyhedron);} { -Erase small connected components of a polyhedron: erase all connected components but the largest. +Erases small connected components of a polyhedron: It calls \ccc{get_polyhedron_connected_components}(), then \ccc{erase_connected_component}() on all connected components but the largest. \ccCommentHeading{Template Parameters} \ccc{Polyhedron}: an instance of \ccc{Polyhedron_3} that supports vertices and removal operation. \ccCommentHeading{Returns} the number of connected components erased. diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_polyhedron.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_polyhedron.tex index 86d0df21482..87579061b42 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_polyhedron.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_polyhedron.tex @@ -32,8 +32,7 @@ Get reconstructed surface out of a \ccc{SurfaceMeshComplex_2InTriangulation_3} o This variant exports the surface as a polyhedron. It requires the surface to be manifold. For this purpose, you may call \ccc{make_surface_mesh}() with \ccc{Manifold_tag} or \ccc{Manifold_with_boundary_tag} parameter. \ccCommentHeading{Template Parameters} \begin{description} -\item \ccc{SurfaceMeshComplex_2InTriangulation_3}: model of the \ccc{SurfaceMeshComplex_2InTriangulation_3} concept. \item \ccc{Polyhedron}: an instance of \ccc{Polyhedron_3}.\end{description} -\ccCommentHeading{Returns} true on success. +\item \ccc{SurfaceMeshComplex_2InTriangulation_3}: model of the \ccc{SurfaceMeshComplex_2InTriangulation_3} concept. \item \ccc{Polyhedron}: an instance of \ccc{Polyhedron_3}. \end{description} \ccCommentHeading{Parameters} \begin{description} \item \ccc{c2t3}: Input surface. \item \ccc{output_polyhedron}: Output polyhedron. \end{description} @@ -45,6 +44,7 @@ This variant exports the surface as a polyhedron. It requires the surface to be \ccSeeAlso \ccRefIdfierPage{CGAL::output_surface_facets_to_off} \\ +\ccRefIdfierPage{CGAL::output_surface_facets_to_triangle_soup} \\ \ccExample diff --git a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_triangle_soup.tex b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_triangle_soup.tex index 8cb6cc77798..748a7a4ef95 100644 --- a/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_triangle_soup.tex +++ b/Surface_reconstruction_points_3/doc_tex/Surface_reconstruction_points_3_ref/output_surface_facets_to_triangle_soup.tex @@ -32,8 +32,7 @@ Get reconstructed surface out of a \ccc{SurfaceMeshComplex_2InTriangulation_3} o This variant exports the surface as a triangle soup. \ccCommentHeading{Template Parameters} \begin{description} -\item \ccc{SurfaceMeshComplex_2InTriangulation_3}: model of the \ccc{SurfaceMeshComplex_2InTriangulation_3} concept. \item \ccc{OutputIterator}: \ccc{value_type} must be convertible from \ccc{Triangle_3}.\end{description} -\ccCommentHeading{Returns} true on success. +\item \ccc{SurfaceMeshComplex_2InTriangulation_3}: model of the \ccc{SurfaceMeshComplex_2InTriangulation_3} concept. \item \ccc{OutputIterator}: \ccc{value_type} must be convertible from \ccc{Triangle_3}. \end{description} \ccCommentHeading{Parameters} \begin{description} \item \ccc{c2t3}: Input surface. \item \ccc{output_iterator}: Output iterator. \end{description} @@ -45,6 +44,7 @@ This variant exports the surface as a triangle soup. \ccSeeAlso \ccRefIdfierPage{CGAL::output_surface_facets_to_off} \\ +\ccRefIdfierPage{CGAL::output_surface_facets_to_polyhedron} \\ \ccExample diff --git a/Surface_reconstruction_points_3/include/CGAL/APSS_reconstruction_function.h b/Surface_reconstruction_points_3/include/CGAL/APSS_reconstruction_function.h index 8d26ef51d60..106ec927acb 100644 --- a/Surface_reconstruction_points_3/include/CGAL/APSS_reconstruction_function.h +++ b/Surface_reconstruction_points_3/include/CGAL/APSS_reconstruction_function.h @@ -38,8 +38,14 @@ CGAL_BEGIN_NAMESPACE /// APSS_reconstruction_function computes an implicit function /// that defines a Point Set Surface (PSS) based on /// moving least squares (MLS) fitting of algebraic spheres. +/// /// See "Algebraic Point Set Surfaces" by Guennebaud and Gross [Guennebaud07]. /// +/// Note that APSS reconstruction may create small "ghost" connected components +/// close to the reconstructed surface that you should delete. +/// For this purpose, you may call erase_small_polyhedron_connected_components() +/// after make_surface_mesh(). +/// /// @heading Is Model for the Concepts: /// Model of the 'ImplicitFunction' concept. /// @@ -55,12 +61,11 @@ public: typedef Gt Geom_traits; ///< Kernel's geometric traits typedef typename Geom_traits::FT FT; - typedef typename Geom_traits::Point_3 Point; - typedef typename Geom_traits::Vector_3 Vector; + typedef typename Geom_traits::Point_3 Point; ///< == Point_3 + typedef typename Geom_traits::Vector_3 Vector; ///< == Vector_3 typedef typename Geom_traits::Sphere_3 Sphere; typedef Point_with_normal_3 Point_with_normal; ///< == Point_with_normal_3 - typedef typename Point_with_normal::Normal Normal; ///< == Vector_3 // Private types private: @@ -114,7 +119,7 @@ public: /// /// @param first Iterator over first point. /// @param beyond Past-the-end iterator. - /// @param k #neighbors for APSS sphere fitting. + /// @param k number of neighbors for APSS sphere fitting. template < class InputIterator > APSS_reconstruction_function(InputIterator first, InputIterator beyond, unsigned int k) @@ -180,7 +185,7 @@ public: delete m; } - /// Set #neighbors for APSS sphere fitting. + /// Set number of neighbors for APSS sphere fitting. void set_numbers_of_neighbors(unsigned int k) {m->nofNeighbors = k;} /// Returns a sphere bounding the inferred surface. diff --git a/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_polyhedron.h b/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_polyhedron.h index 33baf604b11..ea00d928593 100644 --- a/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_polyhedron.h +++ b/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_polyhedron.h @@ -35,8 +35,6 @@ CGAL_BEGIN_NAMESPACE /// @commentheading Template Parameters: /// @param SurfaceMeshComplex_2InTriangulation_3 model of the SurfaceMeshComplex_2InTriangulation_3 concept. /// @param Polyhedron an instance of CGAL::Polyhedron_3. -/// -/// @return true on success. template void diff --git a/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_triangle_soup.h b/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_triangle_soup.h index 8b91606ee68..285bb9bf5ab 100644 --- a/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_triangle_soup.h +++ b/Surface_reconstruction_points_3/include/CGAL/IO/output_surface_facets_to_triangle_soup.h @@ -33,8 +33,6 @@ CGAL_BEGIN_NAMESPACE /// @commentheading Template Parameters: /// @param SurfaceMeshComplex_2InTriangulation_3 model of the SurfaceMeshComplex_2InTriangulation_3 concept. /// @param OutputIterator value_type must be convertible from Triangle_3. -/// -/// @return true on success. template void diff --git a/Surface_reconstruction_points_3/include/CGAL/Poisson_reconstruction_function.h b/Surface_reconstruction_points_3/include/CGAL/Poisson_reconstruction_function.h index e950cf861e5..36a775728e5 100644 --- a/Surface_reconstruction_points_3/include/CGAL/Poisson_reconstruction_function.h +++ b/Surface_reconstruction_points_3/include/CGAL/Poisson_reconstruction_function.h @@ -39,16 +39,16 @@ CGAL_BEGIN_NAMESPACE /// Kazhdan, Bolitho and Hoppe introduced the Poisson Surface Reconstruction algorithm [Kazhdan06]. -/// Given a set of 3D points with oriented normals (denoted oriented points in the sequel) -/// sampled on the boundary of a 3D solid, this method solves for an approximate indicator function +/// Given a set of 3D points with oriented normals sampled on the boundary of a 3D solid, +/// this method solves for an approximate indicator function /// of the inferred solid, whose gradient best matches the input normals. -/// The output scalar function, represented in an adaptive octree, is then iso-contoured +/// The output scalar function, represented in an adaptive octree, is then iso-contoured /// using an adaptive marching cubes. -/// -/// Poisson_reconstruction_function implements a variant of this algorithm which solves +/// +/// Poisson_reconstruction_function implements a variant of this algorithm which solves /// for a piecewise linear function on a 3D Delaunay triangulation instead of an adaptive octree /// the TAUCS sparse linear solver. -/// One vertex outside of the surface will be constrained to a value of 0.0. +/// In order to get a unique solution, one vertex outside of the surface is constrained to a value of 0.0. /// /// @heading Is Model for the Concepts: /// Model of the 'ImplicitFunction' concept. @@ -69,8 +69,8 @@ public: typedef Gt Geom_traits; ///< Kernel's geometric traits typedef typename Geom_traits::FT FT; - typedef typename Geom_traits::Point_3 Point; - typedef typename Geom_traits::Vector_3 Vector; + typedef typename Geom_traits::Point_3 Point; ///< == Point_3 + typedef typename Geom_traits::Vector_3 Vector; ///< == Vector_3 typedef typename Geom_traits::Sphere_3 Sphere; typedef typename Triangulation::Point_with_normal Point_with_normal; @@ -247,7 +247,7 @@ public: return true; } - + // TEMPORARY HACK /// @cond SKIP_IN_MANUAL @@ -599,7 +599,7 @@ private: return div; } - FT div_normalized(Vertex_handle v) + FT div_normalized(Vertex_handle v) { std::vector cells; m_tr.incident_cells(v,std::back_inserter(cells)); diff --git a/Surface_reconstruction_points_3/include/CGAL/Reconstruction_triangulation_3.h b/Surface_reconstruction_points_3/include/CGAL/Reconstruction_triangulation_3.h index 1796fd951c3..89c48f748ce 100644 --- a/Surface_reconstruction_points_3/include/CGAL/Reconstruction_triangulation_3.h +++ b/Surface_reconstruction_points_3/include/CGAL/Reconstruction_triangulation_3.h @@ -97,7 +97,7 @@ public: m_index = 0; } - Reconstruction_vertex_base_3(const Point& p) + Reconstruction_vertex_base_3(const Point_with_normal& p) : Vb(p) { m_f = 0.0f; @@ -107,7 +107,7 @@ public: } - Reconstruction_vertex_base_3(const Point& p, Cell_handle c) + Reconstruction_vertex_base_3(const Point_with_normal& p, Cell_handle c) : Vb(p,c) { m_f = (FT)0.0; @@ -230,7 +230,7 @@ private: public: /// Geometric traits class / Point_3 is a model of PointWithNormal_3. - typedef Gt Geom_traits; + typedef Gt Geom_traits; // Repeat base class' types /// @cond SKIP_IN_MANUAL @@ -267,7 +267,6 @@ public: typedef typename Geom_traits::Vector_3 Vector; typedef typename Geom_traits::Sphere_3 Sphere; - /// The geometric traits class's Point_3 type is a model of PointWithNormal_3 typedef typename Geom_traits::Point_3 Point; ///< Model of PointWithNormal_3 typedef typename Geom_traits::Point_3 Point_with_normal; ///< Model of PointWithNormal_3 typedef typename Point_with_normal::Normal Normal; ///< Model of Kernel::Vector_3 concept. @@ -277,7 +276,7 @@ public: Project_normal > Normal_iterator; /// Point type - enum Point_type { + enum Point_type { INPUT, ///< Input point. STEINER ///< Steiner point created by Delaunay refinement. }; @@ -347,7 +346,7 @@ public: /// Get the bounding sphere of all points. Sphere bounding_sphere() const { - Min_sphere_d< CGAL::Optimisation_d_traits_3 > + Min_sphere_d< CGAL::Optimisation_d_traits_3 > ms3(points_begin(), points_end()); // for all points return Sphere(ms3.center(), ms3.squared_radius()); } @@ -355,14 +354,14 @@ public: /// Get the bounding sphere of input points. Sphere input_points_bounding_sphere() const { - Min_sphere_d< CGAL::Optimisation_d_traits_3 > + Min_sphere_d< CGAL::Optimisation_d_traits_3 > input_points_ms3(input_points_begin(), input_points_end()); // for input points return Sphere(input_points_ms3.center(), input_points_ms3.squared_radius()); } - /// Insert point (model of PointWithNormal_3) in the triangulation. + /// Insert point in the triangulation. /// Default type is INPUT. - Vertex_handle insert(const Point& p, + Vertex_handle insert(const Point_with_normal& p, Point_type type = INPUT, Cell_handle start = Cell_handle()) { @@ -387,12 +386,12 @@ public: int n = number_of_vertices(); // spatial sorting - std::vector points (first, beyond); + std::vector points (first, beyond); std::random_shuffle (points.begin(), points.end()); spatial_sort (points.begin(), points.end(), geom_traits()); Cell_handle hint; - for (typename std::vector::const_iterator p = points.begin(); + for (typename std::vector::const_iterator p = points.begin(); p != points.end(); ++p) { Vertex_handle v = insert(*p, type, hint); @@ -406,7 +405,7 @@ public: /// insert STEINER point in the triangulation. template Vertex_handle - insert_in_hole(const Point & p, CellIt cell_begin, CellIt cell_end, + insert_in_hole(const Point_with_normal & p, CellIt cell_begin, CellIt cell_end, Cell_handle begin, int i, Point_type type = STEINER) { diff --git a/Surface_reconstruction_points_3/include/CGAL/polyhedron_connected_components.h b/Surface_reconstruction_points_3/include/CGAL/polyhedron_connected_components.h index 36f4fc2c26d..4d816fc9d28 100644 --- a/Surface_reconstruction_points_3/include/CGAL/polyhedron_connected_components.h +++ b/Surface_reconstruction_points_3/include/CGAL/polyhedron_connected_components.h @@ -170,8 +170,9 @@ get_polyhedron_connected_components(Polyhedron& polyhedron) } -/// Erase small connected components of a polyhedron: -/// erase all connected components but the largest. +/// Erases small connected components of a polyhedron: +/// It calls get_polyhedron_connected_components(), then erase_connected_component() +/// on all connected components but the largest. /// /// @commentheading Template Parameters: /// @param Polyhedron an instance of CGAL::Polyhedron_3 that supports