From b34c63c3f93322c46e42ef7174b1f54e4b1bb359 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Mon, 4 Mar 2024 16:06:42 +0000 Subject: [PATCH] Add AABBGeomTraits_2 --- .../doc/AABB_tree/Concepts/AABBGeomTraits_2.h | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits_2.h diff --git a/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits_2.h b/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits_2.h new file mode 100644 index 00000000000..17000ef1a6a --- /dev/null +++ b/AABB_tree/doc/AABB_tree/Concepts/AABBGeomTraits_2.h @@ -0,0 +1,202 @@ + +/*! +\ingroup PkgAABBTreeConcepts +\cgalConcept + +The concept `AABBGeomTraits_2` defines the requirements for the first template parameter of the class +`CGAL::AABB_traits_2`. It provides predicates and constructors to detect +and compute intersections between query objects and the primitives stored in the AABB tree. +In addition, it contains predicates and constructors to compute distances between a point query +and the primitives stored in the AABB tree. + +\cgalRefines{SearchGeomTraits_2} + +\cgalHasModelsBegin +\cgalHasModelsBare{All models of the concept `Kernel`} +\cgalHasModelsEnd + +\sa `CGAL::AABB_traits` +\sa `CGAL::AABB_tree` +\sa `AABBPrimitive` + +*/ + +class AABBGeomTraits_2 { +public: + +/// \name Types +/// @{ + +/*! +A functor object to detect intersections between two geometric objects. +Provides the following operators: + +`bool operator()(Query, Bbox_2)`, + +`bool operator()(Query, Primitive::Datum)`, + +`bool operator()(Circle_2, Bbox_2)`. + +The operator returns `true` iff there exists a non-empty intersection. +*/ +typedef unspecified_type Do_intersect_2; + +/*! +A functor object to construct the intersection between two geometric objects. + +Provides the operator: + +`return_type operator()(const Query& q, const Primitive::Datum& d)`, + +which computes the intersection between `q` and `d`. The type of the returned object +must be a `std::optional` of a `std::variant` of the possible intersection types. +*/ +typedef unspecified_type Intersect_2; + +/*! +A functor object to construct the circle centered at one point and passing through another one. +Provides the operator: + +`Circle_2 operator()(const Point_2& p, const FT & sr)`, + +which returns the circle centered at `p` with `sr` as squared radius. +*/ +typedef unspecified_type Construct_circle_2; + +/*! +A functor object to compute the point on a geometric primitive which is closest from a query. +Provides the operator: + +`Point_2 operator()(const Primitive::Datum& d, const Point_2& p)`, + +which returns the point on `d` that is closest to `p`. +*/ +typedef unspecified_type Construct_projected_point_2; + +/*! +A functor object to compare the distance of two points wrt a third one. Provides the operator: + +`CGAL::Comparison_result operator()(const Point_2& p1, const Point_2& p2, const Point_2& p3)`, + +which compares the distance between `p1` and `p2`, and between `p2` and `p3`. +*/ +typedef unspecified_type Compare_distance_2; + +/*! +A functor object to compute the squared radius of a circle. +Provides the operator: + +`FT operator()(const Circle_2& s),` + +which returns the squared radius of `s`. +*/ +typedef unspecified_type Compute_squared_radius_2; + +/*! +A functor object to compute the squared distance between two points. Provides the operator: + +`FT operator()(const Point_2& p, const Point_2& q),` + +which returns the squared distance between `p` and `q`. +*/ +typedef unspecified_type Compute_squared_distance_2; + +/*! +A functor object to compare the x-coordinates of two points. Provides the operator: + +`bool operator()(const Point_2& p, const Point_2& q)`, + + which returns `true` iff the x-coordinate of `p` is smaller than the x-coordinate of `q`. +*/ +typedef unspecified_type Less_x_2; + +/*! +A functor object to compare the y-coordinates of two points. Provides the operator: + +`bool operator()(const Point_2& p, const Point_2& q)`, + +which returns `true` iff the y-coordinate of `p` is smaller than the y-coordinate of `q`. +*/ +typedef unspecified_type Less_y_2; + +/*! +A functor object to compare the z-coordinates of two points. Provides the operator: + +`bool operator()(const Point_2& p, const Point_2& q)`, + +which returns `true` iff the z-coordinate of `p` is smaller than the z-coordinate of `q`. +*/ +typedef unspecified_type Less_z_2; + +/*! +A functor object to compare two points. Provides the operator: + +`bool operator()(const Point_2& p, const Point_2& q)`, + +which returns `true` iff `p` is equal to `q`. +*/ +typedef unspecified_type Equal_2; + +/// @} + +/// \name Operations +/// @{ + +/*! +returns the intersection detection predicate. +*/ +Do_intersect_2 do_intersect_2_object(); + +/*! +returns the intersection constructor. +*/ +Intersect_2 intersect_2_object(); + +/*! +returns the circle constructor. +*/ +Construct_circle_2 construct_circle_2_object(); + +/*! +returns the closest point constructor. +*/ +Construct_projected_point_2 construct_projected_point_2_object(); + +/*! +returns the compare distance predicate. +*/ +Compare_distance_2 compare_distance_2_object(); + +/*! +returns the squared radius functor. +*/ +Compute_squared_radius_2 compute_squared_radius_2_object(); + +/*! +returns the squared distance functor. +*/ +Compute_squared_distance_2 compute_squared_distance_2_object(); + +/*! +returns the `Less_x_2` predicate. +*/ +Less_x_2 less_x_2_object(); + +/*! +returns the `Less_y_2` predicate. +*/ +Less_y_2 less_y_2_object(); + +/*! +returns the `Less_z_2` predicate. +*/ +Less_z_2 less_z_2_object(); + +/*! +returns the equal predicate. +*/ +Equal_2 equal_2_object(); + +/// @} + +}; /* end AABBGeomTraits_2 */