various improvements (including answers to some of Lutz' comments)

This commit is contained in:
Monique Teillaud 2006-02-24 13:27:24 +00:00
parent 7428c48a19
commit bdc7fe08ae
4 changed files with 48 additions and 38 deletions

View File

@ -5,10 +5,6 @@
\section{Introduction}
The CGAL kernel provides the user mainly with \textit{linear} objects
(points, line segments, lines...) and predicates on them. It also
defines circles but does not offer a lot of functionalities on them.
The goal of the circular kernel is to offer to the user a large set of
functionalities on circles and circular arcs in the plane. All the
choices (interface, robustness, representation, and so on) made here
@ -23,35 +19,42 @@ package.
\section{Software design}
The design is done in such a way that the algebraic concepts and the
geometric concepts are clearly separated. The \ccc{Circular_kernel}
geometric concepts are clearly separated. \ccc{Circular_kernel_2}
has therefore two template parameters:
\begin{itemize}
\item {} the \ccc{LinearKernel}, from which the circular kernel derives,
provides all elementary geometric objects like points, lines, circles, and
elementary functionality on them. In fact it is meant to be
instantiated by a CGAL kernel, but the user may plug his own kernel
instead, as long as it follows the CGAL kernel concept.
\item {} the \ccc{AlgebraicKernel} is responsible for computations on
polynomials and algebraic numbers. It has to be a model of concept
\ccc{AlgebraicKernel_2_2} described in a separate chapter. The
elementary functionality on them. It must be a model of the CGAL two
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
has to be a model of concept \ccc{AlgebraicKernelForCircles}. The
robustness of the package relies on the fact that the algebraic kernel
provides exact computations on algebraic objects.
\end{itemize}
The circular kernel uses the extensibility scheme presented in the 2D
kernel manual. The types of \ccc{LinearKernel} are inherited
kernel manual (see Section~\ref{section-extensible-kernel}).
The types of \ccc{LinearKernel} are inherited
by the circular kernel and some types are taken from the
\ccc{AlgebraicKernel} parameter. Three new main geometric objects are
introduced by the \ccc{Circular_kernel}: circular arcs, points of
\ccc{AlgebraicKernelForCircles} parameter. Three new main geometric objects are
introduced by \ccc{Circular_kernel_2}: 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 circular kernel is documented as a concept, and two
models are provided: \ccc{Circular_kernel}, the basic kernel, and
In fact, the circular kernel is documented as a concept, \ccc{CircularKernel},
and two models are provided:
\begin{itemize}
\item {} \ccc{Circular_kernel_2<LinearKernel,AlgebraicKernelForCircles>}, the basic kernel,
\item {} and
a predefined filtered kernel \ccc{Exact_circular_kernel},
that is based on similar techniques as
\ccc{Exact_predicates_exact_constructions_kernel}.
\end{itemize}
More work is in progress to increase the efficiency of this filtered kernel
and provide other filtering techniques.
%several filtered kernels are built on top of this basic kernel to

View File

@ -29,6 +29,6 @@ all CGAL kernels
\ccSeeAlso
\ccRefIdfierPage{CGAL::Circular_kernel_2<LinearKernel,AlgebraicKernel>}
\ccRefIdfierPage{CGAL::Circular_kernel_2<LinearKernel,AlgebraicKernelForCircles>}
\end{ccRefConcept}

View File

@ -75,15 +75,14 @@ this, but I don't know any technique for this.}
\ccRefConceptPage{AlgebraicKernelForCircles}
\ccRefConceptPage{AlgebraicKernelForCircles}\\
\ccRefConceptPage{AlgebraicKernelForCircles::Polynomial_1_2}\footnote{General
remark about the suffix \_d\_v: \_d stands
for the degree of the polynomials and the algebraic numbers, and
\_v stands for the number of variables, which is analogous to the
dimension for CGAL geometric objects.}\\
\ccRefConceptPage{AlgebraicKernelForCircles::PolynomialForCircles_2_2}\\
\ccRefConceptPage{AlgebraicKernelForCircles::RootOf_2}\\
\ccRefConceptPage{AlgebraicKernelForCircles::RootForCircles_2_2}
%\ccRefConceptPage{AlgebraicKernelForCircles::Polynomial_1_2}\footnote{General
%remark about the suffix \_d\_v: \_d stands
%for the degree of the polynomials and the algebraic numbers, and
%\_v stands for the number of variables, which is analogous to the
%dimension for CGAL geometric objects.}\\
%\ccRefConceptPage{AlgebraicKernelForCircles::PolynomialForCircles_2_2}\\
%\ccRefConceptPage{AlgebraicKernelForCircles::RootOf_2}\\
%\ccRefConceptPage{AlgebraicKernelForCircles::RootForCircles_2_2}
\subsubsection*{Functors}
\ccRefConceptPage{AlgebraicKernelForCircles::ConstructPolynomial_1_2}\\
@ -101,7 +100,7 @@ dimension for CGAL geometric objects.}\\
\ccRefConceptPage{AlgebraicKernelForCircles::CompareXY}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Classes}
\section*{Geometric classes}
\subsubsection*{Kernels}
@ -112,8 +111,6 @@ dimension for CGAL geometric objects.}\\
%\ccRefIdfierPage{CGAL::Filtered_hexagon_curved_kernel<CircularKernel>}\\
%\ccRefIdfierPage{CGAL::Filtered_bbox_curved_kernel<CircularKernel>}
\ccRefIdfierPage{CGAL::Algebraic_kernel_for_circles_2_2<RT>}
\subsubsection*{Arcs}
\ccRefIdfierPage{CGAL::Circular_arc_2<CircularKernel>}\\
\ccRefIdfierPage{CGAL::Line_arc_2<CircularKernel>}
@ -121,11 +118,20 @@ dimension for CGAL geometric objects.}\\
\subsubsection*{Points}
\ccRefIdfierPage{CGAL::Circular_arc_point_2<CircularKernel>}
\subsubsection*{Algebraic objects}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Algebraic classes}
\subsubsection*{Kernel}
\ccRefIdfierPage{CGAL::Algebraic_kernel_for_circles_2_2<RT>}
\subsubsection*{Polynomials}
\ccRefIdfierPage{CGAL::Polynomial_1_2<RT>}\\
\ccRefIdfierPage{CGAL::Polynomial_for_circles_2_2<FT>}
\subsubsection*{Roots of polynomials}
\ccRefIdfierPage{CGAL::Root_of_2<RT>}\\
\ccRefIdfierPage{CGAL::Root_for_circles_2_2<FT>}

View File

@ -9,6 +9,8 @@
%\input{Curved_kernel_ref/Filtered_hexagon_kernel}
%\input{Curved_kernel_ref/Filtered_bbox_kernel}
\input{Curved_kernel_ref/BasicGeometricKernel} %concept
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{Curved_kernel_ref/CircularArc_2}
@ -33,14 +35,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{Curved_kernel_ref/Arrangements_traits}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{Curved_kernel_ref/BasicGeometricKernel} %concept
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{Curved_kernel_ref/AlgebraicKernel_2_2} %concept
\input{Curved_kernel_ref/Algebraic_kernel_2_2}
@ -56,3 +50,10 @@
\input{Curved_kernel_ref/AlgFunctorsPredicates} % concepts
\input{Curved_kernel_ref/AlgFunctorsConstruct} % concepts
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\input{Curved_kernel_ref/Arrangements_traits}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%