|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r77926 - in sandbox/gtl: boost/polygon libs/polygon/benchmark libs/polygon/example libs/polygon/test
From: sydorchuk.andriy_at_[hidden]
Date: 2012-04-11 18:20:38
Author: asydorchuk
Date: 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
New Revision: 77926
URL: http://svn.boost.org/trac/boost/changeset/77926
Log:
Integrating library interfaces with Boost.Polygon concepts.
Text files modified:
sandbox/gtl/boost/polygon/voronoi.hpp | 20 ++++++++------------
sandbox/gtl/boost/polygon/voronoi_builder.hpp | 22 +++++++++++++---------
sandbox/gtl/libs/polygon/benchmark/voronoi_benchmark_points.cpp | 6 ++----
sandbox/gtl/libs/polygon/example/voronoi_advanced_tutorial.cpp | 2 +-
sandbox/gtl/libs/polygon/example/voronoi_basic_tutorial.cpp | 4 ++--
sandbox/gtl/libs/polygon/example/voronoi_visualizer.cpp | 4 ++--
sandbox/gtl/libs/polygon/test/voronoi_benchmark_test.cpp | 4 ++--
sandbox/gtl/libs/polygon/test/voronoi_builder_test.cpp | 22 +++++++++++-----------
8 files changed, 41 insertions(+), 43 deletions(-)
Modified: sandbox/gtl/boost/polygon/voronoi.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/voronoi.hpp (original)
+++ sandbox/gtl/boost/polygon/voronoi.hpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -29,31 +29,27 @@
namespace polygon {
template <typename PC, typename VD>
-static inline void construct_voronoi_points(
- const PC &points, VD *output) {
+static inline void construct_voronoi(const PC &points, VD *output,
+ typename enable_if<typename gtl_if<typename is_point_concept<typename geometry_concept<typename std::iterator_traits<typename PC::iterator>::value_type>::type>::type>::type>::type * = 0) {
default_voronoi_builder builder;
- builder.insert_points(points.begin(), points.end());
+ builder.insert(points.begin(), points.end());
builder.construct(output);
- builder.clear();
}
template <typename SC, typename VD>
-static inline void construct_voronoi_segments(
- const SC &segments, VD *output) {
+static inline void construct_voronoi_segments(const SC &segments, VD *output) {
default_voronoi_builder builder;
builder.insert_segments(segments.begin(), segments.end());
builder.construct(output);
- builder.clear();
}
template <typename PC, typename SC, typename VD>
-static inline void construct_voronoi(
- const PC &points, const SC &segments, VD *output) {
+static inline void construct_voronoi(const PC &points, const SC &segments, VD *output,
+ typename enable_if<typename gtl_if<typename is_point_concept<typename geometry_concept<typename std::iterator_traits<typename PC::iterator>::value_type>::type>::type>::type>::type * = 0) {
default_voronoi_builder builder;
- builder.insert_sites(points.begin(), points.end(),
- segments.begin(), segments.end());
+ builder.insert_sites(
+ points.begin(), points.end(), segments.begin(), segments.end());
builder.construct(output);
- builder.clear();
}
} // polygon
} // boost
Modified: sandbox/gtl/boost/polygon/voronoi_builder.hpp
==============================================================================
--- sandbox/gtl/boost/polygon/voronoi_builder.hpp (original)
+++ sandbox/gtl/boost/polygon/voronoi_builder.hpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -14,6 +14,8 @@
#include <map>
#include <vector>
+#include "isotropy.hpp"
+#include "point_concept.hpp"
#include "detail/voronoi_ctypes.hpp"
#include "detail/voronoi_predicates.hpp"
#include "detail/voronoi_structures.hpp"
@@ -47,20 +49,22 @@
voronoi_builder() {}
- void insert_point(const int_type& x, const int_type& y) {
+ void insert(const int_type& x, const int_type& y) {
site_events_.push_back(site_event_type(x, y));
}
template <typename PointType>
- void insert_point(const PointType& point) {
- insert_point(point.x(), point.y());
+ void insert(const PointType& point,
+ typename enable_if<typename gtl_if<typename is_point_concept<typename geometry_concept<PointType>::type>::type>::type>::type * = 0) {
+ insert(x(point), y(point));
}
template <typename PointIterator>
- void insert_points(PointIterator first_point, PointIterator last_point) {
+ void insert(PointIterator first_point, PointIterator last_point,
+ typename enable_if<typename gtl_if<typename is_point_concept<typename geometry_concept<typename std::iterator_traits<PointIterator>::value_type>::type>::type>::type>::type * = 0) {
// Create a site event from each input point.
for (PointIterator it = first_point; it != last_point; ++it) {
- insert_point(*it);
+ insert(*it);
}
}
@@ -68,8 +72,8 @@
// 1) the start point of the segment;
// 2) the end point of the segment;
// 3) the segment itself defined by its start point.
- void insert_segment(const int_type& x1, const int_type& y1,
- const int_type& x2, const int_type& y2) {
+ void insert(const int_type& x1, const int_type& y1,
+ const int_type& x2, const int_type& y2) {
point_type p1(x1, y1);
point_type p2(x2, y2);
site_events_.push_back(site_event_type(p1));
@@ -83,7 +87,7 @@
template <typename PointType>
void insert_segment(const PointType& point1, const PointType& point2) {
- insert_segment(point1.x(), point1.y(), point2.x(), point2.y());
+ insert(point1.x(), point1.y(), point2.x(), point2.y());
}
template <typename SegmentType>
@@ -103,7 +107,7 @@
void insert_sites(
PointIterator first_point, PointIterator last_point,
SegmentIterator first_segment, SegmentIterator last_segment) {
- insert_points(first_point, last_point);
+ insert(first_point, last_point);
insert_segments(first_segment, last_segment);
}
Modified: sandbox/gtl/libs/polygon/benchmark/voronoi_benchmark_points.cpp
==============================================================================
--- sandbox/gtl/libs/polygon/benchmark/voronoi_benchmark_points.cpp (original)
+++ sandbox/gtl/libs/polygon/benchmark/voronoi_benchmark_points.cpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -59,10 +59,8 @@
for (int j = 0; j < NUM_RUNS[i]; ++j) {
VB_BOOST vb;
VD_BOOST vd;
- for (int k = 0; k < NUM_POINTS[i]; ++k) {
- vb.insert_point(static_cast<int32>(gen()),
- static_cast<int32>(gen()));
- }
+ for (int k = 0; k < NUM_POINTS[i]; ++k)
+ vb.insert(static_cast<int32>(gen()), static_cast<int32>(gen()));
vb.construct(&vd);
}
double time_per_test = timer.elapsed() / NUM_RUNS[i];
Modified: sandbox/gtl/libs/polygon/example/voronoi_advanced_tutorial.cpp
==============================================================================
--- sandbox/gtl/libs/polygon/example/voronoi_advanced_tutorial.cpp (original)
+++ sandbox/gtl/libs/polygon/example/voronoi_advanced_tutorial.cpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -129,7 +129,7 @@
for (size_t i = 0; i < GENERATED_POINTS; ++i) {
boost::int64_t x = distr(gen);
boost::int64_t y = distr(gen);
- vb.insert_point(x, y);
+ vb.insert(x, y);
}
printf("Constructing Voronoi diagram of %d points...\n", GENERATED_POINTS);
Modified: sandbox/gtl/libs/polygon/example/voronoi_basic_tutorial.cpp
==============================================================================
--- sandbox/gtl/libs/polygon/example/voronoi_basic_tutorial.cpp (original)
+++ sandbox/gtl/libs/polygon/example/voronoi_basic_tutorial.cpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -118,9 +118,9 @@
voronoi_builder<int> vb;
voronoi_diagram<double> vd;
for (std::vector<Point>::iterator it = points.begin(); it != points.end(); ++it)
- vb.insert_point(it->a, it->b);
+ vb.insert(it->a, it->b);
for (std::vector<Segment>::iterator it = segments.begin(); it != segments.end(); ++it)
- vb.insert_segment(it->p0.a, it->p0.b, it->p1.a, it->p1.b);
+ vb.insert(it->p0.a, it->p0.b, it->p1.a, it->p1.b);
vb.construct(&vd);
// Traversing Voronoi Graph.
Modified: sandbox/gtl/libs/polygon/example/voronoi_visualizer.cpp
==============================================================================
--- sandbox/gtl/libs/polygon/example/voronoi_visualizer.cpp (original)
+++ sandbox/gtl/libs/polygon/example/voronoi_visualizer.cpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -50,13 +50,13 @@
in_stream >> num_point_sites;
for (int i = 0; i < num_point_sites; ++i) {
in_stream >> x1 >> y1;
- vb_.insert_point(x1, y1);
+ vb_.insert(x1, y1);
brect_.update(x1, y1);
}
in_stream >> num_edge_sites;
for (int i = 0; i < num_edge_sites; ++i) {
in_stream >> x1 >> y1 >> x2 >> y2;
- vb_.insert_segment(x1, y1, x2, y2);
+ vb_.insert(x1, y1, x2, y2);
brect_.update(x1, y1);
brect_.update(x2, y2);
}
Modified: sandbox/gtl/libs/polygon/test/voronoi_benchmark_test.cpp
==============================================================================
--- sandbox/gtl/libs/polygon/test/voronoi_benchmark_test.cpp (original)
+++ sandbox/gtl/libs/polygon/test/voronoi_benchmark_test.cpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -62,7 +62,7 @@
y = static_cast<coordinate_type>(gen());
points[cur_point] = point_type(x, y);
}
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
}
double elapsed_time = timer.elapsed();
double time_per_test = elapsed_time / num_tests;
@@ -99,7 +99,7 @@
for (int i = 0; i < POINT_RUNS; ++i) {
voronoi_diagram<double> test_output;
timer.restart();
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
periods.push_back(timer.elapsed());
}
}
Modified: sandbox/gtl/libs/polygon/test/voronoi_builder_test.cpp
==============================================================================
--- sandbox/gtl/libs/polygon/test/voronoi_builder_test.cpp (original)
+++ sandbox/gtl/libs/polygon/test/voronoi_builder_test.cpp 2012-04-11 18:20:37 EDT (Wed, 11 Apr 2012)
@@ -54,7 +54,7 @@
std::vector< point_data<T> > points;
points.push_back(point_data<T>(0, 0));
vd_type test_output;
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
VERIFY_OUTPUT(test_output);
BOOST_CHECK(test_output.cells().size() == 1);
@@ -70,7 +70,7 @@
points.push_back(point_data<T>(0, 0));
points.push_back(point_data<T>(0, 1));
vd_type test_output;
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
VERIFY_OUTPUT(test_output);
CHECK_OUTPUT_SIZE(test_output, 2, 0, 1);
@@ -101,7 +101,7 @@
points.push_back(point_data<T>(1, 1));
points.push_back(point_data<T>(2, 2));
vd_type test_output;
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
VERIFY_OUTPUT(test_output);
CHECK_OUTPUT_SIZE(test_output, 3, 0, 2);
@@ -137,7 +137,7 @@
points.push_back(point2);
points.push_back(point3);
vd_type test_output;
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
VERIFY_OUTPUT(test_output);
CHECK_OUTPUT_SIZE(test_output, 3, 1, 3);
@@ -187,7 +187,7 @@
points.push_back(point2);
points.push_back(point3);
vd_type test_output;
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
VERIFY_OUTPUT(test_output);
CHECK_OUTPUT_SIZE(test_output, 3, 1, 3);
@@ -239,7 +239,7 @@
points.push_back(point3);
points.push_back(point4);
vd_type test_output;
- construct_voronoi_points(points, &test_output);
+ construct_voronoi(points, &test_output);
VERIFY_OUTPUT(test_output);
CHECK_OUTPUT_SIZE(test_output, 4, 1, 4);
@@ -308,8 +308,8 @@
point_vec_small.push_back(point_data<T>(i, j));
point_vec_large.push_back(point_data<T>(koef * i, koef * j));
}
- construct_voronoi_points(point_vec_small, &test_output_small);
- construct_voronoi_points(point_vec_large, &test_output_large);
+ construct_voronoi(point_vec_small, &test_output_small);
+ construct_voronoi(point_vec_large, &test_output_large);
VERIFY_OUTPUT(test_output_small);
VERIFY_OUTPUT(test_output_large);
unsigned int num_cells = grid_size[k] * grid_size[k];
@@ -344,8 +344,8 @@
point_vec_small.push_back(point_data<T>(x, y));
point_vec_large.push_back(point_data<T>(koef * x, koef * y));
}
- construct_voronoi_points(point_vec_small, &test_output_small);
- construct_voronoi_points(point_vec_large, &test_output_large);
+ construct_voronoi(point_vec_small, &test_output_small);
+ construct_voronoi(point_vec_large, &test_output_large);
VERIFY_OUTPUT(test_output_small);
VERIFY_OUTPUT(test_output_large);
BOOST_CHECK_EQUAL(test_output_small.num_cells(),
@@ -366,7 +366,7 @@
std::vector< point_data<T> > point_vec;
for (int i = 0; i < 1000000; i++)
point_vec.push_back(point_data<T>(gen() % 10000 - 5000, gen() % 10000 - 5000));
- construct_voronoi_points(point_vec, &test_output);
+ construct_voronoi(point_vec, &test_output);
BOOST_CHECK_EQUAL(voronoi_test_helper::verify_output(test_output,
voronoi_test_helper::FAST_VERIFICATION), true);
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk