Misc fixes for the doc of do_intersect / Intersect combinations (#9075)

# Release Management

* Affected package(s): Kernel_23 / Circular|Spherical_kernel
* Issue(s) solved (if any): fix #8756
* Feature/Small Feature (if any): -
* License and copyright ownership: no change
This commit is contained in:
Sebastien Loriot 2025-09-23 19:49:12 +02:00 committed by GitHub
commit bec36a30b0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 52 additions and 22 deletions

View File

@ -92,17 +92,17 @@ intersection(const Line_2 <K> &c1, const Line_2 <K> &c2, OutputIterator res)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circular_arc_2, Circular_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_arc_2, Line_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_arc_2, Circle_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circle_2, Line_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circular_arc_2, Circle_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circle_2, Circular_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_arc_2, Circular_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circular_arc_2, Line_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_2, Circular_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_2, Line_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circular_arc_2, Line_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circular_arc_2, Line_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_arc_2, Circular_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_arc_2, Circle_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Circle_2, Line_arc_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_arc_2, Line_2)
CGAL_CIRCULAR_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_(Line_2, Line_arc_2)
} //namespace CGAL

View File

@ -156,6 +156,10 @@ template <typename SK>
struct SK3_Intersection_traits<SK, typename SK::Sphere_3, typename SK::Sphere_3, typename SK::Plane_3>
: SK3_intersect_ternary<SK> {};
template <typename SK>
struct SK3_Intersection_traits<SK, typename SK::Sphere_3, typename SK::Plane_3, typename SK::Sphere_3>
: SK3_intersect_ternary<SK> {};
template <typename SK>
struct SK3_Intersection_traits<SK, typename SK::Plane_3, typename SK::Sphere_3, typename SK::Sphere_3>
: SK3_intersect_ternary<SK> {};
@ -164,6 +168,10 @@ template <typename SK>
struct SK3_Intersection_traits<SK, typename SK::Plane_3, typename SK::Plane_3, typename SK::Sphere_3>
: SK3_intersect_ternary<SK> {};
template <typename SK>
struct SK3_Intersection_traits<SK, typename SK::Plane_3, typename SK::Sphere_3, typename SK::Plane_3>
: SK3_intersect_ternary<SK> {};
template <typename SK>
struct SK3_Intersection_traits<SK, typename SK::Sphere_3, typename SK::Plane_3, typename SK::Plane_3>
: SK3_intersect_ternary<SK> {};

View File

