added stuff about storage sites and updated some the doc for other

classes/concepts
This commit is contained in:
Menelaos Karavelas 2004-03-05 22:32:53 +00:00
parent 7af21aada6
commit 2fe380a29d
12 changed files with 734 additions and 94 deletions

View File

@ -160,7 +160,7 @@ requirements for the sites of a segment Voronoi diagram.
\ccPostcond{The returned site is exact.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramSite_2 supporting_site(unsinged int i);}
\ccMethod{SegmentVoronoiDiagramSite_2 supporting_site(unsigned int i);}
{Returns a segment site object representing the \ccc{i}-th
exact segment that supports the point of intersection represented
by the site.
@ -169,7 +169,7 @@ requirements for the sites of a segment Voronoi diagram.
\ccPostcond{The returned site is exact.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramSite_2 crossing_site(unsinged int i);}
\ccMethod{SegmentVoronoiDiagramSite_2 crossing_site(unsigned int i);}
{Returns a segment site object representing the \ccc{i}-th exact
segment that supports the $i$-th endpoint of the site
which is not the supporting segment of the site.

View File

@ -0,0 +1,193 @@
%% Copyright (c) 2003,2004 INRIA Sophia-Antipolis (France) and
%% Notre Dame University (U.S.A.). All rights reserved.
%%
%% This file is part of CGAL (www.cgal.org); you may redistribute it under
%% the terms of the Q Public License version 1.0.
%% See the file LICENSE.QPL distributed with CGAL.
%%
%% Licensees holding a valid commercial license may use this file in
%% accordance with the commercial license agreement provided with the software.
%%
%% This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
%% WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%%
%% $Source$
%% $Revision$ $Date$
%% $Name$
%%
%% Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
\begin{ccRefConcept}{SegmentVoronoiDiagramStorageSite_2}
%% add template arg's if necessary
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
The concept \ccc{SegmentVoronoiDiagramStorageSite_2} provides the
requirements for the storage sites of a segment Voronoi diagram. The
storage sites are sites that are used to store the information of a
site in a more compact form (that uses less storage). This is achieved
by storing handles to points instead of points.
\ccTwo{SegmentVoronoiDiagramStorageSite_2::Point_handle+}{}
\ccTypes
\ccNestedType{Site_2}{The site type.}
\ccGlue
\ccNestedType{Point_handle}{The type for a handle to a point.}
\ccCreation
\ccTwo{SegmentVoronoiDiagramStorageSite_2 ss()+}{}
\ccCreationVariable{ss} %% choose variable name
\ccConstructor{SegmentVoronoiDiagramStorageSite2 ss()}{Default constructor}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp)}{Constructor from a
point handle.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2)}{Constructor from two point handles.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2, Point_handle hq1, Point_handle hq2)}{Constructor
from four point handles.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2, Point_handle hq1, Point_handle hq2, bool
b)}{Constructor from four point handles and a boolean.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2, Point_handle hq1, Point_handle hq2, Point_handle
hr1, Point_handle hr2)}{Constructor from six
point handles.}
%
\ccGlue
\ccConstructor{SegmentVoronoiDiagramStorageSite_2(SegmentVoronoiDiagramStorageSite_2
other)}{Copy constructor.}
\ccPredicates
\ccThree{bool}{ss.is_exact(unsigned int i)+}{}
\ccMethod{bool is_defined();}{Returns \ccc{true} if the storage site
represents a valid point or segment.}
%
\ccGlue
\ccMethod{bool is_point();}{Returns \ccc{true} if the storage site
represents a point.}
%
\ccGlue
\ccMethod{bool is_segment();}{Returns \ccc{true} if the storage site
represents a segment.}
%
\ccGlue
\ccMethod{bool is_exact();}{Returns \ccc{true} if the storage site
represents an input point or an input segment. Returns \ccc{false}
if it represents a point of intersection of two segments, or if it
represents a segment, at least one endpoint of which is a point of
intersection of two segments.}
%
\ccGlue
\ccMethod{bool is_exact(unsigned int i);}{Returns \ccc{true} if the
\ccc{i}-th endpoint of the corresponding site is an input
point. Returns \ccc{false} if the \ccc{i}-th endpoint of the
corresponding site is the intersection of two segments.
\ccPrecond{\ccc{i} must be at most $1$, and \ccc{ss.is_segment()}
must be \ccc{true}.}}
\ccAccessFunctions
%\ccThree{Point_handle}{ss.handle(unsigned int i)+}{}
\ccThree{SegmentVoronoiDiagramStorageSite_2}{}{}
\ccMethod{Point_handle handle(unsigned int i) const;}{
Returns the \ccc{i}-th point handle of the site's
representation. The valid values for \ccc{i} are $0$ through the
number of points in the constructor or the
\ccc{set_point}/\ccc{set_segment} methods used to
construct or define, respectively the site.
\ccPrecond{\ccc{i} must be at most $5$. The storage site must be of
the correct type in order to access the corresponding point handle.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramStorageSite_2 supporting_site();}
{Returns a storage site object representing the exact segment
that supports the segment represented by the storage site.
\ccPrecond{\ccc{ss.is_segment()} must be \ccc{true}.}
\ccPostcond{The returned storage site represents an exact site.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramStorageSite_2 supporting_site(unsigned int i);}
{Returns a storage site object representing the \ccc{i}-th
exact segment that supports the point of intersection represented
by the storage site.
\ccPrecond{\ccc{i} must be at most $1$, \ccc{ss.is_point()} must be
\ccc{true} and \ccc{ss.is_exact()} must be \ccc{false}.}
\ccPostcond{The returned storage site represents an exact site.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramStorageSite_2 crossing_site(unsigned int i);}
{Returns a storage site object representing the \ccc{i}-th exact
segment that supports the $i$-th endpoint of the site
which is not the supporting segment of the site.
\ccPrecond{\ccc{i} must be at most $1$,
\ccc{ss.is_segment()} must be \ccc{true} and
\ccc{ss.is_exact(i)} must be \ccc{false}.}
\ccPostcond{The returned site represents and exact site.}}
%
\ccGlue
\ccMethod{Site_2 site();}{Returns the site represented by the storage
site.}
\ccHeading{Set methods}
\ccThree{void}{s.set_point(Point_handle hp)+}{}
%\ccThree{void}{s.set_segment(Point_2 p1, Point_2 p2)+}{}
\ccMethod{void set_point(Point_handle hp);}{}
%
\ccGlue
\ccMethod{void set_point(Point_handle hp1, Point_handle hp2,
Point_handle hq1, Point_handle hq2);}{}
%
\ccGlue
\ccMethod{void set_segment(Point_handle hp1, Point_handle hp2);}{}
%
\ccGlue
\ccMethod{void set_segment(Point_handle hp1, Point_handle hp2,
Point_handle hq1, Point_handle hq2, bool b);}{}
%
\ccGlue
\ccMethod{void set_segment(Point_handle hp1, Point_handle hp2,
Point_handle hq1, Point_handle hq2, Point_handle hr1,
Point_handle hr2);}{}
\ccHasModels
\ccc{CGAL::Segment_Voronoi_diagram_storage_site_2<K,H>}
\ccSeeAlso
\ccc{SegmentVoronoiDiagramTraits_2}\\
\ccc{CGAL::Segment_Voronoi_diagram_site_2<K>}\\
\ccc{CGAL::Segment_Voronoi_diagram_traits_2<ITag,K,MTag>}\\
\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2<ITag,CK,CM,EK,EM,FK,FM>}
\end{ccRefConcept}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

View File

@ -22,10 +22,6 @@
\begin{ccRefClass}{Segment_Voronoi_diagram_hierarchy_2<Gt,STag,PC,DS>}
%% add template arg's if necessary
{\sc I have to modify this when I add the boolean about whether or not
points are to be inserted in the upper levels of the hierarchy or
not.}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
@ -33,42 +29,60 @@
We provide an alternative to the class
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} for the incremental
construction of the segment Voronoi diagram. The \ccRefName\ class
maintains a hierarchy of segment Voronoi diagram graphs. The
bottom-most level of the hierarchy contains the full segment Voronoi
diagram. A site that is in level $i$, is in level $i+1$ with
probability $1/\alpha$ where $\alpha > 1$ is some constant. The
difference between the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class
and the \ccRefName\ is on how the nearest neighbor location is
done. Given a point $p$ the location is done as follows: at the top
most level we find the nearest neighbor of $p$ as in the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. At every subsequent
level $i$ we use the nearest neighbor found at level $i+1$ to find the
nearest neighbor at level $i$. This is a variant of the corresponding
hierarchy for points found in \cite{d-iirdt-98}. The details are
described in \cite{k-peasv-04}.
%
The class has three template parameters which have essentially the same
meaning as in the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. The
maintains a hierarchy of Voronoi diagrams. There are two possibilities
as to how this hierarchy is constructed.
In the first case the bottom-most level of the hierarchy contains the
full segment Voronoi diagram. The upper levels of the hierarchy
contain only points that are either point sites or endpoints of
segment sites in the bottom-most Voronoi diagram.
A point that is in level $i$ (either as an individdual point or as the
endpoint of a segment), is inserted in level $i+1$ with probability
$1/alpha$ where $\alpha>1$ is some constant.
In the second case the upper levels of the hierarchy contains not only
points but also segments. A site that is in level $i$, is in level
$i+1$ with probability $1/\beta$ where $\beta > 1$ is some constant.
The difference between the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>}
class and the \ccRefName\ class (both versions of it) is on how the
nearest neighbor location is done. Given a point $p$ the location is
done as follows: at the top most level we find the nearest neighbor of
$p$ as in the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. At
every subsequent level $i$ we use the nearest neighbor found at level
$i+1$ to find the nearest neighbor at level $i$. This is a variant of
the corresponding hierarchy for points found in \cite{d-iirdt-98}. The
details are described in \cite{k-peasv-04}.
The class has four template parameters. The first, third and fourth
have essentially the same semantics as in the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. The
first template parameter must be a model of the
\ccc{SegmentVoronoiDiagramTraits_2} concept.
The second template parameter must be a model of the
The third template parameter must be a model of the
\ccc{SimpleContainer} concept. The third template parameter must be a
model of the \ccc{SegmentVoronoiDiagramDataStructure_2}
concept. However, the vertex base class that is to be used in the
segment Voronoi diagram data structure must
be a model of the \ccc{SegmentVoronoiDiagramHierarchyVertexBase_2}
concept. The second template parameter defaults to
\ccc{CGAL::Simple_container<typename Gt::Point_2>}, whereas the third
concept. The third template parameter defaults to
\ccc{CGAL::Simple_container<typename Gt::Point_2>}, whereas the fourth
template parameter defaults to
\ccc{Segment_Voronoi_diagram_data_structure_2<
Segment_Voronoi_diagram_hierarchy_vertex_base_2<
Segment_Voronoi_diagram_vertex_base_2<Gt> >,
Segment_Voronoi_diagram_face_base_2<Gt> >}.
Segment_Voronoi_diagram_face_base_2<Gt> >}. The second template
parameter controls whether or not segments are added in the upper
levels of the hierarchy. It's possible values are \ccc{CGAL::Tag_true}
and \ccc{CGAL::Tag_false}. If it is set to \ccc{CGAL::Tag_true},
segments are also inserted in the upper levels of the hierarchy. The
value \ccc{CGAL::Tag_false} indicates that only points are to be
inserted in the upper levels of the hierarchy.
The \ccRefName\ class derives publicly from the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. The interface is
the same with its base class. In the sequel only the methods
overridden are documented.
the same with its base class. In the sequel only additional types
defined and the methods overridden are documented.
\ccInclude{CGAL/Segment_Voronoi_diagram_hierarchy_2.h}
@ -138,8 +152,6 @@ not.}
\ccHeading{Insertion}
\ccThree{Vertex_handle }{svdh.insert(Point_2 p)+}{}
%
{\sc In the following method I can insert the number of sites inserted
in the diagram. Also I must add the possibility of shuffling.}
\ccMethod{template< class Input_iterator >
size_type insert(Input_iterator first, Input_iterator beyond);}
{Inserts the sites in the range
@ -148,6 +160,23 @@ size_type insert(Input_iterator first, Input_iterator beyond);}
\ccPrecond{\ccc{Input_iterator} must be a model of \ccc{InputIterator}
and its value type must be \ccc{Point_2} or \ccc{Site_2}.}}
%
\ccMethod{template< class Input_iterator >
size_type insert(Input_iterator first, Input_iterator beyond,
CGAL::Tag_false);}
{Same as the \ccc{svdh.insert(first,beyond)} method.}
%
\ccMethod{template< class Input_iterator >
size_type insert(Input_iterator first, Input_iterator beyond,
CGAL::Tag_true);}
{Inserts the sites in the range [\ccc{first}, \ccc{beyond})
after perfoming a random shuffle on them. The input
iterator range is not invalidated since the sites are
copied locally before the shuffling is performed. The
number of additional sites inserted is returned.
\ccPrecond{\ccc{Input_iterator} must be a model of
\ccc{InputIterator} and its value type must be
\ccc{Point_2} or \ccc{Site_2}.}}
%
\ccGlue
\ccMethod{Vertex_handle insert(Point_2 p);}{Inserts the
point \ccc{p} in the segment Voronoi diagram hierarchy. If \ccc{p} has
@ -167,27 +196,32 @@ handle of \ccc{p} is returned.}
vertex handle to one of its open subsegments is returned.}
%
\ccGlue
\ccMethod{Vertex_handle insert(Site_2 s);}{Inserts the site \ccc{s} in the
segment Voronoi diagram hierarchy. The vertex handle returned has
the same semantics with the vertex handle returned by the methods
\ccc{Vertex_handle insert(Point_2 p)} and \ccc{Vertex_handle
insert(Point_2 p1, Point_2 p2)}, depending on whether \ccc{s}
represents a point or a segment respectively.
\ccPrecond{\ccc{s.is_exact()} must be \ccc{true}.}}
%
\ccGlue
\ccMethod{Vertex_handle insert(Point_2 p, Vertex_handle vnear);}
{A call to this method is equivalent to \ccc{svdh.insert(p);} and it
{A call to this method is equivalent to \ccc{svdh.insert(p)} and it
has been added for the sake of conformity with the interface of the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class.}
%
\ccGlue
\ccMethod{Vertex_handle insert(Point_2 p1, Point_2 p2, Vertex_handle
vnear);}{A call to this method is equivalent to
\ccc{svdh.insert(p1, p2);} and it has been added for the sake of
\ccc{svdh.insert(p1, p2)} and it has been added for the sake of
conformity with the interface of the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class.}
%\ccGlue
%\ccMethod{Vertex_handle insert(Site_2 s, Vertex_handle
%vnear);}{Inserts \ccc{s} in the Apollonius graph hierarchy using the
%site associated with \ccc{vnear} as
%an estimate for the nearest neighbor of the center of \ccc{s}.
%If \ccc{s} is visible then the vertex handle of \ccc{s} is
%returned, otherwise \ccc{Vertex_handle(NULL)} is returned.
%A call to this method is equivalent to \ccc{agh.insert(s);} and it has
%been added for the sake of conformity with the interface of the
%\ccc{Apollonius_graph_2<Gt,Agds>} class.}
%
\ccGlue
\ccMethod{Vertex_handle insert(Site_2 s, Vertex_handle
vnear);}{A call to this method is equivalent to \ccc{svdh.insert(s)}
and it has been added for the sake of conformity with the interface of
the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class.}
%\ccHeading{Removal}
%\ccThree{void }{agh.remove(Vertex_handle v)+}{}

View File

@ -0,0 +1,91 @@
%% Copyright (c) 2003,2004 INRIA Sophia-Antipolis (France) and
%% Notre Dame University (U.S.A.). All rights reserved.
%%
%% This file is part of CGAL (www.cgal.org); you may redistribute it under
%% the terms of the Q Public License version 1.0.
%% See the file LICENSE.QPL distributed with CGAL.
%%
%% Licensees holding a valid commercial license may use this file in
%% accordance with the commercial license agreement provided with the software.
%%
%% This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
%% WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%%
%% $Source$
%% $Revision$ $Date$
%% $Name$
%%
%% Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
\begin{ccRefClass}{Segment_Voronoi_diagram_storage_site_2<Gt,PH>}
%% add template arg's if necessary
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
The class \ccRefName\ is a model for the concept
\ccc{SegmentVoronoiDiagramStorageSite_2}. It is parametrized by two
template parameters: \ccc{Gt}, which must be a model of the
\ccc{SegmentVoronoiDiagramTraits_2} concept, and \ccc{PH}, which must
be identical to the type \ccc{PC::iterator}, where \ccc{PC} is the
same as the template parameter in the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} and
\ccc{Segment_Voronoi_diagram_hierarchy_2<Gt,STag,PC,DS>} classes.
\ccInclude{CGAL/Segment_Voronoi_diagram_storage_site_2.h}
\ccIsModel
\ccc{SegmentVoronoiDiagramStorageSite_2}
\ccTypes
The class \ccRefName\ introduces the following type in addition to the
types in the concept \ccc{SegmentVoronoiDiagramStorageSite_2}.
\ccTypedef
{typedef Gt Geom_traits;}{A type for the template parameter \ccc{Gt}.}
\ccCreation
\ccTwo{Segment_Voronoi_diagram_storage_site_2<Gt,H> ss(Point_handle hp)+}{}
\ccCreationVariable{ss} %% choose variable name
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>()}{Default
constructor}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2, Point_handle hq1, Point_handle hq2)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2, Point_handle hq1, Point_handle hq2, bool b)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2, Point_handle hq1, Point_handle hq2,
Point_handle hr1, Point_handle hr2)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_site_2<Gt,H>(
Segment_Voronoi_diagram_storage_site_2<Gt,PH> other)}{Copy constructor.}
\ccSeeAlso
\ccc{SegmentVoronoiDiagramSite_2}\\
\ccc{SegmentVoronoiDiagramTraits_2}\\
\ccc{CGAL::Segment_Voronoi_diagram_traits_2<ITag,K,MTag>}\\
\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2<ITag,CK,CM,EK,EM,FK,FM>}
\end{ccRefClass}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

