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 % The CGAL Reference Manual
% Section: 2D Smallest Enclosing Circle % 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) % author: Bernd Gärtner, Sven Schönherr (sven@inf.fu-berlin.de)
% $Id$ % $Id$
% ============================================================================= % =============================================================================
@ -51,9 +51,9 @@ reconstructing $mc(P)$ from a given support set $S$ of $P$.
\ccConstructor{ CGAL_Min_circle_2( );}{ \ccConstructor{ CGAL_Min_circle_2( );}{
introduces a variable \ccVar\ of type \ccClassTemplateName. introduces a variable \ccVar\ of type \ccClassTemplateName.
It is initialized to It is initialized to
$mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set. $mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set.
\ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.} \ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.}
\ccHidden \ccHidden
\ccConstructor{ CGAL_Min_circle_2( const CGAL_Min_circle_2<R>&);}{ \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);}{ \ccMemberFunction{ void reserve( int n);}{
reserves storage for at least \ccStyle{n} points in \ccVar. Although reserves storage for at least \ccStyle{n} points in \ccVar. Although
this is in no case necessary, it may speed up memory allocation if this is in no case necessary, it may speed up memory allocation if
the number of points to be inserted is known in advance.} the number of points to be inserted is known in advance.}
\ccHeading{Check operation} \ccHeading{Check operation}
@ -187,8 +187,8 @@ unbounded side equals the whole plane $\E_2$.
\ccMemberFunction{ bool is_degenerate( ) const;}{ \ccMemberFunction{ bool is_degenerate( ) const;}{
returns \ccStyle{true}, iff \ccVar\ is degenerate, i.e. if returns \ccStyle{true}, iff \ccVar\ is degenerate, i.e. if
\ccVar is empty or equal to a single point, equivalently if \ccVar is empty or equal to a single point, equivalently if
the number of support points is less than 2.} the number of support points is less than 2.}
\ccImplementation \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} enclosing circle from scratch. For the member function \ccStyle{reserve}
see the container \ccStyle{vector} from STL~\cite{STL}. 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 \ccExample

View File

@ -2,7 +2,7 @@
% The CGAL Reference Manual % The CGAL Reference Manual
% Section: 2D Smallest Enclosing Circle % 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) % author: Bernd Gärtner, Sven Schönherr (sven@inf.fu-berlin.de)
% $Id$ % $Id$
% ============================================================================= % =============================================================================
@ -51,9 +51,9 @@ reconstructing $mc(P)$ from a given support set $S$ of $P$.
\ccConstructor{ CGAL_Min_circle_2( );}{ \ccConstructor{ CGAL_Min_circle_2( );}{
introduces a variable \ccVar\ of type \ccClassTemplateName. introduces a variable \ccVar\ of type \ccClassTemplateName.
It is initialized to It is initialized to
$mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set. $mc($\ccTexHtml{$\emptyset$}{&Oslash;}$)$, the empty set.
\ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.} \ccPostcond \ccStyle{\ccVar.is_empty()} = \ccStyle{true}.}
\ccHidden \ccHidden
\ccConstructor{ CGAL_Min_circle_2( const CGAL_Min_circle_2<R>&);}{ \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);}{ \ccMemberFunction{ void reserve( int n);}{
reserves storage for at least \ccStyle{n} points in \ccVar. Although reserves storage for at least \ccStyle{n} points in \ccVar. Although
this is in no case necessary, it may speed up memory allocation if this is in no case necessary, it may speed up memory allocation if
the number of points to be inserted is known in advance.} the number of points to be inserted is known in advance.}
\ccHeading{Check operation} \ccHeading{Check operation}
@ -187,8 +187,8 @@ unbounded side equals the whole plane $\E_2$.
\ccMemberFunction{ bool is_degenerate( ) const;}{ \ccMemberFunction{ bool is_degenerate( ) const;}{
returns \ccStyle{true}, iff \ccVar\ is degenerate, i.e. if returns \ccStyle{true}, iff \ccVar\ is degenerate, i.e. if
\ccVar is empty or equal to a single point, equivalently if \ccVar is empty or equal to a single point, equivalently if
the number of support points is less than 2.} the number of support points is less than 2.}
\ccImplementation \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} enclosing circle from scratch. For the member function \ccStyle{reserve}
see the container \ccStyle{vector} from STL~\cite{STL}. 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 \ccExample