From 3d0a2e1f8fa8e22ab3cf864e4718b9d64b600767 Mon Sep 17 00:00:00 2001 From: Menelaos Karavelas Date: Fri, 5 Mar 2004 00:09:26 +0000 Subject: [PATCH] TODO --- Packages/Segment_Voronoi_diagram_2/TODO | 5 +- .../SegmentVoronoiDiagramTraits_2.tex | 94 +++++++++++++----- .../SegmentVoronoiDiagramVertexBase_2.tex | 18 +++- ...ment_Voronoi_diagram_filtered_traits_2.tex | 98 +++++++++++++------ .../Segment_Voronoi_diagram_hierarchy_2.tex | 49 ++++++---- .../Segment_Voronoi_diagram_traits_2.tex | 59 ++++++----- .../Segment_Voronoi_diagram_vertex_base_2.tex | 11 ++- .../Segment_Voronoi_diagram_2_ref/intro.tex | 2 +- .../Segment_Voronoi_diagram_2_ref/main.tex | 4 +- .../SegmentVoronoiDiagramTraits_2.tex | 94 +++++++++++++----- .../SegmentVoronoiDiagramVertexBase_2.tex | 18 +++- ...ment_Voronoi_diagram_filtered_traits_2.tex | 98 +++++++++++++------ .../Segment_Voronoi_diagram_hierarchy_2.tex | 49 ++++++---- .../Segment_Voronoi_diagram_traits_2.tex | 59 ++++++----- .../Segment_Voronoi_diagram_vertex_base_2.tex | 11 ++- .../Segment_Voronoi_diagram_2_ref/intro.tex | 2 +- .../Segment_Voronoi_diagram_2_ref/main.tex | 4 +- 17 files changed, 472 insertions(+), 203 deletions(-) diff --git a/Packages/Segment_Voronoi_diagram_2/TODO b/Packages/Segment_Voronoi_diagram_2/TODO index 3b9ee2adda3..3c2518f8f4c 100644 --- a/Packages/Segment_Voronoi_diagram_2/TODO +++ b/Packages/Segment_Voronoi_diagram_2/TODO @@ -1,6 +1,9 @@ +- make the intersectio tag in the traits to be the first template argument, + thus no default value - change the return type of the do_intersect predicate (and potentially its name) to be a char instead of std::pair; the char should - encode the type of arrangement + encode the type of arrangement; actually rename do_intersect to + arrangement_type and return an enumeration type - in the predicate classes, instead of the kernel's orientation use the orientation class taylored for sites (it does geometric filtering) - in class Svd_basic_constructions_C2.h, inside method to_ft, check diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex index 321d016af78..04242cb3b2d 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex @@ -33,17 +33,19 @@ it provides a type \ccc{Site_2}, which must be a model of the concept constructions for sites and several function object types for the predicates. -{\sc Add also the stuff about intersections...} - \ccTypes \ccTwo{SegmentVoronoiDiagramTraits_2::Segment_2+}{} % -\ccNestedType{Point_2}{A type for a point.} -\ccGlue +\ccNestedType{Intersections_tag}{Indicates or not whether the + intersecting segments are to be supported. + \ccPrecond{The tag must either be \ccc{CGAL::Tag_true} or + \ccc{CGAL::Tag_false}.}} \ccNestedType{Site_2}{A type for a site of the segment Voronoi diagram. Must be a model of the concept \ccc{SegmentVoronoiDiagramSite_2}.} \ccGlue +\ccNestedType{Point_2}{A type for a point.} +\ccGlue \ccNestedType{Line_2}{A type for a line. Only required if the segment Voronoi diagram is inserted in a stream.} \ccGlue @@ -53,14 +55,24 @@ types for the predicates. \ccNestedType{Segment_2}{A type for a segment. Only required if if the segment Voronoi diagram is inserted in a stream.} \ccGlue -\ccNestedType{Object_2}{A type representing different types of objects - in two dimensions, namely: \ccc{Point_2}, \ccc{Site_2}, - \ccc{Line_2}, \ccc{Ray_2} and \ccc{Segment_2}.} -\ccGlue \ccNestedType{FT}{A type for the field number type of sites, points, etc..} \ccGlue \ccNestedType{RT}{A type for the ring number type of sites, points, etc.} \ccGlue +\ccNestedType{Arrangement_type}{An enumeration type that indicates the + type of the arrangement of two sites. The possible values are + \ccc{DISJOINT}, \ccc{IDENTICAL}, \ccc{CROSSING}, + \ccc{TOUCHING_1}, \ccc{TOUCHING_2}, \ccc{TOUCHING_11}, + \ccc{TOUCHING_12}, \ccc{TOUCHING_21}, \ccc{TOUCHING_22}, + \ccc{OVERLAPPING_11}, \ccc{OVERLAPPING_12}, \ccc{OVERLAPPING_21}, + \ccc{OVERLAPPING_22}, \ccc{INTERIOR}, \ccc{INTERIOR_1}, + \ccc{INTERIOR_2}. A detailed description of the meaning of these + values is shown the end of the reference manual for this concept.} +\ccGlue +\ccNestedType{Object_2}{A type representing different types of objects + in two dimensions, namely: \ccc{Point_2}, \ccc{Site_2}, + \ccc{Line_2}, \ccc{Ray_2} and \ccc{Segment_2}.} +\ccGlue \ccNestedType{Assign_2} {Must provide \ccc{template bool operator() ( T& t, Object_2 o)} which assigns \ccc{o} to \ccc{t} if \ccc{o} was @@ -99,17 +111,19 @@ types for the predicates. % \ccTwo{SegmentVoronoiDiagram_2}{} % -%\ccGlue -%\ccNestedType{Compare_x_2}{A predicate object type. Must -%provide \ccc{Comparison_result operator()(Site_2 s1, -%Site_2 s2)}, which compares the $x$-coordinates of the centers of -%\ccc{s1} and \ccc{s2}.} +\ccGlue +\ccNestedType{Compare_x_2}{A predicate object type. Must +provide \ccc{Comparison_result operator()(Site_2 s1, +Site_2 s2)}, which compares the $x$-coordinates of the points +represented by the sites \ccc{s1} and \ccc{s2}. +\ccPrecond{\ccc{s1} and \ccc{s2} muts be points.}} % -%\ccGlue -%\ccNestedType{Compare_y_2}{A predicate object type. Must -%provide \ccc{Comparison_result operator()(Site_2 s1, -%Site_2 s2)}, which compares the $y$-coordinates of the centers of -%\ccc{s1} and \ccc{s2}.} +\ccGlue +\ccNestedType{Compare_y_2}{A predicate object type. Must +provide \ccc{Comparison_result operator()(Site_2 s1, +Site_2 s2)}, which compares the $y$-coordinates of the points +represented by the sites \ccc{s1} and \ccc{s2}. +\ccPrecond{\ccc{s1} and \ccc{s2} muts be points.}} % \ccGlue \ccNestedType{Orientation_2}{A predicate object type. Must @@ -120,6 +134,19 @@ usual orientation test for three points. \ccPrecond{the sites \ccc{s1}, \ccc{s2} and \ccc{s3} must be points.}} % \ccGlue +\ccNestedType{Are_same_points_2}{A predicate object type. Must provide + \ccc{bool operator(Site_2 s1, Site_2 s2)}, which determines is the + points represented by the sites \ccc{s1} and \ccc{s2} are identical. + \ccPrecond{\ccc{s1} and \ccc{s2} must be points.}} +% +\ccGlue +\ccNestedType{Are_parallel_2}{A predicate object type. Must provide + \ccc{bool operator(Site_2 s1, Site_2 s2)}, which determines is the + segments represented by the sites \ccc{s1} and \ccc{s2} are + parallel. + \ccPrecond{\ccc{s1} and \ccc{s2} must be points.}} +% +\ccGlue \ccNestedType{Oriented_side_of_bisector_2}{A predicate object type. Must provide \ccc{Oriented_side operator()(Site_2 s1, Site_2 s2, Point_2 p)}, which returns @@ -214,6 +241,20 @@ edge is in conflict with \ccc{q}. If \ccc{sgn} is \ccc{POSITIVE} or \ccc{ZERO}, the predicate returns \ccc{false} if and only if \ccc{q} is not in conflict with the Voronoi edge.} % +\ccGlue +\ccNestedType{Oriented_side_2}{A predicate object type. Must provide + \ccc{Oriented_side operator(Site_1 s1, Site_2 s2, Site_2 s3, Site_2 + s, Site_2 p)}. Determines the oriented side of the line $\ell$, + that passes through the Voronoi vertex of the sites \ccc{s1}, + \ccc{s2}, \ccc{s3} and is perpendicular to the segment site \ccc{s}, + that contains the point site \ccc{p}. + \ccPrecond{\ccc{s} must be a segment and \ccc{p} must be a point.}} +% +\ccNestedType{Arrangement_type_2}{A predicate object type. Must + provide \ccc{Arrangement_type operator()(Site_2 s1, Site_2 s2)} that + returns the type of the arrangement of the two sites \ccc{s1} and + \ccc{s2}.} +% %\ccGlue %\ccNestedType{Is_degenerate_edge_2}{A predicate object type. %Must provide \ccc{bool operator()(Site_2 s1, Site_2 @@ -248,12 +289,16 @@ other);}{Copy constructor.} \ccThree{Infinite_edge_interior_conflict_2} {gt.infinite_edge_interior_conflict_2_object();}{} % -%\ccMethod{Compare_x_2 compare_x_2_object();}{} -%\ccGlue -%\ccMethod{Compare_y_2 compare_y_2_object();}{} -%\ccGlue +\ccMethod{Compare_x_2 compare_x_2_object();}{} +\ccGlue +\ccMethod{Compare_y_2 compare_y_2_object();}{} +\ccGlue \ccMethod{Orientation_2 orientation_2_object();}{} \ccGlue +\ccMethod{Are_same_points_2 are_same_points_2_object();}{} +\ccGlue +\ccMethod{Are_parallel_2 are_parallel_2_object();}{} +\ccGlue \ccMethod{Oriented_side_of_bisector_2 oriented_side_of_bisector_test_2_object();}{} \ccGlue @@ -264,6 +309,10 @@ oriented_side_of_bisector_test_2_object();}{} \ccGlue \ccMethod{Infinite_edge_interior_conflict_2 infinite_edge_interior_conflict_2_object();}{} +\ccGlue +\ccMethod{Oriented_side_2 oriented_side_2_object();}{} +\ccGlue +\ccMethod{Arrangement_type_2 arrangement_type_2_object();}{} %\ccGlue %\ccMethod{Is_degenerate_edge_2 is_degenerate_edge_2_object();}{} @@ -300,6 +349,7 @@ construct_svd_vertex_2_object();}{} \ccSeeAlso \ccc{SegmentVoronoiDiagramSite_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ +\ccc{CGAL::Segment_Voronoi_diagram_hierarchy_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_traits_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2} \end{ccRefConcept} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex index 00308329d0e..c47bd6ee13d 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex @@ -39,14 +39,26 @@ the site. \ccPrecond{The type \ccc{Geom_traits} must define the type \ccc{Site_2}.}} % \ccGlue +\ccNestedType{Point_container}{A type for a container of points.} +% \ccPrecond{This type must satisfy the requirements of the concept +% \ccc{SimpleContainer}.}} +% +\ccGlue +\ccNestedType{Point_handle}{A handle type for the points in the point + container. + \ccPrecond{This type must be identical to the type + \ccc{Point_container::iterator}.}} +% +\ccGlue \ccNestedType{Site_2}{A type for the site. \ccPrecond{This type must coincide with the type \ccc{Geom_traits::Site_2}.}} % \ccGlue -\ccNestedType{Point_container}{A type for a container of points. - \ccPrecond{This type must satisfy the requirements of the concept - \ccc{SimpleContainer}.}} +\ccNestedType{Storage_site_tag}{A type that indicates what kind of + storage type to use. + \ccPrecond{\ccc{Storage_site_tag} must either be + \ccc{CGAL::Tag_true} or \ccc{CGAL::Tag_false}.}} % \ccGlue \ccNestedType{Storage_site_2}{A type for the internal representation diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex index 462bf7b4390..114bb82867e 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex @@ -20,16 +20,12 @@ \begin{ccRefClass} -{Segment_Voronoi_diagram_filtered_traits_2} +{Segment_Voronoi_diagram_filtered_traits_2} %% add template arg's if necessary %% \ccHtmlCrossLink{} %% add further rules for cross referencing links %% \ccHtmlIndexC[class]{} %% add further index entries -{\sc The type of \ccc{EM} must be consistent with whether - intersections are supported or not. If intersections are supported - we need \ccc{Field_tag}} - \ccDefinition The class \ccRefName\ provides a model for the @@ -41,32 +37,45 @@ class with efficient and exact predicates given an exact kernel \ccc{EK} and a filtering kernel \ccc{FK}. The geometric constructions associated provided by this class are equivalent to those provided by the traits class -\ccc{Segment_Voronoi_diagram_traits_2}, which means that they -may be inexact. +\ccc{Segment_Voronoi_diagram_traits_2}, which means that +they may be inexact. -This class has six template parameters. The first, third and fifth +This class has seven template parameters. The first template parameter +indicates whether intersections are to be supported and has two +possible values, namely \ccc{CGAL::Tag_true} and +\ccc{CGAL::Tag_false}. The value \ccc{CGAL::Tag_true} indicates that +intersecting segment are supported. the second, fouth and sixth template parameters must be a models of the \ccc{Kernel} concept. The -second, fourth and sixth template parameters correspond to how -predicates are evaluated. There are two predefined possible values for -\ccc{Method_tag}, namely \ccc{CGAL::Sqrt_field_tag} and -\ccc{CGAL::Ring_tag}. The first one must be used when the number type -used in the representation supports the exact evaluation of signs of -expressions involving all four basic operations and square roots, -whereas the second one requires the exact evaluation of signs of -ring-type expressions, i.e., expressions involving only additions, -subtractions and multiplications. +third, fifth and seventh template parameters correspond to how +predicates are evaluated. There are three predefined possible values for +\ccc{Method_tag}, namely \ccc{CGAL::Sqrt_field_tag}, +\ccc{CGAL::Field_tag} and \ccc{CGAL::Ring_tag}. The first one must be +used when the number type used in the representation supports the +exact evaluation of signs of expressions involving all four basic +operations and square roots, whereas the second one requires the exact +evaluation of signs of ring-type expressions, i.e., expressions +involving only additions, subtractions and multiplications. If +intersecting segments are supported the value for \ccc{CM}, \ccc{FM} +and \ccc{EM} cannot be \ccc{CGAL::Ring_tag}, since we need to perform +divisions. Moreover, in order to get exact constructions \ccc{CM} +must be set to \ccc{CGAL::Sqrt_field_tag} and the number type in +\ccc{CK} must support operations involing divisions and square roots +(as well as the other three basic operations of course). % The way the predicates are evaluated is discussed in \cite{b-ecvdl-96,k-peasv-04}. The default values for the template parameters are as follows: -\ccc{CM = CGAL::Sqrt_field_tag}, -\ccc{EM = CGAL::Ring_tag}, +\ccc{CM = CGAL::Sqrt_field_tag} (it is assumed that +\ccc{CGAL::Cartesian} or \ccc{CGAL::Simple_cartesian} +will be the entry for the template parameter \ccc{CK}), +\ccc{EM = CGAL::Field_tag}, \ccc{FK = CGAL::Simple_cartesian >}, -\ccc{FM = CM}. If the \textsc{Gmp} package is installed with \cgal, -the template parameter \ccc{EK} has the default value: -\ccc{EK = CGAL::Simple_cartesian}, otherwise its default -value is \ccc{EK = CGAL::Simple_cartesian}. +\ccc{FM = CGAL::Sqrt_field_tag}. If the \textsc{Gmp} package is +installed with \cgal, the template parameter \ccc{EK} has the default +value: \ccc{EK = CGAL::Simple_cartesian}, otherwise its +default value is +\ccc{EK = CGAL::Simple_cartesian >}. \ccInclude{CGAL/Segment_Voronoi_diagram_filtered_traits_2.h} @@ -74,24 +83,54 @@ value is \ccc{EK = CGAL::Simple_cartesian}. \ccIsModel \ccc{SegmentVoronoiDiagramTraits_2} +\ccTypes +In addition to the types required by the +\ccc{SegmentVoronoiDiagramTraits_2} concept the class \ccRefName\ +defines the following types: + +\ccTypedef{typedef CK Construction_kernel;}{} +\ccGlue +\ccTypedef{typedef FK Filtering_kernel;}{} +\ccGlue +\ccTypedef{typedef EK Exact_kernel;}{} +\ccGlue +\ccTypedef{typedef CM Method_tag;}{} +\ccGlue +\ccTypedef{typedef CM Construction_traits_method_tag;}{} +\ccGlue +\ccTypedef{typedef FM Filtering_traits_method_tag;}{} +\ccGlue +\ccTypedef{typedef EM Exact_traits_method_tag;}{} +\ccGlue +\ccNestedType{Construction_traits;}{A type for the segment Voronoi + diagram traits, where the kernel is \ccc{CK}.} +\ccGlue +\ccNestedType{Filtering_traits;}{A type for the segment Voronoi + diagram traits, where the kernel is \ccc{FK}.} +\ccGlue +\ccNestedType{Exact_traits;}{A type for the segment Voronoi + diagram traits, where the kernel is \ccc{EK}.} + + + \ccCreationVariable{traits} \ccCreation -\ccThree{Segment_Voronoi_diagram_filtered_traits_2+}{traits +\ccThree{Segment_Voronoi_diagram_filtered_traits_2+}{traits = other;+}{} \ccThreeToTwo % -\ccConstructor{Segment_Voronoi_diagram_filtered_traits_2();} +\ccConstructor{Segment_Voronoi_diagram_filtered_traits_2();} {Default\\ constructor.} \ccGlue \ccConstructor{ Segment_Voronoi_diagram_filtered_traits_2 -(Segment_Voronoi_diagram_filtered_traits_2 other);} +(Segment_Voronoi_diagram_filtered_traits_2 other);} {Copy\\ constructor.} \ccGlue %\ccThree{Apollonius_graph_filtered_traits_2+}{traits %= other;+}{} -\ccMethod{Segment_Voronoi_diagram_filtered_traits_2 - operator=(Segment_Voronoi_diagram_filtered_traits_2 +\ccMethod{Segment_Voronoi_diagram_filtered_traits_2 + operator=(Segment_Voronoi_diagram_filtered_traits_2 other);}{Assignment\\ operator.} @@ -100,9 +139,10 @@ Segment_Voronoi_diagram_filtered_traits_2 \ccc{Kernel}\\ \ccc{SegmentVoronoiDiagramTraits_2} \\ \ccc{CGAL::Ring_tag}\\ +\ccc{CGAL::Field_tag}\\ \ccc{CGAL::Sqrt_field_tag}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_traits_2} +\ccc{CGAL::Segment_Voronoi_diagram_traits_2} \end{ccRefClass} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex index 5708a36eb3f..7dc10f47e48 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex @@ -19,7 +19,7 @@ -\begin{ccRefClass}{Segment_Voronoi_diagram_hierarchy_2} +\begin{ccRefClass}{Segment_Voronoi_diagram_hierarchy_2} %% add template arg's if necessary {\sc I have to modify this when I add the boolean about whether or not @@ -80,15 +80,24 @@ overridden are documented. \ccTypes -\ccRefName\ does not introduce other types than those introduced by -its base class \ccc{Segment_Voronoi_diagram_2}. +\ccRefName\ introduces the following types in addition to those +introduced by its base class +\ccc{Segment_Voronoi_diagram_2}. + +\ccThree{typedef CGAL::Segment_Voronoi_diagram_2}{Base+}{} +\ccThreeToTwo +\ccTypedef{typedef STag Segments_in_hierarchy_tag;}{A type for the + \ccc{STag} template parameter.} +\ccGlue +\ccTypedef{typedef CGAL::Segment_Voronoi_diagram_2 Base;} + {A type for the base class.} \ccCreation \ccCreationVariable{svdh} % -%\ccThree{Segment_Voronoi_diagram_hierarchy_2} -%{svdh(Gt gt=Gt());}{} -%\ccThreeToTwo +\ccThree{Segment_Voronoi_diagram_hierarchy_2} +{svdh(Gt gt=Gt());}{} +\ccThreeToTwo \ccTwo{Segment_Voronoi_diagram_hierarchy}{} % \ccConstructor{Segment_Voronoi_diagram_hierarchy_2(Gt @@ -97,7 +106,7 @@ gt=Gt())}{Creates an hierarchy of segment Voronoi diagrams using % \ccGlue \ccConstructor{template< class Input_iterator > -Segment_Voronoi_diagram_hierarchy_2(Input_iterator +Segment_Voronoi_diagram_hierarchy_2(Input_iterator first, Input_iterator beyond, Gt gt=Gt())} {Creates a segment Voronoi diagram hierarchy using \ccc{gt} as geometric traits and inserts all sites in the @@ -107,18 +116,18 @@ range [\ccc{first}, \ccc{beyond}). either \ccc{Point_2} or \ccc{Site_2}}.} % \ccGlue -\ccConstructor{Segment_Voronoi_diagram_hierarchy_2 -(Segment_Voronoi_diagram_hierarchy_2 other)} +\ccConstructor{Segment_Voronoi_diagram_hierarchy_2 +(Segment_Voronoi_diagram_hierarchy_2 other)} {Copy constructor. All faces, vertices and inter-level pointers are duplicated. After the construction, \ccVar\ and \ccc{other} refer to two different hierarchies: if \ccc{other} is modified, \ccVar\ is not.} % -\ccThree{Segment_Voronoi_diagram_hierarchy++}{svdh = other;}{} +\ccThree{Segment_Voronoi_diagram_hierarchy++}{svdh = other;}{} \ccThreeToTwo \ccGlue -\ccMethod{Segment_Voronoi_diagram_hierarchy_2 -operator=(Segment_Voronoi_diagram_hierarchy_2 +\ccMethod{Segment_Voronoi_diagram_hierarchy_2 +operator=(Segment_Voronoi_diagram_hierarchy_2 other);}{Assignment. All faces, vertices and inter-level pointers are duplicated. After the construction, \ccVar\ and \ccc{other} refer to two different hierarchies: if \ccc{other} is modified, \ccVar\ is @@ -191,16 +200,17 @@ has been added for the sake of conformity with the interface of the \ccHeading{Nearest neighbor location} -\ccThree{Vertex_handle}{svdh.nearest_neighbor(Point p)+}{} +\ccThree{Vertex_handle}{svdh.nearest_neighbor(Point_2 p)+}{} % -\ccMethod{Vertex_handle nearest_neighbor(Point p);} +\ccMethod{Vertex_handle nearest_neighbor(Point_2 p);} {Finds the nearest neighbor of the point \ccc{p}. In other words it finds the site (point or open segment) whose Voronoi cell contains \ccc{p}. Ties are broken arbitrarily and one of the nearest neighbors of \ccc{p} is returned. If there are no sites in the segment Voronoi diagram \ccc{Vertex_handle()} is returned.} +% \ccGlue -\ccMethod{Vertex_handle nearest_neighbor(Point p, +\ccMethod{Vertex_handle nearest_neighbor(Point_2 p, Vertex_handle vnear);}{Finds the nearest neighbor of the point \ccc{p}. If there are no visible sites in the segment Voronoi diagram \ccc{Vertex_handle()} is returned. @@ -232,7 +242,7 @@ return \ccc{true}, and values greater then 1 are equivalent to diagram hierarchy.} \ccGlue % MK:: add this method make copy(...) protected and see doc of TDS -\ccMethod{void swap(Segment_Voronoi_diagram_hierarchy_2 +\ccMethod{void swap(Segment_Voronoi_diagram_hierarchy_2 other);} {The segment Voronoi diagram hierarchies \ccc{other} and \ccVar\ are swapped. \ccVar.\ccc{swap(other)} should be preferred to \ccVar\ccc{ = @@ -246,10 +256,9 @@ other} or to \ccVar\ccc{(other)} if \ccc{other} is deleted afterwards.} \ccc{SimpleContainer}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_data_structure_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_traits_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_hierarchy_vertex_base_2}\\ -\ccc{CGAL::Simple_container} +\ccc{CGAL::Segment_Voronoi_diagram_traits_2}\\ +\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2}\\ +\ccc{CGAL::Segment_Voronoi_diagram_hierarchy_vertex_base_2} \end{ccRefClass} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex index 7eec837a32f..66b134e6010 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex @@ -19,31 +19,35 @@ -\begin{ccRefClass}{Segment_Voronoi_diagram_traits_2} +\begin{ccRefClass}{Segment_Voronoi_diagram_traits_2} %% add template arg's if necessary %% \ccHtmlCrossLink{} %% add further rules for cross referencing links %% \ccHtmlIndexC[class]{} %% add further index entries -{\sc The type of \ccc{Method_tag} must be consistent with whether - intersections are supported or not. If intersections are supported - we need \ccc{Field_tag}} - \ccDefinition The class \ccRefName\ provides a model for the \ccc{SegmentVoronoiDiagramTraits_2} concept. This class has two template parameters. The first template parameter -must be a model of the \ccc{Kernel} concept. The second template -parameter corresponds to how predicates are evaluated. There are two -predefined possible values for \ccc{Method_tag}, namely -\ccc{CGAL::Sqrt_field_tag} and \ccc{CGAL::Ring_tag}. The first one -must be used when the number type used in the representation supports -the exact evaluation of signs of expressions involving all four basic -operations and square roots, whereas the second one requires the exact -evaluation of signs of ring-type expressions, i.e., expressions -involving only additions, subtractions and multiplications. The -default value for \ccc{Method_tag} is \ccc{CGAL::Ring_tag}. +indicates whether intersecting segment are supported or not. The +possible values of this parameter are \ccc{CGAL::Tag_true} and +\ccc{CGAL::Tag_false}. \ccc{CGAL::Tag_true} indicates that +intersecting segments are supported. The second template parameter +must be a model of the \ccc{Kernel} concept. The third template +parameter corresponds to how predicates are evaluated. There are three +possible values for \ccc{MTag}, namely +\ccc{CGAL::Sqrt_field_tag}, \ccc{CGAL::Field_tag} and +\ccc{CGAL::Ring_tag}. The first one must be used when the number type +used in the representation supports the exact evaluation of signs of +expressions involving all four basic operations and square roots, +whereas the second one requires the exact evaluation of signs of +ring-type expressions, i.e., expressions involving only additions, +subtractions and multiplications. The default value for +\ccc{MTag} is \ccc{CGAL::Field_tag}. Note that if the parameter +\ccc{ITag} is set to \ccc{CGAL::Tag_true}, the value +\ccc{CGAL::Ring_tag} is no longer a valid possible value since +divisions must also be supported. % The way the predicates are evaluated is discussed in \cite{b-ecvdl-96,k-peasv-04}. @@ -54,21 +58,31 @@ The way the predicates are evaluated is discussed in \ccIsModel \ccc{SegmentVoronoiDiagramTraits_2} +\ccTypes +The \ccRefName\ class introduces a few additional types with respect +to the \ccc{SegmentVoronoiDiagramTraits_2} concept. These are: + +\ccTypedef{typedef K Kernel;}{A typedef for the template parameter + \ccc{K}.} +\ccGlue +\ccTypedef{typedef MTag Method_tag;}{A typedef for the template + parameter \ccc{MTag}.} + \ccCreationVariable{traits} \ccCreation -\ccThree{Segment_Voronoi_diagram_traits_2} +\ccThree{Segment_Voronoi_diagram_traits_2} {traits = other}{} \ccThreeToTwo % -\ccConstructor{Segment_Voronoi_diagram_traits_2();} +\ccConstructor{Segment_Voronoi_diagram_traits_2();} {Default constructor.} \ccGlue -\ccConstructor{Segment_Voronoi_diagram_traits_2( - Segment_Voronoi_diagram_traits_2 other);} +\ccConstructor{Segment_Voronoi_diagram_traits_2( + Segment_Voronoi_diagram_traits_2 other);} {Copy constructor.} \ccGlue -\ccMethod{Segment_Voronoi_diagram_traits_2 -operator=(Segment_Voronoi_diagram_traits_2 +\ccMethod{Segment_Voronoi_diagram_traits_2 +operator=(Segment_Voronoi_diagram_traits_2 other);}{Assignment operator.} @@ -76,9 +90,10 @@ other);}{Assignment operator.} \ccc{Kernel}\\ \ccc{SegmentVoronoiDiagramTraits_2} \\ \ccc{CGAL::Ring_tag}\\ +\ccc{CGAL::Field_tag}\\ \ccc{CGAL::Sqrt_field_tag}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2} +\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2} \end{ccRefClass} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex index 5e0c4ab7d67..513c28c0eda 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex @@ -18,7 +18,7 @@ %% Author(s) : Menelaos Karavelas -\begin{ccRefClass}{Segment_Voronoi_diagram_vertex_base_2} +\begin{ccRefClass}{Segment_Voronoi_diagram_vertex_base_2} %% add template arg's if necessary @@ -33,7 +33,14 @@ base required by the \ccc{SegmentVoronoiDiagramDataStructure_2} concept. The class \ccRefName\ has two template arguments, the first being the geometric traits of the segment Voronoi diagram and should be a model of the concept \ccc{SegmentVoronoiDiagramTraits_2}. The second -is a class that must be a model of the concept \ccc{SimpleContainer}. +is a class that must be a model of the concept +\ccc{SimpleContainer}. The third template argument indicates whether +or not to use the simple storage site that does not support +intersecting segments, or the full storage site, that supports +intersecting segments. The possible values are \ccc{CGAL::Tag_true} +and \ccc{CGAL::Tag_false}. \ccc{CGAL::Tag_true} indicates that the +full storage site is to be used, whereas \ccc{CGAL::Tag_false} +indicates that the simple storage site is to be used. \ccInclude{CGAL/Segment_Voronoi_diagram_vertex_base_2.h} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/intro.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/intro.tex index afce3744ef2..4bad74a59fb 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/intro.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/intro.tex @@ -53,7 +53,7 @@ afore-mentioned concepts. \ccHeading{Classes} \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_2}\\ \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_site_2}\\ -\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2}\\ +\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2}\\ \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_data_structure_2}\\ \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_vertex_base_2}\\ %\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_face_base_2}\\ diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/main.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/main.tex index 744d1342190..1fb66ab40a4 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/main.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/Segment_Voronoi_diagram_2_ref/main.tex @@ -26,8 +26,8 @@ \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_data_structure_2.tex} \input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex} \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex} -\input{Segment_Voronoi_diagram_2_ref/TriangulationFaceBaseWithEdges_2.tex} -\input{Segment_Voronoi_diagram_2_ref/Triangulation_face_base_with_edges_2.tex} +%\input{Segment_Voronoi_diagram_2_ref/TriangulationFaceBaseWithEdges_2.tex} +%\input{Segment_Voronoi_diagram_2_ref/Triangulation_face_base_with_edges_2.tex} \input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex} \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex} \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex index 321d016af78..04242cb3b2d 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex @@ -33,17 +33,19 @@ it provides a type \ccc{Site_2}, which must be a model of the concept constructions for sites and several function object types for the predicates. -{\sc Add also the stuff about intersections...} - \ccTypes \ccTwo{SegmentVoronoiDiagramTraits_2::Segment_2+}{} % -\ccNestedType{Point_2}{A type for a point.} -\ccGlue +\ccNestedType{Intersections_tag}{Indicates or not whether the + intersecting segments are to be supported. + \ccPrecond{The tag must either be \ccc{CGAL::Tag_true} or + \ccc{CGAL::Tag_false}.}} \ccNestedType{Site_2}{A type for a site of the segment Voronoi diagram. Must be a model of the concept \ccc{SegmentVoronoiDiagramSite_2}.} \ccGlue +\ccNestedType{Point_2}{A type for a point.} +\ccGlue \ccNestedType{Line_2}{A type for a line. Only required if the segment Voronoi diagram is inserted in a stream.} \ccGlue @@ -53,14 +55,24 @@ types for the predicates. \ccNestedType{Segment_2}{A type for a segment. Only required if if the segment Voronoi diagram is inserted in a stream.} \ccGlue -\ccNestedType{Object_2}{A type representing different types of objects - in two dimensions, namely: \ccc{Point_2}, \ccc{Site_2}, - \ccc{Line_2}, \ccc{Ray_2} and \ccc{Segment_2}.} -\ccGlue \ccNestedType{FT}{A type for the field number type of sites, points, etc..} \ccGlue \ccNestedType{RT}{A type for the ring number type of sites, points, etc.} \ccGlue +\ccNestedType{Arrangement_type}{An enumeration type that indicates the + type of the arrangement of two sites. The possible values are + \ccc{DISJOINT}, \ccc{IDENTICAL}, \ccc{CROSSING}, + \ccc{TOUCHING_1}, \ccc{TOUCHING_2}, \ccc{TOUCHING_11}, + \ccc{TOUCHING_12}, \ccc{TOUCHING_21}, \ccc{TOUCHING_22}, + \ccc{OVERLAPPING_11}, \ccc{OVERLAPPING_12}, \ccc{OVERLAPPING_21}, + \ccc{OVERLAPPING_22}, \ccc{INTERIOR}, \ccc{INTERIOR_1}, + \ccc{INTERIOR_2}. A detailed description of the meaning of these + values is shown the end of the reference manual for this concept.} +\ccGlue +\ccNestedType{Object_2}{A type representing different types of objects + in two dimensions, namely: \ccc{Point_2}, \ccc{Site_2}, + \ccc{Line_2}, \ccc{Ray_2} and \ccc{Segment_2}.} +\ccGlue \ccNestedType{Assign_2} {Must provide \ccc{template bool operator() ( T& t, Object_2 o)} which assigns \ccc{o} to \ccc{t} if \ccc{o} was @@ -99,17 +111,19 @@ types for the predicates. % \ccTwo{SegmentVoronoiDiagram_2}{} % -%\ccGlue -%\ccNestedType{Compare_x_2}{A predicate object type. Must -%provide \ccc{Comparison_result operator()(Site_2 s1, -%Site_2 s2)}, which compares the $x$-coordinates of the centers of -%\ccc{s1} and \ccc{s2}.} +\ccGlue +\ccNestedType{Compare_x_2}{A predicate object type. Must +provide \ccc{Comparison_result operator()(Site_2 s1, +Site_2 s2)}, which compares the $x$-coordinates of the points +represented by the sites \ccc{s1} and \ccc{s2}. +\ccPrecond{\ccc{s1} and \ccc{s2} muts be points.}} % -%\ccGlue -%\ccNestedType{Compare_y_2}{A predicate object type. Must -%provide \ccc{Comparison_result operator()(Site_2 s1, -%Site_2 s2)}, which compares the $y$-coordinates of the centers of -%\ccc{s1} and \ccc{s2}.} +\ccGlue +\ccNestedType{Compare_y_2}{A predicate object type. Must +provide \ccc{Comparison_result operator()(Site_2 s1, +Site_2 s2)}, which compares the $y$-coordinates of the points +represented by the sites \ccc{s1} and \ccc{s2}. +\ccPrecond{\ccc{s1} and \ccc{s2} muts be points.}} % \ccGlue \ccNestedType{Orientation_2}{A predicate object type. Must @@ -120,6 +134,19 @@ usual orientation test for three points. \ccPrecond{the sites \ccc{s1}, \ccc{s2} and \ccc{s3} must be points.}} % \ccGlue +\ccNestedType{Are_same_points_2}{A predicate object type. Must provide + \ccc{bool operator(Site_2 s1, Site_2 s2)}, which determines is the + points represented by the sites \ccc{s1} and \ccc{s2} are identical. + \ccPrecond{\ccc{s1} and \ccc{s2} must be points.}} +% +\ccGlue +\ccNestedType{Are_parallel_2}{A predicate object type. Must provide + \ccc{bool operator(Site_2 s1, Site_2 s2)}, which determines is the + segments represented by the sites \ccc{s1} and \ccc{s2} are + parallel. + \ccPrecond{\ccc{s1} and \ccc{s2} must be points.}} +% +\ccGlue \ccNestedType{Oriented_side_of_bisector_2}{A predicate object type. Must provide \ccc{Oriented_side operator()(Site_2 s1, Site_2 s2, Point_2 p)}, which returns @@ -214,6 +241,20 @@ edge is in conflict with \ccc{q}. If \ccc{sgn} is \ccc{POSITIVE} or \ccc{ZERO}, the predicate returns \ccc{false} if and only if \ccc{q} is not in conflict with the Voronoi edge.} % +\ccGlue +\ccNestedType{Oriented_side_2}{A predicate object type. Must provide + \ccc{Oriented_side operator(Site_1 s1, Site_2 s2, Site_2 s3, Site_2 + s, Site_2 p)}. Determines the oriented side of the line $\ell$, + that passes through the Voronoi vertex of the sites \ccc{s1}, + \ccc{s2}, \ccc{s3} and is perpendicular to the segment site \ccc{s}, + that contains the point site \ccc{p}. + \ccPrecond{\ccc{s} must be a segment and \ccc{p} must be a point.}} +% +\ccNestedType{Arrangement_type_2}{A predicate object type. Must + provide \ccc{Arrangement_type operator()(Site_2 s1, Site_2 s2)} that + returns the type of the arrangement of the two sites \ccc{s1} and + \ccc{s2}.} +% %\ccGlue %\ccNestedType{Is_degenerate_edge_2}{A predicate object type. %Must provide \ccc{bool operator()(Site_2 s1, Site_2 @@ -248,12 +289,16 @@ other);}{Copy constructor.} \ccThree{Infinite_edge_interior_conflict_2} {gt.infinite_edge_interior_conflict_2_object();}{} % -%\ccMethod{Compare_x_2 compare_x_2_object();}{} -%\ccGlue -%\ccMethod{Compare_y_2 compare_y_2_object();}{} -%\ccGlue +\ccMethod{Compare_x_2 compare_x_2_object();}{} +\ccGlue +\ccMethod{Compare_y_2 compare_y_2_object();}{} +\ccGlue \ccMethod{Orientation_2 orientation_2_object();}{} \ccGlue +\ccMethod{Are_same_points_2 are_same_points_2_object();}{} +\ccGlue +\ccMethod{Are_parallel_2 are_parallel_2_object();}{} +\ccGlue \ccMethod{Oriented_side_of_bisector_2 oriented_side_of_bisector_test_2_object();}{} \ccGlue @@ -264,6 +309,10 @@ oriented_side_of_bisector_test_2_object();}{} \ccGlue \ccMethod{Infinite_edge_interior_conflict_2 infinite_edge_interior_conflict_2_object();}{} +\ccGlue +\ccMethod{Oriented_side_2 oriented_side_2_object();}{} +\ccGlue +\ccMethod{Arrangement_type_2 arrangement_type_2_object();}{} %\ccGlue %\ccMethod{Is_degenerate_edge_2 is_degenerate_edge_2_object();}{} @@ -300,6 +349,7 @@ construct_svd_vertex_2_object();}{} \ccSeeAlso \ccc{SegmentVoronoiDiagramSite_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ +\ccc{CGAL::Segment_Voronoi_diagram_hierarchy_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_traits_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2} \end{ccRefConcept} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex index 00308329d0e..c47bd6ee13d 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex @@ -39,14 +39,26 @@ the site. \ccPrecond{The type \ccc{Geom_traits} must define the type \ccc{Site_2}.}} % \ccGlue +\ccNestedType{Point_container}{A type for a container of points.} +% \ccPrecond{This type must satisfy the requirements of the concept +% \ccc{SimpleContainer}.}} +% +\ccGlue +\ccNestedType{Point_handle}{A handle type for the points in the point + container. + \ccPrecond{This type must be identical to the type + \ccc{Point_container::iterator}.}} +% +\ccGlue \ccNestedType{Site_2}{A type for the site. \ccPrecond{This type must coincide with the type \ccc{Geom_traits::Site_2}.}} % \ccGlue -\ccNestedType{Point_container}{A type for a container of points. - \ccPrecond{This type must satisfy the requirements of the concept - \ccc{SimpleContainer}.}} +\ccNestedType{Storage_site_tag}{A type that indicates what kind of + storage type to use. + \ccPrecond{\ccc{Storage_site_tag} must either be + \ccc{CGAL::Tag_true} or \ccc{CGAL::Tag_false}.}} % \ccGlue \ccNestedType{Storage_site_2}{A type for the internal representation diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex index 462bf7b4390..114bb82867e 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex @@ -20,16 +20,12 @@ \begin{ccRefClass} -{Segment_Voronoi_diagram_filtered_traits_2} +{Segment_Voronoi_diagram_filtered_traits_2} %% add template arg's if necessary %% \ccHtmlCrossLink{} %% add further rules for cross referencing links %% \ccHtmlIndexC[class]{} %% add further index entries -{\sc The type of \ccc{EM} must be consistent with whether - intersections are supported or not. If intersections are supported - we need \ccc{Field_tag}} - \ccDefinition The class \ccRefName\ provides a model for the @@ -41,32 +37,45 @@ class with efficient and exact predicates given an exact kernel \ccc{EK} and a filtering kernel \ccc{FK}. The geometric constructions associated provided by this class are equivalent to those provided by the traits class -\ccc{Segment_Voronoi_diagram_traits_2}, which means that they -may be inexact. +\ccc{Segment_Voronoi_diagram_traits_2}, which means that +they may be inexact. -This class has six template parameters. The first, third and fifth +This class has seven template parameters. The first template parameter +indicates whether intersections are to be supported and has two +possible values, namely \ccc{CGAL::Tag_true} and +\ccc{CGAL::Tag_false}. The value \ccc{CGAL::Tag_true} indicates that +intersecting segment are supported. the second, fouth and sixth template parameters must be a models of the \ccc{Kernel} concept. The -second, fourth and sixth template parameters correspond to how -predicates are evaluated. There are two predefined possible values for -\ccc{Method_tag}, namely \ccc{CGAL::Sqrt_field_tag} and -\ccc{CGAL::Ring_tag}. The first one must be used when the number type -used in the representation supports the exact evaluation of signs of -expressions involving all four basic operations and square roots, -whereas the second one requires the exact evaluation of signs of -ring-type expressions, i.e., expressions involving only additions, -subtractions and multiplications. +third, fifth and seventh template parameters correspond to how +predicates are evaluated. There are three predefined possible values for +\ccc{Method_tag}, namely \ccc{CGAL::Sqrt_field_tag}, +\ccc{CGAL::Field_tag} and \ccc{CGAL::Ring_tag}. The first one must be +used when the number type used in the representation supports the +exact evaluation of signs of expressions involving all four basic +operations and square roots, whereas the second one requires the exact +evaluation of signs of ring-type expressions, i.e., expressions +involving only additions, subtractions and multiplications. If +intersecting segments are supported the value for \ccc{CM}, \ccc{FM} +and \ccc{EM} cannot be \ccc{CGAL::Ring_tag}, since we need to perform +divisions. Moreover, in order to get exact constructions \ccc{CM} +must be set to \ccc{CGAL::Sqrt_field_tag} and the number type in +\ccc{CK} must support operations involing divisions and square roots +(as well as the other three basic operations of course). % The way the predicates are evaluated is discussed in \cite{b-ecvdl-96,k-peasv-04}. The default values for the template parameters are as follows: -\ccc{CM = CGAL::Sqrt_field_tag}, -\ccc{EM = CGAL::Ring_tag}, +\ccc{CM = CGAL::Sqrt_field_tag} (it is assumed that +\ccc{CGAL::Cartesian} or \ccc{CGAL::Simple_cartesian} +will be the entry for the template parameter \ccc{CK}), +\ccc{EM = CGAL::Field_tag}, \ccc{FK = CGAL::Simple_cartesian >}, -\ccc{FM = CM}. If the \textsc{Gmp} package is installed with \cgal, -the template parameter \ccc{EK} has the default value: -\ccc{EK = CGAL::Simple_cartesian}, otherwise its default -value is \ccc{EK = CGAL::Simple_cartesian}. +\ccc{FM = CGAL::Sqrt_field_tag}. If the \textsc{Gmp} package is +installed with \cgal, the template parameter \ccc{EK} has the default +value: \ccc{EK = CGAL::Simple_cartesian}, otherwise its +default value is +\ccc{EK = CGAL::Simple_cartesian >}. \ccInclude{CGAL/Segment_Voronoi_diagram_filtered_traits_2.h} @@ -74,24 +83,54 @@ value is \ccc{EK = CGAL::Simple_cartesian}. \ccIsModel \ccc{SegmentVoronoiDiagramTraits_2} +\ccTypes +In addition to the types required by the +\ccc{SegmentVoronoiDiagramTraits_2} concept the class \ccRefName\ +defines the following types: + +\ccTypedef{typedef CK Construction_kernel;}{} +\ccGlue +\ccTypedef{typedef FK Filtering_kernel;}{} +\ccGlue +\ccTypedef{typedef EK Exact_kernel;}{} +\ccGlue +\ccTypedef{typedef CM Method_tag;}{} +\ccGlue +\ccTypedef{typedef CM Construction_traits_method_tag;}{} +\ccGlue +\ccTypedef{typedef FM Filtering_traits_method_tag;}{} +\ccGlue +\ccTypedef{typedef EM Exact_traits_method_tag;}{} +\ccGlue +\ccNestedType{Construction_traits;}{A type for the segment Voronoi + diagram traits, where the kernel is \ccc{CK}.} +\ccGlue +\ccNestedType{Filtering_traits;}{A type for the segment Voronoi + diagram traits, where the kernel is \ccc{FK}.} +\ccGlue +\ccNestedType{Exact_traits;}{A type for the segment Voronoi + diagram traits, where the kernel is \ccc{EK}.} + + + \ccCreationVariable{traits} \ccCreation -\ccThree{Segment_Voronoi_diagram_filtered_traits_2+}{traits +\ccThree{Segment_Voronoi_diagram_filtered_traits_2+}{traits = other;+}{} \ccThreeToTwo % -\ccConstructor{Segment_Voronoi_diagram_filtered_traits_2();} +\ccConstructor{Segment_Voronoi_diagram_filtered_traits_2();} {Default\\ constructor.} \ccGlue \ccConstructor{ Segment_Voronoi_diagram_filtered_traits_2 -(Segment_Voronoi_diagram_filtered_traits_2 other);} +(Segment_Voronoi_diagram_filtered_traits_2 other);} {Copy\\ constructor.} \ccGlue %\ccThree{Apollonius_graph_filtered_traits_2+}{traits %= other;+}{} -\ccMethod{Segment_Voronoi_diagram_filtered_traits_2 - operator=(Segment_Voronoi_diagram_filtered_traits_2 +\ccMethod{Segment_Voronoi_diagram_filtered_traits_2 + operator=(Segment_Voronoi_diagram_filtered_traits_2 other);}{Assignment\\ operator.} @@ -100,9 +139,10 @@ Segment_Voronoi_diagram_filtered_traits_2 \ccc{Kernel}\\ \ccc{SegmentVoronoiDiagramTraits_2} \\ \ccc{CGAL::Ring_tag}\\ +\ccc{CGAL::Field_tag}\\ \ccc{CGAL::Sqrt_field_tag}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_traits_2} +\ccc{CGAL::Segment_Voronoi_diagram_traits_2} \end{ccRefClass} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex index 5708a36eb3f..7dc10f47e48 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_hierarchy_2.tex @@ -19,7 +19,7 @@ -\begin{ccRefClass}{Segment_Voronoi_diagram_hierarchy_2} +\begin{ccRefClass}{Segment_Voronoi_diagram_hierarchy_2} %% add template arg's if necessary {\sc I have to modify this when I add the boolean about whether or not @@ -80,15 +80,24 @@ overridden are documented. \ccTypes -\ccRefName\ does not introduce other types than those introduced by -its base class \ccc{Segment_Voronoi_diagram_2}. +\ccRefName\ introduces the following types in addition to those +introduced by its base class +\ccc{Segment_Voronoi_diagram_2}. + +\ccThree{typedef CGAL::Segment_Voronoi_diagram_2}{Base+}{} +\ccThreeToTwo +\ccTypedef{typedef STag Segments_in_hierarchy_tag;}{A type for the + \ccc{STag} template parameter.} +\ccGlue +\ccTypedef{typedef CGAL::Segment_Voronoi_diagram_2 Base;} + {A type for the base class.} \ccCreation \ccCreationVariable{svdh} % -%\ccThree{Segment_Voronoi_diagram_hierarchy_2} -%{svdh(Gt gt=Gt());}{} -%\ccThreeToTwo +\ccThree{Segment_Voronoi_diagram_hierarchy_2} +{svdh(Gt gt=Gt());}{} +\ccThreeToTwo \ccTwo{Segment_Voronoi_diagram_hierarchy}{} % \ccConstructor{Segment_Voronoi_diagram_hierarchy_2(Gt @@ -97,7 +106,7 @@ gt=Gt())}{Creates an hierarchy of segment Voronoi diagrams using % \ccGlue \ccConstructor{template< class Input_iterator > -Segment_Voronoi_diagram_hierarchy_2(Input_iterator +Segment_Voronoi_diagram_hierarchy_2(Input_iterator first, Input_iterator beyond, Gt gt=Gt())} {Creates a segment Voronoi diagram hierarchy using \ccc{gt} as geometric traits and inserts all sites in the @@ -107,18 +116,18 @@ range [\ccc{first}, \ccc{beyond}). either \ccc{Point_2} or \ccc{Site_2}}.} % \ccGlue -\ccConstructor{Segment_Voronoi_diagram_hierarchy_2 -(Segment_Voronoi_diagram_hierarchy_2 other)} +\ccConstructor{Segment_Voronoi_diagram_hierarchy_2 +(Segment_Voronoi_diagram_hierarchy_2 other)} {Copy constructor. All faces, vertices and inter-level pointers are duplicated. After the construction, \ccVar\ and \ccc{other} refer to two different hierarchies: if \ccc{other} is modified, \ccVar\ is not.} % -\ccThree{Segment_Voronoi_diagram_hierarchy++}{svdh = other;}{} +\ccThree{Segment_Voronoi_diagram_hierarchy++}{svdh = other;}{} \ccThreeToTwo \ccGlue -\ccMethod{Segment_Voronoi_diagram_hierarchy_2 -operator=(Segment_Voronoi_diagram_hierarchy_2 +\ccMethod{Segment_Voronoi_diagram_hierarchy_2 +operator=(Segment_Voronoi_diagram_hierarchy_2 other);}{Assignment. All faces, vertices and inter-level pointers are duplicated. After the construction, \ccVar\ and \ccc{other} refer to two different hierarchies: if \ccc{other} is modified, \ccVar\ is @@ -191,16 +200,17 @@ has been added for the sake of conformity with the interface of the \ccHeading{Nearest neighbor location} -\ccThree{Vertex_handle}{svdh.nearest_neighbor(Point p)+}{} +\ccThree{Vertex_handle}{svdh.nearest_neighbor(Point_2 p)+}{} % -\ccMethod{Vertex_handle nearest_neighbor(Point p);} +\ccMethod{Vertex_handle nearest_neighbor(Point_2 p);} {Finds the nearest neighbor of the point \ccc{p}. In other words it finds the site (point or open segment) whose Voronoi cell contains \ccc{p}. Ties are broken arbitrarily and one of the nearest neighbors of \ccc{p} is returned. If there are no sites in the segment Voronoi diagram \ccc{Vertex_handle()} is returned.} +% \ccGlue -\ccMethod{Vertex_handle nearest_neighbor(Point p, +\ccMethod{Vertex_handle nearest_neighbor(Point_2 p, Vertex_handle vnear);}{Finds the nearest neighbor of the point \ccc{p}. If there are no visible sites in the segment Voronoi diagram \ccc{Vertex_handle()} is returned. @@ -232,7 +242,7 @@ return \ccc{true}, and values greater then 1 are equivalent to diagram hierarchy.} \ccGlue % MK:: add this method make copy(...) protected and see doc of TDS -\ccMethod{void swap(Segment_Voronoi_diagram_hierarchy_2 +\ccMethod{void swap(Segment_Voronoi_diagram_hierarchy_2 other);} {The segment Voronoi diagram hierarchies \ccc{other} and \ccVar\ are swapped. \ccVar.\ccc{swap(other)} should be preferred to \ccVar\ccc{ = @@ -246,10 +256,9 @@ other} or to \ccVar\ccc{(other)} if \ccc{other} is deleted afterwards.} \ccc{SimpleContainer}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ \ccc{CGAL::Segment_Voronoi_diagram_data_structure_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_traits_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_hierarchy_vertex_base_2}\\ -\ccc{CGAL::Simple_container} +\ccc{CGAL::Segment_Voronoi_diagram_traits_2}\\ +\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2}\\ +\ccc{CGAL::Segment_Voronoi_diagram_hierarchy_vertex_base_2} \end{ccRefClass} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex index 7eec837a32f..66b134e6010 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex @@ -19,31 +19,35 @@ -\begin{ccRefClass}{Segment_Voronoi_diagram_traits_2} +\begin{ccRefClass}{Segment_Voronoi_diagram_traits_2} %% add template arg's if necessary %% \ccHtmlCrossLink{} %% add further rules for cross referencing links %% \ccHtmlIndexC[class]{} %% add further index entries -{\sc The type of \ccc{Method_tag} must be consistent with whether - intersections are supported or not. If intersections are supported - we need \ccc{Field_tag}} - \ccDefinition The class \ccRefName\ provides a model for the \ccc{SegmentVoronoiDiagramTraits_2} concept. This class has two template parameters. The first template parameter -must be a model of the \ccc{Kernel} concept. The second template -parameter corresponds to how predicates are evaluated. There are two -predefined possible values for \ccc{Method_tag}, namely -\ccc{CGAL::Sqrt_field_tag} and \ccc{CGAL::Ring_tag}. The first one -must be used when the number type used in the representation supports -the exact evaluation of signs of expressions involving all four basic -operations and square roots, whereas the second one requires the exact -evaluation of signs of ring-type expressions, i.e., expressions -involving only additions, subtractions and multiplications. The -default value for \ccc{Method_tag} is \ccc{CGAL::Ring_tag}. +indicates whether intersecting segment are supported or not. The +possible values of this parameter are \ccc{CGAL::Tag_true} and +\ccc{CGAL::Tag_false}. \ccc{CGAL::Tag_true} indicates that +intersecting segments are supported. The second template parameter +must be a model of the \ccc{Kernel} concept. The third template +parameter corresponds to how predicates are evaluated. There are three +possible values for \ccc{MTag}, namely +\ccc{CGAL::Sqrt_field_tag}, \ccc{CGAL::Field_tag} and +\ccc{CGAL::Ring_tag}. The first one must be used when the number type +used in the representation supports the exact evaluation of signs of +expressions involving all four basic operations and square roots, +whereas the second one requires the exact evaluation of signs of +ring-type expressions, i.e., expressions involving only additions, +subtractions and multiplications. The default value for +\ccc{MTag} is \ccc{CGAL::Field_tag}. Note that if the parameter +\ccc{ITag} is set to \ccc{CGAL::Tag_true}, the value +\ccc{CGAL::Ring_tag} is no longer a valid possible value since +divisions must also be supported. % The way the predicates are evaluated is discussed in \cite{b-ecvdl-96,k-peasv-04}. @@ -54,21 +58,31 @@ The way the predicates are evaluated is discussed in \ccIsModel \ccc{SegmentVoronoiDiagramTraits_2} +\ccTypes +The \ccRefName\ class introduces a few additional types with respect +to the \ccc{SegmentVoronoiDiagramTraits_2} concept. These are: + +\ccTypedef{typedef K Kernel;}{A typedef for the template parameter + \ccc{K}.} +\ccGlue +\ccTypedef{typedef MTag Method_tag;}{A typedef for the template + parameter \ccc{MTag}.} + \ccCreationVariable{traits} \ccCreation -\ccThree{Segment_Voronoi_diagram_traits_2} +\ccThree{Segment_Voronoi_diagram_traits_2} {traits = other}{} \ccThreeToTwo % -\ccConstructor{Segment_Voronoi_diagram_traits_2();} +\ccConstructor{Segment_Voronoi_diagram_traits_2();} {Default constructor.} \ccGlue -\ccConstructor{Segment_Voronoi_diagram_traits_2( - Segment_Voronoi_diagram_traits_2 other);} +\ccConstructor{Segment_Voronoi_diagram_traits_2( + Segment_Voronoi_diagram_traits_2 other);} {Copy constructor.} \ccGlue -\ccMethod{Segment_Voronoi_diagram_traits_2 -operator=(Segment_Voronoi_diagram_traits_2 +\ccMethod{Segment_Voronoi_diagram_traits_2 +operator=(Segment_Voronoi_diagram_traits_2 other);}{Assignment operator.} @@ -76,9 +90,10 @@ other);}{Assignment operator.} \ccc{Kernel}\\ \ccc{SegmentVoronoiDiagramTraits_2} \\ \ccc{CGAL::Ring_tag}\\ +\ccc{CGAL::Field_tag}\\ \ccc{CGAL::Sqrt_field_tag}\\ \ccc{CGAL::Segment_Voronoi_diagram_2}\\ -\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2} +\ccc{CGAL::Segment_Voronoi_diagram_filtered_traits_2} \end{ccRefClass} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex index 5e0c4ab7d67..513c28c0eda 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex @@ -18,7 +18,7 @@ %% Author(s) : Menelaos Karavelas -\begin{ccRefClass}{Segment_Voronoi_diagram_vertex_base_2} +\begin{ccRefClass}{Segment_Voronoi_diagram_vertex_base_2} %% add template arg's if necessary @@ -33,7 +33,14 @@ base required by the \ccc{SegmentVoronoiDiagramDataStructure_2} concept. The class \ccRefName\ has two template arguments, the first being the geometric traits of the segment Voronoi diagram and should be a model of the concept \ccc{SegmentVoronoiDiagramTraits_2}. The second -is a class that must be a model of the concept \ccc{SimpleContainer}. +is a class that must be a model of the concept +\ccc{SimpleContainer}. The third template argument indicates whether +or not to use the simple storage site that does not support +intersecting segments, or the full storage site, that supports +intersecting segments. The possible values are \ccc{CGAL::Tag_true} +and \ccc{CGAL::Tag_false}. \ccc{CGAL::Tag_true} indicates that the +full storage site is to be used, whereas \ccc{CGAL::Tag_false} +indicates that the simple storage site is to be used. \ccInclude{CGAL/Segment_Voronoi_diagram_vertex_base_2.h} diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/intro.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/intro.tex index afce3744ef2..4bad74a59fb 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/intro.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/intro.tex @@ -53,7 +53,7 @@ afore-mentioned concepts. \ccHeading{Classes} \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_2}\\ \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_site_2}\\ -\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2}\\ +\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_storage_site_2}\\ \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_data_structure_2}\\ \ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_vertex_base_2}\\ %\ccRefIdfierPage{CGAL::Segment_Voronoi_diagram_face_base_2}\\ diff --git a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/main.tex b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/main.tex index 744d1342190..1fb66ab40a4 100644 --- a/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/main.tex +++ b/Packages/Segment_Voronoi_diagram_2/doc_tex/basic/Segment_Voronoi_diagram_2_ref/main.tex @@ -26,8 +26,8 @@ \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_data_structure_2.tex} \input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramVertexBase_2.tex} \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_vertex_base_2.tex} -\input{Segment_Voronoi_diagram_2_ref/TriangulationFaceBaseWithEdges_2.tex} -\input{Segment_Voronoi_diagram_2_ref/Triangulation_face_base_with_edges_2.tex} +%\input{Segment_Voronoi_diagram_2_ref/TriangulationFaceBaseWithEdges_2.tex} +%\input{Segment_Voronoi_diagram_2_ref/Triangulation_face_base_with_edges_2.tex} \input{Segment_Voronoi_diagram_2_ref/SegmentVoronoiDiagramTraits_2.tex} \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_traits_2.tex} \input{Segment_Voronoi_diagram_2_ref/Segment_Voronoi_diagram_filtered_traits_2.tex}