$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r77319 - sandbox/gtl/boost/polygon
From: sydorchuk.andriy_at_[hidden]
Date: 2012-03-12 17:32:46
Author: asydorchuk
Date: 2012-03-12 17:32:45 EDT (Mon, 12 Mar 2012)
New Revision: 77319
URL: http://svn.boost.org/trac/boost/changeset/77319
Log:
Updating bouding_rectangle sturcture
Text files modified: 
   sandbox/gtl/boost/polygon/voronoi_diagram.hpp |    48 +++------------------------------------ 
   sandbox/gtl/boost/polygon/voronoi_utils.hpp   |    15 ++++++++++-                             
   2 files changed, 17 insertions(+), 46 deletions(-)
Modified: sandbox/gtl/boost/polygon/voronoi_diagram.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/voronoi_diagram.hpp	(original)
+++ sandbox/gtl/boost/polygon/voronoi_diagram.hpp	2012-03-12 17:32:45 EDT (Mon, 12 Mar 2012)
@@ -10,7 +10,6 @@
 #ifndef BOOST_POLYGON_VORONOI_DIAGRAM
 #define BOOST_POLYGON_VORONOI_DIAGRAM
 
-#include <list>
 #include <vector>
 
 #include "detail/voronoi_ctypes.hpp"
@@ -38,13 +37,6 @@
       x_max_(x),
       y_max_(y) {}
 
-  template <typename P>
-  bounding_rectangle(const P &p) :
-      x_min_(p.x()),
-      y_min_(p.y()),
-      x_max_(p.x()),
-      y_max_(p.y()) {}
-
   bounding_rectangle(T x1, T y1, T x2, T y2) {
     x_min_ = (std::min)(x1, x2);
     y_min_ = (std::min)(y1, y2);
@@ -52,14 +44,6 @@
     y_max_ = (std::max)(y1, y2);
   }
 
-  template <typename P>
-  bounding_rectangle(const P &p1, const P &p2) {
-    x_min_ = (std::min)(p1.x(), p2.x());
-    y_min_ = (std::min)(p1.y(), p2.y());
-    x_max_ = (std::max)(p1.x(), p2.x());
-    y_max_ = (std::max)(p1.y(), p2.y());
-  }
-
   void update(T x, T y) {
     x_min_ = (std::min)(x_min_, x);
     y_min_ = (std::min)(y_min_, y);
@@ -67,27 +51,11 @@
     y_max_ = (std::max)(y_max_, y);
   }
 
-  // Extend the rectangle with a new point.
-  template <typename P>
-  void update(const P &p) {
-    x_min_ = (std::min)(x_min_, p.x());
-    y_min_ = (std::min)(y_min_, p.y());
-    x_max_ = (std::max)(x_max_, p.x());
-    y_max_ = (std::max)(y_max_, p.y());
-  }
-
   bool contains(T x, T y) const {
     return x >= x_min_ && x <= x_max_ &&
            y >= y_min_ && y <= y_max_;
   }
 
-  // Check whether a point is situated inside the bounding rectangle.
-  template <typename P>
-  bool contains(const P &p) const {
-    return p.x() >= x_min_ && p.x() <= x_max_ &&
-           p.y() >= y_min_ && p.y() <= y_max_;
-  }
-
   // Return the x-coordinate of the bottom left point of the rectangle.
   coordinate_type x_min() const {
     return x_min_;
@@ -108,14 +76,6 @@
     return y_max_;
   }
 
-  coordinate_type min_len() const {
-    return (std::min)(x_max_ - x_min_, y_max_ - y_min_);
-  }
-
-  coordinate_type max_len() const {
-    return (std::max)(x_max_ - x_min_, y_max_ - y_min_);
-  }
-
 private:
   coordinate_type x_min_;
   coordinate_type y_min_;
@@ -189,8 +149,7 @@
   typedef detail::point_2d<T> point_type;
   typedef voronoi_edge<coordinate_type> voronoi_edge_type;
 
-  voronoi_vertex(const point_type &vertex,
-                 voronoi_edge_type *edge) :
+  voronoi_vertex(const point_type &vertex, voronoi_edge_type *edge) :
       vertex_(vertex),
       incident_edge_(edge),
       data_(NULL) {}
@@ -448,7 +407,7 @@
 
     // Update bounding rectangle.
     point_type p = prepare_point(site.point0());
-    vrect_ = brect_type(p);
+    vrect_ = brect_type(p.x(), p.y());
 
     // Update cell records.
     cells_.push_back(cell_type(p, NULL));
@@ -480,7 +439,8 @@
     }
 
     // Update the bounding rectangle.
-    vrect_.update(prepare_point(site2.point0()));
+    point_type p = prepare_point(site2.point0());
+    vrect_.update(p.x(), p.y());
 
     // The second site represents a new site during site event
     // processing. Add a new cell to the cell records.
Modified: sandbox/gtl/boost/polygon/voronoi_utils.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/voronoi_utils.hpp	(original)
+++ sandbox/gtl/boost/polygon/voronoi_utils.hpp	2012-03-12 17:32:45 EDT (Mon, 12 Mar 2012)
@@ -105,7 +105,7 @@
         point_type direction(site1.y() - site2.y(), site2.x() - site1.x());
 
         // Find intersection points.
-        intersect(origin, direction, LINE, brect, discretization);
+        intersect(origin, direction, LINE, get_brect(brect), discretization);
 
         // Update endpoints in case edge is a ray.
         if (edge.vertex1() != NULL)
@@ -130,7 +130,9 @@
         // Edge is a segment or parabolic arc.
         discretization.push_back(get_point(edge.vertex0()->vertex()));
         discretization.push_back(get_point(edge.vertex1()->vertex()));
-        coordinate_type max_dist = max_error * brect.min_len();
+        coordinate_type x_len = to_fpt(brect.x_max()) - to_fpt(brect.x_min());
+        coordinate_type y_len = to_fpt(brect.y_max()) - to_fpt(brect.y_min());
+        coordinate_type max_dist = max_error * (std::min)(x_len, y_len);
         fill_intermediate_points(point1, point2, point3,
                                  discretization, max_dist);
       } else {
@@ -230,6 +232,15 @@
     return point_type(x, y);
   }
 
+  template <typename CT>
+  static brect_type get_brect(const bounding_rectangle<CT> &rect) {
+    coordinate_type x1 = to_fpt(rect.x_min());
+    coordinate_type y1 = to_fpt(rect.y_min());
+    coordinate_type x2 = to_fpt(rect.x_max());
+    coordinate_type y2 = to_fpt(rect.y_max());
+    return brect_type(x1, y1, x2, y2);
+  }
+
   // Find intermediate points of the parabola.
   // Parabola is a locus of points equidistant from the point and segment
   // sites. intermediate_points should contain two initial endpoints