View File

@ -53,13 +53,13 @@ afore-mentioned concepts.
\ccHeading{Classes}
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_2<Gt,PC,DS>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_site_2<K>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2<K,PC,SSTag>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2<Gt,PH>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_data_structure_2<Vb,Fb>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_vertex_base_2<Gt,PC>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_vertex_base_2<Gt,PC,SSTag>}\\
%\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_face_base_2<Gt>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_traits_2<K,Method_tag>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_hierarchy_2<Gt,PC,DS>} \\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_traits_2<ITag,K,MTag>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_filtered_traits_2<ITag,CK,CM,EK,EM,FK,FM>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_hierarchy_2<Gt,STag,PC,DS>} \\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_hierarchy_vertex_base_2<Vbb>}
\lcHtml{\ccHeading{Links to the Reference Sections}}

View File

@ -22,6 +22,8 @@
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramSite_2.tex}
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_site_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramStorageSite_2.tex}
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_storage_site_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramDataStructure_2.tex}
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_data_structure_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex}

View File

@ -160,7 +160,7 @@ requirements for the sites of a segment Voronoi diagram.
\ccPostcond{The returned site is exact.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramSite_2 supporting_site(unsinged int i);}
\ccMethod{SegmentVoronoiDiagramSite_2 supporting_site(unsigned int i);}
{Returns a segment site object representing the \ccc{i}-th
exact segment that supports the point of intersection represented
by the site.
@ -169,7 +169,7 @@ requirements for the sites of a segment Voronoi diagram.
\ccPostcond{The returned site is exact.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramSite_2 crossing_site(unsinged int i);}
\ccMethod{SegmentVoronoiDiagramSite_2 crossing_site(unsigned int i);}
{Returns a segment site object representing the \ccc{i}-th exact
segment that supports the $i$-th endpoint of the site
which is not the supporting segment of the site.

View File

@ -0,0 +1,193 @@
%% Copyright (c) 2003,2004 INRIA Sophia-Antipolis (France) and
%% Notre Dame University (U.S.A.). All rights reserved.
%%
%% This file is part of CGAL (www.cgal.org); you may redistribute it under
%% the terms of the Q Public License version 1.0.
%% See the file LICENSE.QPL distributed with CGAL.
%%
%% Licensees holding a valid commercial license may use this file in
%% accordance with the commercial license agreement provided with the software.
%%
%% This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
%% WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%%
%% $Source$
%% $Revision$ $Date$
%% $Name$
%%
%% Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
\begin{ccRefConcept}{SegmentVoronoiDiagramStorageSite_2}
%% add template arg's if necessary
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
The concept \ccc{SegmentVoronoiDiagramStorageSite_2} provides the
requirements for the storage sites of a segment Voronoi diagram. The
storage sites are sites that are used to store the information of a
site in a more compact form (that uses less storage). This is achieved
by storing handles to points instead of points.
\ccTwo{SegmentVoronoiDiagramStorageSite_2::Point_handle+}{}
\ccTypes
\ccNestedType{Site_2}{The site type.}
\ccGlue
\ccNestedType{Point_handle}{The type for a handle to a point.}
\ccCreation
\ccTwo{SegmentVoronoiDiagramStorageSite_2 ss()+}{}
\ccCreationVariable{ss} %% choose variable name
\ccConstructor{SegmentVoronoiDiagramStorageSite2 ss()}{Default constructor}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp)}{Constructor from a
point handle.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2)}{Constructor from two point handles.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2, Point_handle hq1, Point_handle hq2)}{Constructor
from four point handles.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2, Point_handle hq1, Point_handle hq2, bool
b)}{Constructor from four point handles and a boolean.}
%
\ccGlue
\ccConstructor{SegmentVoronoiStorageSite2(Point_handle hp1,
Point_handle hp2, Point_handle hq1, Point_handle hq2, Point_handle
hr1, Point_handle hr2)}{Constructor from six
point handles.}
%
\ccGlue
\ccConstructor{SegmentVoronoiDiagramStorageSite_2(SegmentVoronoiDiagramStorageSite_2
other)}{Copy constructor.}
\ccPredicates
\ccThree{bool}{ss.is_exact(unsigned int i)+}{}
\ccMethod{bool is_defined();}{Returns \ccc{true} if the storage site
represents a valid point or segment.}
%
\ccGlue
\ccMethod{bool is_point();}{Returns \ccc{true} if the storage site
represents a point.}
%
\ccGlue
\ccMethod{bool is_segment();}{Returns \ccc{true} if the storage site
represents a segment.}
%
\ccGlue
\ccMethod{bool is_exact();}{Returns \ccc{true} if the storage site
represents an input point or an input segment. Returns \ccc{false}
if it represents a point of intersection of two segments, or if it
represents a segment, at least one endpoint of which is a point of
intersection of two segments.}
%
\ccGlue
\ccMethod{bool is_exact(unsigned int i);}{Returns \ccc{true} if the
\ccc{i}-th endpoint of the corresponding site is an input
point. Returns \ccc{false} if the \ccc{i}-th endpoint of the
corresponding site is the intersection of two segments.
\ccPrecond{\ccc{i} must be at most $1$, and \ccc{ss.is_segment()}
must be \ccc{true}.}}
\ccAccessFunctions
%\ccThree{Point_handle}{ss.handle(unsigned int i)+}{}
\ccThree{SegmentVoronoiDiagramStorageSite_2}{}{}
\ccMethod{Point_handle handle(unsigned int i) const;}{
Returns the \ccc{i}-th point handle of the site's
representation. The valid values for \ccc{i} are $0$ through the
number of points in the constructor or the
\ccc{set_point}/\ccc{set_segment} methods used to
construct or define, respectively the site.
\ccPrecond{\ccc{i} must be at most $5$. The storage site must be of
the correct type in order to access the corresponding point handle.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramStorageSite_2 supporting_site();}
{Returns a storage site object representing the exact segment
that supports the segment represented by the storage site.
\ccPrecond{\ccc{ss.is_segment()} must be \ccc{true}.}
\ccPostcond{The returned storage site represents an exact site.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramStorageSite_2 supporting_site(unsigned int i);}
{Returns a storage site object representing the \ccc{i}-th
exact segment that supports the point of intersection represented
by the storage site.
\ccPrecond{\ccc{i} must be at most $1$, \ccc{ss.is_point()} must be
\ccc{true} and \ccc{ss.is_exact()} must be \ccc{false}.}
\ccPostcond{The returned storage site represents an exact site.}}
%
\ccGlue
\ccMethod{SegmentVoronoiDiagramStorageSite_2 crossing_site(unsigned int i);}
{Returns a storage site object representing the \ccc{i}-th exact
segment that supports the $i$-th endpoint of the site
which is not the supporting segment of the site.
\ccPrecond{\ccc{i} must be at most $1$,
\ccc{ss.is_segment()} must be \ccc{true} and
\ccc{ss.is_exact(i)} must be \ccc{false}.}
\ccPostcond{The returned site represents and exact site.}}
%
\ccGlue
\ccMethod{Site_2 site();}{Returns the site represented by the storage
site.}
\ccHeading{Set methods}
\ccThree{void}{s.set_point(Point_handle hp)+}{}
%\ccThree{void}{s.set_segment(Point_2 p1, Point_2 p2)+}{}
\ccMethod{void set_point(Point_handle hp);}{}
%
\ccGlue
\ccMethod{void set_point(Point_handle hp1, Point_handle hp2,
Point_handle hq1, Point_handle hq2);}{}
%
\ccGlue
\ccMethod{void set_segment(Point_handle hp1, Point_handle hp2);}{}
%
\ccGlue
\ccMethod{void set_segment(Point_handle hp1, Point_handle hp2,
Point_handle hq1, Point_handle hq2, bool b);}{}
%
\ccGlue
\ccMethod{void set_segment(Point_handle hp1, Point_handle hp2,
Point_handle hq1, Point_handle hq2, Point_handle hr1,
Point_handle hr2);}{}
\ccHasModels
\ccc{CGAL::Segment_Voronoi_diagram_storage_site_2<K,H>}
\ccSeeAlso
\ccc{SegmentVoronoiDiagramTraits_2}\\
\ccc{CGAL::Segment_Voronoi_diagram_site_2<K>}\\
\ccc{CGAL::Segment_Voronoi_diagram_traits_2<ITag,K,MTag>}\\
\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2<ITag,CK,CM,EK,EM,FK,FM>}
\end{ccRefConcept}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

View File

@ -22,10 +22,6 @@
\begin{ccRefClass}{Segment_Voronoi_diagram_hierarchy_2<Gt,STag,PC,DS>}
%% add template arg's if necessary
{\sc I have to modify this when I add the boolean about whether or not
points are to be inserted in the upper levels of the hierarchy or
not.}
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
@ -33,42 +29,60 @@
We provide an alternative to the class
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} for the incremental
construction of the segment Voronoi diagram. The \ccRefName\ class
maintains a hierarchy of segment Voronoi diagram graphs. The
bottom-most level of the hierarchy contains the full segment Voronoi
diagram. A site that is in level $i$, is in level $i+1$ with
probability $1/\alpha$ where $\alpha > 1$ is some constant. The
difference between the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class
and the \ccRefName\ is on how the nearest neighbor location is
done. Given a point $p$ the location is done as follows: at the top
most level we find the nearest neighbor of $p$ as in the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. At every subsequent
level $i$ we use the nearest neighbor found at level $i+1$ to find the
nearest neighbor at level $i$. This is a variant of the corresponding
hierarchy for points found in \cite{d-iirdt-98}. The details are
described in \cite{k-peasv-04}.
%
The class has three template parameters which have essentially the same
meaning as in the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. The
maintains a hierarchy of Voronoi diagrams. There are two possibilities
as to how this hierarchy is constructed.
In the first case the bottom-most level of the hierarchy contains the
full segment Voronoi diagram. The upper levels of the hierarchy
contain only points that are either point sites or endpoints of
segment sites in the bottom-most Voronoi diagram.
A point that is in level $i$ (either as an individdual point or as the
endpoint of a segment), is inserted in level $i+1$ with probability
$1/alpha$ where $\alpha>1$ is some constant.
In the second case the upper levels of the hierarchy contains not only
points but also segments. A site that is in level $i$, is in level
$i+1$ with probability $1/\beta$ where $\beta > 1$ is some constant.
The difference between the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>}
class and the \ccRefName\ class (both versions of it) is on how the
nearest neighbor location is done. Given a point $p$ the location is
done as follows: at the top most level we find the nearest neighbor of
$p$ as in the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. At
every subsequent level $i$ we use the nearest neighbor found at level
$i+1$ to find the nearest neighbor at level $i$. This is a variant of
the corresponding hierarchy for points found in \cite{d-iirdt-98}. The
details are described in \cite{k-peasv-04}.
The class has four template parameters. The first, third and fourth
have essentially the same semantics as in the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. The
first template parameter must be a model of the
\ccc{SegmentVoronoiDiagramTraits_2} concept.
The second template parameter must be a model of the
The third template parameter must be a model of the
\ccc{SimpleContainer} concept. The third template parameter must be a
model of the \ccc{SegmentVoronoiDiagramDataStructure_2}
concept. However, the vertex base class that is to be used in the
segment Voronoi diagram data structure must
be a model of the \ccc{SegmentVoronoiDiagramHierarchyVertexBase_2}
concept. The second template parameter defaults to
\ccc{CGAL::Simple_container<typename Gt::Point_2>}, whereas the third
concept. The third template parameter defaults to
\ccc{CGAL::Simple_container<typename Gt::Point_2>}, whereas the fourth
template parameter defaults to
\ccc{Segment_Voronoi_diagram_data_structure_2<
Segment_Voronoi_diagram_hierarchy_vertex_base_2<
Segment_Voronoi_diagram_vertex_base_2<Gt> >,
Segment_Voronoi_diagram_face_base_2<Gt> >}.
Segment_Voronoi_diagram_face_base_2<Gt> >}. The second template
parameter controls whether or not segments are added in the upper
levels of the hierarchy. It's possible values are \ccc{CGAL::Tag_true}
and \ccc{CGAL::Tag_false}. If it is set to \ccc{CGAL::Tag_true},
segments are also inserted in the upper levels of the hierarchy. The
value \ccc{CGAL::Tag_false} indicates that only points are to be
inserted in the upper levels of the hierarchy.
The \ccRefName\ class derives publicly from the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class. The interface is
the same with its base class. In the sequel only the methods
overridden are documented.
the same with its base class. In the sequel only additional types
defined and the methods overridden are documented.
\ccInclude{CGAL/Segment_Voronoi_diagram_hierarchy_2.h}
@ -138,8 +152,6 @@ not.}
\ccHeading{Insertion}
\ccThree{Vertex_handle }{svdh.insert(Point_2 p)+}{}
%
{\sc In the following method I can insert the number of sites inserted
in the diagram. Also I must add the possibility of shuffling.}
\ccMethod{template< class Input_iterator >
size_type insert(Input_iterator first, Input_iterator beyond);}
{Inserts the sites in the range
@ -148,6 +160,23 @@ size_type insert(Input_iterator first, Input_iterator beyond);}
\ccPrecond{\ccc{Input_iterator} must be a model of \ccc{InputIterator}
and its value type must be \ccc{Point_2} or \ccc{Site_2}.}}
%
\ccMethod{template< class Input_iterator >
size_type insert(Input_iterator first, Input_iterator beyond,
CGAL::Tag_false);}
{Same as the \ccc{svdh.insert(first,beyond)} method.}
%
\ccMethod{template< class Input_iterator >
size_type insert(Input_iterator first, Input_iterator beyond,
CGAL::Tag_true);}
{Inserts the sites in the range [\ccc{first}, \ccc{beyond})
after perfoming a random shuffle on them. The input
iterator range is not invalidated since the sites are
copied locally before the shuffling is performed. The
number of additional sites inserted is returned.
\ccPrecond{\ccc{Input_iterator} must be a model of
\ccc{InputIterator} and its value type must be
\ccc{Point_2} or \ccc{Site_2}.}}
%
\ccGlue
\ccMethod{Vertex_handle insert(Point_2 p);}{Inserts the
point \ccc{p} in the segment Voronoi diagram hierarchy. If \ccc{p} has
@ -167,27 +196,32 @@ handle of \ccc{p} is returned.}
vertex handle to one of its open subsegments is returned.}
%
\ccGlue
\ccMethod{Vertex_handle insert(Site_2 s);}{Inserts the site \ccc{s} in the
segment Voronoi diagram hierarchy. The vertex handle returned has
the same semantics with the vertex handle returned by the methods
\ccc{Vertex_handle insert(Point_2 p)} and \ccc{Vertex_handle
insert(Point_2 p1, Point_2 p2)}, depending on whether \ccc{s}
represents a point or a segment respectively.
\ccPrecond{\ccc{s.is_exact()} must be \ccc{true}.}}
%
\ccGlue
\ccMethod{Vertex_handle insert(Point_2 p, Vertex_handle vnear);}
{A call to this method is equivalent to \ccc{svdh.insert(p);} and it
{A call to this method is equivalent to \ccc{svdh.insert(p)} and it
has been added for the sake of conformity with the interface of the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class.}
%
\ccGlue
\ccMethod{Vertex_handle insert(Point_2 p1, Point_2 p2, Vertex_handle
vnear);}{A call to this method is equivalent to
\ccc{svdh.insert(p1, p2);} and it has been added for the sake of
\ccc{svdh.insert(p1, p2)} and it has been added for the sake of
conformity with the interface of the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class.}
%\ccGlue
%\ccMethod{Vertex_handle insert(Site_2 s, Vertex_handle
%vnear);}{Inserts \ccc{s} in the Apollonius graph hierarchy using the
%site associated with \ccc{vnear} as
%an estimate for the nearest neighbor of the center of \ccc{s}.
%If \ccc{s} is visible then the vertex handle of \ccc{s} is
%returned, otherwise \ccc{Vertex_handle(NULL)} is returned.
%A call to this method is equivalent to \ccc{agh.insert(s);} and it has
%been added for the sake of conformity with the interface of the
%\ccc{Apollonius_graph_2<Gt,Agds>} class.}
%
\ccGlue
\ccMethod{Vertex_handle insert(Site_2 s, Vertex_handle
vnear);}{A call to this method is equivalent to \ccc{svdh.insert(s)}
and it has been added for the sake of conformity with the interface of
the \ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} class.}
%\ccHeading{Removal}
%\ccThree{void }{agh.remove(Vertex_handle v)+}{}

