Files
geometry/doc/doxygen_output/html/group__transform.html
Barend Gehrels 363580fbf6 Added old doxygen docs
[SVN r59777]
2010-02-20 15:57:12 +00:00

258 lines
22 KiB
HTML
Raw Blame History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Boost.Geometry (aka GGL, Generic Geometry Library)</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head>
<table cellpadding="2" width="100%">
<tbody>
<tr>
<td valign="top">
<img alt="Boost.Geometry" src="images/ggl-logo-big.png" height="80" width="200">
&nbsp;&nbsp;
</td>
<td valign="top" align="right">
<a href="http://www.boost.org">
<img alt="Boost C++ Libraries" src="images/accepted_by_boost.png" height="80" width="230" border="0">
</a>
</td>
</tr>
</tbody>
</table>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
</ul>
</div>
</div>
<div class="contents">
<h1>transform: apply transformations on geometries</h1>Transforms from one geometry to another geometry, optionally using a strategy.
<a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1copy__direct.html">boost::geometry::strategy::transform::copy_direct&lt; P &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to copy one <a class="el" href="classboost_1_1geometry_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a> to another using assignment operator. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1copy__direct.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1copy__per__coordinate.html">boost::geometry::strategy::transform::copy_per_coordinate&lt; P1, P2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to do copy a <a class="el" href="classboost_1_1geometry_1_1point.html" title="Basic point class, having coordinates defined in a neutral way.">point</a>, copying per coordinate. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1copy__per__coordinate.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1degree__radian__vv.html">boost::geometry::strategy::transform::degree_radian_vv&lt; P1, P2, F &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to go from <a class="el" href="classboost_1_1geometry_1_1degree.html" title="Unit of plane angle: Degrees.">degree</a> to <a class="el" href="classboost_1_1geometry_1_1radian.html" title="Unit of plane angle: Radians.">radian</a> and back. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1degree__radian__vv.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2.html">boost::geometry::strategy::transform::from_cartesian_3_to_spherical_2&lt; P1, P2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> for 3D cartesian (x,y,z) to 2D spherical (phi,theta). <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__2.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3.html">boost::geometry::strategy::transform::from_cartesian_3_to_spherical_3&lt; P1, P2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> for 3D cartesian (x,y,z) to 3D spherical (phi,theta,r). <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__cartesian__3__to__spherical__3.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3.html">boost::geometry::strategy::transform::from_spherical_2_to_cartesian_3&lt; P1, P2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> for 2D spherical (phi,theta) to 3D cartesian (x,y,z). <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__spherical__2__to__cartesian__3.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3.html">boost::geometry::strategy::transform::from_spherical_3_to_cartesian_3&lt; P1, P2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> for 3D spherical (phi,theta,r) to 3D cartesian (x,y,z). <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1from__spherical__3__to__cartesian__3.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1inverse__transformer.html">boost::geometry::strategy::transform::inverse_transformer&lt; P1, P2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to do an inverse ransformation in Cartesian system. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1inverse__transformer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1map__transformer.html">boost::geometry::strategy::transform::map_transformer&lt; P1, P2, Mirror, SameScale, Dimension1, Dimension2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to do map from one to another Cartesian system. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1map__transformer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1rotate__transformer.html">boost::geometry::strategy::transform::rotate_transformer&lt; P1, P2, DegreeOrRadian &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Strategy of rotate transformation in Cartesian system. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1rotate__transformer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1scale__transformer.html">boost::geometry::strategy::transform::scale_transformer&lt; P1, P2, Dimension1, Dimension2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Strategy of scale transformation in Cartesian system. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1scale__transformer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1transform_1_1translate__transformer.html">boost::geometry::strategy::transform::translate_transformer&lt; P1, P2, Dimension1, Dimension2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Strategy of translate transformation in Cartesian system. <a href="structboost_1_1geometry_1_1strategy_1_1transform_1_1translate__transformer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1transform_1_1ublas__transformer.html">boost::geometry::strategy::transform::ublas_transformer&lt; P1, P2, Dimension1, Dimension2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Affine transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> in Cartesian system. <a href="classboost_1_1geometry_1_1strategy_1_1transform_1_1ublas__transformer.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy__transform.html">boost::geometry::strategy_transform&lt; CoordinateSystemTag1, CoordinateSystemTag2, CoordinateSystem1, CoordinateSystem2, Dimension1, Dimension2, Point1, Point2 &gt;</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Traits class binding a transformation <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to a coordinate system. <a href="structboost_1_1geometry_1_1strategy__transform.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry1 , typename Geometry2 &gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transform.html#g3eff89c7aeeb0560642b22672d2443d1">boost::geometry::transform</a> (Geometry1 const &amp;geometry1, Geometry2 &amp;geometry2)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transforms from one <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> to another <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> using a <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a>. <a href="#g3eff89c7aeeb0560642b22672d2443d1"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;typename Geometry1 , typename Geometry2 , typename Strategy &gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="group__transform.html#g6b9a387b5ac973d7d9e273d9dffc1d3e">boost::geometry::transform</a> (Geometry1 const &amp;geometry1, Geometry2 &amp;geometry2, Strategy const &amp;strategy)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Transforms from one <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> to another <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> using a <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a>. <a href="#g6b9a387b5ac973d7d9e273d9dffc1d3e"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Transforms from one geometry to another geometry, optionally using a strategy.
<p>
The transform algorithm automatically transforms from one coordinate system to another coordinate system. If the coordinate system of both geometries are the same, the geometry is copied. All point(s of the geometry) are transformed.<p>
There is a version without a strategy, transforming automatically, and there is a version with a strategy.<p>
This function has a lot of appliances, for example<ul>
<li>transform from spherical coordinates to cartesian coordinates, and back</li><li>transform from geographic coordinates to cartesian coordinates (projections) and back</li><li>transform from degree to radian, and back</li><li>transform from and to cartesian coordinates (mapping, translations, etc)</li></ul>
<p>
The automatic transformations look to the coordinate system family, and dimensions, of the point type and by this apply the strategy (internally bounded by traits classes).<p>
<dl class="user" compact><dt><b>Examples:</b></dt><dd>The example below shows automatic transformations to go from one coordinate system to another one: <div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> point&lt;double, 3, cs::cartesian&gt; XYZ;
<span class="keyword">typedef</span> point&lt;double, 3, cs::spherical&lt;degree&gt; &gt; SPH;
XYZ p;
SPH sph1, sph2;
<a class="code" href="group__access.html#gd1a7d6277b95439021f13191094aebdb" title="assign two values to a 2D point">assign</a>(sph1, 12.5, 41.90, 1.0);
<span class="comment">// Go from spherical to Cartesian-3D:</span>
<a class="code" href="group__transform.html#g6b9a387b5ac973d7d9e273d9dffc1d3e" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(sph1, p);
<span class="comment">// Go back from Cartesian 3D to spherical:</span>
<a class="code" href="group__transform.html#g6b9a387b5ac973d7d9e273d9dffc1d3e" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(p, sph2);
std::cout &lt;&lt; <a class="code" href="group__utility.html#g62cc5db4d3bb1147591298b3500f8f1a" title="Main DSV-streaming function.">dsv</a>(p) &lt;&lt; <span class="stringliteral">" &lt;-&gt; "</span> &lt;&lt; <a class="code" href="group__utility.html#g62cc5db4d3bb1147591298b3500f8f1a" title="Main DSV-streaming function.">dsv</a>(sph2) &lt;&lt; std::endl;
</pre></div></dd></dl>
The next example takes another approach and transforms from Cartesian to Cartesian: <div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> point_xy&lt;double&gt; XY;
<span class="keyword">typedef</span> point_xy&lt;int&gt; PIXEL;
XY xy(50, 50);
strategy::transform::map_transformer&lt;XY, PIXEL, false&gt; map(0, 0, 100, 100, 1024, 768);
PIXEL pix;
<a class="code" href="group__transform.html#g6b9a387b5ac973d7d9e273d9dffc1d3e" title="Transforms from one geometry to another geometry using a strategy.">transform</a>(xy, pix, map);
std::cout &lt;&lt; pix.x() &lt;&lt; <span class="stringliteral">","</span> &lt;&lt; pix.y() &lt;&lt; std::endl;
</pre></div><p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Not every possibility is yet worked out, e.g. polar coordinate system is ignored until now <p>
This "transform" is broader then geodetic datum transformations, those are currently not worked out </dd></dl>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g6b9a387b5ac973d7d9e273d9dffc1d3e"></a><!-- doxytag: member="boost::geometry::transform" ref="g6b9a387b5ac973d7d9e273d9dffc1d3e" args="(Geometry1 const &amp;geometry1, Geometry2 &amp;geometry2, Strategy const &amp;strategy)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Geometry1 , typename Geometry2 , typename Strategy &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool boost::geometry::transform </td>
<td>(</td>
<td class="paramtype">Geometry1 const &amp;&nbsp;</td>
<td class="paramname"> <em>geometry1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Geometry2 &amp;&nbsp;</td>
<td class="paramname"> <em>geometry2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Strategy const &amp;&nbsp;</td>
<td class="paramname"> <em>strategy</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Transforms from one <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> to another <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> using a <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a>.
<p>
<dl compact><dt><b>Template Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>Geometry1</em>&nbsp;</td><td>first <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> type </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Geometry2</em>&nbsp;</td><td>second <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> type </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Strategy</em>&nbsp;</td><td><a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> </td></tr>
</table>
</dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>geometry1</em>&nbsp;</td><td>first <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> </td></tr>
<tr><td valign="top"></td><td valign="top"><em>geometry2</em>&nbsp;</td><td>second <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> </td></tr>
<tr><td valign="top"></td><td valign="top"><em><a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a></em>&nbsp;</td><td>the <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a> to be used for transformation </td></tr>
</table>
</dl>
<dl compact><dt><b>Examples: </b></dt><dd>
<a class="el" href="06__transformation__example_8cpp-example.html#a2">06_transformation_example.cpp</a>, and <a class="el" href="07__graph__route__example_8cpp-example.html#a13">07_graph_route_example.cpp</a>.</dl>
<p>Definition at line <a class="el" href="algorithms_2transform_8hpp_source.html#l00296">296</a> of file <a class="el" href="algorithms_2transform_8hpp_source.html">transform.hpp</a>.</p>
</div>
</div><p>
<a class="anchor" name="g3eff89c7aeeb0560642b22672d2443d1"></a><!-- doxytag: member="boost::geometry::transform" ref="g3eff89c7aeeb0560642b22672d2443d1" args="(Geometry1 const &amp;geometry1, Geometry2 &amp;geometry2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename Geometry1 , typename Geometry2 &gt; </div>
<table class="memname">
<tr>
<td class="memname">bool boost::geometry::transform </td>
<td>(</td>
<td class="paramtype">Geometry1 const &amp;&nbsp;</td>
<td class="paramname"> <em>geometry1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Geometry2 &amp;&nbsp;</td>
<td class="paramname"> <em>geometry2</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Transforms from one <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> to another <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> using a <a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a>.
<p>
<dl compact><dt><b>Template Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>Geometry1</em>&nbsp;</td><td>first <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> type </td></tr>
<tr><td valign="top"></td><td valign="top"><em>Geometry2</em>&nbsp;</td><td>second <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> type </td></tr>
</table>
</dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>geometry1</em>&nbsp;</td><td>first <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> </td></tr>
<tr><td valign="top"></td><td valign="top"><em>geometry2</em>&nbsp;</td><td>second <a class="el" href="namespaceboost_1_1geometry.html">geometry</a> </td></tr>
</table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if the transformation could be done </dd></dl>
<p>Definition at line <a class="el" href="algorithms_2transform_8hpp_source.html#l00324">324</a> of file <a class="el" href="algorithms_2transform_8hpp_source.html">transform.hpp</a>.</p>
</div>
</div><p>
</div>
<hr size="1">
<table width="100%">
<tbody>
<tr>
<td align="left"><small>
<p>December 1, 2009</p>
</small></td>
<td align="right">
<small>Copyright <20> 1995-2009 Barend Gehrels, Geodan, Amsterdam<br>
Copyright <20> 2008-2009 Bruno Lalande, Paris<br>
Copyright <20> 2009 Mateusz Loskot, Cadcorp, London<br>
</small>
</td>
</tr>
</tbody>
</table>
<address style="text-align: right;"><small>
Documentation is generated by&nbsp;<a href="http://www.doxygen.org/index.html">Doxygen</a>
</small></address>
</body>
</html>