mirror of https://github.com/CGAL/cgal
9611 lines
217 KiB
C++
9611 lines
217 KiB
C++
/// \cgalConceptNamespace
|
|
namespace Kernel {
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `angle_grp`
|
|
|
|
*/
|
|
class Angle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the two vectors `u` and `v`.
|
|
*/
|
|
Angle operator()(const Kernel::Vector_2&u,
|
|
const Kernel::Vector_2&v);
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the three points `p`, `q`, `r` (`q` being the vertex of
|
|
the angle). The returned value is the same as `operator()(p - q, r - q)`.
|
|
*/
|
|
Angle operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the two vectors `pq`, `rs`. The returned value is
|
|
the same as `operator()(q - p, s - r)`.
|
|
*/
|
|
Angle operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r,
|
|
const Kernel::Point_2&s);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Angle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `angle_grp`
|
|
|
|
*/
|
|
class Angle_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the two vectors `u` and `v`.
|
|
*/
|
|
Angle operator()(const Kernel::Vector_3&u,
|
|
const Kernel::Vector_3&v);
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the three points `p`, `q`, `r` (`q` being the vertex of
|
|
the angle). The returned value is the same as `operator()(p - q, r - q)`.
|
|
*/
|
|
Angle operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the two vectors `pq`, `rs`. The returned value is
|
|
the same as `operator()(q - p, s - r)`.
|
|
*/
|
|
Angle operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/*!
|
|
returns \ref CGAL::OBTUSE, \ref CGAL::RIGHT or \ref CGAL::ACUTE depending
|
|
on the angle formed by the twonormal vector of the plane `pqr` and `v`.
|
|
*/
|
|
Angle operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Vector_3&s);
|
|
/// @}
|
|
|
|
}; /* end Kernel::Angle_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `are_ordered_along_line_grp`
|
|
|
|
*/
|
|
class AreOrderedAlongLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff the three points are collinear and
|
|
`q` lies between `p` and `r`.
|
|
Note that `true` is returned, if `q==p` or
|
|
`q==r`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::AreOrderedAlongLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `are_ordered_along_line_grp`
|
|
|
|
*/
|
|
class AreOrderedAlongLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff the three points are collinear and
|
|
`q` lies between `p` and `r`.
|
|
Note that `true` is returned, if `q==p` or
|
|
`q==r`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::AreOrderedAlongLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `parallel_grp`
|
|
|
|
*/
|
|
class AreParallel_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, if `l1` and `l2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Line_2&l1,
|
|
const Kernel::Line_2&l2);
|
|
|
|
/*!
|
|
returns `true`, if `r1` and `r2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Ray_2&r1,
|
|
const Kernel::Ray_2&r2);
|
|
|
|
/*!
|
|
returns `true`, if `s1` and `s2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Segment_2&s1,
|
|
const Kernel::Segment_2&s2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::AreParallel_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `parallel_grp`
|
|
|
|
*/
|
|
class AreParallel_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, if `l1` and `l2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Line_3&l1,
|
|
const Kernel::Line_3&l2);
|
|
|
|
/*!
|
|
returns `true`, if `h1` and `h2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&h1,
|
|
const Kernel::Plane_3&h2);
|
|
|
|
/*!
|
|
returns `true`, if `r1` and `r2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Ray_3&r1,
|
|
const Kernel::Ray_3&r2);
|
|
|
|
/*!
|
|
returns `true`, if `s1` and `s2` are parallel or if one
|
|
of those (or both) is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Segment_3&s1,
|
|
const Kernel::Segment_3&s2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::AreParallel_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `are_strictly_ordered_along_line_grp`
|
|
|
|
*/
|
|
class AreStrictlyOrderedAlongLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns `true`, iff the three points are collinear and
|
|
`q` lies strictly between `p` and `r`.
|
|
Note that `false` is returned, if `q==p` or
|
|
`q==r`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::AreStrictlyOrderedAlongLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `are_strictly_ordered_along_line_grp`
|
|
|
|
*/
|
|
class AreStrictlyOrderedAlongLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff the three points are collinear and
|
|
`q` lies strictly between `p` and `r`.
|
|
Note that `false` is returned, if `q==p` or
|
|
`q==r`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::AreStrictlyOrderedAlongLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\deprecated This class is deprecated since \cgal 4.3 and type safe ways should be preferred.
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Object`
|
|
\sa `Kernel::Object_2`
|
|
\sa `Kernel::Intersect_2`
|
|
|
|
*/
|
|
class Assign_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
assigns `o` to `t` if `o`
|
|
was constructed from an object of type `T`.
|
|
Returns `true`, if the assignment was possible.
|
|
*/
|
|
template <class T>
|
|
bool operator()(T& t, const Kernel::Object_2&o);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Assign_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\deprecated This class is deprecated since \cgal 4.3 and type safe ways should be preferred.
|
|
\sa `CGAL::Object`
|
|
\sa `Kernel::Object_3`
|
|
\sa `Kernel::Intersect_3`
|
|
|
|
*/
|
|
class Assign_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
assigns `o` to `t` if `o`
|
|
was constructed from an object of type `T`.
|
|
Returns `true`, if the assignment was possible.
|
|
*/
|
|
template <class T>
|
|
bool operator()(T& t, const Kernel::Object_3&o);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Assign_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
|
|
*/
|
|
class BoundedSide_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns either \ref CGAL::ON_UNBOUNDED_SIDE,
|
|
\ref CGAL::ON_BOUNDED_SIDE, or the constant
|
|
\ref CGAL::ON_BOUNDARY, depending on where point `p` is relative to
|
|
circle `c`.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns either \ref CGAL::ON_UNBOUNDED_SIDE,
|
|
\ref CGAL::ON_BOUNDED_SIDE, or the constant
|
|
\ref CGAL::ON_BOUNDARY, depending on where point `p` is relative to
|
|
triangle `t`.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Triangle_2& t,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns either \ref CGAL::ON_UNBOUNDED_SIDE,
|
|
\ref CGAL::ON_BOUNDED_SIDE, or the constant
|
|
\ref CGAL::ON_BOUNDARY, depending on where point `p` is relative to
|
|
rectangle `r`.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Iso_rectangle_2& r,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::BoundedSide_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
|
|
*/
|
|
class BoundedSide_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns either \ref CGAL::ON_UNBOUNDED_SIDE,
|
|
\ref CGAL::ON_BOUNDED_SIDE, or the constant
|
|
\ref CGAL::ON_BOUNDARY, depending on where point `p` is with
|
|
respect to sphere `s`.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Sphere_3& s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns either \ref CGAL::ON_UNBOUNDED_SIDE,
|
|
\ref CGAL::ON_BOUNDED_SIDE, or the constant
|
|
\ref CGAL::ON_BOUNDARY, depending on where point `p` is with
|
|
respect to tetrahedron `t`.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Tetrahedron_3& t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns either \ref CGAL::ON_UNBOUNDED_SIDE,
|
|
\ref CGAL::ON_BOUNDED_SIDE, or the constant
|
|
\ref CGAL::ON_BOUNDARY, depending on where point `p` is with
|
|
respect to iso-cuboid `c`.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Iso_cuboid_3& c,
|
|
const Kernel::Point_3&p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::BoundedSide_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
A type representing an iterator to the Cartesian coordinates of a point
|
|
in two dimensions.
|
|
|
|
\cgalRefines CopyConstructible
|
|
\cgalRefines Assignable
|
|
\cgalRefines DefaultConstructible
|
|
|
|
\sa `Kernel::ConstructCartesianConstIterator_2`
|
|
|
|
*/
|
|
class CartesianConstIterator_2 {
|
|
public:
|
|
|
|
}; /* end Kernel::CartesianConstIterator_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
A type representing an iterator to the Cartesian coordinates of a point
|
|
in three dimensions.
|
|
|
|
\cgalRefines CopyConstructible
|
|
\cgalRefines Assignable
|
|
\cgalRefines DefaultConstructible
|
|
|
|
\sa `Kernel::ConstructCartesianConstIterator_3`
|
|
|
|
*/
|
|
class CartesianConstIterator_3 {
|
|
public:
|
|
|
|
}; /* end Kernel::CartesianConstIterator_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `collinear_are_ordered_along_line_grp`
|
|
|
|
*/
|
|
class CollinearAreOrderedAlongLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff `q` lies between `p`
|
|
and `r`. \pre `p, q` and `r` are collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CollinearAreOrderedAlongLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `collinear_are_ordered_along_line_grp`
|
|
|
|
*/
|
|
class CollinearAreOrderedAlongLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff `q` lies between `p`
|
|
and `r`. \pre `p, q` and `r` are collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CollinearAreOrderedAlongLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `collinear_are_strictly_ordered_along_line_grp`
|
|
|
|
*/
|
|
class CollinearAreStrictlyOrderedAlongLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff `q` lies strictly between
|
|
`p` and `r`. \pre `p, q` and `r` are collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CollinearAreStrictlyOrderedAlongLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `collinear_are_strictly_ordered_along_line_grp`
|
|
|
|
*/
|
|
class CollinearAreStrictlyOrderedAlongLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff `q` lies strictly between
|
|
`p` and `r`. \pre `p, q` and `r` are collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CollinearAreStrictlyOrderedAlongLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class CollinearHasOn_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
checks if point `p` is on `r`.
|
|
\pre `p` is on the supporting line of `r`.
|
|
*/
|
|
bool operator()(const Kernel::Ray_2& r,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
checks if point `p` is on `s`.
|
|
\pre `p` is on the supporting line of `s`.
|
|
*/
|
|
bool operator()(const Kernel::Segment_2& s,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CollinearHasOn_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `collinear_grp`
|
|
|
|
*/
|
|
class Collinear_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, if `p`, `q`, and `r` are collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Collinear_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `collinear_grp`
|
|
|
|
*/
|
|
class Collinear_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, if `p`, `q`, and `r` are collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Collinear_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
*/
|
|
class CompareAngleWithXAxis_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares
|
|
the angles between the positive \f$ x\f$-axis and the directions in
|
|
counterclockwise order.
|
|
*/
|
|
Comparison_result operator()(const
|
|
Kernel::Direction_2& d, const Kernel::Direction_2& e);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareAngleWithXAxis_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
*/
|
|
class CompareDihedralAngle_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the dihedral angles \f$ \theta_1\f$ and \f$ \theta_2\f$, where
|
|
\f$ \theta_1\f$ is the dihedral angle, in \f$ [0, \pi]\f$, of the tetrahedron
|
|
\f$ (a_1, b_1, c_1, d_1)\f$ at the edge `(a_1, b_1)`, and \f$ \theta_2\f$ is
|
|
the angle in \f$ [0, \pi]\f$ such that \f$ cos(\theta_2) = cosine\f$.
|
|
The result is the same as `operator()(b1-a1, c1-a1, d1-a1, cosine)`.
|
|
\pre `a_1`, `b_1`, `c_1` are not collinear, and `a_1`, `b_1`, `d_1` are not collinear.
|
|
*/
|
|
Comparison_result operator()(const K::Point_3& a1,
|
|
const K::Point_3& b1,
|
|
const K::Point_3& c1,
|
|
const K::Point_3& d1,
|
|
const K::FT& cosine);
|
|
|
|
/*!
|
|
compares the dihedral angles \f$ \theta_1\f$ and \f$ \theta_2\f$, where
|
|
\f$ \theta_i\f$ is the dihedral angle in the tetrahedron `(a_i, b_i,
|
|
c_i, d_i)` at the edge `(a_i, b_i)`. These two angles are computed
|
|
in \f$ [0, \pi]\f$.
|
|
The result is the same as `operator()(b1-a1, c1-a1, d1-a1, b2-a2, c2-a2, d2-a2)`.
|
|
\pre For \f$ i \in\{1,2\}\f$, `a_i`, `b_i`, `c_i` are not collinear, and `a_i`, `b_i`, `d_i` are not collinear.
|
|
*/
|
|
Comparison_result operator()(const K::Point_3& a1,
|
|
const K::Point_3& b1,
|
|
const K::Point_3& c1,
|
|
const K::Point_3& d1,
|
|
const K::Point_3& a2,
|
|
const K::Point_3& b2,
|
|
const K::Point_3& c2,
|
|
const K::Point_3& d2);
|
|
|
|
/*!
|
|
compares the dihedral angles \f$ \theta_1\f$ and \f$ \theta_2\f$, where
|
|
\f$ \theta_1\f$ is the dihedral angle, in \f$ [0, \pi]\f$, between the
|
|
vectorial planes defined by `(u_1, v_1)` and `(u_1, w_1)`, and
|
|
\f$ \theta_2\f$ is the angle in \f$ [0, \pi]\f$ such that \f$ cos(\theta_2) =
|
|
cosine\f$.
|
|
\pre `u_1` and `v_1` are not collinear, and `u_1` and `w_1` are not collinear.
|
|
*/
|
|
Comparison_result operator()(const K::Vector_3& u1,
|
|
const K::Vector_3& v1,
|
|
const K::Vector_3& w1,
|
|
const K::FT& cosine);
|
|
|
|
/*!
|
|
compares the dihedral angles \f$ \theta_1\f$ and \f$ \theta_2\f$, where
|
|
\f$ \theta_i\f$ is the dihedral angle between the vectorial planes
|
|
defined by `(u_i, v_i)` and `(u_i, w_i)`. These two angles are
|
|
computed in \f$ [0, \pi]\f$.
|
|
\pre For \f$ i \in\{1,2\}\f$, `u_i` and `v_i` are not collinear, and `u_i` and `w_i` are not collinear.
|
|
*/
|
|
Comparison_result operator()(const K::Vector_3& u1,
|
|
const K::Vector_3& v1,
|
|
const K::Vector_3& w1,
|
|
const K::Vector_3& u2,
|
|
const K::Vector_3& v2,
|
|
const K::Vector_3& w2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareDihedralAngle_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `Kernel::CompareSquaredDistance_2`
|
|
\sa `compare_distance_to_point_grp`
|
|
\sa `compare_squared_distance_grp`
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
*/
|
|
class CompareDistance_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the squared distance between `obj1` and `obj2` to
|
|
the squared distance between `obj1` and `obj3`,
|
|
for all triples of types `Type1`, `Type2` and`Type3`
|
|
in the following set of types:
|
|
|
|
- `Kernel::Point_2`
|
|
- `Kernel::Line_2`
|
|
- `Kernel::Ray_2`
|
|
- `Kernel::Segment_2`
|
|
- `Kernel::Triangle_2`
|
|
*/
|
|
Comparison_result operator()(const Type1& obj1,
|
|
const Type2& obj2,
|
|
const Type3& obj3);
|
|
|
|
/*!
|
|
compares the squared distance between `obj1` and `obj2` to
|
|
the squared distance between `obj3` and `obj4`,
|
|
for all tuples of types `Type1`, `Type2`, `Type3`
|
|
and `Type4` in the following set of types:
|
|
|
|
- `Kernel::Point_2`
|
|
- `Kernel::Line_2`
|
|
- `Kernel::Ray_2`
|
|
- `Kernel::Segment_2`
|
|
- `Kernel::Triangle_2`
|
|
*/
|
|
Comparison_result operator()(const Type1& obj1,
|
|
const Type2& obj2,
|
|
const Type3& obj3,
|
|
const Type4& obj4);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareDistance_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `Kernel::CompareSquaredDistance_3`
|
|
\sa `compare_distance_to_point_grp`
|
|
\sa `compare_squared_distance_grp`
|
|
|
|
*/
|
|
class CompareDistance_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the squared distance between `obj1` and `obj2` to
|
|
the squared distance between `obj1` and `obj3`, for all triples of types `Type1`, `Type2` and `Type3`
|
|
in the following set of types:
|
|
- `Kernel::Point_3`
|
|
- `Kernel::Line_3`
|
|
- `Kernel::Ray_3`
|
|
- `Kernel::Segment_3`
|
|
- `Kernel::Plane_3`
|
|
*/
|
|
Comparison_result operator()(const Type1& obj1,
|
|
const Type2& obj2,
|
|
const Type3& obj3);
|
|
|
|
/*!
|
|
compares the squared distance between `obj1` and `obj2` to
|
|
the squared distance between `obj3` and `obj4`, for all tuples of types `Type1`, `Type2`, `Type3`
|
|
and `Type4` in the following set of types:
|
|
- `Kernel::Point_3`
|
|
- `Kernel::Line_3`
|
|
- `Kernel::Ray_3`
|
|
- `Kernel::Segment_3`
|
|
- `Kernel::Plane_3`
|
|
*/
|
|
Comparison_result operator()(const Type1& obj1,
|
|
const Type2& obj2,
|
|
const Type3& obj3,
|
|
const Type4& obj4);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareDistance_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
\sa `ComputePowerProduct_2` for the definition of power distance.
|
|
|
|
*/
|
|
class ComparePowerDistance_2
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the power distance between `p` and `q` to the power distance
|
|
between `p` and `r`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2& p,
|
|
const Kernel::Weighted_point_2& q,
|
|
const Kernel::Weighted_point_2& r);
|
|
/// @}
|
|
};
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
\sa `ComputePowerProduct_3` for the definition of power distance.
|
|
*/
|
|
class ComparePowerDistance_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the power distance between `p` and `q` to the power distance
|
|
between `p` and `r`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3& p,
|
|
const Kernel::Weighted_point_3& q,
|
|
const Kernel::Weighted_point_3& r);
|
|
/// @}
|
|
}; /* end Kernel::ComparePowerDistance_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_slopes_grp`
|
|
|
|
*/
|
|
class CompareSlope_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
compares the slopes of the lines `l1` and `l2`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2& l1,
|
|
const Kernel::Line_2& l2);
|
|
|
|
/*!
|
|
compares the slopes of the segments `s1` and `s2`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Segment_2& s1,
|
|
const Kernel::Segment_2& s2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareSlope_2 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_slopes_grp`
|
|
|
|
*/
|
|
class CompareSlope_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
compares the slopes of the segments `(p,q)` and `(r,s)`
|
|
with `p.z() >= q.z()` and `r.z() >= s.z()`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r,
|
|
const Kernel::Point_3& s);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareSlope_2 */
|
|
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `compare_distance_to_point_grp`
|
|
\sa `compare_squared_distance_grp`
|
|
|
|
*/
|
|
class CompareSquaredDistance_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the squared distance between the two geometrical objects
|
|
`obj1` and `obj2` to the value `d2`, where the types `Type1` and `Type2` can be any of the
|
|
following:
|
|
|
|
- `Kernel::Point_2`
|
|
- `Kernel::Line_2`
|
|
- `Kernel::Ray_2`
|
|
- `Kernel::Segment_2`
|
|
- `Kernel::Triangle_2`
|
|
*/
|
|
Comparison_result operator()(const Type1& obj1,
|
|
const Type2& obj2,
|
|
const Kernel::FT&d2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareSquaredDistance_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `Kernel::CompareDistance_3`
|
|
\sa `compare_distance_to_point_grp`
|
|
\sa `compare_squared_distance_grp`
|
|
|
|
*/
|
|
class CompareSquaredDistance_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the squared distance between the two geometrical objects
|
|
`obj1` and `obj2` to the value `d2`, for all pairs `Type1` and `Type2`, where
|
|
the types `Type1` and `Type2` can be any of the following:
|
|
- `Kernel::Point_3`
|
|
- `Kernel::Line_3`
|
|
- `Kernel::Ray_3`
|
|
- `Kernel::Segment_3`
|
|
- `Kernel::Plane_3`
|
|
*/
|
|
Comparison_result operator()(const Type1& obj1,
|
|
const Type2& obj2,
|
|
const Kernel::FT&d2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareSquaredDistance_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `compare_squared_radius_grp`
|
|
|
|
*/
|
|
class CompareSquaredRadius_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the squared radius of the sphere of radius 0 centered
|
|
at `p` to `sr`.
|
|
This returns the opposite sign of `sr`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3& p,
|
|
const Kernel::FT& sr);
|
|
|
|
/*!
|
|
compares the squared radius of the sphere defined by the
|
|
points `p` and `q` to `sr`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::FT& sr);
|
|
|
|
/*!
|
|
compares the squared radius of the sphere defined by the
|
|
points `p`, `q`, and `r` to `sr`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::FT& sr);
|
|
|
|
/*!
|
|
compares the squared radius of the sphere defined by the
|
|
points `p`, `q`, `r`, and `s` to `sr`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s,
|
|
const Kernel::FT& sr);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareSquaredRadius_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
\cgalHasModel `Compare_weighted_squared_radius_3`
|
|
|
|
\sa `ComputePowerProduct_3` for the definition of of orthogonality for power distances.
|
|
|
|
*/
|
|
class CompareWeightedSquaredRadius_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the weight of the smallest sphere orthogonal to the
|
|
input weighted point(s) with the input weight.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw,
|
|
const Kernel::Weighted_point_3& rw,
|
|
const Kernel::Weighted_point_3& sw,
|
|
const Kernel::FT& w);
|
|
|
|
Comparison_result operator()(const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw,
|
|
const Kernel::Weighted_point_3& rw,
|
|
const Kernel::FT& w);
|
|
|
|
Comparison_result operator()(const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw,
|
|
const Kernel::FT& w);
|
|
|
|
Comparison_result operator()(const Kernel::Weighted_point_3& pw,
|
|
const Kernel::FT& w);
|
|
|
|
/// @}
|
|
}; /* end Kernel::CompareWeightedSquaredRadius_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\anchor fig-compare_x_at_y_2
|
|
\image html compare_x_at_y.png
|
|
\image latex compare_x_at_y.png
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `compare_x_at_y_grp`
|
|
|
|
*/
|
|
class CompareXAtY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the \f$ x\f$-coordinates of `p` and the horizontal projection
|
|
of `p` on `h`. See Figure \ref fig-compare_x_at_y_2 (a).
|
|
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &h);
|
|
|
|
/*!
|
|
compares the \f$ x\f$-coordinates of the horizontal projection
|
|
of `p` on `h1` and on `h2`.
|
|
See Figure \ref fig-compare_x_at_y_2 (b).
|
|
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/*!
|
|
Let `p` be the intersection of lines `l1` and `l2`.
|
|
This function compares the \f$ x\f$-coordinates of `p` and
|
|
the horizontal projection of `p` on `h`.
|
|
|
|
See Figure \ref fig-compare_x_at_y_2 (c).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2,
|
|
const Kernel::Line_2 &h);
|
|
|
|
/*!
|
|
Let `p` be the intersection of lines `l1` and `l2`. This
|
|
function compares the \f$ x\f$-coordinates of the horizontal projection of
|
|
`p` on `h1` and on `h2`.
|
|
|
|
See Figure \ref fig-compare_x_at_y_2 (d)).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareXAtY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_xyz_grp`
|
|
|
|
*/
|
|
class CompareXYZ_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian coordinates of points `p` and
|
|
`q` lexicographically in \f$ xyz\f$ order: first
|
|
\f$ x\f$-coordinates are compared, if they are equal, \f$ y\f$-coordinates
|
|
are compared. If they are equal, \f$ z\f$-coordinates are compared.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareXYZ_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_xy_grp`
|
|
\sa `Kernel::CompareYX_2`
|
|
|
|
*/
|
|
class CompareXY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian coordinates of points `p` and
|
|
`q` lexicographically in \f$ xy\f$ order: first
|
|
\f$ x\f$-coordinates are compared, if they are equal, \f$ y\f$-coordinates
|
|
are compared.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareXY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_xy_grp`
|
|
|
|
*/
|
|
class CompareXY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
Compares the Cartesian coordinates of points `p` and
|
|
`q` lexicographically in \f$ xy\f$ order: first
|
|
\f$ x\f$-coordinates are compared, if they are equal, \f$ y\f$-coordinates
|
|
are compared.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareXY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\anchor fig-compare12
|
|
\image html compare1.png
|
|
\image latex compare1.png
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_x_grp`
|
|
|
|
*/
|
|
class CompareX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the Cartesian \f$ x\f$-coordinates of points `p` and `q`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/*!
|
|
compares the \f$ x\f$-coordinates of `p` and the intersection
|
|
of lines `l1` and `l2`.
|
|
See Figure \ref fig-compare12 (a).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2);
|
|
|
|
/*!
|
|
compares the `x`-coordinates of the intersection of line `l`
|
|
with line `h1` and with line `h2`.
|
|
|
|
See Figure \ref fig-compare12 (b).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/*!
|
|
compares the \f$ x\f$-coordinates of the intersection of lines `l1`
|
|
and `l2` and the intersection of lines `h1` and `h2`.
|
|
|
|
See Figure \ref fig-compare12 (c).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_x_grp`
|
|
|
|
*/
|
|
class CompareX_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian \f$ x\f$-coordinates of points `p` and
|
|
`q`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareX_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\image html compare2.png
|
|
\image latex compare2.png
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\anchor fig-compare2
|
|
\sa `compare_y_at_x_grp`
|
|
|
|
*/
|
|
class CompareYAtX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compares the \f$ y\f$-coordinates of `p` and the vertical projection
|
|
of `p` on `h`. See Figure \ref fig-compare2 (e).
|
|
\pre `h` is not vertical.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &h);
|
|
|
|
/*!
|
|
This function compares the `y`-coordinates of the vertical projection
|
|
of `p` on `h1` and on `h2`. See Figure \ref fig-compare2 (e).
|
|
\pre `h1` and `h2` are not vertical.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/*!
|
|
Let `p` be the intersection of lines `l1` and `l2`.
|
|
This function compares the \f$ y\f$-coordinates of `p` and
|
|
the vertical projection of `p` on `h`.
|
|
See (Figure \ref fig-compare2 (f)).
|
|
\pre `l1`, `l2` intersect and `h` is not vertical.
|
|
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2,
|
|
const Kernel::Line_2 &h);
|
|
|
|
/*!
|
|
Let `p` be the intersection of lines `l1` and `l2`. This function
|
|
compares the `y`-coordinates of the vertical projection of `p` on
|
|
`h1` and on `h2`.
|
|
See (Figure \ref fig-compare2 (g)).
|
|
\pre `l1` and `l2` intersect; `h1` and `h2` are not vertical.
|
|
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/*!
|
|
compares the `y`-coordinates of `p` and the vertical projection
|
|
of `p` on `s`. If `s` is vertical, then return
|
|
\ref CGAL::EQUAL when `p` lies on `s`, \ref CGAL::SMALLER when `p` lies
|
|
under s, and \ref CGAL::LARGER otherwise.
|
|
|
|
\pre `p` is within the x range of `s`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Segment_2 &s);
|
|
|
|
/*!
|
|
This function compares the \f$ y\f$-coordinates of the vertical projection
|
|
of `p` on `s1` and on `s2`. If `s1` or `s2`
|
|
is vertical, then return \ref CGAL::EQUAL if they intersect, otherwise return
|
|
\ref CGAL::SMALLER if `s1` lies below `s2`, and return \ref CGAL::LARGER
|
|
otherwise.
|
|
|
|
\pre `p` is within the x range of `s1` and `s2`.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Segment_2 &s1,
|
|
const Kernel::Segment_2 &s2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareYAtX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_yx_grp`
|
|
\sa `Kernel::CompareXY_2`
|
|
|
|
*/
|
|
class CompareYX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian coordinates of points `p` and
|
|
`q` lexicographically in \f$ yx\f$ order: first
|
|
\f$ y\f$-coordinates are compared, if they are equal, \f$ x\f$-coordinates
|
|
are compared.
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareYX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\anchor fig-compare14
|
|
\image html compare1.png
|
|
\image latex compare1.png
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_y_grp`
|
|
|
|
*/
|
|
class CompareY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian \f$ y\f$-coordinates of points `p` and
|
|
`q`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/*!
|
|
compares the \f$ y\f$-coordinates of `p` and the
|
|
intersection of lines `l1` and `l2`.
|
|
|
|
See Figure \ref fig-compare14 (a).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2);
|
|
|
|
/*!
|
|
compares the \f$ y\f$-coordinates of the intersection of line `l`
|
|
with line `h1` and with line `h2`.
|
|
|
|
See Figure \ref fig-compare14 (b).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
/*!
|
|
compares the \f$ y\f$-coordinates of the intersection of lines `l1`
|
|
and `l2` and the intersection of lines `h1` and `h2`.
|
|
|
|
See Figure \ref fig-compare14 (c).
|
|
*/
|
|
Comparison_result operator()(const Kernel::Line_2 &l1,
|
|
const Kernel::Line_2 &l2,
|
|
const Kernel::Line_2 &h1,
|
|
const Kernel::Line_2 &h2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_y_grp`
|
|
|
|
*/
|
|
class CompareY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian \f$ y\f$-coordinates of points `p` and
|
|
`q`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_z_grp`
|
|
|
|
*/
|
|
class CompareZ_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Compares the Cartesian \f$ z\f$-coordinates of points `p` and
|
|
`q`
|
|
*/
|
|
Comparison_result operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CompareZ_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeA_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `a` of the line with equation `ax +by + c = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_2& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeA_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeA_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `a` of the line with equation `ax +by + cz+ d = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_3& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeA_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
|
|
\cgalRefines AdaptableFunctor
|
|
|
|
*/
|
|
class ComputeApproximateArea_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an approximation of the area of `c`.
|
|
*/
|
|
double operator()(const Kernel::Circle_3& c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeApproximateArea_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeApproximateDihedralAngle_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an approximation of the signed dihedral angle in the tetrahedron `pqrs` of edge `pq`.
|
|
The sign is negative if `orientation(p,q,r,s)` is `CGAL::NEGATIVE` and positive otherwise.
|
|
The angle is given in degree.
|
|
\pre `p,q,r` and `p,q,s` are not collinear.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r,
|
|
const Kernel::Point_3& s) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeApproximateDihedralAngle_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeApproximateSquaredLength_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an approximation of the squared length (i.e.\ perimeter) of `c`.
|
|
*/
|
|
double operator()(const Kernel::Circle_3& c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeApproximateSquaredLength_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeAreaDividedByPi_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the area of `c`, divided by \f$ \pi\f$.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Circle_3& c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeAreaDividedByPi_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class ComputeArea_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the signed area of the triangle defined by the points `p`,
|
|
`q` and `r`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q,
|
|
const Kernel::Point_2& r);
|
|
|
|
/*!
|
|
returns the area of `r`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_rectangle_2& r);
|
|
|
|
/*!
|
|
returns the signed area of `t`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Triangle_2& t);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeArea_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeArea_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the area of `t`. This requires that `Kernel::FT`
|
|
supports the `sqrt` operation.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Triangle_3& t);
|
|
|
|
/*!
|
|
returns the area of the triangle `p`, `q`, `r`.
|
|
This requires that `Kernel::FT` supports the `sqrt` operation.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeArea_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeB_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `b` of the line with equation `ax +by + c = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_2& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeB_2 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeB_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `b` of the line with equation `ax +by + cz+ d = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_3& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeB_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeC_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `c` of the line with equation `ax +by + c = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_2& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeC_2 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeC_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `c` of the line with equation `ax +by + cz+ d = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_3& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeC_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeD_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the coefficient `d` of the line with equation `ax +by + cz+ d = 0`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_3& l) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeD_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
\sa `determinant_grp`
|
|
|
|
*/
|
|
class ComputeDeterminant_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the determinant of the two vectors `v` and `w`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v,
|
|
const Kernel::Vector_2& w);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDeterminant_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
\sa `determinant_grp`
|
|
|
|
*/
|
|
class ComputeDeterminant_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the determinant of the three vectors `u`, `v` and `w`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& u,
|
|
const Kernel::Vector_3& v,
|
|
const Kernel::Vector_3& w);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDeterminant_3 */
|
|
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeDx_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns an \f$ x\f$-coordinate of the direction.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Direction_2& d) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDx_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeDx_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns an \f$ x\f$-coordinate of the direction.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Direction_3& d) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDx_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeDy_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an \f$ y\f$-coordinate of the direction.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Direction_2& d) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDy_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeDy_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an \f$ y\f$-coordinate of the direction.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Direction_3& d) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDy_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeDz_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an \f$ z\f$-coordinate of the direction.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Direction_3& d) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeDz_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHx_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogeneous \f$ x\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p) const;
|
|
|
|
/*!
|
|
returns the homogeneous \f$ x\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHx_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHx_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogeneous \f$ x\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the homogeneous \f$ x\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHx_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHy_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogeneous \f$ y\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p) const;
|
|
|
|
/*!
|
|
returns the homogeneous \f$ y\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHy_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHy_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogeneous \f$ y\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the homogeneous \f$ y\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHy_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHw_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogenizing coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p) const;
|
|
|
|
/*!
|
|
returns the homogenizing coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHw_2 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHw_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogenizing coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the homogenizing coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHw_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeHz_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the homogeneous \f$ z\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the homogeneous \f$ z\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeHz_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with five arguments)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
\sa `ComputePowerProduct_3` for the definitions of power distance and orthogonality.
|
|
*/
|
|
class ComputePowerDistanceToPowerSphere_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared radius of the sphere centered in `t`
|
|
and orthogonal to the sphere orthogonal to `p`, `q`, `r` ,and `s`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Weighted_point_3& p,
|
|
const Kernel::Weighted_point_3& q,
|
|
const Kernel::Weighted_point_3& r,
|
|
const Kernel::Weighted_point_3& s,
|
|
const Kernel::Weighted_point_3& t
|
|
) const;
|
|
/// @}
|
|
};
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
\sa `ComputePowerProduct_3`
|
|
*/
|
|
class ComputePowerProduct_2
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the power product of `pw` and `qw`.
|
|
Let\f$ {p}^{(w)} = (p,w_p), p\in\mathbb{R}^2, w_p\in\mathbb{R}\f$ and
|
|
\f$ {q}^{(w)}=(q,w_q), q\in\mathbb{R}^2, w_q\in\mathbb{R}\f$ be two weighted points.
|
|
|
|
The <I>power product</I>, also called <i>power distance</i>
|
|
between \f$ {p}^{(w)}\f$ and \f$ {q}^{(w)}\f$ is defined as
|
|
\f[ \Pi({p}^{(w)},{q}^{(w)}) = {\|{p-q}\|^2-w_p-w_q} \f]
|
|
where \f$ \|{p-q}\|\f$ is the Euclidean distance between \f$ p\f$ and \f$ q\f$.
|
|
|
|
The weighted points \f$ {p}^{(w)}\f$ and \f$ {q}^{(w)}\f$
|
|
are said to be <I>orthogonal</I> iff \f$ \Pi{({p}^{(w)},{q}^{(w)})}
|
|
= 0\f$.
|
|
|
|
Three weighted points have, in 2D, a unique common orthogonal weighted point
|
|
called the <I>power circle</I>. The <I>power segment</I> will denote the
|
|
weighted point orthogonal to two weighted points on the line defined by
|
|
these two points.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Weighted_point_2& pw,
|
|
const Kernel::Weighted_point_2& qw) const;
|
|
|
|
/// @}
|
|
}; /* end Kernel::ComputePowerProduct_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
\sa `ComputePowerProduct_2`
|
|
*/
|
|
class ComputePowerProduct_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the power product of `pw` and `qw`.
|
|
Let\f$ {p}^{(w)}=(p,w_p), p\in\mathbb{R}^3, w_p\in\mathbb{R}\f$ and
|
|
\f$ {q}^{(w)}=(q,w_q), q\in\mathbb{R}^3, w_q\in\mathbb{R}\f$ be two weighted points.
|
|
|
|
The <I>power product</I>, also called <i>power distance</i>
|
|
between \f$ {p}^{(w)}\f$ and \f$ {q}^{(w)}\f$ is defined as
|
|
\f[ \Pi({p}^{(w)},{q}^{(w)}) = {\|{p-q}\|^2-w_p-w_q} \f]
|
|
where \f$ \|{p-q}\|\f$ is the Euclidean distance between \f$ p\f$ and \f$ q\f$.
|
|
|
|
|
|
The weighted points \f$ {p}^{(w)}\f$ and \f$ {q}^{(w)}\f$
|
|
are said to be <I>orthogonal</I> iff \f$ \Pi{({p}^{(w)},{q}^{(w)})}
|
|
= 0\f$.
|
|
|
|
Four weighted points have, in 3D, a unique common orthogonal weighted point
|
|
called the <I>power sphere</I>. The weighted point orthogonal to
|
|
three weighted points in the plane defined by these three points is
|
|
called the <I>power circle</I>. The
|
|
<I>power segment</I> will denote the weighted point orthogonal to
|
|
two weighted points on the line defined by these two points.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw) const;
|
|
|
|
/// @}
|
|
}; /* end Kernel::ComputePowerProduct_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with 2 arguments)
|
|
|
|
*/
|
|
class ComputeLInfinityDistance_2 {
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the distance between the two points in the L-infinity metric.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q) const;
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeLInfinityDistance_2 */
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeLInfinityDistance_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the distance between the two points in the L-infinity metric.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q) const;
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeLInfinityDistance_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
\sa scalar_product_grp
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
*/
|
|
class ComputeScalarProduct_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the scalar (inner) product of the two vectors `v` and `w`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v,
|
|
const Kernel::Vector_2& w);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeScalarProduct_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
\sa scalar_product_grp
|
|
|
|
*/
|
|
class ComputeScalarProduct_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the scalar (inner) product of the two vectors `v` and `w`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v,
|
|
const Kernel::Vector_3& w);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeScalarProduct_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeSquaredArea_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the square of the area of `t`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Triangle_3& t);
|
|
|
|
/*!
|
|
returns the square of the area of the triangle `p`, `q`, `r`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredArea_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `squared_distance_grp`
|
|
|
|
*/
|
|
class ComputeSquaredDistance_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared distance between two geometrical objects of type
|
|
for all pairs `Type1` and `Type2`, where the types `Type1` and `Type2` can be any of the
|
|
following:
|
|
|
|
- `Kernel::Point_2`
|
|
- `Kernel::Line_2`
|
|
- `Kernel::Ray_2`
|
|
- `Kernel::Segment_2`
|
|
- `Kernel::Triangle_2`
|
|
|
|
as well as any combination of `Kernel::Point_2` and `Kernel::Weighted_point_2`
|
|
*/
|
|
Kernel::FT operator()(Type1 obj1, Type2 obj2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredDistance_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `squared_distance_grp`
|
|
|
|
*/
|
|
class ComputeSquaredDistance_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared distance between two geometrical objects of type
|
|
`Type1` and `Type2`, for all pairs `Type1` and `Type2`, where
|
|
the types `Type1` and `Type2` can be any of the
|
|
following:
|
|
|
|
- `Kernel::Point_3`
|
|
- `Kernel::Line_3`
|
|
- `Kernel::Ray_3`
|
|
- `Kernel::Segment_3`
|
|
- `Kernel::Plane_3`
|
|
|
|
as well as any combination of `Kernel::Point_3` and `Kernel::Weighted_point_3`
|
|
*/
|
|
Kernel::FT operator()(Type1 obj1, Type2 obj2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredDistance_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeSquaredLengthDividedByPiSquare_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared length of `c`, divided by \f$ \pi^2\f$.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Circle_3& c);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredLengthDividedByPiSquare_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ComputeSquaredLength_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared length of `v`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v);
|
|
|
|
/*!
|
|
returns the squared length of `s`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Segment_2& s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredLength_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeSquaredLength_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared length of `v`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v);
|
|
|
|
/*!
|
|
returns the squared length of `s`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Segment_3& s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredLength_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `squared_radius_grp`
|
|
|
|
*/
|
|
class ComputeSquaredRadius_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared radius of `c`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Circle_2& c);
|
|
|
|
/*!
|
|
returns the squared radius of the circle passing through `p`, `q`
|
|
and `r`. \pre `p, q` and `r` are not collinear.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q,
|
|
const Kernel::Point_2& r);
|
|
|
|
/*!
|
|
returns the squared radius of the smallest circle passing through `p`,
|
|
and `q`, i.e.\ one fourth of the squared distance between `p` and `q`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q);
|
|
|
|
/*!
|
|
returns the squared radius of the smallest circle passing through `p`, i.e.\ \f$ 0\f$.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredRadius_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
\sa `squared_radius_grp`
|
|
|
|
*/
|
|
class ComputeSquaredRadius_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the squared radius of `s`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Sphere_3& s);
|
|
|
|
/*!
|
|
returns the squared radius of `c`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Circle_3& c);
|
|
|
|
/*!
|
|
returns the squared radius of the sphere passing through `p`, `q`, `r`
|
|
and `s`. \pre `p, q, r` and `s` are not coplanar.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r,
|
|
const Kernel::Point_3& s);
|
|
|
|
/*!
|
|
returns the squared radius of the sphere passing through `p`, `q` and
|
|
`r`, and whose center is in the plane defined by these three points.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r);
|
|
|
|
/*!
|
|
returns the squared radius of the smallest circle passing through `p`,
|
|
and `q`, i.e.\ one fourth of the squared distance between `p` and `q`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q);
|
|
|
|
/*!
|
|
returns the squared radius of the smallest circle passing through `p`, i.e.\ \f$ 0\f$.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeSquaredRadius_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
\sa `ComputePowerProduct_2` for the definition of orthogonality for power distances.
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeSquaredRadiusSmallestOrthogonalCircle_2
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared radius of the
|
|
smallest sphere circle to the argument(s).
|
|
*/
|
|
Kernel::FT operator() (const Kernel::Weighted_point_2& pw,
|
|
const Kernel::Weighted_point_2& qw,
|
|
const Kernel::Weighted_point_2& rw) const;
|
|
|
|
Kernel::FT operator() (const Kernel::Weighted_point_2& pw,
|
|
const Kernel::Weighted_point_2& qw) const;
|
|
|
|
Kernel::FT operator() (const Kernel::Weighted_point_2& pw) const;
|
|
|
|
/// @}
|
|
}; /* end Kernel::ComputeSquaredRadiusSmallestOrthogonalCircle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
\sa `ComputePowerProduct_3` for the definition of of orthogonality for power distances.
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeSquaredRadiusSmallestOrthogonalSphere_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the squared radius of the
|
|
smallest sphere orthogonal to the argument(s).
|
|
*/
|
|
Kernel::FT operator() (const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw,
|
|
const Kernel::Weighted_point_3& rw,
|
|
const Kernel::Weighted_point_3& sw) const;
|
|
|
|
Kernel::FT operator() (const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw,
|
|
const Kernel::Weighted_point_3& rw) const;
|
|
|
|
Kernel::FT operator() (const Kernel::Weighted_point_3& pw,
|
|
const Kernel::Weighted_point_3& qw) const;
|
|
|
|
Kernel::FT operator() (const Kernel::Weighted_point_3& pw) const;
|
|
|
|
/// @}
|
|
}; /* end Kernel::ComputeSquaredRadiusSmallestOrthogonalSphere_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
|
|
*/
|
|
class ComputeVolume_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the volume of `c`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& c);
|
|
|
|
/*!
|
|
returns the signed volume of `t`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Tetrahedron_3& t);
|
|
|
|
/*!
|
|
returns the signed volume of the tetrahedron defined by the four
|
|
points `p0`, `p1`, `p2`, `p3`.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p0,
|
|
const Kernel::Point_3& p1,
|
|
const Kernel::Point_3& p2,
|
|
const Kernel::Point_3& p3);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeVolume_3 */
|
|
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeWeight_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the weight of the weighted point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::WeightedPoint_2& p) const;
|
|
|
|
}; /* end Kernel::ComputeWeight_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeWeight_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the weight of the weighted point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::WeightedPoint_3& p) const;
|
|
|
|
}; /* end Kernel::ComputeWeight_3 */
|
|
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the \f$ x\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p) const;
|
|
|
|
/*!
|
|
returns the \f$ x\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v) const;
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeX_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the \f$ x\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the \f$ x\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeX_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeXmax_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the largest \f$ x\f$-coordinate of the iso-rectangle.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_rectangle_2& r) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeXmax_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeXmax_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the largest \f$ x\f$-coordinate of the iso-cuboid.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& r) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeXmax_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeXmin_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the smallest \f$ x\f$-coordinate of the iso-rectangle.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_rectangle_2& r) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeXmin_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeXmin_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the smallest \f$ x\f$-coordinate of the iso-cuboid.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& r) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeXmin_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `compare_y_at_x_grp`
|
|
|
|
\cgalRefines AdaptableFunctor
|
|
|
|
*/
|
|
class ComputeYAtX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the \f$ y\f$-coordinate of the point at `l` with
|
|
given \f$ x\f$-coordinate.
|
|
\pre `l` is not vertical.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Line_2& l,
|
|
const Kernel::FT &x) const;
|
|
|
|
// @}
|
|
|
|
}; /* end Kernel::ComputeYAtX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the \f$ y\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_2& p) const;
|
|
|
|
/*!
|
|
returns the \f$ y\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_2& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the \f$ y\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the \f$ y\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeYmax_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the largest \f$ y\f$-coordinate of the iso-rectangle.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_rectangle_2& r) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeYmax_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeYmax_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the largest \f$ y\f$-coordinate of the iso-cuboid.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& r) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeYmax_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeYmin_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the smallest \f$ y\f$-coordinate of the iso-rectangle.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_rectangle_2& r) const;
|
|
|
|
}; /* end Kernel::ComputeYmin_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeYmin_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the smallest \f$ y\f$-coordinate of the iso-cuboid.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& r) const;
|
|
|
|
}; /* end Kernel::ComputeYmin_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeZ_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the \f$ z\f$-coordinate of the point.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Point_3& p) const;
|
|
|
|
/*!
|
|
returns the \f$ z\f$-coordinate of the vector.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Vector_3& v) const;
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ComputeZ_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeZmax_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the largest \f$ z\f$-coordinate of the iso-cuboid.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& r) const;
|
|
|
|
}; /* end Kernel::ComputeZmax_3 */
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`
|
|
|
|
*/
|
|
class ComputeZmin_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the smallest \f$ z\f$-coordinate of the iso-cuboid.
|
|
*/
|
|
Kernel::FT operator()(const Kernel::Iso_cuboid_3& r) const;
|
|
|
|
}; /* end Kernel::ComputeZmin_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `Kernel::ConstructCentroid_2`
|
|
\sa `centroid_grp`
|
|
\sa `barycenter_grp`
|
|
|
|
*/
|
|
class ConstructBarycenter_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1` and `p2` with corresponding
|
|
weights `w1` and `1-w1`.
|
|
*/
|
|
Kernel::Point_2
|
|
operator()( const Kernel::Point_2& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_2& p2);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1` and `p2` with corresponding
|
|
weights `w1` and `w2`. \pre `w1+w2 != 0`.
|
|
*/
|
|
Kernel::Point_2
|
|
operator()( const Kernel::Point_2& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_2& p2, const Kernel::FT&w2);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2` and `p3` with corresponding
|
|
weights `w1`, `w2` and `1-w1-w2`.
|
|
*/
|
|
Kernel::Point_2
|
|
operator()( const Kernel::Point_2& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_2& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_2& p3);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2` and `p3` with corresponding
|
|
weights `w1`, `w2` and `w3`. \pre `w1+w2+w3 != 0`.
|
|
*/
|
|
Kernel::Point_2
|
|
operator()( const Kernel::Point_2& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_2& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_2& p3, const Kernel::FT&w3);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2`, `p3` and `p4` with corresponding
|
|
weights `w1`, `w2`, `w3` and `1-w1-w2-w3`.
|
|
*/
|
|
Kernel::Point_2
|
|
operator()( const Kernel::Point_2& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_2& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_2& p3, const Kernel::FT&w3,
|
|
const Kernel::Point_2& p4);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2`, `p3` and `p4` with corresponding
|
|
weights `w1`, `w2`, `w3` and `w4`. \pre `1+w2+w3+w4 != 0.`
|
|
*/
|
|
Kernel::Point_2
|
|
operator()( const Kernel::Point_2& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_2& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_2& p3, const Kernel::FT&w3,
|
|
const Kernel::Point_2& p4, const Kernel::FT&w4);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBarycenter_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `Kernel::ConstructCentroid_3`
|
|
\sa `centroid_grp`
|
|
\sa `barycenter_grp`
|
|
|
|
*/
|
|
class ConstructBarycenter_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1` and `p2` with corresponding
|
|
weights `w1` and `1-w1`.
|
|
*/
|
|
Kernel::Point_3
|
|
operator()( const Kernel::Point_3& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_3& p2);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1` and `p2` with corresponding
|
|
weights `w1` and `w2`. \pre `w1+w2 != 0`.
|
|
*/
|
|
Kernel::Point_3
|
|
operator()( const Kernel::Point_3& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_3& p2, const Kernel::FT&w2);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2` and `p3` with corresponding
|
|
weights `w1`, `w2` and `1-w1-w2`.
|
|
*/
|
|
Kernel::Point_3
|
|
operator()( const Kernel::Point_3& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_3& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_3& p3);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2` and `p3` with corresponding
|
|
weights `w1`, `w2` and `w3`. \pre `w1+w2+w3 != 0`.
|
|
*/
|
|
Kernel::Point_3
|
|
operator()( const Kernel::Point_3& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_3& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_3& p3, const Kernel::FT&w3);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2`, `p3` and `p4` with corresponding
|
|
weights `w1`, `w2`, `w3` and `1-w1-w2-w3`.
|
|
*/
|
|
Kernel::Point_3
|
|
operator()( const Kernel::Point_3& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_3& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_3& p3, const Kernel::FT&w3,
|
|
const Kernel::Point_3& p4);
|
|
|
|
/*!
|
|
compute the barycenter of the points `p1`, `p2`, `p3` and `p4` with corresponding
|
|
weights `w1`, `w2`, `w3` and `w4`. \pre `w1+w2+w3+w4 != 0`.
|
|
*/
|
|
Kernel::Point_3
|
|
operator()( const Kernel::Point_3& p1, const Kernel::FT&w1,
|
|
const Kernel::Point_3& p2, const Kernel::FT&w2,
|
|
const Kernel::Point_3& p3, const Kernel::FT&w3,
|
|
const Kernel::Point_3& p4, const Kernel::FT&w4);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBarycenter_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructBaseVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
when `index` == 1, returns a vector `b1` that is orthogonal to the
|
|
normal `n` to plane `h`; when `index` == 2, returns a vector
|
|
`b2` that is orthogonal to `n` and `b1` and such that
|
|
for an arbitrary point `p` on the plane `h`, the orientation of
|
|
`p`, `p + b1`, `p + b2`, and `p + n` is positive.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Plane_3& h,
|
|
int index);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBaseVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
*/
|
|
class ConstructBbox_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns a bounding box of `p`.
|
|
*/
|
|
CGAL::Bbox_2 operator()(const Kernel::Point_2
|
|
&p);
|
|
|
|
/*!
|
|
returns a bounding box of `s`.
|
|
*/
|
|
CGAL::Bbox_2 operator()(const Kernel::Segment_2
|
|
&s);
|
|
|
|
/*!
|
|
returns a bounding box of `t`.
|
|
*/
|
|
CGAL::Bbox_2 operator()(const Kernel::Triangle_2
|
|
&t);
|
|
|
|
/*!
|
|
returns a bounding box of `i`.
|
|
*/
|
|
CGAL::Bbox_2 operator()(const Kernel::Iso_rectangle_2
|
|
&i);
|
|
|
|
/*!
|
|
returns a bounding box of `c`.
|
|
*/
|
|
CGAL::Bbox_2 operator()(const Kernel::Circle_2
|
|
&c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBbox_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
*/
|
|
class ConstructBbox_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns a bounding box of `c`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Circle_3
|
|
&c);
|
|
|
|
/*!
|
|
returns a bounding box of `p`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Point_3
|
|
&p);
|
|
|
|
/*!
|
|
returns a bounding box of `s`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Segment_3
|
|
&s);
|
|
|
|
/*!
|
|
returns a bounding box of `t`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Triangle_3
|
|
&t);
|
|
|
|
/*!
|
|
returns a bounding box of `t`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Tetrahedron_3
|
|
&t);
|
|
|
|
/*!
|
|
returns a bounding box of `i`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Iso_Cuboid_3
|
|
&i);
|
|
|
|
/*!
|
|
returns a bounding box of `s`.
|
|
*/
|
|
CGAL::Bbox_3 operator()(const Kernel::Sphere_3
|
|
&s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBbox_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines AdaptableFunctor
|
|
|
|
\sa `bisector_grp`
|
|
|
|
*/
|
|
class ConstructBisector_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
constructs the bisector of `p` and `q`.
|
|
The bisector is oriented in such a way that `p` lies on its
|
|
positive side. \pre `p` and `q` are not equal.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q );
|
|
|
|
/*!
|
|
constructs the bisector of the two lines `l1` and `l2`.
|
|
In the general case, the bisector has the direction of the vector which
|
|
is the sum of the normalized directions of the two lines, and which passes
|
|
through the intersection of `l1` and `l2`.
|
|
If `l1` and `l2` are parallel, then the bisector is defined as the line
|
|
which has the same direction as `l1`, and which is at the same distance
|
|
from `l1` and `l2`.
|
|
This function requires that `Kernel::RT` supports the `sqrt()`
|
|
operation.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Line_2&l1,
|
|
const Kernel::Line_2&l2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBisector_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `bisector_grp`
|
|
|
|
*/
|
|
class ConstructBisector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
constructs the bisector plane of `p` and `q`.
|
|
The bisector is oriented in such a way that `p` lies on its
|
|
positive side. \pre `p` and `q` are not equal.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q );
|
|
|
|
/*!
|
|
constructs the bisector of the two planes `h1` and `h2`.
|
|
In the general case, the bisector has a normal vector which has the same
|
|
direction as the sum of the normalized normal vectors of the two planes, and
|
|
passes through the intersection of `h1` and `h2`.
|
|
If `h1` and `h2` are parallel, then the bisector is defined as the
|
|
plane which has the same oriented normal vector as `l1`, and which is at
|
|
the same distance from `h1` and `h2`.
|
|
This function requires that `Kernel::RT` supports the `sqrt()`
|
|
operation.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Plane_3&h1,
|
|
const Kernel::Plane_3&h2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructBisector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `Kernel::CartesianConstIterator_2`
|
|
|
|
*/
|
|
class ConstructCartesianConstIterator_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns an iterator on the 0'th Cartesian coordinate of `p`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_2 operator()(const Kernel::Point_2
|
|
&p);
|
|
|
|
/*!
|
|
returns the past the end iterator of the Cartesian coordinates of `p`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_2 operator()(const Kernel::Point_2
|
|
&p, int);
|
|
|
|
/*!
|
|
returns an iterator on the 0'th Cartesian coordinate of `v`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_2 operator()(const Kernel::Vector_2
|
|
&v);
|
|
|
|
/*!
|
|
returns the past the end iterator of the Cartesian coordinates of `v`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_2 operator()(const Kernel::Vector_2
|
|
&v, int);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCartesianConstIterator_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `Kernel::CartesianConstIterator_3`
|
|
|
|
*/
|
|
class ConstructCartesianConstIterator_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an iterator on the 0'th Cartesian coordinate of `p`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_3 operator()(const Kernel::Point_3
|
|
&p);
|
|
|
|
/*!
|
|
returns the past the end iterator of the Cartesian coordinates of `p`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_3 operator()(const Kernel::Point_3
|
|
&p, int);
|
|
|
|
/*!
|
|
returns an iterator on the 0'th Cartesian coordinate of `v`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_3 operator()(const Kernel::Vector_3
|
|
&v);
|
|
|
|
/*!
|
|
returns the past the end iterator of the Cartesian coordinates of `v`.
|
|
*/
|
|
Kernel::Cartesian_const_iterator_3 operator()(const Kernel::Vector_3
|
|
&v, int);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCartesianConstIterator_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructCenter_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compute the center of the circle `c`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Circle_2 & c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCenter_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructCenter_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compute the center of the sphere `s`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Sphere_3 & s);
|
|
|
|
/*!
|
|
compute the center of the circle `c`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Circle_3 & c);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCenter_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `Kernel::ConstructBarycenter_2`
|
|
\sa `centroid_grp`
|
|
\sa `barycenter_grp`
|
|
|
|
*/
|
|
class ConstructCentroid_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compute the centroid of the points `p`, `q`, and `r`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/*!
|
|
compute the centroid of the points `p`, `q`, `r` and `s`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r,
|
|
const Kernel::Point_2&s);
|
|
|
|
/*!
|
|
compute the centroid of the triangle `t`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Triangle_2&t);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCentroid_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `Kernel::ConstructBarycenter_3`
|
|
\sa `centroid_grp`
|
|
\sa `barycenter_grp`
|
|
|
|
*/
|
|
class ConstructCentroid_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compute the centroid of the points `p`, `q`, and `r`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/*!
|
|
compute the centroid of the points `p`, `q`, `r` and `s`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/*!
|
|
compute the centroid of the triangle `t`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Triangle_3&t);
|
|
|
|
/*!
|
|
compute the centroid of the tetrahedron `t`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Tetrahedron_3&t);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCentroid_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructCircle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
|
|
introduces a variable of type `Kernel::Circle_2`.
|
|
It is initialized to the circle with center `center`,
|
|
squared radius `squared_radius` and orientation
|
|
`orientation`.
|
|
\pre `orientation` \f$ \neq\f$ \ref CGAL::COLLINEAR, and further, `squared_radius` \f$ \geq\f$ 0.
|
|
*/
|
|
Kernel::Circle_2 operator()( Kernel::Point_2 const& center,
|
|
Kernel::FT const& squared_radius,
|
|
Orientation const& orientation
|
|
= COUNTERCLOCKWISE);
|
|
|
|
/*!
|
|
|
|
introduces a variable of type `Kernel::Circle_2`.
|
|
It is initialized to the unique circle which passes through
|
|
the points `p`, `q` and `r`. The orientation of
|
|
the circle is the orientation of the point triple `p`,
|
|
`q`, `r`.
|
|
\pre `p`, `q`, and `r` are not collinear.
|
|
*/
|
|
Kernel::Circle_2 operator()( Kernel::Point_2 const& p,
|
|
Kernel::Point_2 const& q,
|
|
Kernel::Point_2 const& r);
|
|
|
|
/*!
|
|
|
|
introduces a variable of type `Kernel::Circle_2`.
|
|
It is initialized to the circle with diameter `pq`
|
|
and orientation `orientation`.
|
|
\pre `orientation` \f$ \neq\f$ \ref CGAL::COLLINEAR.
|
|
*/
|
|
Kernel::Circle_2 operator()( Kernel::Point_2 const& p,
|
|
Kernel::Point_2 const& q,
|
|
Orientation const& orientation
|
|
= COUNTERCLOCKWISE);
|
|
|
|
/*!
|
|
|
|
introduces a variable of type `Kernel::Circle_2`.
|
|
It is initialized to the circle with center `center`, squared
|
|
radius zero and orientation `orientation`.
|
|
\pre `orientation` \f$ \neq\f$ \ref CGAL::COLLINEAR.
|
|
\post .`is_degenerate()` = `true`.
|
|
*/
|
|
Kernel::Circle_2 operator()( Kernel::Point_2 const& center,
|
|
Orientation const& orientation
|
|
= COUNTERCLOCKWISE);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCircle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructCircle_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a variable of type `Kernel::Circle_3`.
|
|
It is initialized to the circle with center `center`,
|
|
and squared radius `sq_r` in the plane `plane`.
|
|
\pre `center` lies in `plane` and `sq_r` \f$ \geq\f$ 0.
|
|
*/
|
|
Kernel::Circle_3 operator()
|
|
( Kernel::Point_3 const& center,
|
|
Kernel::FT const& sq_r,
|
|
Kernel::Plane_3 const& plane);
|
|
|
|
/*!
|
|
introduces a variable of type `Kernel::Circle_3`.
|
|
It is initialized to the circle with center `center`,
|
|
and squared radius `sq_r` in the plane
|
|
containing `center` and normal to `n`.
|
|
\pre `sq_r` \f$ \geq\f$ 0.
|
|
*/
|
|
Kernel::Circle_3 operator()
|
|
( Kernel::Point_3 const& center,
|
|
Kernel::FT const& sq_r,
|
|
Kernel::Vector_3 const& n);
|
|
|
|
/*!
|
|
introduces a variable of type `Kernel::Point_3`.
|
|
It is initialized to the circle passing through the three points.
|
|
\pre The three points are not collinear.
|
|
*/
|
|
Kernel::Circle_3 operator()
|
|
( Kernel::Point_3 const& p,
|
|
Kernel::Point_3 const& q,
|
|
Kernel::Point_3 const& r);
|
|
|
|
/*!
|
|
introduces a variable of type `Kernel::Circle_3`.
|
|
It is initialized to the circle along which the two spheres intersect.
|
|
\pre The two spheres intersect along a circle.
|
|
*/
|
|
Kernel::Circle_3 operator()
|
|
( Kernel::Sphere_3 const& sphere1,
|
|
Kernel::Sphere_3 const& sphere2);
|
|
|
|
/*!
|
|
introduces a variable of type `Kernel::Circle_3`.
|
|
It is initialized to the circle along which the sphere and the
|
|
plane intersect.
|
|
\pre The sphere and the plane intersect along a circle.
|
|
*/
|
|
Kernel::Circle_3 operator()
|
|
( Kernel::Sphere_3 const& sphere,
|
|
Kernel::Plane_3 const& plane);
|
|
|
|
/*!
|
|
introduces a variable of type `Kernel::Circle_3`.
|
|
It is initialized to the circle along which the sphere and the
|
|
plane intersect.
|
|
\pre The sphere and the plane intersect along a circle.
|
|
*/
|
|
Kernel::Circle_3 operator()
|
|
( Kernel::Plane_3 const& plane,
|
|
Kernel::Sphere_3 const& sphere);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCircle_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `circumcenter_grp`
|
|
|
|
*/
|
|
class ConstructCircumcenter_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compute the center of the smallest circle passing through the points `p` and `q`. Note : this is the same as `Kernel::ConstructMidpoint_2`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/*!
|
|
compute the center of the circle passing through the points `p`, `q`, and `r`.
|
|
\pre `p`, `q`, and `r` are not collinear.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/*!
|
|
compute the center of the circle passing through the three vertices of `t`.
|
|
\pre `t` is not degenerate.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Triangle_2&t);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructCircumcenter_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `circumcenter_grp`
|
|
|
|
*/
|
|
class ConstructCircumcenter_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
compute the center of the smallest circle passing through the points `p` and
|
|
`q`. Note : this is the same as `Kernel::ConstructMidpoint_3`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/*!
|
|
compute the center of the sphere passing through the points `p`, `q`, `r`,
|
|
and `s`. \pre `p`, `q`, `r`, and `s` are not coplanar.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/*!
|
|
compute the center of the sphere passing through the vertices of `t`.
|
|
\pre `t` is not degenerate.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Tetrahedron_3&t);
|
|
|
|
/*!
|
|
compute the center of the circle passing through the points `p`, `q` and `r`.
|
|
\pre `p`, `q` and `r` are not collinear.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/*!
|
|
compute the center of the circle passing through the vertices of `t`.
|
|
\pre `t` is not degenerate.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Triangle_3&t);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCircumcenter_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `cross_product_grp`
|
|
\sa `determinant_grp`
|
|
|
|
*/
|
|
class ConstructCrossProductVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
computes the cross product of `v` and `w`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3 &v,
|
|
const Kernel::Vector_3 &w);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructCrossProductVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructDifferenceOfVectors_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the vector `v1 - v2`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2 &v1,
|
|
const Kernel::Vector_2 &v2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructDifferenceOfVectors_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructDifferenceOfVectors_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the vector `v1 - v2`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3 &v1,
|
|
const Kernel::Vector_3 &v2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructDifferenceOfVectors_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Direction_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructDirection_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the direction of vector `v`.
|
|
*/
|
|
Kernel::Direction_2 operator()(const Kernel::Vector_2 &v);
|
|
|
|
/*!
|
|
introduces the direction of line `l`.
|
|
*/
|
|
Kernel::Direction_2 operator()(const Kernel::Line_2 &l);
|
|
|
|
/*!
|
|
introduces the direction of ray `r`.
|
|
*/
|
|
Kernel::Direction_2 operator()(const Kernel::Ray_2 &r);
|
|
|
|
/*!
|
|
introduces the direction of segment `s`.
|
|
*/
|
|
Kernel::Direction_2 operator()(const Kernel::Segment_2 &s);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructDirection_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Direction_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructDirection_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a direction initialized with the
|
|
direction of vector `v`.
|
|
*/
|
|
Kernel::Direction_3 operator()(const Kernel::Vector_3 &v);
|
|
|
|
/*!
|
|
introduces the direction of line `l`.
|
|
*/
|
|
Kernel::Direction_3 operator()(const Kernel::Line_3 &l);
|
|
|
|
/*!
|
|
introduces the direction of ray `r`.
|
|
*/
|
|
Kernel::Direction_3 operator()(const Kernel::Ray_3 &r);
|
|
|
|
/*!
|
|
introduces the direction of segment `s`.
|
|
*/
|
|
Kernel::Direction_3 operator()(const Kernel::Segment_3 &s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructDirection_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructDividedVector_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the vector `v/s`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2 &v,
|
|
const Kernel::RT s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructDividedVector_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructDividedVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the vector `v/s`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3 &v,
|
|
const Kernel::RT s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructDividedVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `equidistant_line_grp`
|
|
|
|
*/
|
|
class ConstructEquidistantLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
constructs the line which is at the same distance from the three points
|
|
`p`, `q` and `r`.
|
|
\pre `p`, `q` and `r` are not collinear.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r );
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructEquidistantLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructIsoCuboid_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces an iso-oriented cuboid with diagonal
|
|
opposite vertices `p` and `q` such that `p` is the
|
|
lexicographically smallest point in the cuboid.
|
|
*/
|
|
Kernel::Iso_cuboid_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Point_3 &q);
|
|
|
|
/*!
|
|
introduces an iso-oriented cuboid with diagonal
|
|
opposite vertices `p` and `q`. The `int` argument value is
|
|
only used to distinguish the two overloaded functions.
|
|
\pre `p.x()<=q.x()`, `p.y()<=q.y()` and `p.z()<=q.z()`.
|
|
*/
|
|
Kernel::Iso_cuboid_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Point_3 &q,
|
|
int);
|
|
|
|
/*!
|
|
introduces an iso-oriented cuboid `fo` whose
|
|
minimal \f$ x\f$ coordinate is the one of `left`, the
|
|
maximal \f$ x\f$ coordinate is the one of `right`, the
|
|
minimal \f$ y\f$ coordinate is the one of `bottom`, the
|
|
maximal \f$ y\f$ coordinate is the one of `top`, the
|
|
minimal \f$ z\f$ coordinate is the one of `far`, the
|
|
maximal \f$ z\f$ coordinate is the one of `close`.
|
|
*/
|
|
Kernel::Iso_cuboid_3
|
|
operator()(const Kernel::Point_3 &left,
|
|
const Kernel::Point_3 &right,
|
|
const Kernel::Point_3 &bottom,
|
|
const Kernel::Point_3 &top,
|
|
const Kernel::Point_3 &far,
|
|
const Kernel::Point_3 &close);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructIsoCuboid_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructIsoRectangle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
introduces an iso-oriented rectangle with diagonal
|
|
opposite vertices `p` and `q` such that `p` is the
|
|
lexicographically smallest point in the rectangle.
|
|
*/
|
|
Kernel::Iso_rectangle_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Point_2 &q);
|
|
|
|
/*!
|
|
introduces an iso-oriented rectangle with diagonal
|
|
opposite vertices `p` and `q`. The `int` argument value is
|
|
only used to distinguish the two overloaded functions.
|
|
\pre `p.x()<=q.x()` and `p.y()<=q.y()`.
|
|
*/
|
|
Kernel::Iso_rectangle_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Point_2 &q,
|
|
int);
|
|
|
|
/*!
|
|
introduces an iso-oriented rectangle `fo` whose
|
|
minimal \f$ x\f$ coordinate is the one of `left`, the
|
|
maximal \f$ x\f$ coordinate is the one of `right`, the
|
|
minimal \f$ y\f$ coordinate is the one of `bottom`, the
|
|
maximal \f$ y\f$ coordinate is the one of `top`.
|
|
*/
|
|
Kernel::Iso_rectangle_2
|
|
operator()(const Kernel::Point_2 &left,
|
|
const Kernel::Point_2 &right,
|
|
const Kernel::Point_2 &bottom,
|
|
const Kernel::Point_2 &top);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructIsoRectangle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructLiftedPoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns a point `q` on plane `h`, such that the projection of
|
|
this point onto the \f$ xy\f$-plane is `p`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Plane_3& h,
|
|
const Kernel::Point_2& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructLiftedPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a line passing through the points `p` and `q`.
|
|
Line is directed from `p` to `q`.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Point_2 &q);
|
|
|
|
/*!
|
|
introduces a line passing through point `p` with
|
|
direction `d`.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Direction_2&d);
|
|
|
|
/*!
|
|
introduces a line passing through point `p` and
|
|
oriented by `v`.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Vector_2&v);
|
|
|
|
/*!
|
|
introduces a line supporting the segment `s`,
|
|
oriented from source to target.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Segment_2 &s);
|
|
|
|
/*!
|
|
introduces a line supporting the ray `r`,
|
|
with same orientation.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Ray_2 &r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a line passing through the points `p` and `q`.
|
|
Line is directed from `p` to `q`.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Point_3 &q);
|
|
|
|
/*!
|
|
introduces a line passing through point `p` and
|
|
oriented by `v`.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Vector_3&v);
|
|
|
|
/*!
|
|
introduces a line passing through point `p` with
|
|
direction `d`.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Direction_3&d);
|
|
|
|
/*!
|
|
returns the line supporting the segment `s`,
|
|
oriented from source to target.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Segment_3 &s);
|
|
|
|
/*!
|
|
returns the line supporting the ray `r`, with the
|
|
same orientation.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Ray_3 &r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructMaxVertex_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`r` with lexicographically largest coordinates.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Iso_rectangle_2 &r);
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`s` with lexicographically largest coordinates.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Segment_2 &s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructMaxVertex_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructMaxVertex_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`c` with lexicographically largest coordinates.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Iso_cuboid_3 &c);
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`s` with lexicographically largest coordinates.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Segment_3 &s);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructMaxVertex_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `midpoint_grp`
|
|
|
|
*/
|
|
class ConstructMidpoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
computes the midpoint of the segment `pq`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q );
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructMidpoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `midpoint_grp`
|
|
|
|
*/
|
|
class ConstructMidpoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
computes the midpoint of the segment `pq`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q );
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructMidpoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructMinVertex_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`r` with lexicographically smallest coordinates.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Iso_rectangle_2 &r);
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`s` with lexicographically smallest coordinates.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Segment_2 &s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructMinVertex_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructMinVertex_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`c` with lexicographically smallest coordinates.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Iso_cuboid_3 &c);
|
|
|
|
/*!
|
|
returns the vertex of
|
|
`s` with lexicographically smallest coordinates.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Segment_3 &s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructMinVertex_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `normal_grp`
|
|
\sa `unit_normal_grp`
|
|
|
|
*/
|
|
class ConstructNormal_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
computes the normal of the vectors `q-p` and `r-p`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r );
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructNormal_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\deprecated This class is deprecated since \cgal 4.3 and type safe ways should be preferred.
|
|
|
|
\sa `CGAL::Object`
|
|
\sa `Kernel::Assign_2`
|
|
\sa `Kernel::Assign_3`
|
|
\sa `Kernel::Object_2`
|
|
\sa `Kernel::Object_3`
|
|
|
|
*/
|
|
class ConstructObject_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
constructs an object that contains `t` and returns it.
|
|
*/
|
|
template <class T>
|
|
Object_2 operator()(const T& t);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructObject_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\deprecated This class is deprecated since \cgal 4.3 and type safe ways should be preferred.
|
|
\sa `CGAL::Object`
|
|
\sa `Kernel::Assign_2`
|
|
\sa `Kernel::Assign_3`
|
|
\sa `Kernel::Object_2`
|
|
\sa `Kernel::Object_3`
|
|
|
|
*/
|
|
class ConstructObject_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
constructs an object that contains `t` and returns it.
|
|
*/
|
|
template <class T>
|
|
Object_3 operator()(const T& t);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructObject_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeCircle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the circle with the same center and squared radius as
|
|
`c`, but with opposite orientation.
|
|
*/
|
|
Kernel::Circle_2 operator()(const Kernel::Circle_2& c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeCircle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Direction_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeDirection_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the direction opposite to `d`.
|
|
*/
|
|
Kernel::Direction_2 operator()(const
|
|
Kernel::Direction_2& d);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeDirection_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Direction_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeDirection_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the direction opposite to `d`.
|
|
*/
|
|
Kernel::Direction_3 operator()(const
|
|
Kernel::Direction_3& d);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeDirection_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the line representing the same set of points as `l`,
|
|
but with opposite direction.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Line_2& l);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the line representing the same set of points as `l`,
|
|
but with opposite direction.
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Line_3& l);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositePlane_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the plane representing the same set of points as `p`,
|
|
but with opposite orientation.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Plane_3& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositePlane_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeRay_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the ray with the same source as `r`, but in opposite direction.
|
|
*/
|
|
Kernel::Ray_2 operator()(const Kernel::Ray_2& r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeRay_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeRay_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the ray with the same source as `r`, but in opposite direction.
|
|
*/
|
|
Kernel::Ray_3 operator()(const Kernel::Ray_3& r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeRay_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeSegment_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the segment representing the same set of points as `s`,
|
|
but with opposite orientation.
|
|
*/
|
|
Kernel::Segment_2 operator()(const Kernel::Segment_2& s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeSegment_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeSegment_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the segment representing the same set of points as `s`,
|
|
but with opposite orientation.
|
|
*/
|
|
Kernel::Segment_3 operator()(const Kernel::Segment_3& s);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeSegment_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeSphere_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the sphere with the same center and squared radius as
|
|
`s`, but with opposite orientation.
|
|
*/
|
|
Kernel::Sphere_3 operator()(const Kernel::Sphere_3& s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeSphere_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeTriangle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the triangle with opposite orientation to `t`
|
|
(this flips the positive and the negative side, but
|
|
not bounded and unbounded side).
|
|
*/
|
|
Kernel::Triangle_2 operator()(const Kernel::Triangle_2& t);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeTriangle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeVector_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the vector `-v`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2& v);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeVector_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructOppositeVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the vector `-v`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3& v);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOppositeVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `Kernel::ConstructCrossProductVector_3`
|
|
|
|
*/
|
|
class ConstructOrthogonalVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns a vector that is orthogonal to the plane `p` and directed
|
|
to the positive side of `p`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Plane_3& p);
|
|
|
|
/*!
|
|
returns a vector that is orthogonal to the plane defined by
|
|
`Kernel::ConstructPlane_3()(p, q, r)` and directed
|
|
to the positive side of this plane.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q, const Kernel::Point_3& r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructOrthogonalVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Direction_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructPerpendicularDirection_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a direction orthogonal to `d`. If `o` is
|
|
\ref CGAL::CLOCKWISE, `d` is rotated clockwise; if `o` is
|
|
\ref CGAL::COUNTERCLOCKWISE, `d` is rotated counterclockwise.
|
|
\pre `o` is not \ref CGAL::COLLINEAR.
|
|
*/
|
|
Kernel::Direction_2 operator()(const Kernel::Direction_2& d,
|
|
Orientation o);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPerpendicularDirection_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructPerpendicularLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the line perpendicular to `l` and passing through `p`,
|
|
where the direction is the direction of `l` rotated
|
|
counterclockwise by 90 degrees.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Line_2& l,
|
|
const Kernel::Point_2& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPerpendicularLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructPerpendicularLine_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the line that is perpendicular to `pl` and that
|
|
passes through point `p`. The line is oriented from
|
|
the negative to the positive side of `pl`
|
|
*/
|
|
Kernel::Line_3 operator()(const Kernel::Plane_3& pl,
|
|
const Kernel::Point_3& p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPerpendicularLine_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructPerpendicularPlane_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the plane perpendicular to `l` passing through `p`,
|
|
such that the normal direction of the plane coincides with the direction of
|
|
the line.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Line_3& l,
|
|
const Kernel::Point_3& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPerpendicularPlane_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructPerpendicularVector_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns `v` rotated clockwise by 90 degrees, if `o` is
|
|
\ref CGAL::CLOCKWISE, and rotated counterclockwise otherwise.
|
|
\pre `o` is not \ref CGAL::COLLINEAR.
|
|
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2& v,
|
|
Orientation o);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPerpendicularVector_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructPlane_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
creates a plane defined by the equation
|
|
\f$ a\, x +b\, y +c\, z + d = 0\f$.
|
|
Notice that it is degenerate if \f$ a = b = c = 0\f$.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::RT &a,
|
|
const Kernel::RT &b,
|
|
const Kernel::RT &c,
|
|
const Kernel::RT &d);
|
|
|
|
/*!
|
|
creates a plane passing through the points `p`,
|
|
`q` and `r`. The plane is oriented such that `p`,
|
|
`q` and `r` are oriented in a positive sense
|
|
(that is counterclockwise) when seen from the positive side of the plane.
|
|
Notice that it is degenerate if the points are collinear.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Point_3 &q,
|
|
const Kernel::Point_3 &r);
|
|
|
|
/*!
|
|
introduces a plane that passes through point `p` and
|
|
that has as an orthogonal direction equal to `d`.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Direction_3&d);
|
|
|
|
/*!
|
|
introduces a plane that passes through point `p` and
|
|
that is orthogonal to `v`.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Vector_3 &v);
|
|
|
|
/*!
|
|
introduces a plane that is defined through the three points
|
|
`l.point(0)`, `l.point(1)` and `p`.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Line_3 &l,
|
|
const Kernel::Point_3 &p);
|
|
|
|
/*!
|
|
introduces a plane that is defined through the three points
|
|
`r.point(0)`, `r.point(1)` and `p`.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Ray_3 &r,
|
|
const Kernel::Point_3 &p);
|
|
|
|
/*!
|
|
introduces a plane that is defined through the three points
|
|
`s.source()`, `s.target()` and `p`.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Segment_3 &s,
|
|
const Kernel::Point_3 &p);
|
|
|
|
/*!
|
|
introduces a plane that is defined as the plane containing the circle.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Circle_3 &c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPlane_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructPointOn_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an arbitrary point on `l`. It holds
|
|
`point(i) == point(j)`, iff `i==j`.
|
|
Furthermore, is directed from `point(i)`
|
|
to `point(j)`, for all `i < j`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Line_2& l,
|
|
int i);
|
|
|
|
/*!
|
|
returns a point on `r`. `point(0)` is the source,
|
|
`point(i)`, with `i>0`, is different from the
|
|
source. \pre `i>= 0`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Ray_2& r,
|
|
int i);
|
|
|
|
/*!
|
|
returns source or target of `s`: `point(0)` returns
|
|
the source of `s`, `point(1)` returns the target of `s`.
|
|
The parameter `i` is taken modulo 2, which gives
|
|
easy access to the other end point.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Segment_2& s,
|
|
int i);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPointOn_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructPointOn_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns an arbitrary point on `l`. It holds
|
|
`point(i) == point(j)`, iff `i==j`.
|
|
Furthermore, is directed from `point(i)`
|
|
to `point(j)`, for all `i < j`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Line_3& l,
|
|
int i);
|
|
|
|
/*!
|
|
returns an arbitrary point on `h`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Plane_3& h);
|
|
|
|
/*!
|
|
returns a point on `r`. `point(0)` is the source,
|
|
`point(i)`, with `i>0`, is different from the
|
|
source. \pre `i >= 0`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Ray_3& r,
|
|
int i);
|
|
|
|
/*!
|
|
returns source or target of `s`: `point(0)` returns
|
|
the source of `s`, `point(1)` returns the target of `s`.
|
|
The parameter `i` is taken modulo 2, which gives
|
|
easy access to the other end point.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Segment_3& s,
|
|
int i);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructPointOn_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Point_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructPoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
introduces a variable with Cartesian coordinates
|
|
\f$ (0,0)\f$.
|
|
*/
|
|
Kernel::Point_2 operator()(const CGAL::Origin &CGAL::ORIGIN);
|
|
|
|
/*!
|
|
extracts the bare point from the weighted point.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Weighted_point_2& wp);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructPoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Point_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructPoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a point with Cartesian coordinates\f$ (0,0,0)\f$.
|
|
*/
|
|
Kernel::Point_3 operator()(const CGAL::Origin &CGAL::ORIGIN);
|
|
|
|
/*!
|
|
extracts the bare point from the weighted point.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Weighted_point_3& wp);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructProjectedPoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the orthogonal projection of `p` onto `l`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Line_2& l,
|
|
const Kernel::Point_2& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructProjectedPoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructProjectedPoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the orthogonal projection of `p` onto `l`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Line_3& l,
|
|
const Kernel::Point_3& p);
|
|
|
|
/*!
|
|
returns the orthogonal projection of `p` onto `h`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Plane_3& h,
|
|
const Kernel::Point_3& p);
|
|
|
|
/*!
|
|
returns the point of `s` that is the closest to `p`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Segment_3& s,
|
|
const Kernel::Point_3& p);
|
|
|
|
/*!
|
|
returns the point of `t` that is the closest to `p`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Triangle_3& h,
|
|
const Kernel::Point_3& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructProjectedPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructProjectedXYPoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the image point of the projection of `p` under an affine
|
|
transformation, which maps `h` onto the \f$ xy\f$-plane, with the
|
|
\f$ z\f$-coordinate removed.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Plane_3& h,
|
|
const Kernel::Point_3& p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructProjectedXYPoint_2 */
|
|
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructRadicalAxis_2
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the radical line of the weighted points.
|
|
*/
|
|
Kernel::Line_2 operator()(const Kernel::Weighted_point_2& wp1,
|
|
const Kernel::Weighted_point_2& wp2);
|
|
/// @}
|
|
};
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructRadicalLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the radical line of the circles.
|
|
\pre The two circles don't have the same center.
|
|
*/
|
|
Kernel::Line_2 operator()
|
|
(const Kernel::Circle_2& c1,
|
|
const Kernel::Circle_2& c2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructRadicalLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two argument)
|
|
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructRadicalPlane_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the radical plane of the spheres.
|
|
\pre The two spheres don't have the same center.
|
|
*/
|
|
Kernel::Plane_3 operator()
|
|
(const Kernel::Sphere_3& sphere1,
|
|
const Kernel::Sphere_3& sphere2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructRadicalPlane_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructRay_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a ray
|
|
with source `p` and passing through point `q`.
|
|
*/
|
|
Kernel::Ray_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Point_2 &q);
|
|
|
|
/*!
|
|
introduces a ray starting at source `p` with
|
|
the direction given by `v`.
|
|
*/
|
|
Kernel::Ray_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Vector_2 &v);
|
|
|
|
/*!
|
|
introduces a ray starting at source `p` with
|
|
direction `d`.
|
|
*/
|
|
Kernel::Ray_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Direction_2 &d);
|
|
|
|
/*!
|
|
introduces a ray starting at source `p` with
|
|
the same direction as `l`.
|
|
*/
|
|
Kernel::Ray_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Line_2 &l);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructRay_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructRay_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a ray
|
|
with source `p` and passing through point `q`.
|
|
*/
|
|
Kernel::Ray_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Point_3 &q);
|
|
|
|
/*!
|
|
introduces a ray with source `p` and with
|
|
the direction given by `v`.
|
|
*/
|
|
Kernel::Ray_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Vector_3 &v);
|
|
|
|
/*!
|
|
introduces a ray with source `p` and with
|
|
direction `d`.
|
|
*/
|
|
Kernel::Ray_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Direction_3 &d);
|
|
|
|
/*!
|
|
introduces a ray with source `p` and with
|
|
the same direction as `l`.
|
|
*/
|
|
Kernel::Ray_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Line_3 &l);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructRay_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
*/
|
|
class ConstructScaledVector_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
produces the vector `v` scaled by a factor `scale`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2 &v, const Kernel::RT& scale);
|
|
|
|
/*!
|
|
produces the vector `v` scaled by a factor `scale`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2 &v, const Kernel::FT& scale);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructScaledVector_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructScaledVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
produces the vector `v` scaled by a factor `scale`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3 &v,
|
|
const Kernel::RT& scale);
|
|
|
|
/*!
|
|
produces the vector `v` scaled by a factor `scale`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3 &v,
|
|
const Kernel::FT& scale);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructScaledVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructSecondPoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns a point different from the source on
|
|
the ray `r`.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Ray_2 &r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSecondPoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructSecondPoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns a point different from the source on
|
|
the ray `r`.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Ray_3 &r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSecondPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructSegment_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a segment with source `p`
|
|
and target `q`. The segment is directed from the source towards
|
|
the target.
|
|
*/
|
|
Kernel::Segment_2 operator()(const Kernel::Point_2 &p, const Kernel::Point_2 &q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSegment_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructSegment_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a segment with source `p`
|
|
and target `q`. It is directed from the source towards
|
|
the target.
|
|
*/
|
|
Kernel::Segment_3 operator()(const Kernel::Point_3 &p, const Kernel::Point_3 &q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSegment_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructSource_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the source of
|
|
the segment `s`.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Segment_2 &s);
|
|
|
|
/*!
|
|
returns the source of
|
|
the ray `r`.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Ray_2 &r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSource_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructSource_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the source of
|
|
the segment `s`.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Segment_3 &s);
|
|
|
|
/*!
|
|
returns the source of
|
|
the ray `r`.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Ray_3 &r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSource_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructSphere_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a sphere initialized to the sphere with center `center`,
|
|
squared radius `squared_radius` and orientation
|
|
`orientation`.
|
|
\pre `orientation` \f$ \neq\f$ \ref CGAL::COPLANAR, and furthermore, `squared_radius` \f$ \geq\f$ 0.
|
|
*/
|
|
Kernel::Sphere_3 operator()(const Kernel::Point_3 & center,
|
|
const Kernel::FT & squared_radius,
|
|
const Orientation & orientation = COUNTERCLOCKWISE);
|
|
|
|
/*!
|
|
introduces a sphere initialized to the unique sphere which passes
|
|
through the points `p`, `q`, `r` and `s`. The
|
|
orientation of the sphere is the orientation of the point quadruple
|
|
`p`, `q`, `r`, `s`.
|
|
\pre `p`, `q`, `r`, and `s` are not coplanar.
|
|
*/
|
|
Kernel::Sphere_3 operator()( const Kernel::Point_3 & p,
|
|
const Kernel::Point_3 & q,
|
|
const Kernel::Point_3 & r,
|
|
const Kernel::Point_3 & s);
|
|
|
|
/*!
|
|
introduces a sphere initialized to the smallest sphere which passes
|
|
through the points `p`, `q`, and `r`. The orientation of
|
|
the sphere is `o`. \pre `o` is not \ref CGAL::COPLANAR.
|
|
*/
|
|
Kernel::Sphere_3 operator()(const Kernel::Point_3 & p,
|
|
const Kernel::Point_3 & q,
|
|
const Kernel::Point_3 & r,
|
|
const Orientation& o = COUNTERCLOCKWISE);
|
|
|
|
/*!
|
|
introduces a sphere initialized to the smallest sphere which passes
|
|
through the points `p` and `q`. The orientation of
|
|
the sphere is `o`. \pre `o` is not \ref CGAL::COPLANAR.
|
|
*/
|
|
Kernel::Sphere_3 operator()(const Kernel::Point_3 & p,
|
|
const Kernel::Point_3 & q,
|
|
const Orientation & o = COUNTERCLOCKWISE);
|
|
|
|
/*!
|
|
introduces a sphere `s` initialized to the sphere with center
|
|
`center`, squared radius zero and orientation `orientation`.
|
|
\pre `orientation` \f$ \neq\f$ \ref CGAL::COPLANAR.
|
|
\post `s.is_degenerate()` = `true`.
|
|
*/
|
|
Kernel::Sphere_3 operator()( const Kernel::Point_3 & center,
|
|
const Orientation & orientation = COUNTERCLOCKWISE);
|
|
|
|
/*!
|
|
introduces a sphere initialized to the diametral sphere of
|
|
the circle.
|
|
*/
|
|
Kernel::Sphere_3 operator()( const Kernel::Circle_3 &c);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSphere_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructSumOfVectors_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
introduces the vector `v1 + v2`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Vector_2 &v1,
|
|
const Kernel::Vector_2 &v2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSumOfVectors_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructSumOfVectors_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the vector `v1 + v2`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Vector_3 &v1,
|
|
const Kernel::Vector_3 &v2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructSumOfVectors_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructSupportingPlane_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the supporting plane of `t`, with same orientation.
|
|
*/
|
|
Kernel::Plane_3 operator()(const Kernel::Triangle_3& t);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructSupportingPlane_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructTarget_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the target of
|
|
the segment `s`.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Segment_2 &s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTarget_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructTarget_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the target of
|
|
the segment `s`.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Segment_3 &s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTarget_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructTetrahedron_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a tetrahedron with vertices `p_0`, `p_1`, `p_2` and `p_3`.
|
|
*/
|
|
Kernel::Tetrahedron_3 operator()(const Kernel::Point_3 &p0,
|
|
const Kernel::Point_3 &p1,
|
|
const Kernel::Point_3 &p2,
|
|
const Kernel::Point_3 &p3);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTetrahedron_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Point_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructTranslatedPoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the point obtained by translating `p` by the vector
|
|
`v`.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Point_2& p,
|
|
const Kernel::Vector_2& v);
|
|
|
|
/*!
|
|
returns the point obtained by translating a point at the origin by the vector
|
|
`v`.
|
|
*/
|
|
Kernel::Point_2 operator()(const CGAL::Origin& o,
|
|
const Kernel::Vector_2& v);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTranslatedPoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Point_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructTranslatedPoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the point obtained by translating `p` by the vector
|
|
`v`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Point_3& p,
|
|
const Kernel::Vector_3& v);
|
|
|
|
/*!
|
|
returns the point obtained by translating a point at the origin by the vector
|
|
`v`.
|
|
*/
|
|
Kernel::Point_3 operator()(const Origin& o,
|
|
const Kernel::Vector_3& v);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTranslatedPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructTriangle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a triangle with vertices `p`, `q` and `r`.
|
|
*/
|
|
Kernel::Triangle_2 operator()(const Kernel::Point_2 &p,
|
|
const Kernel::Point_2 &q,
|
|
const Kernel::Point_2 &r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTriangle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructTriangle_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
introduces a triangle with vertices `p`, `q` and `r`.
|
|
*/
|
|
Kernel::Triangle_3 operator()(const Kernel::Point_3 &p,
|
|
const Kernel::Point_3 &q,
|
|
const Kernel::Point_3 &r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructTriangle_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `normal_grp`
|
|
\sa `unit_normal_grp`
|
|
|
|
*/
|
|
class ConstructUnitNormal_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
computes the unit normal of the vectors`q-p` and `r-p`.
|
|
This requires that `Kernel::FT` supports the `sqrt` operation.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Point_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r );
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructUnitNormal_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
\sa `Kernel::ConstructScaledVector_2`
|
|
|
|
*/
|
|
class ConstructVector_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
introduces the vector `b-a`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Point_2 &a,
|
|
const Kernel::Point_2 &b);
|
|
|
|
/*!
|
|
introduces the vector `b`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const CGAL::Origin &o,
|
|
const Kernel::Point_2 &b);
|
|
|
|
/*!
|
|
introduces the vector `-a`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Point_2 &a,
|
|
const CGAL::Origin &o);
|
|
|
|
/*!
|
|
introduces the vector `s.target()-s.source()`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Segment_2 &s);
|
|
|
|
/*!
|
|
introduces a vector having the same direction as `r`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Ray_2 &r);
|
|
|
|
/*!
|
|
introduces a vector having the same direction as `l`.
|
|
*/
|
|
Kernel::Vector_2 operator()(const Kernel::Line_2 &l);
|
|
|
|
/*!
|
|
introduces a null vector .
|
|
*/
|
|
Kernel::Vector_2 operator()(const Null_vector &NULL_VECTOR);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructVector_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
\sa `Kernel::ConstructScaledVector_3`
|
|
|
|
*/
|
|
class ConstructVector_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces the vector `b-a`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Point_3 &a,
|
|
const Kernel::Point_3 &b);
|
|
|
|
/*!
|
|
introduces the vector `b`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const CGAL::Origin &o,
|
|
const Kernel::Point_3 &b);
|
|
|
|
/*!
|
|
introduces the vector `-a`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Point_3 &a,
|
|
const CGAL::Origin &o);
|
|
|
|
/*!
|
|
introduces the vector `s.target()-s.source()`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Segment_3 &s);
|
|
|
|
/*!
|
|
introduces a vector having the same direction as `r`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Ray_3 &r);
|
|
|
|
/*!
|
|
introduces a vector having the same direction as `l`.
|
|
*/
|
|
Kernel::Vector_3 operator()(const Kernel::Line_3 &l);
|
|
|
|
/*!
|
|
introduces a null vector .
|
|
*/
|
|
Kernel::Vector_3 operator()(const Null_vector &NULL_VECTOR);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructVector_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructVertex_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns source or target of `s`: `fo``(s,0)`
|
|
returns the source of `s`, `fo``(s,1)` returns the target
|
|
of `s`. The parameter `i` is taken modulo 2.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Segment_2
|
|
&s, int i);
|
|
|
|
/*!
|
|
returns the i'th vertex of
|
|
`r` in counterclockwise order, starting with the lower left
|
|
vertex. The parameter `i` is taken modulo 4.
|
|
*/
|
|
Kernel::Point_2 operator()(const
|
|
Kernel::Iso_rectangle_2 &r, int i);
|
|
|
|
/*!
|
|
returns the i'th vertex of `t`. The parameter
|
|
`i` is taken modulo 3.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Triangle_2
|
|
&t, int i);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructVertex_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\image html IsoCuboid.png
|
|
\image latex IsoCuboid.png
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructVertex_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns source or target of `s`: `fo``(s,0)`
|
|
returns the source of `s`, `fo``(s,1)` returns the target
|
|
of `s`. The parameter `i` is taken modulo 2.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Segment_3
|
|
&s, int i);
|
|
|
|
/*!
|
|
returns the i'th vertex of
|
|
`c`, as indicated in the figure below. The parameter `i` is
|
|
taken modulo 8.
|
|
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Iso_cuboid_3 &c, int i);
|
|
|
|
/*!
|
|
returns the i'th vertex of `t`. The parameter
|
|
`i` is taken modulo 3.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Triangle_3
|
|
&t, int i);
|
|
|
|
/*!
|
|
returns the i'th vertex of
|
|
`t`. The parameter `i` is taken modulo 4.
|
|
*/
|
|
Kernel::Point_3 operator()(const
|
|
Kernel::Tetrahedron_3 &t, int i);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::ConstructVertex_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
|
|
*/
|
|
class ConstructWeightedCircumcenter_2
|
|
{
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
constructs the point which is the center of the smallest orthogonal circle to the input weighted points.
|
|
*/
|
|
Kernel::Point_2 operator()(const Kernel::Weighted_point_2& p,
|
|
const Kernel::Weighted_point_2& q,
|
|
const Kernel::Weighted_point_2& s);
|
|
|
|
}; /* end Kernel::ConstructWeightedCircumcenter_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructWeightedCircumcenter_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
constructs the point which is the center of the smallest orthogonal sphere to the input weighted points.
|
|
*/
|
|
Kernel::Point_3 operator()(const Kernel::Weighted_point_3& p,
|
|
const Kernel::Weighted_point_3& q,
|
|
const Kernel::Weighted_point_3& r,
|
|
const Kernel::Weighted_point_3& s);
|
|
|
|
}; /* end Kernel::ConstructWeightedCircumcenter_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
*/
|
|
class ConstructWeightedPoint_2
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a weighted point with Cartesian coordinates
|
|
\f$ (0,0)\f$ and weight \f$ 0 \f$.
|
|
*/
|
|
Kernel::Weighted_point_2 operator()(const CGAL::Origin &CGAL::ORIGIN);
|
|
|
|
/*!
|
|
introduces a weighted point with Cartesian coordinates
|
|
those of \f$ p \f$ and weight \f$ 0 \f$.
|
|
*/
|
|
Kernel::Weighted_point_2 operator()(const Kernel::Point_2& p);
|
|
|
|
/*!
|
|
introduces a weighted point with Cartesian coordinates
|
|
those of \f$ p \f$ and weight \f$ w \f$.
|
|
*/
|
|
Kernel::Weighted_point_2 operator()(const Kernel::Point_2& p, const Kernel::FT& w);
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructWeightedPoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
|
|
*/
|
|
class ConstructWeightedPoint_3
|
|
{
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
introduces a weighted point with Cartesian coordinates
|
|
\f$ (0,0,0)\f$ and weight \f$ 0 \f$.
|
|
*/
|
|
Kernel::Weighted_point_3 operator()(const CGAL::Origin &CGAL::ORIGIN);
|
|
|
|
/*!
|
|
introduces a weighted point with Cartesian coordinates
|
|
those of \f$ p \f$ and weight \f$ 0 \f$.
|
|
*/
|
|
Kernel::Weighted_point_3 operator()(const Kernel::Point_3& p);
|
|
|
|
/*!
|
|
introduces a weighted point with Cartesian coordinates
|
|
those of \f$ p \f$ and weight \f$ w \f$.
|
|
*/
|
|
Kernel::Weighted_point_3 operator()(const Kernel::Point_3& p, const Kernel::FT& w);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::ConstructWeightedPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `coplanar_orientation_grp`
|
|
|
|
*/
|
|
class CoplanarOrientation_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
If `p`, `q`, and `s` are collinear, then \ref CGAL::COLLINEAR is returned.
|
|
|
|
If not, let `P` be the plane defined by the points `p`, `q`,
|
|
and `r`. Note that the order defines the orientation of
|
|
`P`. If `P` and the plane defined by `p`, `q`, and `s`
|
|
have the same orientation, then \ref CGAL::POSITIVE is returned;
|
|
otherwise \ref CGAL::NEGATIVE is returned.
|
|
|
|
\pre `p`, `q`, `r`, and `s` are coplanar and `p`, `q`, and `r` are not collinear.
|
|
*/
|
|
Orientation operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/*!
|
|
If `p`, `q`, and `r` are collinear, then \ref CGAL::COLLINEAR is returned.
|
|
|
|
If not, let `P` be the plane defined by the points `p`, `q`, and `r`.
|
|
The return value in this case is either \ref CGAL::POSITIVE or \ref CGAL::NEGATIVE,
|
|
but we don't specify it explicitly.
|
|
However, we guarantee that all calls to this predicate over 3 points in `P`
|
|
will return a coherent orientation if considered as a 2D orientation in `P`.
|
|
*/
|
|
Orientation operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CoplanarOrientation_3 */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `coplanar_side_of_bounded_circle_grp`
|
|
|
|
*/
|
|
class CoplanarSideOfBoundedCircle_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the bounded side of the circle defined
|
|
by `p`, `q`, and `r` on which `s` lies.
|
|
\pre `p`, `q`, `r`, and `s` are coplanar and `p`, `q`, and `r` are not collinear.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CoplanarSideOfBoundedCircle_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `coplanar_grp`
|
|
|
|
*/
|
|
class Coplanar_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, if `p`, `q`, `r`, and `s` are coplanar.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Coplanar_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `CGAL::Direction_2<Kernel>`
|
|
|
|
*/
|
|
class CounterclockwiseInBetween_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns `true` iff `d` is not equal to `d1`, and
|
|
while rotating counterclockwise starting at `d1`,
|
|
`d` is reached strictly before `d2` is reached.
|
|
Note that true is returned if `d1` == `d2`, unless
|
|
also `d` == `d1`.
|
|
*/
|
|
bool operator()(const Kernel::Direction_2&d,
|
|
const Kernel::Direction_2&d1,
|
|
const Kernel::Direction_2&d2);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::CounterclockwiseInBetween_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `do_intersect_grp`
|
|
|
|
*/
|
|
class DoIntersect_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
determines if two geometrical objects of type
|
|
`Type1` and `Type2` intersect or not, for all pairs `Type1` and `Type2`, where
|
|
the types `Type1` and `Type2` can be any of the
|
|
following:
|
|
|
|
- `Kernel::Point_2`
|
|
- `Kernel::Line_2`
|
|
- `Kernel::Ray_2`
|
|
- `Kernel::Segment_2`
|
|
- `Kernel::Triangle_2`
|
|
- `Kernel::Iso_rectangle_2`
|
|
|
|
*/
|
|
bool operator()(Type1 obj1, Type2 obj2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::DoIntersect_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `do_intersect_grp`
|
|
|
|
*/
|
|
class DoIntersect_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
determines if two geometrical objects of type
|
|
`Type1` and `Type2` intersect or not, for all pairs `Type1` and `Type2`, where
|
|
the types `Type1` and
|
|
`Type2` can be any of the following:
|
|
|
|
- `Kernel::Plane_3`
|
|
- `Kernel::Line_3`
|
|
- `Kernel::Ray_3`
|
|
- `Kernel::Segment_3`
|
|
- `Kernel::Triangle_3`
|
|
- `CGAL::Bbox_3`
|
|
|
|
and also for `Type1` and `Type2` of respective types
|
|
|
|
- `Kernel::Triangle_3` and `Kernel::Tetrahedron_3`
|
|
- `Kernel::Plane_3` and `Kernel::Sphere_3` (or the contrary)
|
|
- `Kernel::Sphere_3` and `Kernel::Sphere_3`.
|
|
|
|
*/
|
|
bool operator()(Type1 obj1, Type2 obj2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::DoIntersect_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_xy_grp`
|
|
|
|
*/
|
|
class EqualXY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff `p` and `q` have the same Cartesian \f$ x\f$-coordinate
|
|
and the same Cartesian \f$ y\f$-coordinate.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::EqualXY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `x_equal_grp`
|
|
|
|
*/
|
|
class EqualX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` and `q` have the same Cartesian \f$ x\f$-coordinate.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::EqualX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `x_equal_grp`
|
|
|
|
*/
|
|
class EqualX_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` and `q` have the same Cartesian \f$ x\f$-coordinate.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::EqualX_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `y_equal_grp`
|
|
|
|
*/
|
|
class EqualY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` and `q` have the same Cartesian \f$ y\f$-coordinate.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::EqualY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `y_equal_grp`
|
|
|
|
*/
|
|
class EqualY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` and `q` have the same Cartesian \f$ y\f$-coordinate.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::EqualY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `z_equal_grp`
|
|
|
|
*/
|
|
class EqualZ_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` and `q` have the same Cartesian \f$ z\f$-coordinate.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::EqualZ_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Direction_2<Kernel>`
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Point_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
\sa `CGAL::Vector_2<Kernel>`
|
|
|
|
*/
|
|
class Equal_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide the following operations. For each of
|
|
/// them, it returns `true` iff `x` and `y` are equal.
|
|
/// @{
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Point_2& x,
|
|
const Kernel::Point_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Vector_2& x,
|
|
const Kernel::Vector_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Direction_2& x,
|
|
const Kernel::Direction_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Line_2& x,
|
|
const Kernel::Line_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Ray_2& x,
|
|
const Kernel::Ray_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Segment_2& x,
|
|
const Kernel::Segment_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Circle_2& x,
|
|
const Kernel::Circle_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2& x,
|
|
const Kernel::Triangle_2& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Iso_rectangle_2& x,
|
|
const Kernel::Iso_rectangle_2& y);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Equal_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Direction_3<Kernel>`
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Point_3<Kernel>`
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
\sa `CGAL::Vector_3<Kernel>`
|
|
|
|
*/
|
|
class Equal_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide the following operations. For each of
|
|
/// them, it returns `true` iff `x` and `y` are equal.
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Point_3& x,
|
|
const Kernel::Point_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Vector_3& x,
|
|
const Kernel::Vector_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Direction_3& x,
|
|
const Kernel::Direction_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Line_3& x,
|
|
const Kernel::Line_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Plane_3& x,
|
|
const Kernel::Plane_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Ray_3& x,
|
|
const Kernel::Ray_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Segment_3& x,
|
|
const Kernel::Segment_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Circle_3& x,
|
|
const Kernel::Circle_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3& x,
|
|
const Kernel::Sphere_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Triangle_3& x,
|
|
const Kernel::Triangle_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3& x,
|
|
const Kernel::Tetrahedron_3& y);
|
|
|
|
/*!
|
|
|
|
*/
|
|
bool operator()(const Kernel::Iso_cuboid_3& x,
|
|
const Kernel::Iso_cuboid_3& y);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Equal_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
\sa `::Kernel::HasOnBoundedSide_2`
|
|
\sa `::Kernel::HasOnUnboundedSide_2`
|
|
\sa `::Kernel::BoundedSide_2`
|
|
|
|
*/
|
|
class HasOnBoundary_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the boundary of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the boundary of `i`.
|
|
*/
|
|
bool operator()(const Kernel::Iso_rectangle_2&i,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the boundary of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2&t,
|
|
const Kernel::Point_2&p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnBoundary_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
\sa `::Kernel::HasOnBoundedSide_3`
|
|
\sa `::Kernel::HasOnUnboundedSide_3`
|
|
\sa `::Kernel::BoundedSide_3`
|
|
|
|
*/
|
|
class HasOnBoundary_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the boundary of `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the boundary of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the boundary of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Iso_cuboid_3&c,
|
|
const Kernel::Point_3&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnBoundary_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
\sa `::Kernel::HasOnUnboundedSide_2`
|
|
\sa `::Kernel::HasOnBoundary_2`
|
|
\sa `::Kernel::BoundedSide_2`
|
|
|
|
*/
|
|
class HasOnBoundedSide_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the bounded side of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the bounded side of `i`.
|
|
*/
|
|
bool operator()(const Kernel::Iso_rectangle_2&i,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the bounded side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2&t,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnBoundedSide_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
\sa `::Kernel::HasOnUnboundedSide_3`
|
|
\sa `::Kernel::HasOnBoundary_3`
|
|
\sa `::Kernel::BoundedSide_3`
|
|
|
|
*/
|
|
class HasOnBoundedSide_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the bounded side of `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the bounded side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the bounded side of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Iso_cuboid_3&c,
|
|
const Kernel::Point_3&p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnBoundedSide_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class HasOnNegativeSide_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff `p` lies on the negative side of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the negative side of `l`
|
|
(`l` is considered a half-space).
|
|
*/
|
|
bool operator()(const Kernel::Line_2&l,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the negative side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2&t,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnNegativeSide_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
|
|
*/
|
|
class HasOnNegativeSide_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the negative side of `h`
|
|
(`h` is considered a half-space).
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&h,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the negative side of `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the negative side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnNegativeSide_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class HasOnPositiveSide_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the positive side of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the positive side of `l`
|
|
(`l` is considered a half-space).
|
|
*/
|
|
bool operator()(const Kernel::Line_2&l,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the positive side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2&t,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnPositiveSide_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
|
|
*/
|
|
class HasOnPositiveSide_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the positive side of `h`
|
|
(`h` is considered a half-space).
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&h,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the positive side of `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the positive side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnPositiveSide_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
\sa `::Kernel::HasOnBoundedSide_2`
|
|
\sa `::Kernel::HasOnBoundary_2`
|
|
\sa `::Kernel::BoundedSide_2`
|
|
|
|
*/
|
|
class HasOnUnboundedSide_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff `p` lies on the unbounded side of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the unbounded side of `i`.
|
|
*/
|
|
bool operator()(const Kernel::Iso_rectangle_2&i,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the unbounded side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2&t,
|
|
const Kernel::Point_2&p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnUnboundedSide_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
\sa `::Kernel::HasOnBoundedSide_3`
|
|
\sa `::Kernel::HasOnBoundary_3`
|
|
\sa `::Kernel::BoundedSide_3`
|
|
|
|
*/
|
|
class HasOnUnboundedSide_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on the unbounded side of `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the unbounded side of `t`.
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on the unbounded side of `c`.
|
|
*/
|
|
bool operator()(const Kernel::Iso_cuboid_3&c,
|
|
const Kernel::Point_3&p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOnUnboundedSide_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class HasOn_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff `p` lies on `l`.
|
|
*/
|
|
bool operator()(const Kernel::Line_2&l,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `r`.
|
|
*/
|
|
bool operator()(const Kernel::Ray_2&r,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `s`.
|
|
*/
|
|
bool operator()(const Kernel::Segment_2&s,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOn_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Point_3<Kernel>`
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class HasOn_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `p` lies on `c`.
|
|
*/
|
|
bool operator()(const Kernel::Circle_3&c,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `l`.
|
|
*/
|
|
bool operator()(const Kernel::Line_3&l,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `r`.
|
|
*/
|
|
bool operator()(const Kernel::Ray_3&r,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `s`.
|
|
*/
|
|
bool operator()(const Kernel::Segment_3&s,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `pl`.
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&pl,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns true iff `l` lies on `pl`.
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&pl,
|
|
const Kernel::Line_3&l);
|
|
|
|
/*!
|
|
returns true iff `c` lies on `pl`.
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&pl,
|
|
const Kernel::Circle_3&c);
|
|
|
|
/*!
|
|
returns true iff `c` lies on `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Point_3&c);
|
|
|
|
/*!
|
|
returns true iff `c` lies on `s`.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&s,
|
|
const Kernel::Circle_3&c);
|
|
|
|
/*!
|
|
returns true iff `p` lies on `t`.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::HasOn_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa \link intersection_grp `CGAL::intersection()` \endlink
|
|
\sa `CGAL::cpp11::result_of`
|
|
|
|
*/
|
|
class Intersect_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
computes the intersection region of two geometrical objects of type
|
|
`Type1` and `Type2`, for all pairs `Type1` and `Type2`.
|
|
For details see the reference manual page for \link intersection_grp `CGAL::intersection()` \endlink.
|
|
*/
|
|
CGAL::cpp11::result_of<Kernel::Intersect_2(Type1, Type2)>::type
|
|
operator()(Type1 obj1, Type2 obj2);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Intersect_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two or three arguments)
|
|
|
|
\sa intersection_linear_grp
|
|
\sa `CGAL::cpp11::result_of`
|
|
|
|
*/
|
|
class Intersect_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
computes the intersection region of two geometrical
|
|
objects of type `Type1` and `Type2`.
|
|
For details see the reference manual page for \ref intersection_linear_grp.
|
|
*/
|
|
CGAL::cpp11::result_of<Kernel::Intersect_3(Type1, Type2)>::type
|
|
operator()(Type1 obj1, Type2 obj2);
|
|
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Intersect_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Iso_rectangle_2<Kernel>`
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class IsDegenerate_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Circle_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Iso_rectangle_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Line_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Ray_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Segment_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_2&o);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::IsDegenerate_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Circle_3<Kernel>`
|
|
\sa `CGAL::Iso_cuboid_3<Kernel>`
|
|
\sa `CGAL::Line_3<Kernel>`
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Point_3<Kernel>`
|
|
\sa `CGAL::Ray_3<Kernel>`
|
|
\sa `CGAL::Segment_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
\sa `CGAL::Triangle_3<Kernel>`
|
|
|
|
*/
|
|
class IsDegenerate_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Circle_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Iso_cuboid_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Line_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Plane_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Ray_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Segment_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Sphere_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Tetrahedron_3&o);
|
|
|
|
/*!
|
|
returns true iff `o` is degenerate.
|
|
*/
|
|
bool operator()(const Kernel::Triangle_3&o);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::IsDegenerate_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class IsHorizontal_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff `o` is horizontal.
|
|
*/
|
|
bool operator()(const Kernel::Line_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is horizontal.
|
|
*/
|
|
bool operator()(const Kernel::Ray_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is horizontal.
|
|
*/
|
|
bool operator()(const Kernel::Segment_2&o);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::IsHorizontal_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with one argument)
|
|
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Ray_2<Kernel>`
|
|
\sa `CGAL::Segment_2<Kernel>`
|
|
|
|
*/
|
|
class IsVertical_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff `o` is vertical.
|
|
*/
|
|
bool operator()(const Kernel::Line_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is vertical.
|
|
*/
|
|
bool operator()(const Kernel::Ray_2&o);
|
|
|
|
/*!
|
|
returns true iff `o` is vertical.
|
|
*/
|
|
bool operator()(const Kernel::Segment_2&o);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::IsVertical_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `left_turn_grp`
|
|
|
|
*/
|
|
class LeftTurn_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns `true`, iff the three points `p`, `q`
|
|
and `r` form a left turn.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LeftTurn_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `has_smaller_distance_to_point_grp`
|
|
|
|
*/
|
|
class LessDistanceToPoint_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the distance of `q` to `p` is
|
|
smaller than the distance of `r` to `p`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessDistanceToPoint_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `has_smaller_distance_to_point_grp`
|
|
|
|
*/
|
|
class LessDistanceToPoint_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the distance of `q` to `p` is
|
|
smaller than the distance of `r` to `p`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessDistanceToPoint_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
*/
|
|
class LessRotateCCW_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff the three points `p`, `q`
|
|
and `r` form a left turn or if they are collinear and
|
|
the distance of `q` to `p` is
|
|
larger than the distance of `r` to `p`, where `p` is the point
|
|
passed to the object at construction.
|
|
\pre `p` does not lie in the interior of the segment `rq`, i.e.\ `p` is an extreme point with respect to \f$ \{p,q,r\}\f$.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessRotateCCW_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor`` (with four arguments)
|
|
|
|
\sa `has_smaller_signed_distance_to_line_grp`
|
|
|
|
*/
|
|
class LessSignedDistanceToLine_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
|
|
returns `true` if the signed distance from `p` and the oriented line `l`
|
|
is smaller than the signed distance of `q` and `l`.
|
|
|
|
*/
|
|
bool operator()(const Kernel::Line_2& l,
|
|
const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q);
|
|
|
|
/*!
|
|
|
|
returns `true` if the signed distance from `r` and the oriented line `l`
|
|
defined by `p` and `q` is smaller than the signed distance of `s` and `l`.
|
|
\pre `p != q`.
|
|
|
|
*/
|
|
bool operator()(const Kernel::Point_2& p,
|
|
const Kernel::Point_2& q,
|
|
const Kernel::Point_2&r,
|
|
const Kernel::Point_2&s);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessSignedDistanceToLine_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `has_smaller_signed_distance_to_plane_grp`
|
|
|
|
*/
|
|
class LessSignedDistanceToPlane_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true, iff the signed distance from point `q` to plane
|
|
`p` is smaller than the signed distance from point `r` to `p`.
|
|
*/
|
|
bool operator()(const Kernel::Plane_3& p,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r);
|
|
|
|
/*!
|
|
returns true, iff the signed distance from point `q` to the plane
|
|
`p` defined by `p1, p2, p3` is smaller than the signed distance
|
|
from point `r` to `p`.
|
|
\pre `p, q`, and `r` are not collinear.
|
|
*/
|
|
bool operator()(const Kernel::Point_3& p1,
|
|
const Kernel::Point_3& p2,
|
|
const Kernel::Point_3& p3,
|
|
const Kernel::Point_3& q,
|
|
const Kernel::Point_3& r);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessSignedDistanceToPlane_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `lexicographically_xyz_smaller_grp`
|
|
|
|
*/
|
|
class LessXYZ_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ x\f$-coordinate of `p` is smaller than the
|
|
\f$ x\f$-coordinate of `q` or if the are the same and
|
|
the \f$ y\f$-coordinate of `p` is smaller than the \f$ y\f$-coordinate of `q`, or,
|
|
if both \f$ x\f$- and \f$ y\f$- coordinate are identical and
|
|
the \f$ z\f$-coordinate of `p` is smaller than the \f$ z\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessXYZ_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `lexicographically_xy_smaller_grp`
|
|
|
|
*/
|
|
class LessXY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ x\f$-coordinate of `p` is smaller than the
|
|
\f$ x\f$-coordinate of `q` or if the are the same and
|
|
the \f$ y\f$-coordinate of `p` is smaller than the \f$ y\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessXY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_xy_grp`
|
|
|
|
*/
|
|
class LessXY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ x\f$-coordinate of `p` is smaller than the
|
|
\f$ x\f$-coordinate of `q` or if the are the same and
|
|
the \f$ y\f$-coordinate of `p` is smaller than the \f$ y\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessXY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_x_grp`
|
|
|
|
*/
|
|
class LessX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns true iff the \f$ x\f$-coordinate of `p` is smaller than the
|
|
\f$ x\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_x_grp`
|
|
|
|
*/
|
|
class LessX_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ x\f$-coordinate of `p` is smaller than the
|
|
\f$ x\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessX_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_yx_grp`
|
|
|
|
*/
|
|
class LessYX_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ y\f$-coordinate of `p` is smaller than the
|
|
\f$ y\f$-coordinate of `q` or if the are the same and
|
|
the \f$ x\f$-coordinate of `p` is smaller than the \f$ x\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessYX_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_y_grp`
|
|
|
|
*/
|
|
class LessY_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ y\f$-coordinate of `p` is smaller than the
|
|
\f$ y\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q);
|
|
|
|
///@}
|
|
|
|
}; /* end Kernel::LessY_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `compare_y_grp`
|
|
|
|
*/
|
|
class LessY_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ y\f$-coordinate of `p` is smaller than the
|
|
\f$ y\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessY_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\sa `compare_z_grp`
|
|
|
|
*/
|
|
class LessZ_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns true iff the \f$ z\f$-coordinate of `p` is smaller than the
|
|
\f$ z\f$-coordinate of `q`.
|
|
*/
|
|
bool operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::LessZ_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with three arguments)
|
|
|
|
\sa `orientation_grp`
|
|
|
|
*/
|
|
class Orientation_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns \ref CGAL::LEFT_TURN, if `r` lies to the left of the oriented
|
|
line `l` defined by `p` and `q`, returns \ref CGAL::RIGHT_TURN if `r`
|
|
lies to the right of `l`, and returns \ref CGAL::COLLINEAR if `r` lies
|
|
on `l`.
|
|
*/
|
|
Orientation operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r);
|
|
|
|
/*!
|
|
returns \ref CGAL::LEFT_TURN if `u` and `v` form a left turn,
|
|
returns \ref CGAL::RIGHT_TURN if `u` and `v` form a right turn,
|
|
and returns \ref CGAL::COLLINEAR if `u` and `v` are collinear.
|
|
*/
|
|
Orientation operator()(const Kernel::Vector_2&u,
|
|
const Kernel::Vector_2&v);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Orientation_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `orientation_grp`
|
|
|
|
*/
|
|
class Orientation_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns \ref CGAL::POSITIVE, if `s` lies on the positive side of the oriented
|
|
plane `h` defined by `p`, `q`, and `r`, returns \ref CGAL::NEGATIVE if `s`
|
|
lies on the negative side of `h`, and returns \ref CGAL::COPLANAR if `s` lies
|
|
on `h`.
|
|
*/
|
|
Orientation operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s);
|
|
|
|
/*!
|
|
returns \ref CGAL::POSITIVE if `u`, `v` and `w` are positively oriented,
|
|
returns \ref CGAL::NEGATIVE if `u`, `v` and `w` are negatively oriented,
|
|
and returns \ref CGAL::COPLANAR if `u`, `v` and `w` are coplanar.
|
|
*/
|
|
Orientation operator()(const Kernel::Vector_3&u,
|
|
const Kernel::Vector_3&v,
|
|
const Kernel::Vector_3&w);
|
|
|
|
/*!
|
|
returns the orientation of the sphere `s`.
|
|
*/
|
|
Orientation operator()(const Kernel::Sphere_3&s);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::Orientation_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Circle_2<Kernel>`
|
|
\sa `CGAL::Line_2<Kernel>`
|
|
\sa `CGAL::Triangle_2<Kernel>`
|
|
|
|
*/
|
|
class OrientedSide_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns \ref CGAL::ON_ORIENTED_BOUNDARY,
|
|
\ref CGAL::ON_NEGATIVE_SIDE, or the constant \ref CGAL::ON_POSITIVE_SIDE,
|
|
depending on the position of `p` relative to the oriented circle `c`.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Circle_2&c,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns \ref CGAL::ON_ORIENTED_BOUNDARY,
|
|
\ref CGAL::ON_NEGATIVE_SIDE, or the constant \ref CGAL::ON_POSITIVE_SIDE,
|
|
depending on the position of `p` relative to the oriented line `l`.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Line_2&l,
|
|
const Kernel::Point_2&p);
|
|
|
|
/*!
|
|
returns \ref CGAL::ON_ORIENTED_BOUNDARY,
|
|
\ref CGAL::ON_NEGATIVE_SIDE, or the constant \ref CGAL::ON_POSITIVE_SIDE,
|
|
depending on the position of `p` relative to the oriented triangle `t`.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Triangle_2&t,
|
|
const Kernel::Point_2&p);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::OrientedSide_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with two arguments)
|
|
|
|
\sa `CGAL::Plane_3<Kernel>`
|
|
\sa `CGAL::Sphere_3<Kernel>`
|
|
\sa `CGAL::Tetrahedron_3<Kernel>`
|
|
|
|
*/
|
|
class OrientedSide_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns \ref CGAL::ON_ORIENTED_BOUNDARY,
|
|
\ref CGAL::ON_NEGATIVE_SIDE, or the constant \ref CGAL::ON_POSITIVE_SIDE,
|
|
depending on the position of `p` relative to the oriented plane `h`.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Plane_3&h,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns \ref CGAL::ON_ORIENTED_BOUNDARY,
|
|
\ref CGAL::ON_NEGATIVE_SIDE, or the constant \ref CGAL::ON_POSITIVE_SIDE,
|
|
depending on the position of `p` relative to the oriented tetrahedron `t`.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Tetrahedron_3&t,
|
|
const Kernel::Point_3&p);
|
|
|
|
/*!
|
|
returns \ref CGAL::ON_ORIENTED_BOUNDARY,
|
|
\ref CGAL::ON_NEGATIVE_SIDE, or the \ref CGAL::ON_POSITIVE_SIDE,
|
|
depending on the position of `p` relative to the oriented sphere `s`.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Sphere_3& s,
|
|
const Kernel::Point_3& p);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::OrientedSide_3 */
|
|
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
\sa `ComputePowerProduct_2` for the definition of orthogonality for power distances.
|
|
\sa `PowerSideOfOrientedPowerCircle_2`
|
|
|
|
*/
|
|
class PowerSideOfBoundedPowerCircle_2
|
|
{
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Let \f$ {z(p,q,r)}^{(w)}\f$ be the power circle of the weighted points
|
|
\f$ (p,q,r)\f$. This method returns:
|
|
|
|
- `ON_BOUNDARY` if `t` is orthogonal to \f$ {z(p,q,r)}^{(w)}\f$,
|
|
|
|
- `ON_UNBOUNDED_SIDE` if `t` lies outside the bounded circle of
|
|
center \f$ z(p,q,r)\f$ and radius \f$ \sqrt{ w_{z(p,q,r)}^2 + w_t^2 }\f$
|
|
(which is equivalent to \f$ \Pi({t}^{(w)},{z(p,q,r)}^{(w)}) > 0\f$),
|
|
|
|
- `ON_BOUNDED_SIDE` if `t` lies inside this bounded circle.
|
|
|
|
The order of the points `p`, `q`, and `r` does not matter.
|
|
|
|
\pre `p`, `q`, and `r` are not collinear.
|
|
|
|
If all the points have a weight equal to 0, then
|
|
`power_side_of_bounded_power_circle_2(p,q,r,t)` ==
|
|
`side_of_bounded_circle(p,q,r,t)`.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_2 & p,
|
|
const Kernel::Weighted_point_2 & q,
|
|
const Kernel::Weighted_point_2 & r,
|
|
const Kernel::Weighted_point_2 & t);
|
|
|
|
/*!
|
|
returns the sign of the power test of `t` with respect
|
|
to the smallest circle orthogonal to `p` and `q`.
|
|
|
|
\pre `p` and `q` have different bare points.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_2 & p,
|
|
const Kernel::Weighted_point_2 & q,
|
|
const Kernel::Weighted_point_2 & t);
|
|
|
|
/*!
|
|
returns the sign of the power test of `t` with respect
|
|
to the smallest circle orthogonal to `p`.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_2 & p,
|
|
const Kernel::Weighted_point_2 & t);
|
|
/// @}
|
|
}; /* end Kernel::PowerSideOfBoundedPowerCircle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with five arguments)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
\sa `ComputePowerProduct_3` for the definition of orthogonality for power distances.
|
|
\sa `PowerSideOfOrientedPowerSphere_3`
|
|
|
|
*/
|
|
class PowerSideOfBoundedPowerSphere_3
|
|
{
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Let \f$ {z(p,q,r,s)}^{(w)}\f$ be the power sphere of the weighted points
|
|
\f$ (p,q,r,s)\f$. This method returns:
|
|
|
|
- `ON_BOUNDARY` if `t` is orthogonal to
|
|
\f$ {z(p,q,r,s)}^{(w)}\f$,
|
|
|
|
- `ON_UNBOUNDED_SIDE` if `t` lies outside the bounded sphere of
|
|
center \f$ z(p,q,r,s)\f$ and radius \f$ \sqrt{ w_{z(p,q,r,s)}^2 + w_t^2 }\f$
|
|
(which is equivalent to \f$ \Pi({t}^{(w)},{z(p,q,r,s)}^{(w)}) >0\f$),
|
|
|
|
- `ON_BOUNDED_SIDE` if `t` lies inside this bounded sphere.
|
|
|
|
The order of the points `p`, `q`, `r`, and `s` does not matter.
|
|
|
|
\pre `p, q, r, s` are not coplanar.
|
|
|
|
If all the points have a weight equal to 0, then
|
|
`power_side_of_bounded_power_sphere_3(p,q,r,s,t)` ==
|
|
`side_of_bounded_sphere(p,q,r,s,t)`.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_3 & p,
|
|
const Kernel::Weighted_point_3 & q,
|
|
const Kernel::Weighted_point_3 & r,
|
|
const Kernel::Weighted_point_3 & s,
|
|
const Kernel::Weighted_point_3 & t);
|
|
|
|
/*!
|
|
returns the sign of the power test of `t` with respect
|
|
to the smallest sphere orthogonal to `p`, `q`, and `r`.
|
|
|
|
\pre `p, q, r` are not collinear.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_3 & p,
|
|
const Kernel::Weighted_point_3 & q,
|
|
const Kernel::Weighted_point_3 & r,
|
|
const Kernel::Weighted_point_3 & t);
|
|
|
|
/*!
|
|
returns the sign of the power test of `t` with respect
|
|
to the smallest sphere orthogonal to `p` and `q`.
|
|
|
|
\pre `p` and `q` have different bare points.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_3 & p,
|
|
const Kernel::Weighted_point_3 & q,
|
|
const Kernel::Weighted_point_3 & t);
|
|
|
|
/*!
|
|
returns the sign of the power test of `t` with respect
|
|
to the smallest sphere orthogonal to `p`.
|
|
*/
|
|
CGAL::Bounded_side
|
|
operator()(const Kernel::Weighted_point_3 & p,
|
|
const Kernel::Weighted_point_3 & t);
|
|
/// @}
|
|
|
|
}; /* end Kernel::PowerSideOfBoundedPowerSphere_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `CGAL::Weighted_point_2<Kernel>`
|
|
\sa `ComputePowerProduct_2` for the definition of power distance.
|
|
\sa `PowerSideOfBoundedPowerCircle_2`
|
|
*/
|
|
class PowerSideOfOrientedPowerCircle_2
|
|
{
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the relative position of point `s` to the oriented power circle
|
|
defined by `p`, `q`, and `r`.
|
|
|
|
The order of the points `p`, `q` and `r` is important,
|
|
since it determines the orientation of the implicitly
|
|
constructed power circle.
|
|
|
|
\pre the bare points corresponding to `p`, `q`, `r` are not collinear.
|
|
*/
|
|
|
|
Oriented_side operator()(const Kernel::Weighted_point_2& p,
|
|
const Kernel::Weighted_point_2& q,
|
|
const Kernel::Weighted_point_2& r,
|
|
const Kernel::Weighted_point_2& s);
|
|
/// @}
|
|
|
|
};
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with five arguments)
|
|
|
|
\sa `CGAL::Weighted_point_3<Kernel>`
|
|
\sa `ComputePowerProduct_3` for the definition of power distance.
|
|
\sa `PowerSideOfBoundedPowerSphere_3`
|
|
|
|
*/
|
|
class PowerSideOfOrientedPowerSphere_3
|
|
{
|
|
public:
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
Let \f$ {z(p,q,r,s)}^{(w)}\f$ be the power sphere of the weighted points
|
|
\f$ (p,q,r,s)\f$. Returns
|
|
|
|
- `ON_ORIENTED_BOUNDARY` if `t` is orthogonal to
|
|
\f$ {z(p,q,r,s)}^{(w)}\f$,
|
|
|
|
- `ON_NEGATIVE_SIDE` if `t` lies outside the oriented sphere of
|
|
center \f$ z(p,q,r,s)\f$ and radius \f$ \sqrt{ w_{z(p,q,r,s)}^2 + w_t^2 }\f$
|
|
(which is equivalent to \f$ \Pi({t}^{(w)},{z(p,q,r,s)}^{(w)}) > 0 \f$),
|
|
|
|
- `ON_POSITIVE_SIDE` if `t` lies inside this oriented sphere.
|
|
|
|
The order of the points `p`, `q`, `r` and `s` is important,
|
|
since it determines the orientation of the implicitly
|
|
constructed power sphere.
|
|
|
|
\pre `p, q, r, s` are not coplanar.
|
|
|
|
If all the points have a weight equal to 0, then
|
|
`power_side_of_oriented_power_sphere_3(p,q,r,s,t)` =
|
|
`side_of_oriented_sphere(p,q,r,s,t)`.
|
|
*/
|
|
Oriented_side operator()( const Kernel::Weighted_point_3& p,
|
|
const Kernel::Weighted_point_3& q,
|
|
const Kernel::Weighted_point_3& r,
|
|
const Kernel::Weighted_point_3& s,
|
|
const Kernel::Weighted_point_3& t) const;
|
|
/// @}
|
|
};
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `side_of_bounded_circle_grp`
|
|
|
|
*/
|
|
class SideOfBoundedCircle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the relative position of point `t`
|
|
to the circle defined by `p`, `q` and `r`. The order
|
|
of the points `p`, `q` and `r` does not matter.
|
|
\pre `p, q` and `r` are not collinear.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r,
|
|
const Kernel::Point_2&t);
|
|
|
|
/*!
|
|
returns the position of the point `t` relative to the circle
|
|
that has `pq` as its diameter.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&t);
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::SideOfBoundedCircle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with five arguments)
|
|
|
|
\sa `side_of_bounded_sphere_grp`
|
|
|
|
*/
|
|
class SideOfBoundedSphere_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the relative position of point `t`
|
|
to the sphere defined by `p`, `q`, `r`, and `s`. The order
|
|
of the points `p`, `q`, `r`, and `s` does not matter.
|
|
\pre `p, q, r` and `s` are not coplanar.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s,
|
|
const Kernel::Point_3&t);
|
|
|
|
/*!
|
|
returns the position of the point `t` relative to the sphere
|
|
passing through `p`, `q`, and `r` and whose center is in the plane defined
|
|
by these three points.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&t);
|
|
|
|
/*!
|
|
returns the position of the point `t` relative to the sphere
|
|
that has `pq` as its diameter.
|
|
*/
|
|
Bounded_side operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&t);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::SideOfBoundedSphere_3 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with four arguments)
|
|
|
|
\sa `side_of_oriented_circle_grp`
|
|
|
|
*/
|
|
class SideOfOrientedCircle_2 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
|
|
/*!
|
|
returns the relative position of point `t`
|
|
to the oriented circle defined by `p`, `q` and `r`.
|
|
The order of the points `p`, `q` and `r` is important,
|
|
since it determines the orientation of the implicitly
|
|
constructed circle.
|
|
|
|
If `p`, `q` and `r` are collinear, the circle degenerates in a line.
|
|
\ref CGAL::ON_ORIENTED_BOUNDARY is returned if `t` is also collinear or if two
|
|
points are identical,
|
|
otherwise, `side_of_oriented_circle(r, q, t, p)` is returned.
|
|
|
|
*/
|
|
Oriented_side operator()(const Kernel::Point_2&p,
|
|
const Kernel::Point_2&q,
|
|
const Kernel::Point_2&r,
|
|
const Kernel::Point_2&t);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::SideOfOrientedCircle_2 */
|
|
|
|
/*!
|
|
\ingroup PkgKernel23ConceptsFunctionObjects
|
|
\cgalConcept
|
|
|
|
\cgalRefines `AdaptableFunctor` (with five arguments)
|
|
|
|
\sa `side_of_oriented_sphere_grp`
|
|
|
|
*/
|
|
class SideOfOrientedSphere_3 {
|
|
public:
|
|
|
|
/// \name Operations
|
|
/// A model of this concept must provide:
|
|
/// @{
|
|
|
|
/*!
|
|
returns the relative position of point `t`
|
|
to the oriented sphere defined by `p`, `q`, `r` and `s`.
|
|
The order of the points `p`, `q`, `r`, and `s` is important,
|
|
since it determines the orientation of the implicitly
|
|
constructed sphere. If the points `p`, `q`, `r` and `s`
|
|
are positive oriented, positive side is the bounded interior
|
|
of the sphere.
|
|
|
|
In case of degeneracies, \ref CGAL::ON_ORIENTED_BOUNDARY is returned
|
|
if all points are coplanar. Otherwise, there is a cyclic permutation of the five points
|
|
that puts four non coplanar points first, it is used to answer the predicate:
|
|
e.g. `side_of_oriented_sphere(q, r, s, t, p)` is returned if `q`, `r`, `s`,
|
|
and `t` are non coplanar.
|
|
*/
|
|
Oriented_side operator()(const Kernel::Point_3&p,
|
|
const Kernel::Point_3&q,
|
|
const Kernel::Point_3&r,
|
|
const Kernel::Point_3&s,
|
|
const Kernel::Point_3&t);
|
|
|
|
|
|
/// @}
|
|
|
|
}; /* end Kernel::SideOfOrientedSphere_3 */
|
|
|
|
} // end of Kernel namespace
|