Improve documentation of Nef

This commit is contained in:
Andreas Fabri 2025-11-21 14:30:36 +00:00
parent 346f530d07
commit 2f1435c838
6 changed files with 28 additions and 25 deletions

View File

@ -20,7 +20,7 @@ polyhedra in a sorted way and add them one by one to `Nef_nary_union_3`.
*/ */
template< typename Nef_polyhedron_3 > template< typename NefPolyhedron_3 >
class Nef_nary_union_3 { class Nef_nary_union_3 {
public: public:

View File

@ -34,7 +34,7 @@ namespace CGAL {
`Quotient<Gmpz>` or any other number type modeling \f$\mathbb{Q}\f$. `Quotient<Gmpz>` or any other number type modeling \f$\mathbb{Q}\f$.
The second parameter and the third parameter are for future considerations. The second parameter and the third parameter are for future considerations.
Neither `Nef_polyhedronItems_3` nor `Nef_polyhedronMarks` is Neither `NefPolyhedronItems_3` nor `Nef_polyhedronMarks` is
specified, yet. Do not use any other than the default types for these two specified, yet. Do not use any other than the default types for these two
template parameters. template parameters.
@ -49,8 +49,8 @@ namespace CGAL {
\sa `CGAL::Polyhedron_3<Traits>` \sa `CGAL::Polyhedron_3<Traits>`
*/ */
template< class Nef_polyhedronTraits_3, template< class NefPolyhedronTraits_3,
class Nef_polyhedronItems_3 = CGAL::Default_items<Nef_polyhedronTraits_3> class NefPolyhedronItems_3 = CGAL::Default_items<NefPolyhedronTraits_3>
class Nef_polyhedronMarks = bool class Nef_polyhedronMarks = bool
> class Nef_polyhedron_3 { > class Nef_polyhedron_3 {
public: public:
@ -79,7 +79,7 @@ public:
function `twin()` returns the opposite halfedge. function `twin()` returns the opposite halfedge.
Looking at the incidence structure on a sphere map, the member function Looking at the incidence structure on a sphere map, the member function
`out_sedge` returns the first outgoing shalfedge, and `incident_sface` `out_sedge()` returns the first outgoing shalfedge, and `incident_sface()`
returns the incident sface. returns the incident sface.
\cgalHeading{Creation} \cgalHeading{Creation}
@ -946,7 +946,7 @@ public:
}; /* end Volume */ }; /* end Volume */
/*! /*!
traits class selected for `Nef_polyhedronTraits_3`. traits class selected for `NefPolyhedronTraits_3`.
*/ */
typedef unspecified_type Traits; typedef unspecified_type Traits;

View File

@ -4,7 +4,7 @@ namespace CGAL {
\ingroup PkgNef3IOFunctions \ingroup PkgNef3IOFunctions
This function creates a 3D Nef polyhedron from an OFF file which This function creates a 3D Nef polyhedron from an OFF file which
is read from input stream `in`. The purpose of `OFF_to_nef_3` is read from input stream `in`. The purpose of `OFF_to_nef_3()`
is to create a Nef polyhedron from an OFF file that cannot be handled is to create a Nef polyhedron from an OFF file that cannot be handled
by the `Nef_polyhedron_3` constructors. It handles double by the `Nef_polyhedron_3` constructors. It handles double
coordinates while using a homogeneous kernel, non-coplanar facets, coordinates while using a homogeneous kernel, non-coplanar facets,
@ -12,10 +12,12 @@ surfaces with boundaries, self-intersecting surfaces, and single
facets. Every closed volume gets marked. The function returns the facets. Every closed volume gets marked. The function returns the
number of facets it could not handle. number of facets it could not handle.
@tparam NefPolyhedron_3 an object of type `Nef_polyhedron_3`.
\sa `CGAL::Nef_polyhedron_3<Traits>` \sa `CGAL::Nef_polyhedron_3<Traits>`
*/ */
template<class Nef_polyhedron_3> template<class NefPolyhedron_3>
std::size_t OFF_to_nef_3(std::istream& in, Nef_polyhedron_3& N); std::size_t OFF_to_nef_3(std::istream& in, NefPolyhedron_3& N);
} /* namespace CGAL */ } /* namespace CGAL */

View File

@ -1,12 +1,12 @@
namespace CGAL { namespace CGAL {
/// \ingroup PkgNef3IOFunctions /// \ingroup PkgNef3IOFunctions
/// Converts an object of type `Nef_polyhedron_3` into a polygon mesh model of `MutableFaceGraph`. /// Converts an object of type `NefPolyhedron_3` into a polygon mesh model of `MutableFaceGraph`.
/// Note that contrary to `Nef_polyhedron_3::convert_to_polyhedron()`, the output is not triangulated /// Note that contrary to `Nef_polyhedron_3::convert_to_polyhedron()`, the output is not triangulated
/// (but faces with more than one connected component of the boundary). /// (but faces with more than one connected component of the boundary).
/// The polygon mesh can be triangulated by setting `triangulate_all_faces` to `true` or by calling the function `triangulate_faces()`. /// The polygon mesh can be triangulated by setting `triangulate_all_faces` to `true` or by calling the function `Polygon_mesh_processing::triangulate_faces()`.
/// @tparam Nef_polyhedron an object of type `Nef_polyhedron_3`. /// @tparam NefPolyhedron_3 an object of type `Nef_polyhedron_3`.
/// @tparam Polygon_mesh a model of `MutableFaceGraph` with an internal property map for `CGAL::vertex_point_t`. /// @tparam PolygonMesh a model of `MutableFaceGraph` with an internal property map for `CGAL::vertex_point_t`.
/// ///
/// The points from `nef` to `pm` are converted using /// The points from `nef` to `pm` are converted using
/// `CGAL::Cartesian_converter<NefKernel, TargetKernel>`. /// `CGAL::Cartesian_converter<NefKernel, TargetKernel>`.
@ -17,16 +17,16 @@ namespace CGAL {
/// @param pm the output. /// @param pm the output.
/// @param triangulate_all_faces indicates whether all the faces must be triangulated. /// @param triangulate_all_faces indicates whether all the faces must be triangulated.
/// ///
/// \pre `Polygon_mesh` must have an internal point property map with value type being `Nef_polyhedron_3::Point_3`. /// \pre `PolygonMesh` must have an internal point property map with value type being `NefPolyhedron_3::Point_3`.
/// \pre `nef.simple()` /// \pre `nef.simple()`
template <class Nef_polyhedron, class Polygon_mesh> template <class NefPolyhedron_3, class PolygonMesh>
void convert_nef_polyhedron_to_polygon_mesh(const Nef_polyhedron& nef, Polygon_mesh& pm, bool triangulate_all_faces = false); void convert_nef_polyhedron_to_polygon_mesh(const NefPolyhedron_3& nef, PolygonMesh& pm, bool triangulate_all_faces = false);
/// \ingroup PkgNef3IOFunctions /// \ingroup PkgNef3IOFunctions
/// Converts an object of type `Nef_polyhedron_3` into a polygon soup. /// Converts an object of type `NefPolyhedron_3` into a polygon soup.
/// The polygons can be triangulated by setting `triangulate_all_faces` to `true`. /// The polygons can be triangulated by setting `triangulate_all_faces` to `true`.
/// @tparam Nef_polyhedron an object of type `Nef_polyhedron_3`. /// @tparam NefPolyhedron_3 an object of type `Nef_polyhedron_3`.
/// @tparam PointRange a model of the concept `BackInsertionSequence` /// @tparam PointRange a model of the concept `BackInsertionSequence`
/// whose `value_type` is the point type /// whose `value_type` is the point type
/// @tparam PolygonRange a model of the concept /// @tparam PolygonRange a model of the concept
@ -43,8 +43,8 @@ namespace CGAL {
/// @param points the output points of the soup /// @param points the output points of the soup
/// @param polygons the output polygons of the soup. /// @param polygons the output polygons of the soup.
/// @param triangulate_all_faces indicates whether all polygons must be triangulated. /// @param triangulate_all_faces indicates whether all polygons must be triangulated.
template <class Nef_polyhedron, typename PolygonRange, typename PointRange> template <class NefPolyhedron_3, typename PolygonRange, typename PointRange>
void convert_nef_polyhedron_to_polygon_soup(const Nef_polyhedron& nef, void convert_nef_polyhedron_to_polygon_soup(const NefPolyhedron_3& nef,
PointRange& points, PointRange& points,
PolygonRange& polygons, PolygonRange& polygons,
bool triangulate_all_faces = false); bool triangulate_all_faces = false);

View File

@ -12,3 +12,4 @@ BGL
Surface_mesh Surface_mesh
Polygon_mesh_processing Polygon_mesh_processing
GraphicsView GraphicsView
Basic_viewer

View File

@ -16,8 +16,8 @@ under the topological operations `boundary`, `closure`, and
\cgalHeading{Parameters} \cgalHeading{Parameters}
\code \code
template< class Nef_polyhedronTraits_S2, template< class NefPolyhedronTraits_S2,
class Nef_polyhedronItems_S2 = CGAL::SM_items, class NefPolyhedronItems_S2 = CGAL::SM_items,
class Nef_polyhedronMarks = bool > class Nef_polyhedronMarks = bool >
class Nef_polyhedron_S2; class Nef_polyhedron_S2;
\endcode \endcode
@ -30,7 +30,7 @@ modeling \f$\mathbb{Z}\f$, or `Cartesian`, `Simple_cartesian` parametrized with
type modeling \f$\mathbb{Q}\f$. type modeling \f$\mathbb{Q}\f$.
The second parameter and the third parameter are for future considerations. The second parameter and the third parameter are for future considerations.
Neither `Nef_polyhedronItems_S2` nor `Nef_polyhedronMarks` is Neither `NefPolyhedronItems_S2` nor `Nef_polyhedronMarks` is
specified, yet. Do not use other than the default types for these two specified, yet. Do not use other than the default types for these two
template parameters. template parameters.
@ -55,8 +55,8 @@ output operator is defined in the file
Nef polyhedra are implemented on top of a halfedge data structure and Nef polyhedra are implemented on top of a halfedge data structure and
use linear space in the number of vertices, edges and facets. use linear space in the number of vertices, edges and facets.
Operations like `empty` take constant time. The operations Operations like `empty` take constant time. The operations
`clear`, `complement`, `interior`, `closure`, `clear()`, `complement()`, `interior()`, `closure()`,
`boundary`, `regularization`, input and output take linear `boundary()`, `regularization()`, input and output take linear
time. All binary set operations and comparison operations take time time. All binary set operations and comparison operations take time
\cgalBigO{n \log n} where \f$ n\f$ is the size of the output plus the size of the \cgalBigO{n \log n} where \f$ n\f$ is the size of the output plus the size of the
input. input.