|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r86220 - in branches/release/libs/polygon: benchmark/benchmark_results benchmark/benchmark_results/plots doc test
From: sydorchuk.andriy_at_[hidden]
Date: 2013-10-09 15:55:41
Author: asydorchuk
Date: 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013)
New Revision: 86220
URL: http://svn.boost.org/trac/boost/changeset/86220
Log:
Polygon: Merging updates to the benchmark.
Added:
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points.png (contents, props changed)
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments.png (contents, props changed)
Deleted:
branches/release/libs/polygon/benchmark/benchmark_results/benchmark_points.txt
branches/release/libs/polygon/benchmark/benchmark_results/benchmark_segments.txt
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_10.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_100.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_1000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_10000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_100000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_1000000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_all.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_memory.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_10.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_100.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_1000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_10000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_100000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_1000000.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_all.png
branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_memory.png
Text files modified:
/dev/null | 60 ---
/dev/null | 44 --
branches/release/libs/polygon/doc/voronoi_benchmark.htm | 601 +++++++++++++++------------------------
branches/release/libs/polygon/doc/voronoi_builder.htm | 129 ++-----
branches/release/libs/polygon/doc/voronoi_main.htm | 115 ++----
branches/release/libs/polygon/test/Jamfile.v2 | 5
6 files changed, 316 insertions(+), 638 deletions(-)
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/benchmark_points.txt
==============================================================================
--- branches/release/libs/polygon/benchmark/benchmark_results/benchmark_points.txt 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013) (r86219)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,60 +0,0 @@
-System: CPU i5-7600 2.8 GHz, 4Gb RAM.
-OS: Windows 7 Professional 32 bit.
-Compiler: MSVC-9.0.
-
-Boost.Polygon Voronoi of Points:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000027 |
-| 100 | 10000 | 0.000392 |
-| 1000 | 1000 | 0.004541 |
-| 10000 | 100 | 0.047540 |
-| 100000 | 10 | 0.530200 |
-| 1000000 | 1 | 5.882000 |
-
-CGAL Triangulation of Points:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000116 |
-| 100 | 10000 | 0.002649 |
-| 1000 | 1000 | 0.039140 |
-| 10000 | 100 | 0.684090 |
-| 100000 | 10 | 16.904600 |
-| 1000000 | 1 | 566.056000 |
-
-S-Hull Triangulation of Points:
-| 10 | 100000 | 0.000043 |
-| 100 | 10000 | 0.000521 |
-| 1000 | 1000 | 0.007125 |
-| 10000 | 100 | 0.091640 |
-| 100000 | 10 | 1.218000 |
-| 1000000 | 1 | 15.394000 |
-
-System: CPU i5-7600 2.8 GHz, 4Gb RAM.
-OS: Ubuntu 11.10 64 bit.
-Compiler: gcc 4.6.1.
-
-Boost.Polygon Voronoi of Points:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000013 |
-| 100 | 10000 | 0.000192 |
-| 1000 | 1000 | 0.002130 |
-| 10000 | 100 | 0.022900 |
-| 100000 | 10 | 0.274000 |
-| 1000000 | 1 | 3.290000 |
-
-CGAL Triangulation of Points:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000052 |
-| 100 | 10000 | 0.001150 |
-| 1000 | 1000 | 0.016680 |
-| 10000 | 100 | 0.297900 |
-| 100000 | 10 | 8.047000 |
-| 1000000 | 1 | 315.740000 |
-
-S-Hull Triangulation of Points:
-| 10 | 100000 | 0.000012 |
-| 100 | 10000 | 0.000139 |
-| 1000 | 1000 | 0.002010 |
-| 10000 | 100 | 0.028300 |
-| 100000 | 10 | 0.432000 |
-| 1000000 | 1 | 6.350000 |
-
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/benchmark_segments.txt
==============================================================================
--- branches/release/libs/polygon/benchmark/benchmark_results/benchmark_segments.txt 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013) (r86219)
+++ /dev/null 00:00:00 1970 (deleted)
@@ -1,44 +0,0 @@
-System: CPU i5-7600 2.8 GHz, 4Gb RAM.
-OS: Windows 7 Professional 32 bit.
-Compiler: MSVC-9.0.
-
-Boost.Polygon Voronoi of Segments:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000290 |
-| 100 | 10000 | 0.003655 |
-| 1000 | 1000 | 0.038158 |
-| 10000 | 100 | 0.389470 |
-| 100000 | 10 | 4.031300 |
-| 1000000 | 1 | 40.912000 |
-
-CGAL Triangulation of Segments:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.001047 |
-| 100 | 10000 | 0.014812 |
-| 1000 | 1000 | 0.177315 |
-| 10000 | 100 | 2.561340 |
-| 100000 | 10 | 49.314600 |
-| 1000000 | 1 | 1640.830000 |
-
-System: CPU i5-7600 2.8 GHz, 4Gb RAM.
-OS: Ubuntu 11.10 64 bit.
-Compiler: gcc 4.6.1.
-
-Boost.Polygon Voronoi of Segments:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000165 |
-| 100 | 10000 | 0.002006 |
-| 1000 | 1000 | 0.020440 |
-| 10000 | 100 | 0.209700 |
-| 100000 | 10 | 2.228000 |
-| 1000000 | 1 | 22.250000 |
-
-CGAL Triangulation of Segments:
-| Number of points | Number of tests | Time per one test |
-| 10 | 100000 | 0.000483 |
-| 100 | 10000 | 0.007006 |
-| 1000 | 1000 | 0.084000 |
-| 10000 | 100 | 1.191900 |
-| 100000 | 10 | 23.538000 |
-| 1000000 | 1 | 856.650000 |
-
Added: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_10.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_100.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_1000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_10000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_100000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_1000000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_all.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_points_memory.png
==============================================================================
Binary file. No diff available.
Added: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_10.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_100.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_1000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_10000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_100000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_1000000.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_all.png
==============================================================================
Binary file. No diff available.
Deleted: branches/release/libs/polygon/benchmark/benchmark_results/plots/benchmark_segments_memory.png
==============================================================================
Binary file. No diff available.
Modified: branches/release/libs/polygon/doc/voronoi_benchmark.htm
==============================================================================
--- branches/release/libs/polygon/doc/voronoi_benchmark.htm Wed Oct 9 14:26:48 2013 (r86219)
+++ branches/release/libs/polygon/doc/voronoi_benchmark.htm 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013) (r86220)
@@ -1,22 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
+<html><head>
+
+
+
<meta http-equiv="Content-Language" content="en-us">
- <meta http-equiv="Content-Type"
- content="text/html; charset=windows-1252">
- <title>Voronoi Benchmark</title>
-</head>
-<body>
-<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0"
- cellpadding="0" cellspacing="0">
+ <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Voronoi Benchmark</title></head><body>
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
- <td style="background-color: rgb(238, 238, 238);" nowrap="1"
- valign="top">
- <div style="padding: 5px;" align="center"> <img
- src="images/boost.png" border="0" height="86" width="277"><a
- title="www.boost.org home page" tabindex="2"
- style="border: medium none ;" href="http://www.boost.org/"> </a></div>
+ <td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center"> <img src="images/boost.png" border="0" height="86" width="277"><a title="www.boost.org home page" tabindex="2" style="border: medium none ;" href="http://www.boost.org/"> </a></div>
<div style="margin: 5px;">
<h3 class="navbar">Contents</h3>
<ul>
@@ -72,313 +65,282 @@
</ul>
</div>
<h3 class="navbar">Polygon Sponsor</h3>
- <div style="padding: 5px;" align="center"> <img
- src="images/intlogo.gif" border="0" height="51" width="127"><a
- title="www.adobe.com home page" tabindex="2"
- style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
+ <div style="padding: 5px;" align="center"> <img src="images/intlogo.gif" border="0" height="51" width="127"><a title="www.adobe.com home page" tabindex="2" style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
</td>
- <td
- style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
- valign="top" width="100%"><!-- End Header --> <br>
+ <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%"><!-- End Header --> <br>
<h1>Voronoi Benchmark</h1>
-There are not many known Voronoi libraries that are capable to satisfy
-the
-following set of conditions:<br>
- <ul>
- <li>could handle input data sets of points and segments<br>
- </li>
- <li>give exact warranties about the algorithm robustness and
-output topology<br>
- </li>
- <li>compute coordinates of the output geometries within the
-fixed relative precision<br>
- </li>
- </ul>
-Below is the list of libraries included in this benchmark sorted by the
-number of conditions each of them satisfies:<br>
- <ul>
- <li>Boost.Polygon Voronoi - satisfies all the conditions above,
-implements sweep-line algorithm.<br>
- </li>
- <li>CGAL - satisfies the first two conditions, implements
-incremental algorithm. CGAL is a well-known
-library in the computational geometry area, especially for its
-robustness.<br>
- </li>
- <li>S-Hull
-- doesn't satisfy any of the above conditions. S-Hull is a non-robust
-implementation of the sweep-hull algorithm used to construct Delaunay
-triangulation of a set of points.<br>
- </li>
- </ul>
-At the moment this benchmark includes only two robust implementations:
-Boost.Polygon Voronoi and CGAL. Thus we are considering comparison of
-those two to be of the most interest. <br>
- <br>
-Other libraries (OpenVoronoi,
- Triangle)
-would be added to this benchmark
-incrementally (we are open for suggestions).<br>
- <h2>Important<br>
- </h2>
-While results of this benchmark show complete dominance of
-the Boost.Polygon Voronoi over the CGAL Delaunay Graph implementation,
-we would like to make it clear
-that both libraries use different approach to construct Voronoi
-diagram. Thus there are problems where the CGAL's incremental approach
-would
-be still more vital than the sweep-line algorithm (e.g. input sites are
-inserted as a live stream
-data).<br>
- <h2>Voronoi Benchmark Details<br>
- </h2>
+ <h2>Benchmark Details</h2>
+From the topological perspective Delaunay triangulation is a dual
+data structure to the Voronoi diagram, thus libraries that provide
+Delaunay triangulation construction routines were also included into
+the benchmark. However, from the computation perspective Voronoi
+diagram contains more information as it embeds information regarding
+the coordinates of the centers of the inscribed circles tangent to the
+three or more input geometries.<br>
+
+
The benchmark consists of the two parts:<br>
- <ul>
- <li>The first one constructs the Voronoi diagram of a set of
-random points (<a href="../benchmark/voronoi_benchmark_points.cpp"><span
- style="text-decoration: underline;">voronoi_benchmark_points.cpp</span></a>)</li>
- <li>The second one constructs the Voronoi diagram of a set of
-random
-segments (voronoi_benchmark_segments.cpp)</li>
- </ul>
-Below we list important benchmark details that should be considered
-while reviewing its results:<br>
- <ul>
- <li>We ensure that input data sets are the same for all
-libraries by initializing random generator with the same seed</li>
- <li>We ensure that input data sets that consist of segments
-don't contain intersections using Boost.Polygon functionality</li>
- <li>S-Hull's implementation doesn't process duplicate points
-properly, thus those are eliminated before the algorithm execution
-explicitly (Boost.Polygon Voronoi and CGAL do that implicitly) <br>
- </li>
- <li>There is no Voronoi diagram data structure in CGAL/S-Hull.
-That's why we use the segment Delaunay graph which is topologically
-dual to the Voronoi diagram</li>
- <li>CGAL's and S-Hull's output Delaunay triangulation doesn't
-contain information
-about coordinates of the Voronoi vertices. We didn't include time to
-compute Voronoi vertices and memory
-storage required for those in this benchmark.<br>
- </li>
- <li>Both Boost.Polygon Voronoi and CGAL process each input
-segment
-as 3 input objects (segment itself and its endpoints), thus the running
-time and memory usage for Voronoi of segments would be at
-least 3 times
-slower than for Voronoi of points</li>
- </ul>
-The benchmark was executed on the following two system configurations:<br>
- <br>
-Hardware: Intel i5-7600 2.8 GHz, 4GiB RAM.<br>
-OS: Windows 7 Professional 32-bit.<br>
-Libraries: Boost 1.48.0, CGAL-4.0.<br>
- <br>
-Hardware: Intel i5-7600 2.8 GHz, 4GiB RAM.<br>
-OS: Ubuntu 11.10 64-bit.<br>
-Libraries: Boost 1.48.0, CGAL-4.0, GMP 5.0.4, MPFR 3.1.0 + cumulative
-patch.<br>
- <h2>Voronoi Benchmark Results</h2>
- <h3>Random Points Benchmark</h3>
- <table
- style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;"
- border="1" cellpadding="2" cellspacing="2">
+ <ol>
+<li>construction of the Voronoi diagram / Delaunay triangulation of a set of
+random points uniformly distributed over 32-bit integer grid (voronoi_benchmark_points.cpp)</li><li>construction of the Voronoi diagram / Delaunay triangulation of a set of
+random non-intersecting
+segments uniformly distributed over 32-bit integer grid (voronoi_benchmark_segments.cpp).</li>
+ </ol>
+
+
+
+ <h2>Libraries</h2>
+ <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
- <td colspan="2" rowspan="1"
- style="vertical-align: top; text-align: center;">Test specification<br>
+ <td style="vertical-align: top;"><span style="font-weight: bold;">Library</span><br>
</td>
- <td colspan="6" rowspan="1"
- style="vertical-align: top; text-align: center;">Average construction
-time (in secs)<br>
+ <td style="vertical-align: top; font-weight: bold;">Boost.Polygon<br>
+ </td>
+ <td style="vertical-align: top; font-weight: bold;">CGAL<br>
+ </td>
+ <td style="vertical-align: top; font-weight: bold;">SHull<br>
</td>
</tr>
<tr>
- <td style="vertical-align: top; text-align: center;">Number
-of Points<br>
+ <td style="vertical-align: top;">Official page<br>
</td>
- <td style="vertical-align: top; text-align: center;">Number
-of Runs<br>
+ <td style="vertical-align: top;">www.boost.org/libs/polygon‎<br>
</td>
- <td style="vertical-align: top; text-align: center;">Boost
-Win-32<br>
+ <td style="vertical-align: top;">http://www.cgal.org
>
</td>
- <td style="vertical-align: top; text-align: center;">CGAL
-Win-32<br>
+ <td style="vertical-align: top;">http://www.s-hull.org
>
</td>
- <td style="vertical-align: top; text-align: center;">S-Hull
-Win-32<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">Algorithm<br>
</td>
- <td style="vertical-align: top; text-align: center;">Boost
-Linux-64<br>
+ <td style="vertical-align: top;">sweep-line<br>
</td>
- <td style="vertical-align: top; text-align: center;">CGAL
-Linux-64<br>
+ <td style="vertical-align: top;">incremental<br>
</td>
- <td style="vertical-align: top; text-align: center;">S-Hull
-Linux-64<br>
+ <td style="vertical-align: top;">sweep-hull<br>
</td>
</tr>
<tr>
- <td style="vertical-align: top; text-align: right;">10<br>
+ <td style="vertical-align: top;">Supported input geometries<br>
</td>
- <td style="vertical-align: top; text-align: right;">100000<br>
+ <td style="vertical-align: top;">points and segments<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000027<br>
+ <td style="vertical-align: top;">points and segments<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000116<br>
+ <td style="vertical-align: top;">points<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000043<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">Output data structure<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000013<br>
+ <td style="vertical-align: top;">Voronoi diagram<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000052<br>
+ <td style="vertical-align: top;">Delaunay triangulation<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000012<br>
+ <td style="vertical-align: top;">Delaunay triangulation<br>
</td>
</tr>
<tr>
- <td style="vertical-align: top; text-align: right;">100<br>
+ <td style="vertical-align: top;">Complexity<br>
</td>
- <td style="vertical-align: top; text-align: right;">10000<br>
+ <td style="vertical-align: top;">O(N log N)<br>
+ </td>
+ <td style="vertical-align: top;">O(N log N)</td>
+ <td style="vertical-align: top;">O(N log N)</td>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">Memory usage<br>
+ </td>
+ <td style="vertical-align: top;">O(N)<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000392<br>
+ <td style="vertical-align: top;">O(N)<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.002649<br>
+ <td style="vertical-align: top;">O(N)<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000521<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">Robustness policies<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000192<br>
+ <td style="vertical-align: top;">lazy arithmetic, exact predicates, topology analysis<br>
</td>
- <td style="vertical-align: top; text-align: right;"> 0.001150<br>
+ <td style="vertical-align: top;">lazy arithmetic, exact predicates, topology analysis<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.000139<br>
+ <td style="vertical-align: top;">non-robust<br>
</td>
</tr>
<tr>
- <td style="vertical-align: top; text-align: right;">1000<br>
+ <td style="vertical-align: top;">Output coordinates precision<br>
</td>
- <td style="vertical-align: top; text-align: right;">1000<br>
+ <td style="vertical-align: top;">128 machine epsilon<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.004541<br>
+ <td style="vertical-align: top;">no output coordinates<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.039140<br>
+ <td style="vertical-align: top;">no output coordinates<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.007125<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top;">External dependencies<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.002130<br>
+ <td style="vertical-align: top;">No<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.016680<br>
+ <td style="vertical-align: top;">Boost, GMP, MPFR<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.002010<br>
+ <td style="vertical-align: top;">No<br>
</td>
</tr>
+ </tbody>
+ </table>
+ <br>
+
+The other known libraries (OpenVoronoi,
+ Triangle, Vroni) will be considered for the inclusion into the benchmark in the future.<br>
+<ul>
+ <ul>
+
+
+
+
+
+
+
+ </ul>
+
+
+ <ul>
+
+
+ </ul>
+
+ </ul>
+ <h2>System Configuration<br>
+ </h2>
+
+
+Hardware: Intel i5-7600 2.8 GHz, 16GiB RAM.<br>
+OS: Ubuntu 13.04 64-bit.<br>
+Compiler: GCC 4.7.3.<br>
+Libraries and dependencies: Boost 1.54.0, CGAL-4.3-beta1, GMP 5.1.4, MPFR 3.1.2, S-Hull.<br>
+ <h2>Benchmark Results</h2>
+ <h3>Random Points Benchmark</h3><img style="border: 1px solid ; width: 500px; height: 350px;" alt="Benchmark Points Chart" src="../benchmark/benchmark_results/plots/benchmark_points.png"><br>
+
+ <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2">
+ <tbody>
<tr>
- <td style="vertical-align: top; text-align: right;">10000<br>
- </td>
- <td style="vertical-align: top; text-align: right;">100<br>
+ <td colspan="2" rowspan="1" style="vertical-align: top; text-align: center;">Test specification<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.047540<br>
+ <td colspan="6" rowspan="1" style="vertical-align: top; text-align: center;">Average construction
+time (in secs)<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.684090<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top; text-align: center;">Number
+of Points<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.091640<br>
+ <td style="vertical-align: top; text-align: center;">Number
+of Runs<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.022900<br>
+
+
+
+ <td style="vertical-align: top; text-align: center;">Boost
+Linux-64<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.297900<br>
+ <td style="vertical-align: top; text-align: center;">CGAL
+Linux-64<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.028300<br>
+ <td style="vertical-align: top; text-align: center;">S-Hull
+Linux-64<br>
</td>
</tr>
+
<tr>
- <td style="vertical-align: top; text-align: right;">100000<br>
+ <td style="vertical-align: top; text-align: right;">100<br>
</td>
- <td style="vertical-align: top; text-align: right;">10<br>
+ <td style="vertical-align: top; text-align: right;">10000<br>
+ </td>
+
+
+
+ <td style="vertical-align: top; text-align: right;">0.000206<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.530200<br>
+ <td style="vertical-align: top; text-align: right;"> 0.000073<br>
</td>
- <td style="vertical-align: top; text-align: right;"> 16.904600<br>
+ <td style="vertical-align: top; text-align: right;">0.000243<br>
</td>
- <td style="vertical-align: top; text-align: right;">1.218000<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top; text-align: right;">1000<br>
+ </td>
+ <td style="vertical-align: top; text-align: right;">1000<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.274000<br>
+
+
+
+ <td style="vertical-align: top; text-align: right;">0.002250<br>
</td>
- <td style="vertical-align: top; text-align: right;">8.047000<br>
+ <td style="vertical-align: top; text-align: right;">0.000753<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.432000<br>
+ <td style="vertical-align: top; text-align: right;">0.002184<br>
</td>
</tr>
<tr>
- <td style="vertical-align: top; text-align: right;">1000000<br>
+ <td style="vertical-align: top; text-align: right;">10000<br>
</td>
- <td style="vertical-align: top; text-align: right;">1<br>
+ <td style="vertical-align: top; text-align: right;">100<br>
</td>
- <td style="vertical-align: top; text-align: right;">5.882000<br>
+
+
+
+ <td style="vertical-align: top; text-align: right;">0.024100<br>
</td>
- <td style="vertical-align: top; text-align: right;">566.056000<br>
+ <td style="vertical-align: top; text-align: right;">0.007917<br>
</td>
- <td style="vertical-align: top; text-align: right;">15.394000<br>
+ <td style="vertical-align: top; text-align: right;">0.030552<br>
</td>
- <td style="vertical-align: top; text-align: right;">3.290000<br>
+ </tr>
+ <tr>
+ <td style="vertical-align: top; text-align: right;">100000<br>
+ </td>
+ <td style="vertical-align: top; text-align: right;">10<br>
</td>
- <td style="vertical-align: top; text-align: right;">315.740000<br>
+
+
+
+ <td style="vertical-align: top; text-align: right;">0.292000<br>
</td>
- <td style="vertical-align: top; text-align: right;">6.350000<br>
+ <td style="vertical-align: top; text-align: right;">0.084336<br>
+ </td>
+ <td style="vertical-align: top; text-align: right;">0.451913<br>
</td>
</tr>
- </tbody>
- </table>
- <br>
- <table style="text-align: left;" border="1" cellpadding="2"
- cellspacing="2">
- <tbody>
<tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_10.png"></td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_100.png"></td>
- </tr>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_1000.png"></td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_10000.png"></td>
- </tr>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_100000.png"></td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_1000000.png"></td>
- </tr>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_memory.png"><br>
- </td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_points_all.png"><br>
+ <td style="vertical-align: top; text-align: right;">1000000<br>
+ </td>
+ <td style="vertical-align: top; text-align: right;">1<br>
+ </td>
+
+
+
+ <td style="vertical-align: top; text-align: right;">3.470000<br>
+ </td>
+ <td style="vertical-align: top; text-align: right;">0.902300<br>
+ </td>
+ <td style="vertical-align: top; text-align: right;">6.603814<br>
</td>
</tr>
</tbody>
</table>
- <h3>Random Segments Benchmark</h3>
- <table style="text-align: left; width: 100%;" border="1"
- cellpadding="2" cellspacing="2">
+ <br>
+<h3>Random Segments Benchmark</h3><img style="border: 1px solid ; width: 500px; height: 350px;" alt="Benchmark Segment Chart" src="../benchmark/benchmark_results/plots/benchmark_segments.png"><br>
+
+ <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
- <td colspan="2" rowspan="1"
- style="vertical-align: top; text-align: center;">Test specification<br>
+ <td colspan="2" rowspan="1" style="vertical-align: top; text-align: center;">Test specification<br>
</td>
- <td colspan="4" rowspan="1"
- style="vertical-align: top; text-align: center;">Average construction
+ <td colspan="4" rowspan="1" style="vertical-align: top; text-align: center;">Average construction
time (in secs)</td>
</tr>
<tr>
@@ -388,12 +350,8 @@
<td style="vertical-align: top; text-align: center;">Number
of Runs<br>
</td>
- <td style="vertical-align: top; text-align: center;">Boost
-Win-32<br>
- </td>
- <td style="vertical-align: top; text-align: center;">CGAL
-Win-32<br>
- </td>
+
+
<td style="vertical-align: top; text-align: center;">Boost
Linux-64<br>
</td>
@@ -401,32 +359,17 @@
Linux-64<br>
</td>
</tr>
- <tr>
- <td style="vertical-align: top; text-align: right;">10<br>
- </td>
- <td style="vertical-align: top; text-align: right;">100000<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.000290<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.001047<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.000165<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.000483<br>
- </td>
- </tr>
+
<tr>
<td style="vertical-align: top; text-align: right;">100<br>
</td>
<td style="vertical-align: top; text-align: right;">10000<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.003655<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.014812<br>
+
+
+ <td style="vertical-align: top; text-align: right;">0.002284<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.002006<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.007006<br>
+ <td style="vertical-align: top; text-align: right;">0.002985<br>
</td>
</tr>
<tr>
@@ -434,13 +377,11 @@
</td>
<td style="vertical-align: top; text-align: right;">1000<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.038158<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.177315<br>
+
+
+ <td style="vertical-align: top; text-align: right;">0.023240<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.020440<br>
- </td>
- <td style="vertical-align: top; text-align: right;">0.084000<br>
+ <td style="vertical-align: top; text-align: right;">0.032180<br>
</td>
</tr>
<tr>
@@ -448,13 +389,11 @@
</td>
<td style="vertical-align: top; text-align: right;">100<br>
</td>
- <td style="vertical-align: top; text-align: right;">0.389470<br>
- </td>
- <td style="vertical-align: top; text-align: right;">2.561340<br>
+
+
+ <td style="vertical-align: top; text-align: right;"> 0.237700<br>
</td>
- <td style="vertical-align: top; text-align: right;"> 0.209700<br>
- </td>
- <td style="vertical-align: top; text-align: right;">1.191900<br>
+ <td style="vertical-align: top; text-align: right;">0.337400<br>
</td>
</tr>
<tr>
@@ -462,13 +401,11 @@
</td>
<td style="vertical-align: top; text-align: right;">10<br>
</td>
- <td style="vertical-align: top; text-align: right;">4.031300<br>
- </td>
- <td style="vertical-align: top; text-align: right;">49.314600<br>
- </td>
- <td style="vertical-align: top; text-align: right;">2.228000<br>
+
+
+ <td style="vertical-align: top; text-align: right;">2.488000<br>
</td>
- <td style="vertical-align: top; text-align: right;">23.538000<br>
+ <td style="vertical-align: top; text-align: right;">3.633000<br>
</td>
</tr>
<tr>
@@ -476,99 +413,22 @@
</td>
<td style="vertical-align: top; text-align: right;">1<br>
</td>
- <td style="vertical-align: top; text-align: right;">40.912000<br>
- </td>
- <td style="vertical-align: top; text-align: right;">1640.830000<br>
- </td>
- <td style="vertical-align: top; text-align: right;">22.250000<br>
+
+
+ <td style="vertical-align: top; text-align: right;">25.00000<br>
</td>
- <td style="vertical-align: top; text-align: right;">856.650000<br>
- </td>
- </tr>
- </tbody>
- </table>
- <br>
- <table style="text-align: left;" border="1" cellpadding="2"
- cellspacing="2">
- <tbody>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_10.png"></td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_100.png"></td>
- </tr>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_1000.png"></td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_10000.png"></td>
- </tr>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_100000.png"></td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_1000000.png"></td>
- </tr>
- <tr>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_memory.png"><br>
- </td>
- <td style="vertical-align: top;"><img
- style="width: 500px; height: 300px;" alt=""
- src="images/benchmark_segments_all.png"><br>
+ <td style="vertical-align: top; text-align: right;">39.090000<br>
</td>
</tr>
</tbody>
</table>
- <span style="font-weight: bold;"></span>
- <h2>Voronoi Benchmark Summary</h2>
-The main conclusions for the benchmark results above are following:<br>
- <ul>
- <li>There is no input size range were CGAL would outperform
-Boost.Polygon Voronoi. Even considering the fact that we didn't include
-time it would take CGAL to compute coordinates of the Voronoi vertices.</li>
- <li>The more interesting fact is that robust implementation of
-the Boost.Polygon Voronoi is faster than non-robust of
-S-Hull (except small input sets of around 100 points on Linux-64).<br>
- </li>
- <li>Logarithmic execution time shows that Boost.Polygon Voronoi
-and S-Hull
-have clear N*log(N) complexity, while this doesn't seem to be true for
-CGAL (at least for large input data sets).<br>
- </li>
- <li>Boost.Polygon Voronoi computes coordinates of the output
-Voronoi vertices within 64 machine epsilon precision. There are no such
-warranties for the CGAL library.<br>
- </li>
- <li>Boost.Polygon Voronoi of points is 4 times faster for small
-input data sets (10 points) and this factor grows up to 100 for large
-input data sets (1000000 points).</li>
- <li>Boost.Polygon Voronoi of segments is 3 times faster for
-small input data sets (10 segments) and this factor grows up to 40 for
-large input data sets (1000000 segments).</li>
- <li>Boost.Polygon
-Voronoi is capable to construct Voronoi of 10000 points or 1000
-segments in 0.02 seconds. This allows to produce real time frame rate
-for those quantities.</li>
- </ul>
- </td>
+ <br><span style="font-weight: bold;"></span></td>
</tr>
<tr>
- <td style="background-color: rgb(238, 238, 238);" nowrap="1"
- valign="top"> </td>
- <td
- style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
- valign="top" width="100%">
+ <td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top"> </td>
+ <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
<table class="docinfo" id="table2" frame="void" rules="none">
- <colgroup> <col class="docinfo-name"><col
- class="docinfo-content"> </colgroup> <tbody valign="top">
+ <colgroup> <col class="docinfo-name"><col class="docinfo-content"> </colgroup> <tbody valign="top">
<tr>
<th class="docinfo-name">Copyright:</th>
<td>Copyright © Andrii Sydorchuk 2010-2012.</td>
@@ -576,10 +436,7 @@
<tr class="field">
<th class="docinfo-name">License:</th>
<td class="field-body">Distributed under the Boost Software
-License, Version 1.0. (See accompanying file <tt class="literal"><span
- class="pre">LICENSE_1_0.txt</span></tt> or copy at <a
- class="reference" target="_top"
- href="http://www.boost.org/LICENSE_1_0.txt">
+License, Version 1.0. (See accompanying file <tt class="literal"><span class="pre">LICENSE_1_0.txt</span></tt> or copy at <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
http://www.boost.org/LICENSE_1_0.txt>)</td>
</tr>
</tbody>
@@ -588,5 +445,5 @@
</tr>
</tbody>
</table>
-</body>
-</html>
+
+</body></html>
\ No newline at end of file
Modified: branches/release/libs/polygon/doc/voronoi_builder.htm
==============================================================================
--- branches/release/libs/polygon/doc/voronoi_builder.htm Wed Oct 9 14:26:48 2013 (r86219)
+++ branches/release/libs/polygon/doc/voronoi_builder.htm 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013) (r86220)
@@ -1,22 +1,15 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
+<html><head>
+
+
+
<meta http-equiv="Content-Language" content="en-us">
- <meta http-equiv="Content-Type"
- content="text/html; charset=windows-1252">
- <title>Voronoi Builder</title>
-</head>
-<body>
-<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0"
- cellpadding="0" cellspacing="0">
+ <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Voronoi Builder</title></head><body>
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
- <td style="background-color: rgb(238, 238, 238);" nowrap="1"
- valign="top">
- <div style="padding: 5px;" align="center"> <img
- src="images/boost.png" border="0" height="86" width="277"><a
- title="www.boost.org home page" tabindex="2"
- style="border: medium none ;" href="http://www.boost.org/"> </a></div>
+ <td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center"> <img src="images/boost.png" border="0" height="86" width="277"><a title="www.boost.org home page" tabindex="2" style="border: medium none ;" href="http://www.boost.org/"> </a></div>
<div style="margin: 5px;">
<h3 class="navbar">Contents</h3>
<ul>
@@ -70,20 +63,14 @@
</ul>
</div>
<h3 class="navbar">Polygon Sponsor</h3>
- <div style="padding: 5px;" align="center"> <img
- src="images/intlogo.gif" border="0" height="51" width="127"><a
- title="www.adobe.com home page" tabindex="2"
- style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
+ <div style="padding: 5px;" align="center"> <img src="images/intlogo.gif" border="0" height="51" width="127"><a title="www.adobe.com home page" tabindex="2" style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
</td>
- <td
- style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
- valign="top" width="100%"><!-- End Header --> <br>
+ <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%"><!-- End Header --> <br>
<h1>Voronoi Builder </h1>
The Voronoi builder is the event generator structure, that implements
the <a href="http://en.wikipedia.org/wiki/Sweep_line_algorithm">sweepline
algorithm</a>,
-scanning 2D space and spawning the two types of events: <a
- href="http://www.ams.org/samplings/feature-column/fcarc-voronoi">site
+scanning 2D space and spawning the two types of events: <a href="http://www.ams.org/samplings/feature-column/fcarc-voronoi">site
events and circle events</a>. Each event is reported to the output data
structure builder.
The structure shares Voronoi name, as the events generated by it
@@ -112,35 +99,28 @@
the Boost.Polygon library:<br>
<br>
<span style="font-family: Courier New,Courier,monospace;">#include
-<voronoi_builder.hpp></span><br
- style="font-family: Courier New,Courier,monospace;">
+<voronoi_builder.hpp></span><br style="font-family: Courier New,Courier,monospace;">
<span style="font-family: Courier New,Courier,monospace;">#include
<voronoi_diagram.hpp></span><br>
<h2>Declaration</h2>
Header: boost/polygon/voronoi_builder.hpp<br>
<br>
- <font face="Courier New"> <span
- style="font-family: 'Courier New',Courier,monospace;">template
-<typename T,</span><br
- style="font-family: 'Courier New',Courier,monospace;">
+ <font face="Courier New"> <span style="font-family: 'Courier New',Courier,monospace;">template
+<typename T,</span><br style="font-family: 'Courier New',Courier,monospace;">
<span style="font-family: 'Courier New',Courier,monospace;">
-typename CTT = detail::voronoi_ctype_traits<T>,</span><br
- style="font-family: 'Courier New',Courier,monospace;">
+typename CTT = detail::voronoi_ctype_traits<T>,</span><br style="font-family: 'Courier New',Courier,monospace;">
<span style="font-family: 'Courier New',Courier,monospace;">
-typename VP = detail::voronoi_predicates<CTT> ></span><br
- style="font-family: 'Courier New',Courier,monospace;">
+typename VP = detail::voronoi_predicates<CTT> ></span><br style="font-family: 'Courier New',Courier,monospace;">
<span style="font-family: 'Courier New',Courier,monospace;">class
voronoi_builder;</span><br>
<br>
<span style="font-family: 'Courier New',Courier,monospace;">T</span></font>
- specifies the coordinate type of the input geometries (points and
segments).<br>
- <font face="Courier New"> <span
- style="font-family: 'Courier New',Courier,monospace;">CTT</span></font>
+ <font face="Courier New"> <span style="font-family: 'Courier New',Courier,monospace;">CTT</span></font>
- defines the input/output coordinate type traits used by the Voronoi
predicates (VP).<br>
- <font face="Courier New"> <span
- style="font-family: 'Courier New',Courier,monospace;">VP</span></font>
+ <font face="Courier New"> <span style="font-family: 'Courier New',Courier,monospace;">VP</span></font>
- the predicate kernel, that contains robust and
efficient predicates and functors.<br>
The Voronoi builder data structure is ready to use from the box with
@@ -152,25 +132,19 @@
defined by the coordinate type traits satisfy the requirements
explained at the end of this page. In case
those
-requirements are not satisfied,<font face="Courier New"><span
- style="font-family: 'Courier New',Courier,monospace;"></span></font>
+requirements are not satisfied,<font face="Courier New"><span style="font-family: 'Courier New',Courier,monospace;"></span></font>
the proper predicate kernel
-implementation is required.<span
- style="font-family: Courier New,Courier,monospace;"></span><br>
+implementation is required.<span style="font-family: Courier New,Courier,monospace;"></span><br>
<h2>Member Functions</h2>
- <table style="text-align: left; width: 100%;" border="1"
- cellpadding="2" cellspacing="2">
+ <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
- <td style="font-family: 'Courier New',Courier,monospace;"><span
- style="font-weight: bold;">voronoi_builder</span>()</td>
+ <td style="font-family: 'Courier New',Courier,monospace;"><span style="font-weight: bold;">voronoi_builder</span>()</td>
<td width="693">Default
constructor.</td>
</tr>
<tr>
- <td><span
- style="font-family: Courier New,Courier,monospace;">size_t <span
- style="font-weight: bold;">insert_point</span>(const int_type& x,<br>
+ <td><span style="font-family: Courier New,Courier,monospace;">size_t <span style="font-weight: bold;">insert_point</span>(const int_type& x,<br>
const int_type& y)</span> </td>
<td>Inserts a point object with
@@ -178,9 +152,7 @@
Returns index of the inserted point. </td>
</tr>
<tr>
- <td><span
- style="font-family: Courier New,Courier,monospace;">size_t <span
- style="font-weight: bold;">insert_segment</span>(const int_type&
+ <td><span style="font-family: Courier New,Courier,monospace;">size_t <span style="font-weight: bold;">insert_segment</span>(const int_type&
x1,<br>
const int_type& y1,<br>
@@ -201,7 +173,9 @@
algorithm over the set of inserted geometries and generates site and
circle events to the OUTPUT data structure. It's the responsibility of
the
-output data structure to process them. </td>
+output data structure to process them.<br>
+Complexity: O(N * log N), where N is the total number of input points and segments.<br>
+ </td>
</tr>
<tr>
<td style="font-family: 'Courier New',Courier,monospace;">void
@@ -216,8 +190,7 @@
<p>The library provides the default coordinate type traits
specialization for the
32-bit signed integer type:</p>
- <font style="font-family: 'Courier New',Courier,monospace;"
- face="Courier New">
+ <font style="font-family: 'Courier New',Courier,monospace;" face="Courier New">
<p>template <typename T><br>
struct voronoi_ctype_traits;<br>
<br>
@@ -244,33 +217,28 @@
of traits (the assumption is made that input geometries have
X-bit signed integer coordinate type):<br>
<br>
- <table style="text-align: left; width: 100%;" border="1"
- cellpadding="2" cellspacing="2">
+ <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
- <td
- style="font-family: 'Courier New',Courier,monospace; font-weight: bold;">int_type
+ <td style="font-family: 'Courier New',Courier,monospace; font-weight: bold;">int_type
</td>
<td style="vertical-align: top;">At least X-bit signed
integer type. </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">int_x2_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">int_x2_type
</td>
<td style="vertical-align: top;">At least 2X-bit signed
integer type. </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">uint_x2_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">uint_x2_type
</td>
<td style="vertical-align: top;">At least 2X-bit unsigned
integer type. </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">big_int_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">big_int_type
</td>
<td style="vertical-align: top;">At least 8X-bit signed
integer type if input dataset contains only points.<br>
@@ -278,40 +246,35 @@
segments. </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">fpt_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">fpt_type
</td>
<td style="vertical-align: top;">IEEE-754 floating point
type, with mantissa at least (X+16) bits and exponent able to handle
32X-bit unsigned integer type. </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">efpt_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">efpt_type
</td>
<td style="vertical-align: top;">IEEE-754 floating point
type, with mantissa at least (X+16) bits and exponent able to handle
64X-bit unsigned integer type. </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">ulp_cmp_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">ulp_cmp_type
</td>
<td style="vertical-align: top;">Ulp comparison structure,
that checks if two fpt_type values are within the given ulp range
(relative error range). </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">to_fpt_converter_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">to_fpt_converter_type
</td>
<td style="vertical-align: top;">Type converter structure,
that converts any of the integer types above plus efpt_type to the
fpt_type using operator(). </td>
</tr>
<tr>
- <td
- style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">to_efpt_converter_type
+ <td style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-weight: bold;">to_efpt_converter_type
</td>
<td style="vertical-align: top;">Type converter structure,
that converts any of the integer types above to the efpt_type using
@@ -346,12 +309,9 @@
</tr>
<tr>
<td style="background-color: rgb(238, 238, 238);" nowrap="1"> </td>
- <td
- style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
- valign="top" width="100%">
+ <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
<table class="docinfo" id="table2" frame="void" rules="none">
- <colgroup> <col class="docinfo-name"><col
- class="docinfo-content"> </colgroup> <tbody valign="top">
+ <colgroup> <col class="docinfo-name"><col class="docinfo-content"> </colgroup> <tbody valign="top">
<tr>
<th class="docinfo-name">Copyright:</th>
<td>Copyright © Andrii Sydorchuk 2010-2013.</td>
@@ -359,10 +319,7 @@
<tr class="field">
<th class="docinfo-name">License:</th>
<td class="field-body">Distributed under the Boost Software
-License, Version 1.0. (See accompanying file <tt class="literal"><span
- class="pre">LICENSE_1_0.txt</span></tt> or copy at <a
- class="reference" target="_top"
- href="http://www.boost.org/LICENSE_1_0.txt">
+License, Version 1.0. (See accompanying file <tt class="literal"><span class="pre">LICENSE_1_0.txt</span></tt> or copy at <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
http://www.boost.org/LICENSE_1_0.txt>)</td>
</tr>
</tbody>
@@ -371,5 +328,5 @@
</tr>
</tbody>
</table>
-</body>
-</html>
+
+</body></html>
\ No newline at end of file
Modified: branches/release/libs/polygon/doc/voronoi_main.htm
==============================================================================
--- branches/release/libs/polygon/doc/voronoi_main.htm Wed Oct 9 14:26:48 2013 (r86219)
+++ branches/release/libs/polygon/doc/voronoi_main.htm 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013) (r86220)
@@ -1,26 +1,21 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
+<html><head>
+
+
+
+
<meta http-equiv="Content-Language" content="en-us">
- <meta http-equiv="Content-Type"
- content="text/html; charset=windows-1252">
- <title>Voronoi Main</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Voronoi Main</title>
+
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
-</head>
-<body>
-<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0"
- cellpadding="0" cellspacing="0">
+ <meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>
+<table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
- <td style="background-color: rgb(238, 238, 238);" nowrap="1"
- valign="top">
- <div style="padding: 5px;" align="center"> <img
- src="images/boost.png" border="0" height="86" width="277"><a
- title="www.boost.org home page" tabindex="2"
- style="border: medium none ;" href="http://www.boost.org/"> </a></div>
+ <td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
+ <div style="padding: 5px;" align="center"> <img src="images/boost.png" border="0" height="86" width="277"><a title="www.boost.org home page" tabindex="2" style="border: medium none ;" href="http://www.boost.org/"> </a></div>
<div style="margin: 5px;">
<h3 class="navbar">Contents</h3>
<ul>
@@ -74,17 +69,11 @@
</ul>
</div>
<h3 class="navbar">Polygon Sponsor</h3>
- <div style="padding: 5px;" align="center"> <img
- src="images/intlogo.gif" border="0" height="51" width="127"><a
- title="www.adobe.com home page" tabindex="2"
- style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
+ <div style="padding: 5px;" align="center"> <img src="images/intlogo.gif" border="0" height="51" width="127"><a title="www.adobe.com home page" tabindex="2" style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
</td>
- <td
- style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
- valign="top" width="100%"><!-- End Header --> <br>
+ <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%"><!-- End Header --> <br>
<h1>THE BOOST.POLYGON VORONOI LIBRARY </h1>
- <img style="width: 900px; height: 300px;" alt=""
- src="images/voronoi3.png"><br>
+ <img style="width: 900px; height: 300px;" alt="" src="images/voronoi3.png"><br>
The Voronoi extension of the Boost.Polygon library provides
functionality to construct a <a href="voronoi_diagram.htm">Voronoi
diagram</a>
@@ -101,12 +90,11 @@
While the first restriction is permanent (it
allows to give the exact warranties about the output precision and
algorithm execution flow),
-the second one may be resolved using the Boost.Polygon <a
- href="gtl_segment_concept.htm">segment utils</a>.
+the second one may be resolved using the Boost.Polygon segment utils.
The strong sides of the
library and main benefits comparing to the other implementations are
-discussed in the following paragraphs.<span style="font-weight: bold;"></span><br>
- <h2>Fully Functional with Segments</h2>
+discussed in the following paragraphs.<br>
+<h2>Fully Functional with Segments</h2>
There are just a few implementations of the Voronoi diagram
construction
algorithm that can
@@ -154,8 +142,7 @@
geometries can be increased simply by using a floating-point type with
the larger mantissa. The practical point of this statements is
explained in the following table:<br>
- <table style="text-align: left; width: 100%;" border="1"
- cellpadding="2" cellspacing="2">
+ <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="vertical-align: top;">Output Coordinate Type </td>
@@ -196,10 +183,8 @@
</tbody>
</table>
Detailed description of the absolute and relative errors evaluation can
-be found in the article: <a
- href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html">"What
-Every Computer Scientist Should Know About Floating-Point Arithmetic"</a><a
- href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html"></a>.<br>
+be found in the article: <a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html">"What
+Every Computer Scientist Should Know About Floating-Point Arithmetic"</a>.<br>
<br>
During the finalization step the implementation unites the Voronoi
vertices
@@ -218,14 +203,12 @@
micrometres or the size of a bacteria) will be considered
equal and united.<br>
<h2>Simple Interface </h2>
-The boost/polygon/<a
- href="../../../boost/polygon/voronoi.hpp">voronoi.hpp</a>
+The boost/polygon/<a href="../../../boost/polygon/voronoi.hpp">voronoi.hpp</a>
library header defines the following static functions to integrate the
Voronoi library
functionality with the Boost.Polygon interfaces:<br>
<br>
- <table style="text-align: left; width: 100%;" border="1"
- cellpadding="2" cellspacing="2">
+ <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td style="font-family: Courier New,Courier,monospace;">template
@@ -276,25 +259,27 @@
<td style="font-family: Courier New,Courier,monospace;">template
<typename PointIterator, typename VD><br>
void <span style="font-weight: bold;">construct_voronoi</span>(PointIterator
-first,<br>
-
+first,<br>
PointIterator last,<br>
VD *vd) </td>
<td>Constructs the Voronoi diagram of a set of points.<br>
-Corresponding point type should model the point concept. </td>
+Corresponding point type should model the point concept.<br>
+Complexity: O(N * log N), memory usage: O(N), where N is the total number of input points.<br>
+ </td>
</tr>
<tr>
<td style="font-family: Courier New,Courier,monospace;">template
<typename SegmentIterator, typename VD><br>
void <span style="font-weight: bold;">construct_voronoi</span>(SegmentIterator
-first,<br>
-
+first,<br>
SegmentIterator last,<br>
VD *vd) </td>
<td>Constructs the Voronoi diagram of a set of segments.<br>
-Corresponding segment type should model the segment concept. </td>
+Corresponding segment type should model the segment concept.<br>
+Complexity: O(N * log N), memory usage: O(N), where N is the total number of input segments.<br>
+ </td>
</tr>
<tr>
<td style="font-family: Courier New,Courier,monospace;">template
@@ -303,8 +288,7 @@
SegmentIterator,<br>
typename VD><br>
void <span style="font-weight: bold;">construct_voronoi</span>(PointIterator
-p_first,<br>
-
+p_first,<br>
PointIterator p_last,<br>
SegmentIterator s_first,<br>
@@ -315,7 +299,9 @@
<td>Constructs the Voronoi
diagram of a set of points and segments.<br>
Corresponding point type should model the point concept.<br>
-Corresponding segment type should model the segment concept. </td>
+Corresponding segment type should model the segment concept.<br>
+Complexity: O(N* log N), memory usage: O(N), where N is the total number of input points and segments.<br>
+</td>
</tr>
</tbody>
</table>
@@ -336,14 +322,12 @@
output geometries and efficiently traverse
the
Voronoi graph.
-More details on those topics are covered in the <a
- href="voronoi_basic_tutorial.htm">basic Voronoi tutorial</a>. Advanced
+More details on those topics are covered in the basic Voronoi tutorial. Advanced
usage of the library with the configuration of the coordinate
types is explained in the <a href="voronoi_advanced_tutorial.htm">advanced
Voronoi tutorial</a>.
The library allows users to implement their own Voronoi diagram /
-Delaunay triangulation construction routines based on the <a
- href="voronoi_builder.htm">Voronoi builder API</a>.<br>
+Delaunay triangulation construction routines based on the Voronoi builder API.<br>
<h2>No Third Party Dependencies </h2>
The Voronoi extension of the Boost.Polygon library doesn't depend on
any 3rd party code
@@ -354,12 +338,10 @@
part of the implementation. The library is fast to compile (3 public
and 4 private heades), has strong cohesion between its components and
is clearly modularized from the rest of the Boost.Polygon library, with
-the optional integration through the <a
- href="../../../boost/polygon/voronoi.hpp">voronoi.hpp</a> header.<br>
+the optional integration through the voronoi.hpp header.<br>
<h2>Extensible for the User Provided Coordinate Types</h2>
The implementation is coordinate type agnostic. As long
-as the user provided types satisfy the set of the requirements of the <a
- href="voronoi_builder.htm">Voronoi builder</a> coordinate type traits,
+as the user provided types satisfy the set of the requirements of the Voronoi builder coordinate type traits,
no additional
changes
are needed
@@ -441,21 +423,15 @@
his/her PC. Upon the community request, more documentation on the
theoretical aspects of the implementation will be published.
The
-authors would like to acknowledge the Steven Fortune's article <span
- style="font-family: Arial,Helvetica,sans-serif;"><span
- style="font-weight: bold;"></span></span>"<a
- href="http://dl.acm.org/citation.cfm?id=10549">A Sweepline algorithm
+authors would like to acknowledge the Steven Fortune's article <span style="font-family: Arial,Helvetica,sans-serif;"><span style="font-weight: bold;"></span></span>"<a href="http://dl.acm.org/citation.cfm?id=10549">A Sweepline algorithm
for Voronoi diagrams</a>", that covers fundamental ideas of the
current implementation. </td>
</tr>
<tr>
<td style="background-color: rgb(238, 238, 238);" nowrap="1"> </td>
- <td
- style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
- valign="top" width="100%">
+ <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
<table class="docinfo" id="table2" frame="void" rules="none">
- <colgroup> <col class="docinfo-name"><col
- class="docinfo-content"> </colgroup> <tbody valign="top">
+ <colgroup> <col class="docinfo-name"><col class="docinfo-content"> </colgroup> <tbody valign="top">
<tr>
<th class="docinfo-name">Copyright:</th>
<td>Copyright © Andrii Sydorchuk 2010-2013.</td>
@@ -463,10 +439,7 @@
<tr class="field">
<th class="docinfo-name">License:</th>
<td class="field-body">Distributed under the Boost Software
-License, Version 1.0. (See accompanying file <tt class="literal"><span
- class="pre">LICENSE_1_0.txt</span></tt> or copy at <a
- class="reference" target="_top"
- href="http://www.boost.org/LICENSE_1_0.txt">
+License, Version 1.0. (See accompanying file <tt class="literal"><span class="pre">LICENSE_1_0.txt</span></tt> or copy at <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
http://www.boost.org/LICENSE_1_0.txt>)</td>
</tr>
</tbody>
@@ -475,5 +448,5 @@
</tr>
</tbody>
</table>
-</body>
-</html>
+
+</body></html>
\ No newline at end of file
Modified: branches/release/libs/polygon/test/Jamfile.v2
==============================================================================
--- branches/release/libs/polygon/test/Jamfile.v2 Wed Oct 9 14:26:48 2013 (r86219)
+++ branches/release/libs/polygon/test/Jamfile.v2 2013-10-09 15:55:41 EDT (Wed, 09 Oct 2013) (r86220)
@@ -24,11 +24,6 @@
[ run gtl_boost_unit_test.cpp ]
;
-test-suite skeleton-unit
- :
- # [ run skeleton_predicates_test.cpp ]
- ;
-
test-suite voronoi-unit
:
[ run voronoi_builder_test.cpp ]
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