View File

@ -0,0 +1,91 @@
%% Copyright (c) 2003,2004 INRIA Sophia-Antipolis (France) and
%% Notre Dame University (U.S.A.). All rights reserved.
%%
%% This file is part of CGAL (www.cgal.org); you may redistribute it under
%% the terms of the Q Public License version 1.0.
%% See the file LICENSE.QPL distributed with CGAL.
%%
%% Licensees holding a valid commercial license may use this file in
%% accordance with the commercial license agreement provided with the software.
%%
%% This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
%% WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
%%
%% $Source$
%% $Revision$ $Date$
%% $Name$
%%
%% Author(s) : Menelaos Karavelas <mkaravel@cse.nd.edu>
\begin{ccRefClass}{Segment_Voronoi_diagram_storage_site_2<Gt,PH>}
%% add template arg's if necessary
%% \ccHtmlCrossLink{} %% add further rules for cross referencing links
%% \ccHtmlIndexC[class]{} %% add further index entries
\ccDefinition
The class \ccRefName\ is a model for the concept
\ccc{SegmentVoronoiDiagramStorageSite_2}. It is parametrized by two
template parameters: \ccc{Gt}, which must be a model of the
\ccc{SegmentVoronoiDiagramTraits_2} concept, and \ccc{PH}, which must
be identical to the type \ccc{PC::iterator}, where \ccc{PC} is the
same as the template parameter in the
\ccc{Segment_Voronoi_diagram_2<Gt,PC,DS>} and
\ccc{Segment_Voronoi_diagram_hierarchy_2<Gt,STag,PC,DS>} classes.
\ccInclude{CGAL/Segment_Voronoi_diagram_storage_site_2.h}
\ccIsModel
\ccc{SegmentVoronoiDiagramStorageSite_2}
\ccTypes
The class \ccRefName\ introduces the following type in addition to the
types in the concept \ccc{SegmentVoronoiDiagramStorageSite_2}.
\ccTypedef
{typedef Gt Geom_traits;}{A type for the template parameter \ccc{Gt}.}
\ccCreation
\ccTwo{Segment_Voronoi_diagram_storage_site_2<Gt,H> ss(Point_handle hp)+}{}
\ccCreationVariable{ss} %% choose variable name
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>()}{Default
constructor}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2, Point_handle hq1, Point_handle hq2)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2, Point_handle hq1, Point_handle hq2, bool b)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_storage_site_2<Gt,H>(Point_handle
hp1, Point_handle hp2, Point_handle hq1, Point_handle hq2,
Point_handle hr1, Point_handle hr2)}{}
%\ccGlue
\ccConstructor{Segment_Voronoi_diagram_site_2<Gt,H>(
Segment_Voronoi_diagram_storage_site_2<Gt,PH> other)}{Copy constructor.}
\ccSeeAlso
\ccc{SegmentVoronoiDiagramSite_2}\\
\ccc{SegmentVoronoiDiagramTraits_2}\\
\ccc{CGAL::Segment_Voronoi_diagram_traits_2<ITag,K,MTag>}\\
\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2<ITag,CK,CM,EK,EM,FK,FM>}
\end{ccRefClass}
% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
% EOF
% +------------------------------------------------------------------------+

View File

@ -53,13 +53,13 @@ afore-mentioned concepts.
\ccHeading{Classes}
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_2<Gt,PC,DS>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_site_2<K>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2<K,PC,SSTag>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2<Gt,PH>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_data_structure_2<Vb,Fb>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_vertex_base_2<Gt,PC>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_vertex_base_2<Gt,PC,SSTag>}\\
%\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_face_base_2<Gt>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_traits_2<K,Method_tag>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_filtered_traits_2<CK,CM,EK,EM,FK,FM>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_hierarchy_2<Gt,PC,DS>} \\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_traits_2<ITag,K,MTag>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_filtered_traits_2<ITag,CK,CM,EK,EM,FK,FM>}\\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_hierarchy_2<Gt,STag,PC,DS>} \\
\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_hierarchy_vertex_base_2<Vbb>}
\lcHtml{\ccHeading{Links to the Reference Sections}}

View File

@ -22,6 +22,8 @@
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramSite_2.tex}
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_site_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramStorageSite_2.tex}
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_storage_site_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramDataStructure_2.tex}
\input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_data_structure_2.tex}
\input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex}