CGAL 5.1  2D and 3D Linear Geometry Kernel

template<typename SphericalType1 , typename SphericalType1 , typename OutputIterator >  
OutputIterator  CGAL::intersection (const SphericalType1 &obj1, const SphericalType2 &obj2, OutputIterator intersections) 
Copies in the output iterator the intersection elements between the two objects. More...  
template<typename Type1 , typename Type2 , typename Type3 , typename OutputIterator >  
OutputIterator  CGAL::intersection (const Type1 &obj1, const Type2 &obj2, const Type3 &obj3, OutputIterator intersections) 
Copies in the output iterator the intersection elements between the three objects. More...  
OutputIterator CGAL::intersection  (  const SphericalType1 &  obj1, 
const SphericalType2 &  obj2,  
OutputIterator  intersections  
) 
#include <CGAL/Spherical_kernel_intersections.h>
Copies in the output iterator the intersection elements between the two objects.
See Chapter Chapter_3D_Spherical_Geometry_Kernel for details on a spherical kernel instantiation.
When using a spherical kernel, in addition to the function overloads documented here, the following function overloads are also available.
The iterator versions of those functions can be used in conjunction with Dispatch_output_iterator
.
Since both the number of intersections, if any, and their types, depend on the arguments, the function expects an output iterator on cpp11::result_of<Kernel::Intersect_3(Type1, Type2)>::type
, as presented below.
intersections
iterates on elements of type result_of< Intersect_3(SphericalType1, SphericalType2) >
, in lexicographic order, when this ordering is defined on the computed objects,
where SphericalType1
and SphericalType2
can both be one of:
Sphere_3<SphericalKernel>
,Plane_3<SphericalKernel>
,Line_3<SphericalKernel>
,Circle_3<SphericalKernel>
,Line_arc_3<SphericalKernel>
orCircular_arc_3<SphericalKernel>
,and depending on the types SphericalType1
and SphericalType2
, the computed type can be
std::pair<Circular_arc_point_3<SphericalKernel>, unsigned>
, where the unsigned integer is the multiplicity of the corresponding intersection point between obj1
and obj2
,SphericalType1
, when SphericalType1
and SphericalType2
are equal, and if the two objets obj1
and obj2
are equal,Line_3<SphericalKernel>
or Circle_3<SphericalKernel>
when SphericalType1
and SphericalType2
are twodimensional objets intersecting along a curve (2 planes, or 2 spheres, or one plane and one sphere),Circular_arc_3<SphericalKernel>
in case of an overlap of two circular arcs orLine_arc_3<SphericalKernel>
in case of an overlap of two line segments. OutputIterator CGAL::intersection  (  const Type1 &  obj1, 
const Type2 &  obj2,  
const Type3 &  obj3,  
OutputIterator  intersections  
) 
#include <CGAL/Spherical_kernel_intersections.h>
Copies in the output iterator the intersection elements between the three objects.
intersections
iterates on elements of type boost::variant< Circle_3, Plane_3, Sphere_3, std::pair< Circular_arc_point_3, unsigned > >
, in lexicographic order when this ordering is defined on the computed objects
where Type1
, Type2
and Type3
can be either
and depending of these types, the computed return value
std::pair<Circular_arc_point_3<SphericalKernel>, unsigned>
, where the unsigned integer is the multiplicity of the corresponding intersection point,Circle_3<SphericalKernel>
orType1
, when Type1
, Type2
and Type3
are equal, and if the three objets obj1
and obj2
and obj3
are equal.