From f9e71bb50a58f706cde5efba36b152c5d601455d Mon Sep 17 00:00:00 2001 From: Eli Packer Date: Thu, 15 May 2003 07:33:54 +0000 Subject: [PATCH] first time --- .../LargestEmptyIsoRectangleTraits_2.tex | 107 ++++++++++++ .../Largest_empty_iso_rectangle_2.bib | 11 ++ .../Largest_empty_iso_rectangle_2_ref.tex | 156 ++++++++++++++++++ .../LargestEmptyIsoRectangleTraits_2.tex | 107 ++++++++++++ .../Largest_empty_iso_rectangle_2.bib | 11 ++ .../Largest_empty_iso_rectangle_2_ref.tex | 156 ++++++++++++++++++ 6 files changed, 548 insertions(+) create mode 100644 Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex create mode 100644 Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2.bib create mode 100644 Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex create mode 100644 Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex create mode 100644 Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2.bib create mode 100644 Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex diff --git a/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex b/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex new file mode 100644 index 00000000000..3e520b98f12 --- /dev/null +++ b/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex @@ -0,0 +1,107 @@ +% +------------------------------------------------------------------------+ +% | Reference manual page: LargestEmptyIsoRectangleTraits_2.tex +% +------------------------------------------------------------------------+ +% | 06.04.2000 Author +% | Package: Package +% | +\RCSdef{\RCSLargestEmptyIsoRectangleTraits_2Rev}{$Revision$} +\RCSdefDate{\RCSLargestEmptyIsoRectangleTraits_2Date}{$Date$} +% | +%%RefPage: end of header, begin of main body +% +------------------------------------------------------------------------+ + + +\begin{ccRefConcept}{LargestEmptyIsoRectangleTraits_2} + +%% \ccHtmlCrossLink{} %% add further rules for cross referencing links +%% \ccHtmlIndexC[concept]{} %% add further index entries + +\ccDefinition + +The concept \ccRefName\ describes the set of requirements to be +fulfilled by any class used to instantiate the template parameter of +the class \ccc{Largest_empty_iso_rectangle_2}. +This concept provides the types of the geometric primitives used in +this class and some function object types for the required +predicates on those primitives. + +%% Less_x_2, Less_yx_2, Less_yx_2, Compare_x_2, Compare_y_2, Comparison_result + +\ccTypes +\ccNestedType{Point_2}{The point type.} +\ccGlue +\ccNestedType{Iso_rectangle_2}{The iso rectangle type.} + +\ccNestedType{Compare_x_2_object}{Predicate object. Must provide +the operator +\ccc{Comparison_result operator()(Point_2 p, Point_2 q)} +which returns +\ccc{SMALLER, EQUAL} or \ccc{ LARGER} + according ding to the +$x$-ordering of points \ccc{p} and \ccc{q}.} +\ccGlue +\ccNestedType{Compare_y_2_object}{Predicate object. Must provide +the operator +\ccc{Comparison_result operator()(Point_2 p, Point_2 q)} +which returns +\ccc{SMALLER, EQUAL} or \ccc{ LARGER} +according to the +$y$-ordering of points \ccc{p} and \ccc{q}.} +\ccGlue +\ccNestedType{Less_x_2_object}{Predicate object. Must provide +the operator +\ccc{bool operator()(Point_2 p, Point_2 q)} +which returns +whether \ccc{p} is less than \ccc{q} according to their $x$-ordering.} +\ccGlue +\ccNestedType{Less_y_2_object}{Predicate object. Must provide +the operator +\ccc{bool operator()(Point_2 p, Point_2 q)} +which returns +whether \ccc{p} is less than \ccc{q} according to their $y$-ordering.} + +\ccCreation +\ccCreationVariable{traits} %% choose variable name +Only a default constructor, copy constructor + and an assignement operator are required. +Note that further constructors +can be provided. + +\ccConstructor{LargestEmptyIsoRectangleTraits_2();}{Default constructor.} +\ccGlue +\ccConstructor{LargestEmptyIsoRectangleTraits_2(LargestEmptyIsoRectangleTraits_2);} +{Copy constructor} +\ccMethod{LargestEmptyIsoRectangleTraits_2 operator=(LargestEmptyIsoRectangleTraits_2 gtr);} +{Assignment operator.} + +\ccHeading{Predicate functions} + +The following functions give access to the predicate +and constructor objects. + +\ccThree{Construct_segment_2}{gt.compare_x(Point p0, Point p1)x}{} + +\ccMethod{Comparison_x_2 compare_x_2_object();}{} +\ccGlue +\ccMethod{Comparison_y_2 compare_y_2_object();}{} +\ccGlue +\ccMethod{bool less_x_2_object();}{} +\ccGlue +\ccMethod{bool less_y_2_object();}{} + +\ccHasModels +\ccc{CGAL::Cartesian} \\ +\ccc{CGAL::Homogeneous} + +\ccSeeAlso +\ccc{CGAL::Largest_empty_iso_rectangle_2} + + + +\end{ccRefConcept} + +% +------------------------------------------------------------------------+ +%%RefPage: end of main body, begin of footer +% EOF +% +------------------------------------------------------------------------+ + diff --git a/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2.bib b/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2.bib new file mode 100644 index 00000000000..e6c2b736291 --- /dev/null +++ b/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2.bib @@ -0,0 +1,11 @@ + +@article{o-naler-90 + , author = "M. Orlowski" + , title = "A new algorithm for the largest empty rectangle problem" + , journal = "Algorithmica" + , volume = 5 + , year = 1990 + , pages = "65--73" + , keywords = "area" + , annote = "$O(n \log n)$ expected time, $O(n)$ space" + } diff --git a/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex b/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex new file mode 100644 index 00000000000..3ca191abbe1 --- /dev/null +++ b/Packages/Largest_empty_rect_2/doc_tex/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex @@ -0,0 +1,156 @@ +% +------------------------------------------------------------------------+ +% | Reference manual page: Largest_empty_iso_rectangle_2.tex +% +------------------------------------------------------------------------+ +% | 27.3.2000 Eli Packer +% | Package: +% | +%\RCSdef{\RCSTriangulationRev}{$Revision$} +%\RCSdefDate{\RCSTriangulationDate}{$Date$} +% | +%%RefPage: end of header, begin of main body +% +------------------------------------------------------------------------+ + + +\begin{ccRefClass}{Largest_empty_iso_rectangle_2} + +%% \ccHtmlCrossLink{} %% add further rules for cross referencing links +%% \ccHtmlIndexC[class]{} %% add further index entries + + +\ccDefinition + +Given a set of points in the plane, the class \ccRefName\ is a data +structure that maintains an iso-rectangle with the largest area among +all iso-rectangles that are inside a given bounding box( iso-rectangle), and +that do not contain any point of the point set. + +The class \ccRefName\ expects a model of the concept \ccc{LargestEmptyIsoRectangleTraits_2} as its template argument. + +\ccInclude{CGAL/Largest_empty_iso_rectangle_2.h} + + +\ccTypes +The class \ccClassTemplateName\ defines the following types: + +\ccThreeToTwo + +\ccTypedef{typedef T Traits;}{} + +\ccTypedef{typedef Traits::Point_2 Point_2;}{} + +\ccTypedef{typedef Traits::Iso_rectangle_2 Iso_rectangle_2;}{} + + +The following iterator allows to enumerate the points. +It is non mutable, bidirectional +and its value type is \ccc{Point_2}. +It is invalidated by any insertion or removal of a point. + +\ccNestedType{const_iterator}{Iterator over the points.} + + +\ccCreation +\ccCreationVariable{l} %% choose variable name +\ccSetTwoColumns{Qt_widget}{} +%\ccThree{Largest_empty_iso_rectangle_2(const Point_2& bl, const Point_2& tr)}{}{} + +\ccConstructor{Largest_empty_iso_rectangle_2 +(const Iso_rectangle_2 &b);} +{Constructor. The iso-rectangle \ccc{b} is the bounding rectangle.} + +\ccConstructor{Largest_empty_iso_rectangle_2 +(const Point_2 p,const Point_2 q);} +{Constructor. The iso-rectangle whose lower left and upper right points are \ccc{p} and +\ccc{q} respectively is the bounding rectangle.} + +\ccConstructor{Largest_empty_iso_rectangle_2 +();} +{Constructor. The iso-rectangle whose lower left point and upper right points are (0,0) +and (1,1) respectively is the bounding rectangle.} + +\ccConstructor{Largest_empty_iso_rectangle_2 +(const Largest_empty_iso_rectangle_2 tr);} +{Copy constructor.} + +%\ccConstructor{\tilde Largest_empty_iso_rectangle_2();} +%{Destructor.} +% +\ccOperations +\ccSetThreeColumns{const_iterator}{container.begin() const;}{} + +\ccHeading{Assignment} + +\ccMethod{Largest_empty_iso_rectangle_2 + operator=(const Largest_empty_iso_rectangle_2 & tr);} +{} + +\ccAccessFunctions + +\ccMethod{const Traits & traits() const;} +{Returns a const reference to the traits object.} + + +\ccMethod{const_iterator begin() const;} +{Returns an iterator to the beginning of the point set.} +\ccMethod{const_iterator end() const;} +{Returns a past-the-end iterator for the point set.} + + +\ccHeading{Queries} + +\ccMethod{Quadruple + get_left_bottom_right_top();} +{Returns the four points that define the largest empty iso-rectangle. +(Note that these points are not necessarily on a corner of an iso-rectangle.)} +\ccGlue +\ccMethod{Iso_rectangle_2 get_largest_empty_iso_rectangle();} +{Returns the largest empty iso-rectangle. (Note that the two +points defining the iso-rectangle are not necessarily part of +the point set.)} +\ccGlue +\ccMethod{Iso_rectangle_2 get_bounding_box();} +{Returns the iso-rectangle passed in the constructor.} +\ccHeading{Insertion} + +\ccMethod{void + insert(const Point_2& p);} +{Inserts point \ccc{p} in the point set, if it is not already in the set.} + +\ccMethod{void + push_back(const Point_2& p);} +{Inserts point \ccc{p} in the point set, if it is not already in the set.} + +\ccMethod{template < class InputIterator > + int + insert(InputIterator first, InputIterator last);} +{Inserts the points in the range $\left[\right.$\ccc{first}, +\ccc{last}$\left.\right)$. Returns the number of inserted points. \\ \\ +\ccRequirements The \ccc{value_type} of \ccc{first} and \ccc{last} is \ccc{Point}.} + +\ccHeading{Removal} + +\ccMethod{bool remove(const Point_2& p);}{Removes point \ccc{p}. +Returns false iff \ccc{p} is not in the point set. } + +\ccMethod{void clear();} +{Removes all points of \ccVar.} + +%\ccSeeAlso + +\ccImplementation + +The algorithm is an implementation of \cite{o-naler-90}. The runtime of an +insertion or a removal is $O(\log n)$. A query takes $O(n^2)$ worst +case time and $O(n \log n)$ expected time. The working storage is $ +O(n)$. + +\bibliography{Largest_empty_iso_rectangle_2} +\bibliographystyle{abbrv} + +\end{ccRefClass} + +% +------------------------------------------------------------------------+ +%%RefPage: end of main body, begin of footer +% EOF +% +------------------------------------------------------------------------+ + diff --git a/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex b/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex new file mode 100644 index 00000000000..3e520b98f12 --- /dev/null +++ b/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/LargestEmptyIsoRectangleTraits_2.tex @@ -0,0 +1,107 @@ +% +------------------------------------------------------------------------+ +% | Reference manual page: LargestEmptyIsoRectangleTraits_2.tex +% +------------------------------------------------------------------------+ +% | 06.04.2000 Author +% | Package: Package +% | +\RCSdef{\RCSLargestEmptyIsoRectangleTraits_2Rev}{$Revision$} +\RCSdefDate{\RCSLargestEmptyIsoRectangleTraits_2Date}{$Date$} +% | +%%RefPage: end of header, begin of main body +% +------------------------------------------------------------------------+ + + +\begin{ccRefConcept}{LargestEmptyIsoRectangleTraits_2} + +%% \ccHtmlCrossLink{} %% add further rules for cross referencing links +%% \ccHtmlIndexC[concept]{} %% add further index entries + +\ccDefinition + +The concept \ccRefName\ describes the set of requirements to be +fulfilled by any class used to instantiate the template parameter of +the class \ccc{Largest_empty_iso_rectangle_2}. +This concept provides the types of the geometric primitives used in +this class and some function object types for the required +predicates on those primitives. + +%% Less_x_2, Less_yx_2, Less_yx_2, Compare_x_2, Compare_y_2, Comparison_result + +\ccTypes +\ccNestedType{Point_2}{The point type.} +\ccGlue +\ccNestedType{Iso_rectangle_2}{The iso rectangle type.} + +\ccNestedType{Compare_x_2_object}{Predicate object. Must provide +the operator +\ccc{Comparison_result operator()(Point_2 p, Point_2 q)} +which returns +\ccc{SMALLER, EQUAL} or \ccc{ LARGER} + according ding to the +$x$-ordering of points \ccc{p} and \ccc{q}.} +\ccGlue +\ccNestedType{Compare_y_2_object}{Predicate object. Must provide +the operator +\ccc{Comparison_result operator()(Point_2 p, Point_2 q)} +which returns +\ccc{SMALLER, EQUAL} or \ccc{ LARGER} +according to the +$y$-ordering of points \ccc{p} and \ccc{q}.} +\ccGlue +\ccNestedType{Less_x_2_object}{Predicate object. Must provide +the operator +\ccc{bool operator()(Point_2 p, Point_2 q)} +which returns +whether \ccc{p} is less than \ccc{q} according to their $x$-ordering.} +\ccGlue +\ccNestedType{Less_y_2_object}{Predicate object. Must provide +the operator +\ccc{bool operator()(Point_2 p, Point_2 q)} +which returns +whether \ccc{p} is less than \ccc{q} according to their $y$-ordering.} + +\ccCreation +\ccCreationVariable{traits} %% choose variable name +Only a default constructor, copy constructor + and an assignement operator are required. +Note that further constructors +can be provided. + +\ccConstructor{LargestEmptyIsoRectangleTraits_2();}{Default constructor.} +\ccGlue +\ccConstructor{LargestEmptyIsoRectangleTraits_2(LargestEmptyIsoRectangleTraits_2);} +{Copy constructor} +\ccMethod{LargestEmptyIsoRectangleTraits_2 operator=(LargestEmptyIsoRectangleTraits_2 gtr);} +{Assignment operator.} + +\ccHeading{Predicate functions} + +The following functions give access to the predicate +and constructor objects. + +\ccThree{Construct_segment_2}{gt.compare_x(Point p0, Point p1)x}{} + +\ccMethod{Comparison_x_2 compare_x_2_object();}{} +\ccGlue +\ccMethod{Comparison_y_2 compare_y_2_object();}{} +\ccGlue +\ccMethod{bool less_x_2_object();}{} +\ccGlue +\ccMethod{bool less_y_2_object();}{} + +\ccHasModels +\ccc{CGAL::Cartesian} \\ +\ccc{CGAL::Homogeneous} + +\ccSeeAlso +\ccc{CGAL::Largest_empty_iso_rectangle_2} + + + +\end{ccRefConcept} + +% +------------------------------------------------------------------------+ +%%RefPage: end of main body, begin of footer +% EOF +% +------------------------------------------------------------------------+ + diff --git a/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2.bib b/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2.bib new file mode 100644 index 00000000000..e6c2b736291 --- /dev/null +++ b/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2.bib @@ -0,0 +1,11 @@ + +@article{o-naler-90 + , author = "M. Orlowski" + , title = "A new algorithm for the largest empty rectangle problem" + , journal = "Algorithmica" + , volume = 5 + , year = 1990 + , pages = "65--73" + , keywords = "area" + , annote = "$O(n \log n)$ expected time, $O(n)$ space" + } diff --git a/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex b/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex new file mode 100644 index 00000000000..3ca191abbe1 --- /dev/null +++ b/Packages/Largest_empty_rect_2/doc_tex/basic/Optimization_ref/Largest_empty_iso_rectangle_2_ref.tex @@ -0,0 +1,156 @@ +% +------------------------------------------------------------------------+ +% | Reference manual page: Largest_empty_iso_rectangle_2.tex +% +------------------------------------------------------------------------+ +% | 27.3.2000 Eli Packer +% | Package: +% | +%\RCSdef{\RCSTriangulationRev}{$Revision$} +%\RCSdefDate{\RCSTriangulationDate}{$Date$} +% | +%%RefPage: end of header, begin of main body +% +------------------------------------------------------------------------+ + + +\begin{ccRefClass}{Largest_empty_iso_rectangle_2} + +%% \ccHtmlCrossLink{} %% add further rules for cross referencing links +%% \ccHtmlIndexC[class]{} %% add further index entries + + +\ccDefinition + +Given a set of points in the plane, the class \ccRefName\ is a data +structure that maintains an iso-rectangle with the largest area among +all iso-rectangles that are inside a given bounding box( iso-rectangle), and +that do not contain any point of the point set. + +The class \ccRefName\ expects a model of the concept \ccc{LargestEmptyIsoRectangleTraits_2} as its template argument. + +\ccInclude{CGAL/Largest_empty_iso_rectangle_2.h} + + +\ccTypes +The class \ccClassTemplateName\ defines the following types: + +\ccThreeToTwo + +\ccTypedef{typedef T Traits;}{} + +\ccTypedef{typedef Traits::Point_2 Point_2;}{} + +\ccTypedef{typedef Traits::Iso_rectangle_2 Iso_rectangle_2;}{} + + +The following iterator allows to enumerate the points. +It is non mutable, bidirectional +and its value type is \ccc{Point_2}. +It is invalidated by any insertion or removal of a point. + +\ccNestedType{const_iterator}{Iterator over the points.} + + +\ccCreation +\ccCreationVariable{l} %% choose variable name +\ccSetTwoColumns{Qt_widget}{} +%\ccThree{Largest_empty_iso_rectangle_2(const Point_2& bl, const Point_2& tr)}{}{} + +\ccConstructor{Largest_empty_iso_rectangle_2 +(const Iso_rectangle_2 &b);} +{Constructor. The iso-rectangle \ccc{b} is the bounding rectangle.} + +\ccConstructor{Largest_empty_iso_rectangle_2 +(const Point_2 p,const Point_2 q);} +{Constructor. The iso-rectangle whose lower left and upper right points are \ccc{p} and +\ccc{q} respectively is the bounding rectangle.} + +\ccConstructor{Largest_empty_iso_rectangle_2 +();} +{Constructor. The iso-rectangle whose lower left point and upper right points are (0,0) +and (1,1) respectively is the bounding rectangle.} + +\ccConstructor{Largest_empty_iso_rectangle_2 +(const Largest_empty_iso_rectangle_2 tr);} +{Copy constructor.} + +%\ccConstructor{\tilde Largest_empty_iso_rectangle_2();} +%{Destructor.} +% +\ccOperations +\ccSetThreeColumns{const_iterator}{container.begin() const;}{} + +\ccHeading{Assignment} + +\ccMethod{Largest_empty_iso_rectangle_2 + operator=(const Largest_empty_iso_rectangle_2 & tr);} +{} + +\ccAccessFunctions + +\ccMethod{const Traits & traits() const;} +{Returns a const reference to the traits object.} + + +\ccMethod{const_iterator begin() const;} +{Returns an iterator to the beginning of the point set.} +\ccMethod{const_iterator end() const;} +{Returns a past-the-end iterator for the point set.} + + +\ccHeading{Queries} + +\ccMethod{Quadruple + get_left_bottom_right_top();} +{Returns the four points that define the largest empty iso-rectangle. +(Note that these points are not necessarily on a corner of an iso-rectangle.)} +\ccGlue +\ccMethod{Iso_rectangle_2 get_largest_empty_iso_rectangle();} +{Returns the largest empty iso-rectangle. (Note that the two +points defining the iso-rectangle are not necessarily part of +the point set.)} +\ccGlue +\ccMethod{Iso_rectangle_2 get_bounding_box();} +{Returns the iso-rectangle passed in the constructor.} +\ccHeading{Insertion} + +\ccMethod{void + insert(const Point_2& p);} +{Inserts point \ccc{p} in the point set, if it is not already in the set.} + +\ccMethod{void + push_back(const Point_2& p);} +{Inserts point \ccc{p} in the point set, if it is not already in the set.} + +\ccMethod{template < class InputIterator > + int + insert(InputIterator first, InputIterator last);} +{Inserts the points in the range $\left[\right.$\ccc{first}, +\ccc{last}$\left.\right)$. Returns the number of inserted points. \\ \\ +\ccRequirements The \ccc{value_type} of \ccc{first} and \ccc{last} is \ccc{Point}.} + +\ccHeading{Removal} + +\ccMethod{bool remove(const Point_2& p);}{Removes point \ccc{p}. +Returns false iff \ccc{p} is not in the point set. } + +\ccMethod{void clear();} +{Removes all points of \ccVar.} + +%\ccSeeAlso + +\ccImplementation + +The algorithm is an implementation of \cite{o-naler-90}. The runtime of an +insertion or a removal is $O(\log n)$. A query takes $O(n^2)$ worst +case time and $O(n \log n)$ expected time. The working storage is $ +O(n)$. + +\bibliography{Largest_empty_iso_rectangle_2} +\bibliographystyle{abbrv} + +\end{ccRefClass} + +% +------------------------------------------------------------------------+ +%%RefPage: end of main body, begin of footer +% EOF +% +------------------------------------------------------------------------+ +