Specialization for CGAL_Homogeneous<integer> with floating-point filters added

This commit is contained in:
Sven Schönherr 1997-04-23 12:52:59 +00:00
parent d74d4c25c8
commit 7f6309d71f
2 changed files with 36 additions and 16 deletions

View File

@ -2,7 +2,7 @@
% The CGAL Reference Manual
% Section: 2D Smallest Enclosing Circle
% -----------------------------------------------------------------------------
% file : spec/Min_circle_2.tex
% file : Library/spec/Min_circle_2.tex
% author: Bernd Gärtner, Sven Schönherr (sven@inf.fu-berlin.de)
% $Id$
% =============================================================================
@ -51,9 +51,9 @@ reconstructing $mc(P)$ from a given support set $S$ of $P$.
\ccConstructor{ CGAL_Min_circle_2( );}{
introduces a variable \ccVar\ of type \ccClassTemplateName.
It is initialized to
$mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set.
\ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.}
It is initialized to
$mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set.
\ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.}
\ccHidden
\ccConstructor{ CGAL_Min_circle_2( const CGAL_Min_circle_2<R>&);}{
@ -140,8 +140,8 @@ the construction method is incremental itself.
\ccMemberFunction{ void reserve( int n);}{
reserves storage for at least \ccStyle{n} points in \ccVar. Although
this is in no case necessary, it may speed up memory allocation if
the number of points to be inserted is known in advance.}
this is in no case necessary, it may speed up memory allocation if
the number of points to be inserted is known in advance.}
\ccHeading{Check operation}
@ -187,8 +187,8 @@ unbounded side equals the whole plane $\E_2$.
\ccMemberFunction{ bool is_degenerate( ) const;}{
returns \ccStyle{true}, iff \ccVar\ is degenerate, i.e. if
\ccVar is empty or equal to a single point, equivalently if
the number of support points is less than 2.}
\ccVar is empty or equal to a single point, equivalently if
the number of support points is less than 2.}
\ccImplementation
@ -201,6 +201,16 @@ linear time, but substantially less than computing the new smallest
enclosing circle from scratch. For the member function \ccStyle{reserve}
see the container \ccStyle{vector} from STL~\cite{STL}.
We provide a specialization with homogeneous representation and
numbertype \ccStyle{integer} that uses floating-point filter for the
sign calculations in the predicates (see~\cite{MehlhornNaeher94}).
This decreaes computation time by a factor of four compared to the
generic implementation. If both \ccStyle{<CGAL/Integer.h>} and
\ccStyle{<CGAL/Homogeneous.h>} are included before
\ccStyle{CGAL/Min_circle_2.h>} then the specialization for
\ccStyle{CGAL_Min_circle_2<CGAL_Homogeneous<integer>>} is used instead
of the generic implementation.
\ccExample

View File

@ -2,7 +2,7 @@
% The CGAL Reference Manual
% Section: 2D Smallest Enclosing Circle
% -----------------------------------------------------------------------------
% file : spec/Min_circle_2.tex
% file : Library/spec/Min_circle_2.tex
% author: Bernd Gärtner, Sven Schönherr (sven@inf.fu-berlin.de)
% $Id$
% =============================================================================
@ -51,9 +51,9 @@ reconstructing $mc(P)$ from a given support set $S$ of $P$.
\ccConstructor{ CGAL_Min_circle_2( );}{
introduces a variable \ccVar\ of type \ccClassTemplateName.
It is initialized to
$mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set.
\ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.}
It is initialized to
$mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set.
\ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.}
\ccHidden
\ccConstructor{ CGAL_Min_circle_2( const CGAL_Min_circle_2<R>&);}{
@ -140,8 +140,8 @@ the construction method is incremental itself.
\ccMemberFunction{ void reserve( int n);}{
reserves storage for at least \ccStyle{n} points in \ccVar. Although
this is in no case necessary, it may speed up memory allocation if
the number of points to be inserted is known in advance.}
this is in no case necessary, it may speed up memory allocation if
the number of points to be inserted is known in advance.}
\ccHeading{Check operation}
@ -187,8 +187,8 @@ unbounded side equals the whole plane $\E_2$.
\ccMemberFunction{ bool is_degenerate( ) const;}{
returns \ccStyle{true}, iff \ccVar\ is degenerate, i.e. if
\ccVar is empty or equal to a single point, equivalently if
the number of support points is less than 2.}
\ccVar is empty or equal to a single point, equivalently if
the number of support points is less than 2.}
\ccImplementation
@ -201,6 +201,16 @@ linear time, but substantially less than computing the new smallest
enclosing circle from scratch. For the member function \ccStyle{reserve}
see the container \ccStyle{vector} from STL~\cite{STL}.
We provide a specialization with homogeneous representation and
numbertype \ccStyle{integer} that uses floating-point filter for the
sign calculations in the predicates (see~\cite{MehlhornNaeher94}).
This decreaes computation time by a factor of four compared to the
generic implementation. If both \ccStyle{<CGAL/Integer.h>} and
\ccStyle{<CGAL/Homogeneous.h>} are included before
\ccStyle{CGAL/Min_circle_2.h>} then the specialization for
\ccStyle{CGAL_Min_circle_2<CGAL_Homogeneous<integer>>} is used instead
of the generic implementation.
\ccExample