mirror of https://github.com/CGAL/cgal
65 lines
2.9 KiB
TeX
65 lines
2.9 KiB
TeX
\section{Introduction}
|
|
|
|
The goal of the 3D spherical kernel is to offer to the user a large set
|
|
of functionalities on spheres, circles and circular arcs in the 3D
|
|
space, in a similar way as what the 2D circular kernel package (see
|
|
Chapter~\ref{chapter-circular-kernel}) does in the plane. All the
|
|
choices (interface, robustness, representation, and so on) made here
|
|
are consistent with the choices made in the \cgal\ kernel, for which
|
|
we refer the user to the kernel manual.
|
|
|
|
\section{Software Design}
|
|
|
|
The design of \ccc{Spherical_kernel_3} is similar to the design of
|
|
\ccc{Circular_kernel_2}. It has two template parameters:
|
|
\begin{itemize}
|
|
\item {} the \ccc{LinearKernel}, from which the spherical kernel derives,
|
|
provides all elementary geometric objects like points, lines, spheres, and
|
|
elementary functionality on them. It must model the \cgal\ three
|
|
dimensional \ccc{Kernel} concept.
|
|
%The \cgal\ 2D Kernel can be used as parameter,
|
|
%but the user may plug his own kernel
|
|
%instead, as long as it follows the \cgal\ kernel concept.
|
|
\item {} the second parameter is the algebraic kernel, which is
|
|
responsible for computations on polynomials and algebraic numbers. It
|
|
must model the concept \ccc{AlgebraicKernelForSpheres}. The
|
|
robustness of the package relies on the fact that the algebraic kernel
|
|
provides exact computations on algebraic objects.
|
|
\end{itemize}
|
|
|
|
The 3D spherical kernel uses the extensibility scheme presented in the
|
|
kernel manual (see Section~\ref{section-extensible-kernel}).
|
|
The types of \ccc{LinearKernel} are inherited
|
|
by the 3D spherical kernel and some types are taken from the
|
|
\ccc{AlgebraicKernelForSpheres} parameter. New main geometric objects are
|
|
introduced by \ccc{Spherical_kernel_3}: circles in 3D, circular arcs,
|
|
points of circular arcs (used in particular for endpoints of arcs and
|
|
intersection points between arcs), and line segments, whose endpoints
|
|
are points of this new type.
|
|
|
|
In fact, the spherical kernel is documented as a concept,
|
|
\ccc{SphericalKernel}. One model is currently provided:
|
|
\ccc{Spherical_kernel_3<LinearKernel,AlgebraicKernelForSpheres>}.
|
|
|
|
\section{Example}
|
|
\textit{following example to be improved, and more examples and explanations to be added...}
|
|
|
|
\ccIncludeExampleCode{Circular_kernel_3/spherical_kernel_3.cpp}
|
|
|
|
\section{Design and Implementation History}
|
|
|
|
This package follows the 2D circular kernel package (see
|
|
Chapter~\ref{chapter-circular-kernel}), which induced the basic
|
|
choices of design.
|
|
|
|
Julien Hazebrouck and Damien Leroy participated in a first
|
|
prototype. Sylvain Pion is acknowledged for helpful discussions.
|
|
|
|
Pedro Machado Manh\~{a}es de Castro made a major contribution to
|
|
settle the first public release.
|
|
|
|
This work is partially supported by the IST Programme of the 6th
|
|
Framework Programme of the EU as a STREP (FET Open Scheme) Project
|
|
under Contract No IST-006413 (\ccAnchor{http://acs.cs.rug.nl/}{ACS} -
|
|
Algorithms for Complex Shapes).
|