diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h index 81d5861e3c8..21872b31f57 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_plane_traits_3.h @@ -1,39 +1,43 @@ namespace CGAL { -/*! -\ingroup PkgEnvelope3Ref - -The traits class `Env_plane_traits_3` models the `EnvelopeTraits_3` concept, -and is used for the construction of lower and upper envelopes of planes -and half planes in the space. It is parameterized by a \cgal-kernel model, -which is parameterized in turn by a number type. The number type should -support exact rational arithmetic, to avoid numerical errors and -robustness problems. In particular, the number type should support the -arithmetic operations \f$ +\f$, \f$ -\f$, \f$ \times\f$, and \f$ \div\f$ without loss of -precision. For optimal performance, we recommend instantiating the traits -class with the predefined -`Exact_predicates_exact_constructions_kernel` provided by \cgal. -Using this kernel guarantees exactness and robustness, while it incurs -only a minor overhead (in comparison to working with a fast, inexact number -type) for most inputs. - -Note that an entire plane has no boundaries, and the projection of a -half-plane is an (unbounded) line. Naturally, rays and segments may occur as -a result of overlaying projections of several half planes. Indeed, -`Env_plane_traits_3` inherits from the `Arr_linear_traits_2` traits -class, and extends it by adding operations on planes and half planes. -The nested `Xy_monotone_surface_3` and `Surface_3` types refer -to the same type. They are constructible from a `Kernel::Plane_3` -in case of an entire plane, or from `Kernel::Plane_3` and -`Kernel::Line_2` in case of a half-plane. The line orientation -determines which half is considered. - -\cgalModels{EnvelopeTraits_3} - -*/ -template< typename Kernel > -class Env_plane_traits_3 : public Arr_linear_traits_2 { +/*! \ingroup PkgEnvelope3Ref + * + * The traits class template `Env_plane_traits_3` models the `EnvelopeTraits_3` + * concept, and is used for the construction of lower and upper envelopes of + * planes and half planes in the space. When the template is instantiated, the + * template parameter `Kernel` must be substituted by a \cgal-kernel model, the + * number type of which should support exact rational arithmetic, to avoid + * numerical errors and robustness problems. In particular, the number type + * should support the arithmetic operations \f$ +\f$, \f$ -\f$, \f$ \times\f$, + * and \f$ \div\f$ without loss of precision. For optimal performance, we + * recommend instantiating the traits class with the predefined + * `Exact_predicates_exact_constructions_kernel` provided by \cgal. Using this + * kernel guarantees exactness and robustness, while it incurs only a minor + * overhead (in comparison to working with a fast, inexact number type) for most + * inputs. + * + * The second template parameter, namely `ArrLinearTraits`, should be + * substituted by a 2D arrangement geometry traits class that supports unbounded + * linear objects, i.e, lines, rays, and segments. By default it is substituted + * by `Arr_linear_traits_2`. + * + * Note that an entire plane has no boundaries, and the projection of a + * half-plane is an (unbounded) line. Naturally, rays and segments may occur as + * a result of overlaying projections of several half planes. Indeed, + * `Env_plane_traits_3` inherits from the traits class that substitutes + * `ArrLinearTraits`, and extends it by adding operations on planes and half + * planes. The nested `Xy_monotone_surface_3` and `Surface_3` types refer to + * the same type. They are constructible from a `Kernel::Plane_3` in case of an + * entire plane, or from `Kernel::Plane_3` and `Kernel::Line_2` in case of a + * half-plane. The line orientation determines which half is considered. + * + * \cgalModels{EnvelopeTraits_3} + */ +template > +class Env_plane_traits_3 : public ArrLinearTraits { public: }; /* end Env_plane_traits_3 */ + } /* end namespace CGAL */ diff --git a/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h b/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h index 74646352052..30cbba6d642 100644 --- a/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h +++ b/Envelope_3/doc/Envelope_3/CGAL/Env_triangle_traits_3.h @@ -1,42 +1,46 @@ namespace CGAL { -/*! -\ingroup PkgEnvelope3Ref - -The traits class `Env_triangle_traits_3` models the `EnvelopeTraits_3` -concept, and is used for the construction of lower and upper envelopes -of triangles in the space. It is parameterized by a \cgal-kernel, -which is parameterized in turn by a number type. The number type should -support exact rational arithmetic, to avoid numerical errors and -robustness problems. In particular, the number type should support -the arithmetic operations \f$ +\f$, \f$ -\f$, \f$ \times\f$, and \f$ \div\f$ without loss -of precision. For optimal performance, we recommend instantiating the -traits class with the predefined -`Exact_predicates_exact_constructions_kernel` provided by \cgal. -Using this kernel guarantees exactness and robustness, while it incurs -only a minor overhead (in comparison to working with a fast, inexact number -type) for most inputs. - -Note that when we project the boundary of a triangle, or the intersection -of two triangles, onto the \f$ xy\f$-plane, we obtain line segments. Indeed, -`Env_triangle_traits_3` inherits from the `Arr_segment_traits_2` traits -class, and extends it by adding operations on 3D objects, namely spacial -triangles. Note that the traits class does not define -`Kernel::Triangle_3` as its surface (and \f$ xy\f$-monotone surface) type, -as one may expect. This is because the traits class needs to store extra -data with the triangles in order to efficiently operate on them. -Nevertheless, the nested `Xy_monotone_surface_3` and `Surface_3` -types are however constructible from a `Kernel::Triangle_3` -instance and are also convertible to a `Kernel::Triangle_3` object. -Both types, `Xy_monotone_surface_3` and `Surface_3`, refer to the -same class, as every triangle is (weakly) \f$ xy\f$-monotone). - -\cgalModels{EnvelopeTraits_3} - -*/ -template< typename Kernel > -class Env_triangle_traits_3 : public Arr_segment_traits_2 { +/*! \ingroup PkgEnvelope3Ref + * + * The traits class template `Env_triangle_traits_3` models the + * `EnvelopeTraits_3` concept, and is used for the construction of lower and + * upper envelopes of triangles in the space. When the template is instantiated, + * the template parameter `Kernel` must be substituted by a \cgal-kernel model, + * the number type of which should support exact rational arithmetic, to avoid + * numerical errors and robustness problems. In particular, the number type + * should support the arithmetic operations \f$ +\f$, \f$ -\f$, \f$ \times\f$, + * and \f$ \div\f$ without loss of precision. For optimal performance, we + * recommend instantiating the traits class with the predefined + * `Exact_predicates_exact_constructions_kernel` provided by \cgal. Using this + * kernel guarantees exactness and robustness, while it incurs only a minor + * overhead (in comparison to working with a fast, inexact number type) for most + * inputs. + * + * The second template parameter, namely `ArrSegmentTraits`, should be + * substituted by a 2D arrangement geometry traits class that supports + * segments. By default it is substituted by `Arr_segment_traits_2`. + * + * Note that when we project the boundary of a triangle, or the intersection of + * two triangles, onto the \f$ xy\f$-plane, we obtain line segments. Indeed, + * `Env_triangle_traits_3` inherits from the traits class that substitutes + * `ArrSegmentTraits`, and extends it by adding operations on 3D objects, namely + * spacial triangles. Note that the traits class does not define + * `Kernel::Triangle_3` as its surface (and \f$ xy\f$-monotone surface) type, as + * one may expect. This is because the traits class needs to store extra data + * with the triangles in order to efficiently operate on them. Nevertheless, + * the nested `Xy_monotone_surface_3` and `Surface_3` types are however + * constructible from a `Kernel::Triangle_3` instance and are also convertible + * to a `Kernel::Triangle_3` object. Both types, `Xy_monotone_surface_3` and + * `Surface_3`, refer to the same class, as every triangle is (weakly) + * \f$ xy\f$-monotone). + * + * \cgalModels{EnvelopeTraits_3} + */ +template > +class Env_triangle_traits_3 : public ArrSegmentTraits { public: }; /* end Env_triangle_traits_3 */ + } /* end namespace CGAL */ diff --git a/Envelope_3/doc/Envelope_3/Concepts/EnvelopeTraits_3.h b/Envelope_3/doc/Envelope_3/Concepts/EnvelopeTraits_3.h index 3665e2ae25a..fc72154073a 100644 --- a/Envelope_3/doc/Envelope_3/Concepts/EnvelopeTraits_3.h +++ b/Envelope_3/doc/Envelope_3/Concepts/EnvelopeTraits_3.h @@ -1,231 +1,213 @@ -/*! -\ingroup PkgEnvelope3Concepts -\cgalConcept - -This concept defines the minimal set of geometric predicates and -operations needed to compute the envelope of a set of arbitrary -surfaces in \f$ \mathbb{R}^3\f$. It refines the -`ArrangementXMonotoneTraits_2` concept. In addition to the -`Point_2` and `X_monotone_curve_2` types and the -`Has_boundary_category` category tag listed in the base concept, -it also lists the `Surface_3` and `Xy_monotone_surface_3` -types, which represent arbitrary surfaces and \f$ xy\f$-monotone surfaces, -respectively, and some constructions and predicates on these types. -Note however, that these operations usually involve the projection of -3D objects onto the \f$ xy\f$-plane. - -\cgalRefines{ArrangementXMonotoneTraits_2} - -\cgalHasModelsBegin -\cgalHasModels{CGAL::Env_triangle_traits_3} -\cgalHasModels{CGAL::Env_sphere_traits_3} -\cgalHasModels{CGAL::Env_plane_traits_3} -\cgalHasModels{CGAL::Env_surface_data_traits_3} -\cgalHasModelsEnd - -*/ +/*! \ingroup PkgEnvelope3Concepts + * \cgalConcept + * + * This concept defines the minimal set of geometric predicates and operations + * needed to compute the envelope of a set of arbitrary surfaces in \f$ + * \mathbb{R}^3\f$. It refines the `ArrangementXMonotoneTraits_2` concept. In + * addition to the `Point_2` and `X_monotone_curve_2` types and the + * `Has_boundary_category` category tag listed in the base concept, it also + * lists the `Surface_3` and `Xy_monotone_surface_3` types, which represent + * arbitrary surfaces and \f$ xy\f$-monotone surfaces, respectively, and some + * constructions and predicates on these types. Note however, that these + * operations usually involve the projection of 3D objects onto the \f$ + * xy\f$-plane. + * + * \cgalRefines{ArrangementXMonotoneTraits_2} + * + * \cgalHasModelsBegin + * \cgalHasModels{CGAL::Env_triangle_traits_3} + * \cgalHasModels{CGAL::Env_sphere_traits_3} + * \cgalHasModels{CGAL::Env_plane_traits_3} + * \cgalHasModels{CGAL::Env_surface_data_traits_3} + * \cgalHasModelsEnd + */ class EnvelopeTraits_3 { public: -/// \name Types -/// @{ + /// \name Types + /// @{ -/*! -represents an arbitrary surface in \f$ \mathbb{R}^3\f$. -*/ -typedef unspecified_type Surface_3; + /*! represents an arbitrary surface in \f$ \mathbb{R}^3\f$. + */ + typedef unspecified_type Surface_3; -/*! -represents a weakly \f$ xy\f$-monotone surface in \f$ \mathbb{R}^3\f$. -*/ -typedef unspecified_type Xy_monotone_surface_3; + /*! represents a weakly \f$ xy\f$-monotone surface in \f$ \mathbb{R}^3\f$. + */ + typedef unspecified_type Xy_monotone_surface_3; -/// @} + /// @} -/// \name Functor Types -/// @{ + /// \name Functor Types + /// @{ -/*! -provides the operator (templated by the `OutputIterator` type) : -
    -
  • `OutputIterator operator() (Surface_3 S, bool is_lower, OutputIterator oi)` -
    -which subdivides the given surface `S` into \f$ xy\f$-monotone parts -and inserts them into the output iterator. The value of -`is_lower` indicates whether we compute the lower or the upper -envelope, so that \f$ xy\f$-monotone surfaces that are irrelevant to the -lower-envelope (resp. upper-envelope) computation may be discarded. -The value-type of `OutputIterator` is `Xy_monotone_surface_3`. -The operator returns a past-the-end iterator for the output sequence. -
-*/ -typedef unspecified_type Make_xy_monotone_3; + /*! provides the operator (templated by the `OutputIterator` type) : + *
    + *
  • `OutputIterator operator() (Surface_3 S, bool is_lower, OutputIterator oi)` + *
    + * which subdivides the given surface `S` into \f$ xy\f$-monotone parts + * and inserts them into the output iterator. The value of + * `is_lower` indicates whether we compute the lower or the upper + * envelope, so that \f$ xy\f$-monotone surfaces that are irrelevant to the + * lower-envelope (resp. upper-envelope) computation may be discarded. + * The value-type of `OutputIterator` is `Xy_monotone_surface_3`. + * The operator returns a past-the-end iterator for the output sequence. + *
+ */ + typedef unspecified_type Make_xy_monotone_3; -/*! -provides the operator (templated by the `OutputIterator` type) : -
    -
  • `OutputIterator operator() (Xy_monotone_surface_3 s, OutputIterator oi)` -
    -which computes all planar \f$ x\f$-monotone curves and possibly isolated planar -points that form the projection of the boundary of the given \f$ xy\f$-monotone -surface \f$ s\f$ onto the \f$ xy\f$-plane, and inserts them into the output iterator. -The value-type of `OutputIterator` is `Object`, where `Object` -wraps either a `Point_2`, or a -`pair`. In the former case, the -object represents an isolated point of the projected boundary. In the latter, -more general, case the object represents an \f$ x\f$-monotone boundary curve -along with an enumeration value which is either `ON_NEGATIVE_SIDE` -or `ON_POSITIVE_SIDE`, indicating whether whether the projection of the -surface onto the \f$ xy\f$-plane lies below or above this \f$ x\f$-monotone curve, -respectively. In degenerate case, namely when the surface itself is vertical, -and its projection onto the plane is \f$ 1\f$-dimensional, the `Oriented_side` -value is `ON_ORIENTED_BOUNDARY`. The operator returns a past-the-end -iterator for the output sequence. -
-*/ -typedef unspecified_type Construct_projected_boundary_2; + /*! provides the operator (templated by the `OutputIterator` type) : + *
    + *
  • `OutputIterator operator() (Xy_monotone_surface_3 s, OutputIterator oi)` + *
    + * which computes all planar \f$ x\f$-monotone curves and possibly isolated + * planar points that form the projection of the boundary of the given + * \f$ xy\f$-monotone surface \f$ s\f$ onto the \f$ xy\f$-plane, and inserts + * them into the output iterator. + * The value-type of `OutputIterator` is `Object`, where `Object` wraps either + * a `Point_2`, or a `pair`. In the former + * case, the object represents an isolated point of the projected boundary. In + * the latter, more general, case the object represents an \f$ x\f$-monotone + * boundary curve along with an enumeration value which is either + * `ON_NEGATIVE_SIDE` or `ON_POSITIVE_SIDE`, indicating whether whether the + * projection of the surface onto the \f$ xy\f$-plane lies below or above this + * \f$ x\f$-monotone curve, respectively. In degenerate case, namely when the + * surface itself is vertical, and its projection onto the plane is + * \f$ 1\f$-dimensional, the `Oriented_side` value is `ON_ORIENTED_BOUNDARY`. + * The operator returns a past-the-end iterator for the output sequence. + *
+ */ + typedef unspecified_type Construct_projected_boundary_2; -/*! -provides the operator (templated by the `OutputIterator` type) : -
    -
  • `OutputIterator operator() (Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2, OutputIterator oi)` -
    -which computes the projection of the intersections of the -\f$ xy\f$-monotone surfaces `s1` and `s2` onto the \f$ xy\f$-plane, -and inserts them into the output iterator. -The value-type of `OutputIterator` is `Object`, where -each `Object` either wraps a `pair` -instance, which represents a projected intersection curve with its -multiplicity (in case the multiplicity is undefined or not known, it -should be set to \f$ 0\f$) or an `Point_2` instance, representing the -projected image of a degenerate intersection (the projection of an -isolated intersection point, or of a vertical intersection curve). -The operator returns a past-the-end iterator for the output sequence. -
-*/ -typedef unspecified_type Construct_projected_intersections_2; + /*! provides the operator (templated by the `OutputIterator` type) : + *
    + *
  • `OutputIterator operator() (Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2, OutputIterator oi)` + *
    + * which computes the projection of the intersections of the + * \f$ xy\f$-monotone surfaces `s1` and `s2` onto the \f$ xy\f$-plane, + * and inserts them into the output iterator. + * The value-type of `OutputIterator` is `Object`, where + * each `Object` either wraps a `pair` + * instance, which represents a projected intersection curve with its + * multiplicity (in case the multiplicity is undefined or not known, it + * should be set to \f$ 0\f$) or an `Point_2` instance, representing the + * projected image of a degenerate intersection (the projection of an + * isolated intersection point, or of a vertical intersection curve). + * The operator returns a past-the-end iterator for the output sequence. + *
+ */ + typedef unspecified_type Construct_projected_intersections_2; -/*! -provides the operators : -
    -
  • `Comparison_result operator() (Point_2 p, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` -
    -which determines the relative \f$ z\f$-order of the two given \f$ xy\f$-monotone -surfaces at the \f$ xy\f$-coordinates of the point `p`, with the -precondition that both surfaces are defined over `p`. Namely, it -returns the comparison result of \f$ s_1(p)\f$ and \f$ s_2(p)\f$. -
  • `Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` -
    -which determines the relative \f$ z\f$-order of the two given \f$ xy\f$-monotone -surfaces over the interior of a given \f$ x\f$-monotone curve \f$ c\f$, with the -precondition that \f$ c\f$ is fully contained in the \f$ xy\f$-definition range -of both \f$ s_1\f$ and \f$ s_2\f$, and that the surfaces do not intersect over -\f$ c\f$. The functor should therefore return the comparison result of -\f$ s_1(p')\f$ and \f$ s_2(p')\f$ for some point \f$ p'\f$ in the interior of \f$ c\f$. -
  • `Comparison_result operator() (Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` -
    -which determines the relative \f$ z\f$-order of the two given unbounded -\f$ xy\f$-monotone surfaces, which are defined over the entire \f$ xy\f$-plane and -have no boundary, with the precondition that the surfaces do not intersect -at all. -The functor should therefore return the comparison result of -\f$ s_1(p)\f$ and \f$ s_2(p)\f$ for some planar point \f$ p \in\mathbb{R}^2\f$. -This operator is required iff the category tag `Has_boundary_category` -is defined as `Tag_true`. -
-*/ -typedef unspecified_type Compare_z_at_xy_3; + /*! provides the operators : + *
    + *
  • `Comparison_result operator() (Point_2 p, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` + *
    + * which determines the relative \f$ z\f$-order of the two given + * \f$ xy\f$-monotone surfaces at the \f$ xy\f$-coordinates of the point `p`, + * with the precondition that both surfaces are defined over `p`. Namely, it + * returns the comparison result of \f$ s_1(p)\f$ and \f$ s_2(p)\f$. + *
  • `Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` + *
    + * which determines the relative \f$ z\f$-order of the two given + * \f$ xy\f$-monotone surfaces over the interior of a given \f$ x\f$-monotone + * curve \f$ c\f$, with the precondition that \f$ c\f$ is fully contained in + * the \f$ xy\f$-definition range of both \f$ s_1\f$ and \f$ s_2\f$, and that + * the surfaces do not intersect over \f$ c\f$. The functor should therefore + * return the comparison result of \f$ s_1(p')\f$ and \f$ s_2(p')\f$ for some + * point \f$ p'\f$ in the interior of \f$ c\f$. + *
  • `Comparison_result operator() (Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` + *
    + * which determines the relative \f$ z\f$-order of the two given unbounded + * \f$ xy\f$-monotone surfaces, which are defined over the entire + * \f$ xy\f$-plane and have no boundary, with the precondition that the + * surfaces do not intersect at all. The functor should therefore return the + * comparison result of \f$ s_1(p)\f$ and \f$ s_2(p)\f$ for some planar point + * \f$ p \in\mathbb{R}^2\f$. This operator is required iff the category tag + * `Has_boundary_category` is defined as `Tag_true`. + *
+ */ + typedef unspecified_type Compare_z_at_xy_3; -/*! -provides the operator : -
    -
  • `Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` -
    -which determines the relative \f$ z\f$-order of the two given \f$ xy\f$-monotone -surfaces immediately above their projected intersection curve -\f$ c\f$ (a planar point \f$ p\f$ is above an \f$ x\f$-monotone curve \f$ c\f$ if it -is in the \f$ x\f$-range of \f$ c\f$, and lies to its left when the curve is -traversed from its \f$ xy\f$-lexicographically smaller endpoint to its -larger endpoint). We have the precondition that both surfaces are -defined "above" \f$ c\f$, and their relative \f$ z\f$-order is the same for -some small enough neighborhood of points above \f$ c\f$. -
-*/ -typedef unspecified_type Compare_z_at_xy_above_3; + /*! provides the operator : + *
    + *
  • `Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` + *
    + * which determines the relative \f$ z\f$-order of the two given + * \f$ xy\f$-monotone surfaces immediately above their projected intersection + * curve \f$ c\f$ (a planar point \f$ p\f$ is above an + * \f$ x\f$-monotone curve \f$ c\f$ if it is in the \f$ x\f$-range of + * \f$ c\f$, and lies to its left when the curve is traversed from its + * \f$ xy\f$-lexicographically smaller endpoint to its larger endpoint). We + * have the precondition that both surfaces are defined "above" \f$ c\f$, and + * their relative \f$ z\f$-order is the same for some small enough + * neighborhood of points above \f$ c\f$. + *
+ */ + typedef unspecified_type Compare_z_at_xy_above_3; -/*! -provides the operator : -
    -
  • `Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` -
    -which determines the relative \f$ z\f$-order of the two given \f$ xy\f$-monotone -surfaces immediately below their projected intersection curve -\f$ c\f$ (a planar point \f$ p\f$ is below an \f$ x\f$-monotone curve \f$ c\f$ if it -is in the \f$ x\f$-range of \f$ c\f$, and lies to its right when the curve is -traversed from its \f$ xy\f$-lexicographically smaller endpoint to its -larger endpoint). We have the precondition that both surfaces are -defined "below" \f$ c\f$, and their relative \f$ z\f$-order is the same for -some small enough neighborhood of points below \f$ c\f$. -
-*/ -typedef unspecified_type Compare_z_at_xy_below_3; + /*! provides the operator : + *
    + *
  • `Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)` + *
    + * which determines the relative \f$ z\f$-order of the two given + * \f$ xy\f$-monotone surfaces immediately below their projected intersection + * curve \f$ c\f$ (a planar point \f$ p\f$ is below an + * \f$ x\f$-monotone curve \f$ c\f$ if it is in the \f$ x\f$-range of + * \f$ c\f$, and lies to its right when the curve is traversed from its + * \f$ xy\f$-lexicographically smaller endpoint to its larger endpoint). We + * have the precondition that both surfaces are defined "below" \f$ c\f$, and + * their relative \f$ z\f$-order is the same for some small enough + * neighborhood of points below \f$ c\f$. + *
+ */ + typedef unspecified_type Compare_z_at_xy_below_3; -/// @} + /// @} -/// \name Creation -/// @{ + /// \name Creation + /// @{ -/*! -default constructor. -*/ -EnvelopeTraits_3(); + /*! default constructor. + */ + EnvelopeTraits_3(); -/*! -copy constructor. -*/ -EnvelopeTraits_3(EnvelopeTraits_3 other); + /*! copy constructor. + */ + EnvelopeTraits_3(EnvelopeTraits_3 other); -/*! -assignment operator. -*/ -EnvelopeTraits_3 operator=(other); + /*! assignment operator. + */ + EnvelopeTraits_3 operator=(other); -/// @} + /// @} -/// \name Accessing Functor Objects -/// @{ + /// \name Accessing Functor Objects + /// @{ -/*! + /*! + */ + Make_xy_monotone_3 make_xy_monotone_3_object(); -*/ -Make_xy_monotone_3 make_xy_monotone_3_object(); + /*! + */ + Construct_projected_boundary_2 construct_projected_boundary_2_object(); -/*! + /*! + */ + Construct_projected_intersections_2 construct_projected_intersections_2_object(); -*/ -Construct_projected_boundary_2 construct_projected_boundary_2_object(); + /*! + */ + Compare_z_at_xy_3 compare_z_at_xy_3_object(); -/*! + /*! + */ + Compare_z_at_xy_above_3 compare_z_at_xy_above_3_object(); -*/ -Construct_projected_intersections_2 construct_projected_intersections_2_object(); + /*! + */ + Compare_z_at_xy_below_3 compare_z_at_xy_below_3_object(); -/*! - -*/ -Compare_z_at_xy_3 compare_z_at_xy_3_object(); - -/*! - -*/ -Compare_z_at_xy_above_3 compare_z_at_xy_above_3_object(); - -/*! - -*/ -Compare_z_at_xy_below_3 compare_z_at_xy_below_3_object(); - -/// @} + /// @} }; /* end EnvelopeTraits_3 */ diff --git a/Envelope_3/doc/Envelope_3/PackageDescription.txt b/Envelope_3/doc/Envelope_3/PackageDescription.txt index df0fb936667..7579fff2c1e 100644 --- a/Envelope_3/doc/Envelope_3/PackageDescription.txt +++ b/Envelope_3/doc/Envelope_3/PackageDescription.txt @@ -39,10 +39,9 @@ diagram cell is unique. \cgalCRPSection{Classes} - `CGAL::Envelope_diagram_2` -- `CGAL::Env_triangle_traits_3` +- `CGAL::Env_triangle_traits_3` - `CGAL::Env_sphere_traits_3` -- `CGAL::Env_plane_traits_3` +- `CGAL::Env_plane_traits_3` - `CGAL::Env_surface_data_traits_3` */ - diff --git a/Envelope_3/include/CGAL/Env_plane_traits_3.h b/Envelope_3/include/CGAL/Env_plane_traits_3.h index 839f6e9553b..3f9fb48b4cb 100644 --- a/Envelope_3/include/CGAL/Env_plane_traits_3.h +++ b/Envelope_3/include/CGAL/Env_plane_traits_3.h @@ -28,8 +28,9 @@ namespace CGAL { -template -class Env_plane_traits_3 : public Arr_linear_traits_2 { +template > +class Env_plane_traits_3 : public ArrLinearTraits { public: using Kernel = Kernel_; using FT = typename Kernel::FT; diff --git a/Envelope_3/include/CGAL/Env_triangle_traits_3.h b/Envelope_3/include/CGAL/Env_triangle_traits_3.h index 10218a7ceb1..0bb6e384c45 100644 --- a/Envelope_3/include/CGAL/Env_triangle_traits_3.h +++ b/Envelope_3/include/CGAL/Env_triangle_traits_3.h @@ -34,8 +34,9 @@ namespace CGAL { template class Env_triangle_3; // this traits class supports both triagles and segments in 3d -template -class Env_triangle_traits_3 : public Arr_segment_traits_2 { +template > +class Env_triangle_traits_3 : public ArrSegmentTraits { public: using Traits_2 = Arr_segment_traits_2; using Point_2 = typename Traits_2::Point_2;