all details in reviews implemented, remain some stuff in the todo list

This commit is contained in:
Olivier Devillers 2012-06-20 16:13:27 +00:00
parent b9ba031fbe
commit adbf200c70
4 changed files with 46 additions and 37 deletions

View File

@ -20,13 +20,12 @@ the concept \ccc{DelaunayTriangulationTraits}.
\ccc{TriangulationDataStructure} is the class used to store the underlying triangulation data
structure. \ccc{TriangulationDataStructure} must be a model of the concept
\ccc{TriangulationDataStructure}. The class template \ccRefName\ accepts that no
second parameter be specified. It also accepts the tag \ccc{CGAL::Default} as
second parameter. In both cases, \ccc{TriangulationDataStructure} defaults to
\ccc{Triangulation_data_structure<
Ambient_dimension<DelaunayTriangulationTraits::Point_d>::type,
Triangulation_vertex<DelaunayTriangulationTraits>,
Triangulation_full_cell<DelaunayTriangulationTraits> >}.
\ccc{TriangulationDataStructure}. The class template \ccRefName\ can
be defined by specifying only the first parameter, or by using the
tag \ccc{CGAL::Default} as
the second parameter. In both cases, \ccc{TriangulationDataStructure} defaults to
\ccc{Triangulation_data_structure<Ambient_dimension<TriangulationTraits::Point_d>::type,
Triangulation_vertex<TriangulationTraits>, Triangulation_full_cell<TriangulationTraits>>}.
\ccInheritsFrom
@ -40,12 +39,12 @@ defines or overloads the following methods:
\ccCreationVariable{dt}
\ccConstructor{Delaunay_triangulation(const int dim, const Geom_traits k =
\ccConstructor{Delaunay_triangulation(const int dim, const Geom_traits gt =
Geom_traits());}{Instantiates a Delaunay triangulation with one vertex (the vertex
at infinity). See the description of the inherited nested type
\ccc{Triangulation<DelaunayTriangulationTraits, TriangulationDataStructure>::Ambient_dimension} for an explanation of
the use of the parameter \ccc{dim}. The complex stores a copy of the geometric
traits \ccc{k}.}
traits \ccc{gt}.}
\ccHeading{Point removal} % - - - - - - - - - - - - - - - - - - - - - REMOVAL
@ -70,10 +69,11 @@ Otherwise, the default-constructed \ccc{Full_cell_handle} is returned.
% as above, but uses \ccc{hint} as a starting point for locating the point
% \ccc{p} in the complex.}
\ccMethod{template< typename ForwardIterator > size_type remove(ForwardIterator
\ccMethod{template< typename ForwardIterator > void remove(ForwardIterator
start, ForwardIterator end);}{Remove the points or the vertices (through their
\ccc{Vertex_handle}) in the range \ccc{[start, end)}. Returns the number of
elements actually removed.}
\ccc{Vertex_handle}) in the range \ccc{[start, end)}.
\ccc{*start} must be of type \ccc{Vertex_handle}.
}
\ccHeading{Point insertion} % - - - - - - - - - - - - - - - - - - - INSERTION
@ -85,14 +85,14 @@ and ensures that the empty-ball property is preserved.
Returns the number of vertices actually inserted. (If more than one vertex share
the same position in space, only one insertion is counted.)}
\ccMethod{Vertex_handle insert(const Point & p, const Full_cell_handle hint
\ccMethod{Vertex_handle insert(const Point & p, Full_cell_handle hint
= Full_cell_handle());}{Inserts point \ccc{p} in the Delaunay triangulation
and ensures that the empty-ball property is preserved. Returns a
\ccc{Vertex_handle} to the vertex of the triangulation with position \ccc{p}.
Prior to the actual insertion, \ccc{p} is located in the triangulation;
\ccc{hint} is used as a starting place for locating \ccc{p}.}
\ccMethod{Vertex_handle insert(const Point & p, const Vertex_handle hint);}%
\ccMethod{Vertex_handle insert(const Point & p, Vertex_handle hint);}%
{Same as above but uses a vertex as starting place for the search.}
\begin{ccAdvanced}
@ -108,12 +108,14 @@ value of \ccc{lt}:\begin{itemize} \item[\ccc{OUTSIDE_AFFINE_HULL}] Point
triangulation. The method \ccVar.\ccc{insert_outside_affine_hull()} is called.
\item[\ccc{ON_VERTEX}] The position of the vertex \ccc{v} described by \ccc{f}
is set to \ccc{p}. \ccc{v} is returned. \item[Anything else] The point \ccc{p}
is inserted in the conflict zone {\em which is assumed} to contain
full cell
\ccc{c}. (Roughly speaking, the method \ccVar.\ccc{insert_in_conflict_zone()}
is called.)\end{itemize} \ccPrecond The parameters \ccc{lt}, \ccc{f}, \ccc{ft}
is inserted. the full cell \ccc{c} {\em is assumed} to be in conflict
with \ccc{p}.
(Roughly speaking, the method \ccVar.\ccc{insert_in_conflicting_cell()}
is called.)\end{itemize}
The parameters \ccc{lt}, \ccc{f}, \ccc{ft}
and \ccc{c} must be consistent with the localization of point \ccc{p} in the
Delaunay triangulation.}
Delaunay triangulation e.g. by a call to
\ccc{c = locate(p, lt, f, ft)}.}
\ccMethod{Vertex_handle insert_outside_affine_hull(const Point & p);}
{Inserts the point \ccc{p} in the Delaunay triangulation. Returns a handle to the
@ -122,17 +124,18 @@ must lie outside the affine hull of the Delaunay triangulation. This implies tha
\ccVar.\ccc{current_dimension()} must be less that
\ccVar.\ccc{ambient_dimension()}.}
\ccMethod{Vertex_handle insert_in_conflict_zone(const Point & p, const
\ccMethod{Vertex_handle insert_in_conflicting_cell(const Point & p, const
Full_cell_handle c);}
{Inserts the point \ccc{p} in the Delaunay triangulation. Returns a handle to the
(possibly newly created) vertex at that position.\ccPrecond The point \ccc{p}
(possibly newly created) vertex at that position.
\ccPrecond The point \ccc{p}
must be in conflict with the full cell \ccc{c}.}
\end{ccAdvanced}
\ccHeading{Queries} % - - - - - - - - - - - - - - - - - - - - - - - - QUERIES
\ccMethod{bool conflict(const Point & p, Full_cell_const_handle c)
\ccMethod{bool is_in_conflict(const Point & p, Full_cell_const_handle c)
const;}{Returns \ccc{true} if and only if the point \ccc{p} is in (Delaunay)
conflict with full cell \ccc{c} ({i.e.}, the circumscribing ball of
$c$ contains $p$ in its interior).

View File

@ -20,6 +20,7 @@ provides geometric types and predicates for use in the
\ccc{Data} is an optional type of data to be stored in the full cell class. The
class template \ccRefName\ accepts that no second parameter be specified. In
this case, \ccc{Data} defaults to \ccc{CGAL::No_full_cell_data}.
\ccc{CGAL::No_full_cell_data} can explicitely be specified to access the third parameter.
Parameter \ccc{TriangulationDSFullCell} must be a model of the concept
\ccc{TriangulationDSFullCell}.
@ -54,8 +55,8 @@ The parameter \ccc{t} is passed to the \ccc{Data} constructor.}
\ccHeading{Data access}
\ccMethod{const Data & data() const;}{Returns a reference to the stored data.}
\ccGlue\ccMethod{Data & data();}{Returns a reference to the stored data.}
\ccMethod{const Data & data() const;}{Returns a const reference to the stored data.}
\ccGlue\ccMethod{Data & data();}{Returns a non-const reference to the stored data.}
\ccHeading{Input/Output}
@ -71,6 +72,8 @@ the point and other possible information. The data of type \ccc{Data} is
\ccSeeAlso
\ccc{Triangulation_vertex<TriangulationTraits, Data, TriangulationDSVertex>}
\ccc{Triangulation_vertex<TriangulationTraits, Data, TriangulationDSVertex>}\\
\ccc{Triangulation_data_structure<Dimensionality, TriangulationDSVertex, TriangulationDSFullCell>}\\
\ccc{Triangulation<TriangulationTraits,TriangulationDataStructure>}\\
\ccc{Delaunay_triangulation<DelaunayTriangulationTraits, TriangulationDataStructure>}
\end{ccRefClass}

View File

@ -20,6 +20,8 @@ declaration of the \ccc{Point} type.
\ccc{Data} is an optional type of data to be stored in the vertex class. The
class template \ccRefName\ accepts that no second parameter be specified. In
this case, \ccc{Data} defaults to \ccc{CGAL::No_vertex_data}.
\ccc{CGAL::No_vertex_data} can be explicitely specified to allow to access the
third parameter.
Parameter
\ccc{TriangulationDSVertex} must be a model of the concept \ccc{TriangulationDSVertex}. The
@ -62,8 +64,8 @@ passed to the \ccc{Data} constructor.}
\ccHeading{Data access}
\ccMethod{const Data & data() const;}{Returns a reference to the stored data.}
\ccGlue\ccMethod{Data & data();}{Returns a reference to the stored data.}
\ccMethod{const Data & data() const;}{Returns a const reference to the stored data.}
\ccGlue\ccMethod{Data & data();}{Returns a non-const reference to the stored data.}
\ccHeading{Input/Output}
@ -79,6 +81,9 @@ the point and other possible information. The data of type \ccc{Data} is
\ccSeeAlso
\ccc{Triangulation_full_cell<TriangulationTraits, Data, TriangulationDSFullCell>}
\ccc{Triangulation_full_cell<TriangulationTraits, Data, TriangulationDSFullCell>}\\
\ccc{Triangulation_data_structure<Dimensionality, TriangulationDSVertex, TriangulationDSFullCell>}\\
\ccc{Triangulation<TriangulationTraits,TriangulationDataStructure>}\\
\ccc{Delaunay_triangulation<DelaunayTriangulationTraits, TriangulationDataStructure>}
\end{ccRefClass}

View File

@ -170,12 +170,10 @@ public:
}
template< typename ForwardIterator >
size_type remove(ForwardIterator start, ForwardIterator end)
void remove(ForwardIterator start, ForwardIterator end)
{
size_type n = number_of_vertices();
while( start != end )
remove(*start++);
return ( n - number_of_vertices() );
}
// Not documented
@ -211,11 +209,11 @@ public:
return insert(p, hint->full_cell());
}
Vertex_handle insert_outside_affine_hull(const Point &);
Vertex_handle insert_in_conflict_zone(const Point &, const Full_cell_handle);
Vertex_handle insert_in_conflicting_cell(const Point &, const Full_cell_handle);
// - - - - - - - - - - - - - - - - - - - - - - - - - GATHERING CONFLICTING SIMPLICES
bool conflict(const Point &, Full_cell_const_handle) const;
bool is_in_conflict(const Point &, Full_cell_const_handle) const;
template< class OrientationPredicate >
Oriented_side perturbed_side_of_positive_sphere(const Point &,
Full_cell_const_handle, const OrientationPredicate &) const;
@ -684,7 +682,7 @@ Delaunay_triangulation<DCTraits, TDS>
return v;
}
else
return insert_in_conflict_zone(p, s);
return insert_in_conflicting_cell(p, s);
break;
}
}
@ -716,7 +714,7 @@ Delaunay_triangulation<DCTraits, TDS>
template< typename DCTraits, typename TDS >
typename Delaunay_triangulation<DCTraits, TDS>::Vertex_handle
Delaunay_triangulation<DCTraits, TDS>
::insert_in_conflict_zone(const Point & p, const Full_cell_handle s)
::insert_in_conflicting_cell(const Point & p, const Full_cell_handle s)
{
typedef std::vector<Full_cell_handle> Full_cell_h_vector;
typedef typename Full_cell_h_vector::iterator SHV_iterator;
@ -790,7 +788,7 @@ Delaunay_triangulation<DCTraits, TDS>
template< typename DCTraits, typename TDS >
bool
Delaunay_triangulation<DCTraits, TDS>
::conflict(const Point & p, Full_cell_const_handle s) const
::is_in_conflict(const Point & p, Full_cell_const_handle s) const
{
CGAL_precondition( 2 <= current_dimension() );
if( current_dimension() < ambient_dimension() )