8590a139f2
Fix signatures of two voronoi vertex methods: - const point_type& x() const => const coordinate_type& x() const - const point_type& y() const => const coordinate_type& y() const
1004 lines
43 KiB
HTML
1004 lines
43 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Language" content="en-us">
|
|
<meta http-equiv="Content-Type"
|
|
content="text/html; charset=windows-1252">
|
|
<title>Voronoi Diagram</title>
|
|
<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">
|
|
<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>
|
|
<div style="margin: 5px;">
|
|
<h3 class="navbar">Contents</h3>
|
|
<ul>
|
|
<li><a href="index.htm">Boost.Polygon Main Page</a></li>
|
|
<li><a href="gtl_design_overview.htm">Design Overview</a></li>
|
|
<li><a href="gtl_isotropy.htm">Isotropy</a></li>
|
|
<li><a href="gtl_coordinate_concept.htm">Coordinate Concept</a></li>
|
|
<li><a href="gtl_interval_concept.htm">Interval Concept</a></li>
|
|
<li><a href="gtl_point_concept.htm">Point Concept</a></li>
|
|
<li><a href="gtl_segment_concept.htm">Segment Concept</a></li>
|
|
<li><a href="gtl_rectangle_concept.htm">Rectangle Concept</a></li>
|
|
<li><a href="gtl_polygon_90_concept.htm">Polygon 90 Concept</a></li>
|
|
<li><a href="gtl_polygon_90_with_holes_concept.htm">Polygon 90
|
|
With Holes Concept</a></li>
|
|
<li><a href="gtl_polygon_45_concept.htm">Polygon 45 Concept</a></li>
|
|
<li><a href="gtl_polygon_45_with_holes_concept.htm">Polygon 45
|
|
With Holes Concept</a></li>
|
|
<li><a href="gtl_polygon_concept.htm">Polygon Concept</a></li>
|
|
<li><a href="gtl_polygon_with_holes_concept.htm">Polygon With
|
|
Holes Concept</a></li>
|
|
<li><a href="gtl_polygon_90_set_concept.htm">Polygon 90 Set
|
|
Concept</a></li>
|
|
<li><a href="gtl_polygon_45_set_concept.htm">Polygon 45 Set
|
|
Concept</a></li>
|
|
<li><a href="gtl_polygon_set_concept.htm">Polygon Set Concept</a></li>
|
|
<li><a href="gtl_connectivity_extraction_90.htm">Connectivity
|
|
Extraction 90</a></li>
|
|
<li><a href="gtl_connectivity_extraction_45.htm">Connectivity
|
|
Extraction 45</a></li>
|
|
<li><a href="gtl_connectivity_extraction.htm">Connectivity
|
|
Extraction</a></li>
|
|
<li><a href="gtl_property_merge_90.htm">Property Merge 90</a></li>
|
|
<li><a href="gtl_property_merge_45.htm">Property Merge 45</a></li>
|
|
<li><a href="gtl_property_merge.htm">Property Merge</a></li>
|
|
<li><a href="voronoi_main.htm">Voronoi Main Page </a></li>
|
|
<li><a href="voronoi_benchmark.htm">Voronoi Benchmark</a></li>
|
|
<li><a href="voronoi_builder.htm">Voronoi Builder</a> </li>
|
|
<li>Voronoi Diagram</li>
|
|
</ul>
|
|
<h3 class="navbar">Other Resources</h3>
|
|
<ul>
|
|
<li><a href="GTL_boostcon2009.pdf">GTL Boostcon 2009 Paper</a></li>
|
|
<li><a href="GTL_boostcon_draft03.pdf">GTL Boostcon 2009
|
|
Presentation</a></li>
|
|
<li><a href="analysis.htm">Performance Analysis</a></li>
|
|
<li><a href="gtl_tutorial.htm">Layout Versus Schematic Tutorial</a></li>
|
|
<li><a href="gtl_minkowski_tutorial.htm">Minkowski Sum Tutorial</a></li>
|
|
<li><a href="voronoi_basic_tutorial.htm">Voronoi Basic Tutorial</a></li>
|
|
<li><a href="voronoi_advanced_tutorial.htm">Voronoi Advanced
|
|
Tutorial</a></li>
|
|
</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>
|
|
</td>
|
|
<td
|
|
style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
|
|
valign="top" width="100%"><!-- End Header --> <br>
|
|
<h1>Voronoi Diagram</h1>
|
|
A Voronoi
|
|
diagram is the computational geometry concept that represents partition
|
|
of the given space onto regions, with bounds determined by distances to
|
|
a
|
|
specified family of objects. The application area of this concept
|
|
varies <a
|
|
href="http://www.ics.uci.edu/%7Eeppstein/gina/scot.drysdale.html">from
|
|
Archaeology to Zoology</a>. The Boost.Polygon Voronoi extension
|
|
provides
|
|
implementation of
|
|
the Voronoi diagram data structure in the 2D space. The internal
|
|
representation
|
|
consists of the three arrays, that respectively contain: Voronoi cells
|
|
(represent the area around the input sites bounded by the Voronoi
|
|
edges), Voronoi vertices
|
|
(points where three or more Voronoi edges intersect), Voronoi edges
|
|
(one dimensional curves containing points equidistant from the two
|
|
closest input sites). Each of the primitives (cell, vertex, edge)
|
|
contains pointers to the other linked primitives, so that it's always
|
|
possible to efficiently traverse the Voronoi graph. The picture below
|
|
shows
|
|
the Voronoi vertices in red, Voronoi edges in black, input sites that
|
|
correspond to the Voronoi cells in blue. It is considered, that each
|
|
input segment consists of the three sites: segment itself and its
|
|
endpoints. As the result, two additional Voronoi edges are constructed
|
|
per each input segment. This is made to
|
|
simplify the representation of the Voronoi diagram and Voronoi edges in
|
|
particular.<br>
|
|
<br>
|
|
<img src="images/voronoi2.png" alt=""
|
|
style="width: 600px; height: 600px;"><br>
|
|
<h2>Important</h2>
|
|
All
|
|
the Voronoi primitive data structures (edge, vertex, cell) contain
|
|
mutable color member. Color type is equivalent to the std::size_t type,
|
|
except that the upper five bits are reserved for the internal usage.
|
|
That means, that the maximum supported value by the color member is 32
|
|
times less than the one supported by std::size_t.<br>
|
|
<h2>Declaration</h2>
|
|
Header: <a href="../../../boost/polygon/voronoi_diagram.hpp">boost/polygon/voronoi_diagram.hpp</a><br>
|
|
<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">template
|
|
<typename T, typename TRAITS = voronoi_diagram_traits<T> ></span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">class
|
|
voronoi_diagram;<br>
|
|
</span><font face="Courier New"><span
|
|
style="font-family: 'Courier New',Courier,monospace;"><br>
|
|
T</span></font>
|
|
- the coordinate type of the Voronoi vertices.<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">TRAITS</span><font
|
|
face="Courier New"><span
|
|
style="font-family: 'Courier New',Courier,monospace;"></span></font>
|
|
- the Voronoi diagram traits.<br>
|
|
<h2>Member Functions</h2>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>
|
|
<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_diagram</span>() </td>
|
|
<td>Default constructor. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">clear</span>() </td>
|
|
<td>Removes all primitives from the Voronoi diagram. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
cell_container_type& <span style="font-weight: bold;">cells</span>()
|
|
const </td>
|
|
<td>Returns the const
|
|
reference to the cell container. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
vertex_container_type& <span style="font-weight: bold;">vertices</span>()
|
|
const </td>
|
|
<td>Returns the const
|
|
reference to the vertex container. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
edge_container_type& <span style="font-weight: bold;">edges</span>()
|
|
const </td>
|
|
<td>Returns the const
|
|
reference to the edge container. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">size_t
|
|
<span style="font-weight: bold;">num_cells</span>() const </td>
|
|
<td>Returns the number of the Voronoi
|
|
cells in the Voronoi diagram. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">size_t
|
|
<span style="font-weight: bold;">num_edges</span>() const </td>
|
|
<td>Returns the number of the
|
|
Voronoi edges (half-edges) in the Voronoi diagram. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">size_t
|
|
<span style="font-weight: bold;">num_vertices</span>()
|
|
const </td>
|
|
<td>Returns the number of the
|
|
Voronoi vertices in the Voronoi diagram. </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2>Member Types</h2>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td style="font-weight: bold;">coordinate_type </td>
|
|
<td>Coordinate type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">cell_type </td>
|
|
<td>Voronoi cell. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">vertex_type </td>
|
|
<td>Voronoi vertex. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">edge_type </td>
|
|
<td>Voronoi edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">cell_container_type </td>
|
|
<td>Container of the Voronoi cells. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">const_cell_iterator </td>
|
|
<td>Const cell container iterator. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">vertex_container_type </td>
|
|
<td>Container of the Voronoi vertices. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">const_vertex_iterator </td>
|
|
<td>Const vertex container iterator. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">edge_container_type </td>
|
|
<td>Container of the Voronoi edges. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">const_edge_iterator </td>
|
|
<td>Const edge container iterator. </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h1>Voronoi Geometry Type</h1>
|
|
The Voronoi
|
|
diagram data structure doesn't embed coordinates of the input
|
|
geometries.
|
|
Instead it links with those via source index and source category
|
|
methods
|
|
of the Voronoi cell primitive. Source index is incrementally given
|
|
(starting from zero) to each input site inserted into the <a
|
|
href="voronoi_builder.htm">Voronoi
|
|
builder</a>.
|
|
Considering the fact, that each input segment is splitted onto three
|
|
separate sites with the same index, we distinguish between those using
|
|
source category. For more examples check the <a
|
|
href="voronoi_basic_tutorial.htm">Voronoi basic tutorial</a>.<br>
|
|
<h2>GeometryCategory </h2>
|
|
Defines geometric category of the input object.<br>
|
|
Header: <a href="../../../boost/polygon/voronoi_geometry_type.hpp">boost/polygon/</a><a
|
|
href="../../../boost/polygon/voronoi_geometry_type.hpp">voronoi_geometry_type.hpp</a><br>
|
|
<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">enum
|
|
GeometryCategory {</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
GEOMETRY_CATEGORY_POINT = 0x0,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
GEOMETRY_CATEGORY_SEGMENT = 0x1</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">};</span><br>
|
|
<h2>SourceCategory</h2>
|
|
Defines semantic category of the input site.<br>
|
|
Header: <a href="../../../boost/polygon/voronoi_geometry_type.hpp">boost/polygon/</a><a
|
|
href="../../../boost/polygon/voronoi_geometry_type.hpp">voronoi_geometry_type.hpp</a><br>
|
|
<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">enum
|
|
SourceCategory {</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
// Point subtypes.</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_SINGLE_POINT = 0x0,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_SEGMENT_START_POINT = 0x1,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_SEGMENT_END_POINT = 0x2,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<br style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
// Segment subtypes.</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_INITIAL_SEGMENT = 0x8,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_REVERSE_SEGMENT = 0x9,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<br style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_GEOMETRY_SHIFT = 0x3,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SOURCE_CATEGORY_BITMASK = 0x1F</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<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">
|
|
<tbody>
|
|
<tr>
|
|
<td style="vertical-align: top;"><span
|
|
style="font-family: Courier New,Courier,monospace;">bool <span
|
|
style="font-weight: bold;">belongs</span>(</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
SourceCategory source_category,</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
GeometryCategory geometry_category)</span> </td>
|
|
<td style="vertical-align: middle;">Returns true if the
|
|
given source
|
|
category belongs to the given geometry category.<br>
|
|
Returns false otherwise. </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h1>Voronoi Edge</h1>
|
|
A Voronoi edge is a one-dimenstion curve, that contains points
|
|
equidistant from the two closest input geometries. The Voronoi edge
|
|
data structure is implemented as the enhanced classical <a
|
|
href="http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml">half-edge</a>
|
|
data structure. On the image below, the Voronoi edges are drawn as
|
|
directed linear (e.g. AE) or curved (e.g. DE) dashed lines of either
|
|
green (e.g. AE) or black (e.g DE) color. The green edges are considered
|
|
to be secondary, as they are generated by an input segment and its
|
|
endpoint (e.g. edge EA, made by segment MN and its endpoint M). All the
|
|
other edges are considered to be primary (e.g. curved edge CD, made by
|
|
segment KL and point N). Apart from that, each edge can be finite (e.g.
|
|
ED) or infinite (e.g. edge starting at point B and going in the east
|
|
direction).<br>
|
|
<img src="images/voronoi1.png" alt=""
|
|
style="width: 600px; height: 600px;"><br>
|
|
Each Voronoi edge (consider directed edge BA) provides efficient access
|
|
to the following primitives:<br>
|
|
<ul>
|
|
<li>Cell the edge belongs to (Voronoi cell P, with source
|
|
segment MN)</li>
|
|
<li>Start point of the edge (Voronoi vertex B, that is
|
|
equidistant from the following input sites: O, L, MN)</li>
|
|
<li>End point of the edge (Voronoi vertex A, that is
|
|
equidistant from the following input sites: O, M, MN)</li>
|
|
<li>Twin edge (Voronoi edge AB)</li>
|
|
<li>CCW next edge inside the Voronoi cell, that the edge
|
|
belongs to (green Voronoi edge AE)</li>
|
|
<li>CCW previous edge inside the Voronoi cell, that the edge
|
|
belongs to (Voronoi edge CB)</li>
|
|
<li>CCW rotated next edge around the start point of the edge
|
|
(Voronoi edge BC)</li>
|
|
<li>CCW rotated previous edge around the start point of the
|
|
edge (infinite Voronoi edge starting at the Voronoi vertex B and going
|
|
in the east direction) </li>
|
|
</ul>
|
|
<h2>Declaration</h2>
|
|
Header: <a href="../../../boost/polygon/voronoi_diagram.hpp">boost/polygon/voronoi_diagram.hpp</a><br>
|
|
<br>
|
|
<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;">class
|
|
voronoi_edge;<br>
|
|
<br>
|
|
T</span> - coordinate type.<br>
|
|
<h2>Member Functions</h2>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td><span
|
|
style="font-family: Courier New,Courier,monospace;"><span
|
|
style="font-weight: bold;">voronoi_edge</span>(bool is_linear, bool
|
|
is_primary)</span> </td>
|
|
<td>Voronoi edge constructor. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_cell_type*
|
|
<span style="font-weight: bold;">cell</span>() </td>
|
|
<td>Returns the pointer to the
|
|
Voronoi <span style="font-family: Courier New,Courier,monospace;"></span>cell
|
|
that the edge belongs to. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_cell_type* <span style="font-weight: bold;">cell</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the Voronoi cell that the edge belongs to. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">cell</span>(voronoi_cell_type*
|
|
c) </td>
|
|
<td>Sets the Voronoi cell
|
|
pointer to the cell the current edge belongs to. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_vertex_type*
|
|
<span style="font-weight: bold;">vertex0</span>() </td>
|
|
<td>Returns the pointer to the
|
|
start point of the edge.<br>
|
|
If the edge is infinite in that direction returns NULL. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_vertex_type* <span style="font-weight: bold;">vertex0</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the start point vertex of the edge.<br>
|
|
If the edge is infinite in that direction returns NULL. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">vertex0</span>(voronoi_vertex_type*
|
|
v) </td>
|
|
<td>Sets the start point
|
|
pointer of the edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_vertex_type*
|
|
<span style="font-weight: bold;">vertex1</span>() </td>
|
|
<td>Returns the pointer to the
|
|
end point of the edge.<br>
|
|
If the edge is infinite in that direction returns NULL. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_vertex_type* <span style="font-weight: bold;">vertex1</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the end point of the edge.<br>
|
|
If the edge is infinite in that direction returns NULL. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">twin</span>() </td>
|
|
<td>Returns the pointer to the
|
|
twin edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">twin</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the twin edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">twin</span>(voronoi_edge_type*
|
|
e) </td>
|
|
<td>Sets the twin edge pointer
|
|
of the edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">next</span>() </td>
|
|
<td>Returns the pointer to the
|
|
CCW next edge within the corresponding Voronoi cell.<br>
|
|
Edges not necessarily share a common vertex (e.g. infinite edges). </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">next</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the CCW next edge within the corresponding Voronoi cell.<br>
|
|
Edges not necessarily share a common vertex (e.g. infinite edges). </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">next</span>(voronoi_edge_type*
|
|
e) </td>
|
|
<td>Sets the CCW next edge
|
|
pointer of the edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">prev</span>() </td>
|
|
<td>Returns the pointer to the
|
|
CCW prev edge within the corresponding Voronoi cell.<br>
|
|
Edges not necessarily share a common vertex (e.g. infinite edges). </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">prev</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the CCW prev edge within the corresponding Voronoi cell.<br>
|
|
Edges not necessarily share a common vertex (e.g. infinite edges). </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">prev</span>(voronoi_edge_type*
|
|
e) </td>
|
|
<td>Sets the CCW prev edge
|
|
pointer of the edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">color_type
|
|
<span style="font-weight: bold;">color</span>() const </td>
|
|
<td>Returns the color value. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">color</span>(color_type
|
|
color) const </td>
|
|
<td>Sets the color of
|
|
the edge.<br>
|
|
Allows to associate the user provided data with the primitive. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">rot_next</span>() </td>
|
|
<td>Returns the pointer to the
|
|
CCW next edge rotated around the edge start point.<br>
|
|
Works for infinite edges as well. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">rot_next</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the CCW next edge rotated around the edge start point.<br>
|
|
Works for infinite edges as well.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">rot_prev</span>() </td>
|
|
<td>Returns the pointer to the
|
|
CCW prev edge rotated around the edge start point.<br>
|
|
Works for infinite edges as well. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">rot_prev</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the CCW prev edge rotated around the edge start point.<br>
|
|
Works for infinite edges as well.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_finite</span>() const </td>
|
|
<td>Returns true if the both
|
|
end points of the edge are finite, else false. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_infinite</span>() const</td>
|
|
<td>Returns true if one of the
|
|
end points of the edge is infinite, else false.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_linear</span>() const </td>
|
|
<td>Returns true if the edge
|
|
is linear (segment, ray, line), else false. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_curved</span>() const </td>
|
|
<td>Returns true if the edge
|
|
is curved (parabolic arc), else false. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_primary</span>() const </td>
|
|
<td>Returns false if the edge
|
|
goes through the endpoint of the segment site, else true. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_secondary</span>() const</td>
|
|
<td>Returns true if the edge
|
|
goes through the endpoint of the segment site, else false.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>All
|
|
the above methods have O(1) complexity. The size of
|
|
the Voronoi edge structure is equal to: 5 * sizeof(void *) +
|
|
sizeof(size_t).<span style="font-family: Courier New,Courier,monospace;"></span><br>
|
|
<h2>Member Types</h2>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td style="font-weight: bold;">coordinate_type </td>
|
|
<td>Coordinate type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">voronoi_cell_type </td>
|
|
<td>Voronoi cell type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">voronoi_vertex_type </td>
|
|
<td>Voronoi vertex type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">voronoi_edge_type </td>
|
|
<td>Voronoi edge type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top; font-weight: bold;">color_type
|
|
</td>
|
|
<td style="vertical-align: top;">Color type (check the
|
|
Important section). </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h1>Voronoi Cell</h1>
|
|
A Voronoi cell represents a region of the Voronoi diagram bounded by
|
|
the Voronoi edges. On the image below, there are 7 such regions: P, Q,
|
|
R, S, T, U, V. Each Voronoi cell can contain a point (e.g. cells Q, S,
|
|
T, U, V with corresponding input sources N, K, L, O, M respectively) or
|
|
a segment
|
|
(e.g. cells P and R with corresponding input sources MN and KL
|
|
respectively) as its
|
|
source. The Voronoi cell primitive doesn't contain coordinates of the
|
|
source geometry, instead it stores the index and category of the source
|
|
geometry. Source index corresponds to the unique id, issued to each
|
|
input geometry (e.g. incremental counter, used by the Voronoi builder).
|
|
Such an index uniquely identifies any input point (e.g. O), however
|
|
doesn't make any distinction between segment (e.g. MN) and both its end
|
|
points (e.g. M, N). In order to resolve possible ambiguity, the source
|
|
category is used, that specifies the semantic topology of the input
|
|
object (e.g. segment's startpoint, segment's endpoint or segment
|
|
itself). The Voronoi cell data structure also provides access to a
|
|
random Voronoi edge, located on the boundary of the cell (e.g. edge AE
|
|
for
|
|
the cell P).<br>
|
|
<img style="width: 600px; height: 600px;" alt=""
|
|
src="images/voronoi1.png"><br>
|
|
<h2>Declaration</h2>
|
|
Header: <a href="../../../boost/polygon/voronoi_diagram.hpp">boost/polygon/voronoi_diagram.hpp</a><br>
|
|
<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">template
|
|
<typename T><br>
|
|
class voronoi_cell;<br>
|
|
<br>
|
|
</span><span style="font-family: Courier New,Courier,monospace;">T</span>
|
|
- coordinate type.<br>
|
|
<h2>Member Functions</h2>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td><span
|
|
style="font-family: Courier New,Courier,monospace;"><span
|
|
style="font-weight: bold;">voronoi_cell</span>(source_index_type
|
|
source_index,</span><span
|
|
style="font-family: Courier New,Courier,monospace;"><br>
|
|
|
|
source_category_type source_category)</span> </td>
|
|
<td>Voronoi cell constructor. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">source_index_type
|
|
<span style="font-weight: bold;">source_index</span>()
|
|
const </td>
|
|
<td>Returns input site index among the other sites.<br>
|
|
Both segment and its end points will have the same index. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">source_category_type
|
|
<span style="font-weight: bold;">source_category</span>()
|
|
const </td>
|
|
<td>Returns input site category among the other sites.<br>
|
|
Allows to distinguish between segment site and its endpoints. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">incident_edge</span>() </td>
|
|
<td>Returns the pointer to the
|
|
one of the boundary edges. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">incident_edge</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the one of the boundary edges. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">incident_edge</span>(voronoi_edge_type*
|
|
e) </td>
|
|
<td>Sets the incident boundary
|
|
edge pointer of the cell. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">color_type
|
|
<span style="font-weight: bold;">color</span>() const </td>
|
|
<td>Returns the color associated with the cell.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">color</span>(color_type
|
|
color) const </td>
|
|
<td>Sets the color of
|
|
the cell.<br>
|
|
Allows to associate the user provided data with the primitive. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">contains_point</span>()
|
|
const</td>
|
|
<td>Returns true if the cell
|
|
contains a point site, else false.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">contains_segment</span>()
|
|
const</td>
|
|
<td>Returns true if the cell
|
|
contains a segment site, else false.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">bool
|
|
<span style="font-weight: bold;">is_degenerate</span>()
|
|
const </td>
|
|
<td>Returns true if the cell
|
|
doesn't have an incident edge.<br>
|
|
Can happen if a few input segments share a common endpoint.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>All
|
|
the above methods have O(1) complexity. The size of
|
|
the Voronoi cell structure is equal to: sizeof(void *) + 2 *
|
|
sizeof(size_t).<span style="font-family: Courier New,Courier,monospace;"></span>
|
|
<h2>Member Types</h2>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td style="font-weight: bold;">coordinate_type </td>
|
|
<td>Coordinate type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">source_index_type</td>
|
|
<td>Source index type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top; font-weight: bold;">source_category_type
|
|
</td>
|
|
<td style="vertical-align: top;">Source category type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top; font-weight: bold;">voronoi_edge_type
|
|
</td>
|
|
<td style="vertical-align: top;">Voronoi edge type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">color_type </td>
|
|
<td>Color type (check the Important section). </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2>Miscellaneous</h2>
|
|
The following code snippet effectively traverses the Voronoi edges
|
|
around the
|
|
Voronoi cell:<br>
|
|
<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge<double>* edge = cell->incident_edge();</span><br>
|
|
<span style="font-family: Courier New,Courier,monospace;">do {</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
edge = edge->next();</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
// Do smth. with edge.</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">} while
|
|
(edge != cell->incident_edge());</span><br>
|
|
<h1>Voronoi Vertex</h1>
|
|
A Voronoi vertex represents a point, that is equidistant from the three
|
|
or more input geometries. As a consequence, it corresponds to the point
|
|
of the intersection of the three or more Voronoi edges. On the image
|
|
below, there are 5 such vertices: A, B, C, D, E. The Voronoi vertex
|
|
data structure embeds the coordinates of the underlying point and
|
|
provides access to a random Voronoi edge originating from the vertex
|
|
(e.g. edge
|
|
BC for the vertex B).<br>
|
|
<img style="width: 600px; height: 600px;" alt=""
|
|
src="images/voronoi1.png"><br>
|
|
<h2>Declaration</h2>
|
|
Header: <a href="../../../boost/polygon/voronoi_diagram.hpp">boost/polygon/voronoi_diagram.hpp</a><br>
|
|
<br>
|
|
<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;">class
|
|
voronoi_vertex;<br>
|
|
<br>
|
|
</span><span style="font-family: Courier New,Courier,monospace;">T</span>
|
|
- coordinate type.<br>
|
|
<h2>Member Functions</h2>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td><span
|
|
style="font-family: Courier New,Courier,monospace;"><span
|
|
style="font-weight: bold;">voronoi_vertex</span>(const
|
|
coordinate_type& x,<br>
|
|
|
|
const coordinate_type& y)</span><span
|
|
style="font-family: Courier New,Courier,monospace;"></span> </td>
|
|
<td>Voronoi vertex constructor. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
coordinate_type& <span style="font-weight: bold;">x</span>() const </td>
|
|
<td>Returns the x-coordinate of the point that represents
|
|
the vertex. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
coordinate_type& <span style="font-weight: bold;">y</span>() const</td>
|
|
<td>Returns the y-coordinate of the point that represents
|
|
the vertex. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">voronoi_edge_type*
|
|
<span style="font-weight: bold;">incident_edge</span>() </td>
|
|
<td>Returns the incident edge
|
|
pointer. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge_type* <span style="font-weight: bold;">incident_edge</span>()
|
|
const </td>
|
|
<td>Returns the const pointer
|
|
to the incident edge. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">incident_edge</span>(voronoi_edge_type*
|
|
e) </td>
|
|
<td>Sets the incident edge
|
|
pointer. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">color_type
|
|
<span style="font-weight: bold;">color</span>() const </td>
|
|
<td>Returns the color associated with the vertex.</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-family: Courier New,Courier,monospace;">void
|
|
<span style="font-weight: bold;">color</span>(color_type
|
|
color) const </td>
|
|
<td>Sets the color of
|
|
the vertex.<br>
|
|
Allows to associate the user provided data with the primitive.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>All
|
|
the above methods have O(1) complexity. The size of
|
|
the Voronoi vertex structure is equal to: sizeof(void *) +
|
|
sizeof(size_t) + 2 *
|
|
sizeof(coordinate_type).<span
|
|
style="font-family: Courier New,Courier,monospace;"></span>
|
|
<h2>Member Types</h2>
|
|
<table style="text-align: left; width: 100%;" border="1"
|
|
cellpadding="2" cellspacing="2">
|
|
<tbody>
|
|
<tr>
|
|
<td style="font-weight: bold;">coordinate_type </td>
|
|
<td>Coordainte type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="vertical-align: top; font-weight: bold;">voronoi_edge_type
|
|
</td>
|
|
<td style="vertical-align: top;">Voronoi edge type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td style="font-weight: bold;">color_type </td>
|
|
<td>Color type (check the Important section). </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<h2>Miscellaneous</h2>
|
|
The following code snippet effectively traverses the Voronoi edges
|
|
around the
|
|
Voronoi vertex:<br>
|
|
<br>
|
|
<span style="font-family: Courier New,Courier,monospace;">const
|
|
voronoi_edge<double>* edge = vertex->incident_edge();</span><br>
|
|
<span style="font-family: Courier New,Courier,monospace;">do {</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
edge = edge->next();</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">
|
|
// Do smth. with edge.</span><br
|
|
style="font-family: Courier New,Courier,monospace;">
|
|
<span style="font-family: Courier New,Courier,monospace;">} while
|
|
(edge != vertex->incident_edge()); </span>
|
|
<h1>Voronoi Diagram Traits </h1>
|
|
The Voronoi diagram traits are used to configure the Voronoi primitive
|
|
types and predicates, used by the Voronoi diagram
|
|
data
|
|
structure.<br>
|
|
The implementation includes default traits specialization for the
|
|
double output coordinate type.<br>
|
|
<h2>Declaration</h2>
|
|
Header: <a href="../../../boost/polygon/voronoi_diagram.hpp">boost/polygon/voronoi_diagram.hpp</a><br>
|
|
<br>
|
|
<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;">struct
|
|
voronoi_diagram_traits;<br>
|
|
<br>
|
|
</span><span style="font-family: Courier New,Courier,monospace;">T</span>
|
|
- coordinate type.<br>
|
|
<h2>Member Types</h2>
|
|
<span style="font-family: Courier New,Courier,monospace;"> </span>
|
|
<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;">coordinate_type
|
|
</td>
|
|
<td>Coordinate type
|
|
of the Voronoi diagram primitives. </td>
|
|
</tr>
|
|
<tr>
|
|
<td
|
|
style="font-family: Courier New,Courier,monospace; font-weight: bold;">cell_type
|
|
</td>
|
|
<td>Voronoi cell type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td
|
|
style="font-family: Courier New,Courier,monospace; font-weight: bold;">vertex_type
|
|
</td>
|
|
<td>Voronoi vertex type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td
|
|
style="font-family: Courier New,Courier,monospace; font-weight: bold;">edge_type
|
|
</td>
|
|
<td>Voronoi edge type. </td>
|
|
</tr>
|
|
<tr>
|
|
<td
|
|
style="font-family: Courier New,Courier,monospace; font-weight: bold;">vertex_equality_predicate_type
|
|
</td>
|
|
<td>Predicate that returns
|
|
true if the two points are considered to be equal.<br>
|
|
False otherwise. It is used to unite nearby Voronoi vertices. </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</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%">
|
|
<table class="docinfo" id="table2" frame="void" rules="none">
|
|
<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>
|
|
</tr>
|
|
<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">
|
|
http://www.boost.org/LICENSE_1_0.txt</a>)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</body>
|
|
</html>
|