@ -935,8 +935,10 @@ template < class SK > \
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_2(Line_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Sphere_3, Sphere_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Sphere_3, Sphere_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Sphere_3, Plane_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Plane_3, Sphere_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Plane_3, Plane_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Plane_3, Sphere_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_3(Sphere_3, Plane_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_2(Circle_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_DO_INTERSECTION_3_2(Plane_3, Circle_3)
@ -1024,6 +1026,12 @@ template < class SK > \
const Plane_3 & p, OutputIterator res) const
{ return SphericalFunctors::intersect_3<SK> (p,s1,s2,res); }
template < class OutputIterator >
OutputIterator
operator()(const Sphere_3 & s1, const Plane_3 & p,
const Sphere_3 & s2, OutputIterator res) const
{ return SphericalFunctors::intersect_3<SK> (p,s1,s2,res); }
template < class OutputIterator >
OutputIterator
operator()(const Plane_3 & p, const Sphere_3 & s1,
@ -1036,6 +1044,12 @@ template < class SK > \
const Sphere_3 & s, OutputIterator res) const
{ return SphericalFunctors::intersect_3<SK> (p1,p2,s,res); }
template < class OutputIterator >
OutputIterator
operator()(const Plane_3 & p1, const Sphere_3 & s,
const Plane_3 & p2, OutputIterator res) const
{ return SphericalFunctors::intersect_3<SK> (p1,p2,s,res); }
template < class OutputIterator >
OutputIterator
operator()(const Sphere_3 & s, const Plane_3 & p1,

View File

@ -71,8 +71,10 @@ CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_JUST_INTERSECTION_2_(Sphere_3, Line_
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_JUST_INTERSECTION_2_(Line_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Sphere_3, Sphere_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Sphere_3, Sphere_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Sphere_3, Plane_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Plane_3, Sphere_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Plane_3, Plane_3, Sphere_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Plane_3, Sphere_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_3_(Sphere_3, Plane_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_2_(Circle_3, Plane_3)
CGAL_SPHERICAL_KERNEL_MACRO_GLOBAL_FUNCTION_INTERSECTION_2_(Plane_3, Circle_3)

View File

@ -928,7 +928,9 @@ void _test_intersection_construct(SK sk) {
intersection(s1, s2, pl, std::back_inserter(intersection_1));
intersection(s1, s3, pl, std::back_inserter(intersection_2));
if(intersection_1.size() == 1) {
assert(CGAL::do_intersect(s1, s2, pl));
assert(CGAL::do_intersect(pl, s1, s2));
assert(CGAL::do_intersect(s1, pl, s2));
assert(CGAL::do_intersect(s1, s2, pl));
Circle_3 circle;
std::pair<Circular_arc_point_3, unsigned> cap;
if(assign_variant(circle,intersection_1[0])) {
@ -1006,7 +1008,9 @@ void _test_intersection_construct(SK sk) {
theIntersect_3(s1, p1, pl, std::back_inserter(intersection_1));
theIntersect_3(s1, p2, pl, std::back_inserter(intersection_2));
if(intersection_1.size() == 1) {
assert(theDo_intersect_3(s1, p1, pl));
assert(theDo_intersect_3(s1, p1, pl));
assert(theDo_intersect_3(p1, s1, pl));
assert(theDo_intersect_3(p1, pl, s1));
Circle_3 circle;
std::pair<Circular_arc_point_3, unsigned> cap;
if(assign_variant(circle,intersection_1[0])) {

View File

@ -20,6 +20,7 @@
#include <CGAL/Iso_rectangle_2.h>
#include <CGAL/Intersection_traits_2.h>
#include <CGAL/Rational_traits.h>
namespace CGAL {

View File

@ -19,10 +19,14 @@
#ifndef CGAL_INTERSECTION_2_H
#define CGAL_INTERSECTION_2_H
#include <CGAL/Intersections_2/Bbox_2_Bbox_2.h>
#include <CGAL/Intersections_2/Bbox_2_Circle_2.h>
#include <CGAL/Intersections_2/Bbox_2_Iso_rectangle_2.h>
#include <CGAL/Intersections_2/Bbox_2_Line_2.h>
#include <CGAL/Intersections_2/Bbox_2_Point_2.h>
#include <CGAL/Intersections_2/Bbox_2_Ray_2.h>
#include <CGAL/Intersections_2/Bbox_2_Segment_2.h>
#include <CGAL/Intersections_2/Bbox_2_Triangle_2.h>
#include <CGAL/Intersections_2/Circle_2_Circle_2.h>
#include <CGAL/Intersections_2/Circle_2_Iso_rectangle_2.h>

View File

@ -32,25 +32,22 @@ bounded region, this region is part of the object.
The types `Type1` and `Type2` can be any of the following:
- `Point_2<Kernel>`
- `Bbox_2`
- `Circle_2<Kernel>`
- `Iso_rectangle_2<Kernel>`
- `Line_2<Kernel>`
- `Point_2<Kernel>`
- `Ray_2<Kernel>`
- `Segment_2<Kernel>`
- `Triangle_2<Kernel>`
- `Iso_rectangle_2<Kernel>`
Also, `Type1` and `Type2` can be both of type
- `Line_2<Kernel>`
- `Circle_2<Kernel>`
In three-dimensional space, the types `Type1` and
`Type2` can be any of the following:
- `Bbox_3`.
- `Line_3<Kernel>`
- `Point_3<Kernel>`
- `Plane_3<Kernel>`
- `Line_3<Kernel>`
- `Ray_3<Kernel>`
- `Segment_3<Kernel>`
- `Sphere_3<Kernel>`
@ -192,8 +189,8 @@ the template parameter pack.
</TABLE>
</DIV>
Additional overloads are provided for the type `Point_2` combined with any other type with the result type being
`std::optional< std::variant< Point_2 > >`.
Additional overloads are provided for the type `Point_2` combined with any other type in the table above,
with the result type being `std::optional< std::variant< Point_2 > >`.
Overloads are also provided for the type `Bbox_2`, for all
intersections existing with the type `Iso_rectangle_2`. Note that the return type for `Bbox_2` - `Bbox_2`
is `Bbox_2` and not `Iso_rectangle_2`.
@ -350,11 +347,11 @@ the template parameter pack.
</TABLE>
</DIV>
Additional overloads are provided for the type `Point_3` combined with any other type with the result type being
`std::optional< std::variant< Point_3 > >`. Overloads are also provided for the type `Bbox_3`, for all
Additional overloads are provided for the type `Point_3` combined with any other type in the table above,
with the result type being `std::optional< std::variant< Point_3 > >`.
Overloads are also provided for the type `Bbox_3`, for all
intersections existing with the type `Iso_cuboid_3`. Note that the return type for `Bbox_3` - `Bbox_3`
is `Bbox_3` and not `Iso_cuboid_3`.
is `Bbox_3` and not `Iso_cuboid_3`.
\cgalHeading{Examples}