\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - 3D Spherical Geometry Kernel

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
SphericalKernel::Intersect_3 Concept Reference
Geometric Concepts

## Definition

Refines:
  `Kernel::Intersect_3`

See Also
  `CGAL::intersection()`

## Operations
A model of this concept must provide:
template<class OutputIterator >
OutputIterator | operator() (const Type1 &obj1, const Type2 &obj2, OutputIterator intersections)
| Copies in the output iterator the intersection elements between the two objects. More...
template<class OutputIterator >
OutputIterator | operator() (const Type1 &obj1, const Type2 &obj2, const Type3 &obj3, OutputIterator intersections)
| Copies in the output iterator the intersection elements between the three objects. More...

## Member Function Documentation

template<class OutputIterator >

OutputIterator SphericalKernel::Intersect_3::operator() | ( | const Type1 & | obj1,
|  | const Type2 & | obj2,
|  | OutputIterator | intersections
| ) |  |

Copies in the output iterator the intersection elements between the two objects.

`intersections` iterates on elements of type `CGAL::Object`, in lexicographic order when this ordering is defined on the computed objects.

`Type1` and `Type2` can both be either:

- SphericalKernel::Sphere_3,
- SphericalKernel::Plane_3,
- SphericalKernel::Line_3,
- SphericalKernel::Circle_3,
- SphericalKernel::Line_arc_3 or
- SphericalKernel::Circular_arc_3

depending on the types Type1 and Type2, the computed `CGAL::Object`'s can be assigned to

- std::pair< SphericalKernel::Circular_arc_point_3, unsigned>, where the unsigned integer is the multiplicity of the corresponding intersection point between obj_1 and obj_2,
- Type1, when Type1 and Type2 are equal, and if the two objects obj1 and obj2 are equal,
- SphericalKernel::Line_3 or SphericalKernel::Circle_3 when Type1 and Type2 are two-dimensional objects intersecting along a curve (2 planes, or 2 spheres, or one plane and one sphere),
- SphericalKernel::Circular_arc_3 in case of an overlap of two circular arcs or
- SphericalKernel::Line_arc_3 in case of an overlap of two line segments.

template<class OutputIterator >

OutputIterator SphericalKernel::Intersect_3::operator() | ( | const Type1 & | obj1,
|  | const Type2 & | obj2,
|  | const Type3 & | obj3,
|  | OutputIterator | intersections
| ) |  |

Copies in the output iterator the intersection elements between the three objects.

`intersections` iterates on elements of type `CGAL::Object`, in lexicographic order when this ordering is defined on the computed objects.

Type1, Type2 and Type3 can be either:

- SphericalKernel::Sphere_3 or
- SphericalKernel::Plane_3

and depending of these types, the computed `CGAL::Object`'s can be assigned to

- std::pair< SphericalKernel::Circular_arc_point_3, unsigned>, where the unsigned integer is the multiplicity of the corresponding intersection point,
- SphericalKernel::Circle_3 or
- Type1, when Type1, Type2 and Type3 are equal, and if the three objects obj1 and obj2 and obj3 are equal.