| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" |
| xmlns:v="urn:schemas-microsoft-com:vml" |
| xmlns:o="urn:schemas-microsoft-com:office:office" |
| xmlns:(null)1="http://www.w3.org/TR/REC-html40" lang="en"> |
| <head> |
| <!-- |
| Copyright 2009-2010 Intel Corporation |
| license banner |
| --> |
| <title>Boost Polygon Library: Isotropy</title> |
| <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1" /> |
| <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> --> |
| </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" href="http://www.boost.org/" |
| tabindex="2" style="border: medium none ;"> </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>Isotropy</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<br /> |
| </a></li> |
| <li><a href="voronoi_benchmark.htm">Voronoi Benchmark</a><br /> |
| </li> |
| <li><a href="voronoi_builder.htm">Voronoi Builder</a></li> |
| <li><a href="voronoi_diagram.htm">Voronoi Diagram</a></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" href="http://www.adobe.com/" |
| tabindex="2" style="border: medium none ;"> </a> </div> |
| </td> |
| <td |
| style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" |
| valign="top" width="100%"> |
| <!-- End Header --><br /> |
| <p> |
| </p> |
| <h1>Isotropy</h1> |
| <p> </p> |
| <p align="left">What is isotropy?</p> |
| <p:colorscheme |
| colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"> |
| </p:colorscheme> |
| <div class="O" style="text-align: center;" v:shape="_x0000_s1026"> |
| <p style="text-align: left;"> <span style="">Isotropy - |
| Function: <i>adjective</i> Etymology: International Scientific |
| Vocabulary<br /> |
| <b>:</b> exhibiting properties (as velocity of light |
| transmission) with the same values when measured along axes in all |
| directions <an <i>isotropic</i> crystal></span></p> |
| </div> |
| <p align="left">In computational geometry things are often |
| symmetric and invariant to direction and orientation. This |
| invariance to direction is called isotropy. In such situations it |
| is convenient to parameterize direction or orientation and write code |
| that is invariant to the direction or orientation in which it is |
| applied. To do this effectively we provide an internally |
| consistent set of isotropic data types to represent program data that |
| describes orientations and directions. These data types are:</p> |
| <ul> |
| <li>direction_1d - has one of the following 2 states: LOW, HIGH |
| </li> |
| <li>orientation_2d - has one of the following 2 states: |
| HORIZONTAL, VERTICAL</li> |
| <li>direction_2d - has one of the following 4 states: WEST, |
| EAST, SOUTH, NORTH</li> |
| <li>orientation_3d - has one of the following 3 states: |
| HORIZONTAL, VERTICAL, PROXIMAL</li> |
| <li>direction_3d - has one of the following 6 states: WEST, |
| EAST, SOUTH, NORTH, DOWN, UP</li> |
| </ul> |
| <p align="left">The isotropic types create a system and interact |
| with each other in various ways, such as casting. Together they |
| create a language for describing isotropic situations |
| programmatically. For instance, to get the positive direction_2d |
| from an orientation_2d you would call a member function of |
| orientation_2d and pass a direction_1d:</p> |
| <p align="left"><font face="Courier New">orientation_2d orient = |
| HORIZONTAL;<br /> |
| direction_2d dir = orient.get_direction(direction_1d(HIGH));<br /> |
| assert(dir == EAST);</font></p> |
| <p align="left">The motivation for providing isotropic data types |
| is to encourage programming at a higher level of abstraction where |
| program behavior is controlled by program data passed into function |
| calls rather than flow control syntax. Isotropic programming |
| style is particularly applicable to working with points, intervals and |
| rectangles. Often times the implementation of such logic is |
| identical when implemented for the x or y coordinates, except that the |
| names of functions and data members are changed in a mechanical way |
| leading to code duplication and bloat that results in copy-paste |
| programming errors and maintenance problems where changes made to a |
| given code block relating to x coordiantes are not duplicated to the |
| code block that refers to y. Isotropy therefore represents an |
| opportunity to refactor and improve the quality of low level geometry |
| code especially in regard to inter-relating coordinates, points, |
| intervals and rectangles.</p> |
| <h2>direction_1d</h2> |
| <p> </p> |
| <p align="left">The direction_1d data type has two possible |
| states. These are the positive and negative directions on a |
| continuum such as the number line. These states can be |
| described by one of several direction_1d_enum values: We make |
| clockwise and counterclockwise winding orientation of polygons a |
| direction 1d value instead of providing a separate winding_orientation |
| data type. This is because winding orientation can be thought of |
| as positive and negative directions in a 1d (although cyclic) |
| space. We assign counterclockwise to be the positive direction of |
| travel in the 1d cyclic space to conform with the mathematical |
| convention frequently described as the "right hand rule" which assigns |
| positive normal value to counterclockwise and negative normal value to |
| clockwise as well as the common convention that counterclockwise |
| polygon winding corresponds to positive polygonal regions where as |
| clockwise polygon winding corresponds to hole (negative) polygonal |
| regions.</p> |
| <p align="left"><font face="Courier New">enum direction_1d_enum |
| {LOW = 0, HIGH = 1,<br /> |
| |
| LEFT = 0, RIGHT = 1,<br /> |
| |
| CLOCKWISE = 0, COUNTERCLOCKWISE = 1,<br /> |
| |
| REVERSE = 0, FORWARD = 1,<br /> |
| |
| NEGATIVE = 0, POSITIVE = 1 };</font></p> |
| <h2>Member Functions</h2> |
| <table id="table1" border="1" width="100%"> |
| <tbody> |
| <tr> |
| <td width="586"><font face="Courier New"><b>direction_1d</b>(direction_1d_enum |
| val = LOW)</font></td> |
| <td>Constructor defaults to LOW. </td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_1d</font></b><font |
| face="Courier New">(const direction_1d& that)</font></td> |
| <td>Copy construct.</td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_1d</font></b><font |
| face="Courier New">(const direction_2d& that)</font></td> |
| <td>Down cast direction_2d, extracting out whether positive |
| or negative</td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_1d</font></b><font |
| face="Courier New">(const direction_3d& that)</font></td> |
| <td>Down cast direction_3d, extracting out whether positive |
| or negative</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>operator=</b>(const |
| direction_1d dir)</font></td> |
| <td>Assignment</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>operator==</b>(const |
| direction_1d dir) const</font></td> |
| <td>Equivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>operator!=</b>(const |
| direction_1d dir) const</font></td> |
| <td>Inequivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">unsigned int <b>to_int</b>() |
| const</font></td> |
| <td>Convert to the integer enum value of current state to |
| use as index. Auto-cast to int is disallowed for type safety |
| reasons.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>backward</b>()</font></td> |
| <td>Inverts direction.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>get_sign</b>() |
| const</font></td> |
| <td>Returns positive 1 if positive direction and negative |
| one if negative direction.</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2>orientation_2d</h2> |
| <p> </p> |
| <p align="left">The orientation_2d data type has two possible |
| states. These are the horizontal and vertical axis of a 2d |
| Cartesian coordinate system. These states can be described |
| by one of the two orientation_2d_enum values:</p> |
| <p align="left"><font face="Courier New">enum orientation_2d_enum |
| { HORIZONTAL = 0, VERTICAL = 1 };</font></p> |
| <h2>Member Functions</h2> |
| <table id="table2" border="1" width="100%"> |
| <tbody> |
| <tr> |
| <td width="586"><b><font face="Courier New">orientation_2</font></b><font |
| face="Courier New"><b>d</b>(orientation_2d_enum val = HORIZONTAL)</font></td> |
| <td>Constructor defaults to HORIZONTAL. </td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">orientation_2</font></b><font |
| face="Courier New"><b>d</b>(const orientation_2d& that)</font></td> |
| <td>Copy construct.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">explicit </font><b> |
| <font face="Courier New">orientation_2</font></b><font |
| face="Courier New"><b>d</b>(const direction_2d& that)</font></td> |
| <td>Down cast direction_2d, extracting out whether |
| horizontal or vertical direction type</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_2d& |
| <b>operator=</b>(const orientation_2d o)</font></td> |
| <td>Assignment</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_2d& |
| <b>operator==</b>(const orientation_2d o) const</font></td> |
| <td>Equivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_2d& |
| <b>operator!=</b>(const orientation_2d o) const</font></td> |
| <td>Inequivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">unsigned int <b>to_int</b>() |
| const</font></td> |
| <td>Convert to the integer enum value of current state to |
| use as index. Auto-cast to int is disallowed for type safety |
| reasons</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_2d& |
| <b>turn_90</b>()</font></td> |
| <td>Change to orthogonal orientation</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>get_perpendicular</b>() |
| const</font></td> |
| <td>Returns orthogonal orientation</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>get_direction</b>(direction_1d |
| dir) const</font></td> |
| <td>Returns the positive or negative direction_2d depending |
| on the value of dir</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2>direction_2d</h2> |
| <p> </p> |
| <p align="left">The direction_2d data type has four possible |
| states. These are the cardinal directions of the 2D Cartesian |
| coordinate system. These states can be described by one of |
| several direction_2d_enum values:</p> |
| <p align="left"><font face="Courier New">enum direction_2d_enum { |
| WEST = 0, EAST = 1, SOUTH = 2, NORTH = 3 };</font></p> |
| <h2>Member Functions</h2> |
| <table id="table3" border="1" width="100%"> |
| <tbody> |
| <tr> |
| <td width="586"><font face="Courier New"><b>direction_2d</b>(direction_2d_enum |
| val = WEST)</font></td> |
| <td>Constructor defaults to WEST. </td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_2d</font></b><font |
| face="Courier New">(const direction_2d& that)</font></td> |
| <td>Copy construct.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>operator=</b>(const |
| direction_2d dir)</font></td> |
| <td>Assignment</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>operator==</b>(const |
| direction_2d dir) const</font></td> |
| <td>Equivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>operator!=</b>(const |
| direction_2d dir) const</font></td> |
| <td>Inequivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">unsigned int <b>to_int</b>() |
| const</font></td> |
| <td>Convert to the integer enum value of current state to |
| use as index. Auto-cast to int is disallowed for type safety |
| reasons.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_2d& <b>backward</b>()</font></td> |
| <td>Inverts direction.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_2d& <b>turn</b>(direction_1d |
| dir)</font></td> |
| <td>Changes to direction_2d to the left if dir is LOW, to |
| the right if dir is HIGH</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_2d& <b>left</b>()</font></td> |
| <td>Changes to the direction_2d to the left</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_2d& <b>right</b>()</font></td> |
| <td>Changes to the direction_2d to the right</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>is_positive</b>() |
| const</font></td> |
| <td>Returns true if EAST or NORTH</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>is_negative</b>() |
| const</font></td> |
| <td>Returns true if WEST or SOUTH</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>get_sign</b>() |
| const</font></td> |
| <td>Returns positive 1 if positive direction and negative |
| one if negative direction.</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2>orientation_3d</h2> |
| <p> </p> |
| <p align="left">The orientation_3d data type has three possible |
| states. These are the horizontal, vertical and proximal (x, y, z) |
| axis of a 3d Cartesian coordinate system. These states can |
| be described by one of the orientation_2d_enum values or by the |
| orientation_3d_enum value:</p> |
| <p align="left"><font face="Courier New">enum orientation_3d_enum |
| { PROXIMAL = 2 };</font></p> |
| <h2>Member Functions</h2> |
| <table id="table6" border="1" width="100%"> |
| <tbody> |
| <tr> |
| <td width="586"><b><font face="Courier New">orientation_3</font></b><font |
| face="Courier New"><b>d</b>(orientation_2d_enum val = HORIZONTAL)</font></td> |
| <td>Constructor defaults to HORIZONTAL. </td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">orientation_3</font></b><font |
| face="Courier New"><b>d</b>(const orientation_3d& that)</font></td> |
| <td>Copy construct.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">explicit </font><b> |
| <font face="Courier New">orientation_3</font></b><font |
| face="Courier New"><b>d</b>(const direction_2d& that)</font></td> |
| <td>Extract out the orientation of the direction</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">explicit </font><b> |
| <font face="Courier New">orientation_3</font></b><font |
| face="Courier New"><b>d</b>(const direction_3d& that)</font></td> |
| <td>Extract out the orientation of the direction</td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">orientation_3</font></b><font |
| face="Courier New"><b>d</b>(const orientation_2d& that)</font></td> |
| <td>Up cast orientation_2d to orientation_3d.</td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">orientation_3</font></b><font |
| face="Courier New"><b>d</b>(const orientation_3d_enum& that)</font></td> |
| <td>Construct from constant value</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_3d& |
| <b>operator=</b>(const orientation_3d o)</font></td> |
| <td>Assignment</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_3d& |
| <b>operator==</b>(const orientation_3d o) const</font></td> |
| <td>Equivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">orientation_3d& |
| <b>operator!=</b>(const orientation_3d o) const</font></td> |
| <td>Inequivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">unsigned int <b>to_int</b>() |
| const</font></td> |
| <td>Convert to the integer enum value of current state to |
| use as index. Auto-cast to int is disallowed for type safety |
| reasons</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>get_direction</b>(direction_1d |
| dir) const</font></td> |
| <td>Returns the positive or negative direction_2d depending |
| on the value of dir</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2>direction_3d</h2> |
| <p> </p> |
| <p align="left">The direction_3d data type has six possible |
| states. These are the cardinal directions of the 3D Cartesian |
| coordinate system. These states can be described by one of |
| the direction_2d_enum values or the direction_3d_enum values:</p> |
| <p align="left"><font face="Courier New">enum direction_3d_enum { |
| DOWN = 4, UP = 5 };</font></p> |
| <h2>Member Functions</h2> |
| <table id="table5" border="1" width="100%"> |
| <tbody> |
| <tr> |
| <td width="586"><font face="Courier New"><b>direction_3d</b>(direction_2d_enum |
| val = WEST)</font></td> |
| <td>Constructor defaults to LOW. </td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_3d</font></b><font |
| face="Courier New">(direction_3d_enum that)</font></td> |
| <td>Construct from constant value</td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_3d</font></b><font |
| face="Courier New">(const direction_3d& that)</font></td> |
| <td>Copy construct</td> |
| </tr> |
| <tr> |
| <td width="586"><b><font face="Courier New">direction_3d</font></b><font |
| face="Courier New">(direction_2d that)</font></td> |
| <td>Up cast direction_2d to direction_3d</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_3d& <b>operator=</b>(const |
| direction_3d dir)</font></td> |
| <td>Assignment</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_3d& <b>operator==</b>(const |
| direction_3d dir) const</font></td> |
| <td>Equivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_2d& <b>operator!=</b>(const |
| direction_3d dir) const</font></td> |
| <td>Inequivalence</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">unsigned int <b>to_int</b>() |
| const</font></td> |
| <td>Convert to the integer enum value of current state to |
| use as index. Auto-cast to int is disallowed for type safety |
| reasons.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">direction_1d& <b>backward</b>()</font></td> |
| <td>Inverts direction.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>is_positive</b>() |
| const</font></td> |
| <td>Returns true if direction is EAST, NORTH or UP.</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>is_negative</b>() |
| const</font></td> |
| <td>Returns true if direction is WEST, SOUTH or DOWN</td> |
| </tr> |
| <tr> |
| <td width="586"><font face="Courier New">int <b>get_sign</b>() |
| const</font></td> |
| <td>Returns positive 1 if positive direction and negative |
| one if negative direction.</td> |
| </tr> |
| </tbody> |
| </table> |
| </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%"> |
| <table class="docinfo" id="table7" 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 © Intel Corporation 2008-2010.</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> |