geos_390_docs/classgeos_1_1operation_1_1b...

788 lines
40 KiB
HTML

<!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">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GEOS: geos::operation::buffer::BufferInputLineSimplifier Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">GEOS
&#160;<span id="projectnumber">3.9.1dev</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacegeos.html">geos</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation.html">operation</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation_1_1buffer.html">buffer</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::buffer::BufferInputLineSimplifier Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Simplifies a buffer input line to remove concavities with shallow depth.
<a href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::buffer::BufferInputLineSimplifier:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier__coll__graph.svg" width="252" height="147"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a6a9404367d2f2d7dc1d68e13e1712a44"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a6a9404367d2f2d7dc1d68e13e1712a44">BufferInputLineSimplifier</a> (const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &amp;input)</td></tr>
<tr class="separator:a6a9404367d2f2d7dc1d68e13e1712a44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e7b2c0914fb8bdeccb6d00101d6696f"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a6e7b2c0914fb8bdeccb6d00101d6696f">simplify</a> (double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a>)</td></tr>
<tr class="separator:a6e7b2c0914fb8bdeccb6d00101d6696f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:ada2c76bc6ac435323f5e284288fcc2d9"><td class="memItemLeft" align="right" valign="top">static std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#ada2c76bc6ac435323f5e284288fcc2d9">simplify</a> (const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &amp;<a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aaf6f7ce0bf0b4f211a897bdc20b235d4">inputLine</a>, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a>)</td></tr>
<tr class="separator:ada2c76bc6ac435323f5e284288fcc2d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:aea7cbb5fc0ba7e06ed3bff4473c583c7"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aea7cbb5fc0ba7e06ed3bff4473c583c7">deleteShallowConcavities</a> ()</td></tr>
<tr class="separator:aea7cbb5fc0ba7e06ed3bff4473c583c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96022ac3b379ba0bd7a108f5c157e68c"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a96022ac3b379ba0bd7a108f5c157e68c">findNextNonDeletedIndex</a> (size_t index) const </td></tr>
<tr class="separator:a96022ac3b379ba0bd7a108f5c157e68c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aded59a0ae46be64f51d680880eae4741"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aded59a0ae46be64f51d680880eae4741">collapseLine</a> () const </td></tr>
<tr class="separator:aded59a0ae46be64f51d680880eae4741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add3a269e3a4cb97817af7a45bf956283"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#add3a269e3a4cb97817af7a45bf956283">isDeletable</a> (size_t i0, size_t i1, size_t i2, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a>) const </td></tr>
<tr class="separator:add3a269e3a4cb97817af7a45bf956283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81edd3537b9c4bcb3dbc1705ff1cf6f1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a81edd3537b9c4bcb3dbc1705ff1cf6f1">isShallowConcavity</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a>) const </td></tr>
<tr class="separator:a81edd3537b9c4bcb3dbc1705ff1cf6f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac21e85973e3dfe69ad81d8355a360182"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#ac21e85973e3dfe69ad81d8355a360182">isShallowSampled</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2, size_t i0, size_t i2, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a>) const </td></tr>
<tr class="separator:ac21e85973e3dfe69ad81d8355a360182"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7539c9c8c4db0fdebae9ab66e3ff6a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#ae7539c9c8c4db0fdebae9ab66e3ff6a9">isShallow</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2, double <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a>) const </td></tr>
<tr class="separator:ae7539c9c8c4db0fdebae9ab66e3ff6a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23a556bbf3999f64f79d11c25c140917"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a23a556bbf3999f64f79d11c25c140917">isConcave</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2) const </td></tr>
<tr class="separator:a23a556bbf3999f64f79d11c25c140917"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20a61bc3e8a0dd35c7d945d16f21a310"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a20a61bc3e8a0dd35c7d945d16f21a310">BufferInputLineSimplifier</a> (const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a> &amp;other)=delete</td></tr>
<tr class="separator:a20a61bc3e8a0dd35c7d945d16f21a310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae40ed287739c2226dacad16746587368"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#ae40ed287739c2226dacad16746587368">operator=</a> (const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a> &amp;rhs)=delete</td></tr>
<tr class="separator:ae40ed287739c2226dacad16746587368"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:aaf6f7ce0bf0b4f211a897bdc20b235d4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aaf6f7ce0bf0b4f211a897bdc20b235d4">inputLine</a></td></tr>
<tr class="separator:aaf6f7ce0bf0b4f211a897bdc20b235d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa76ae9ca87ef59bbfc357da6cf6e25c1"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#aa76ae9ca87ef59bbfc357da6cf6e25c1">distanceTol</a></td></tr>
<tr class="separator:aa76ae9ca87ef59bbfc357da6cf6e25c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab1edd3597c5f1bc9614e1855d94651e1"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#ab1edd3597c5f1bc9614e1855d94651e1">isDeleted</a></td></tr>
<tr class="separator:ab1edd3597c5f1bc9614e1855d94651e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af50047c8a474abb5706d85bde7be7559"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#af50047c8a474abb5706d85bde7be7559">angleOrientation</a></td></tr>
<tr class="separator:af50047c8a474abb5706d85bde7be7559"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr class="memitem:a6fe6cad37e2cc92983e58ed0f0c2ab9d"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a6fe6cad37e2cc92983e58ed0f0c2ab9d">NUM_PTS_TO_CHECK</a> = 10</td></tr>
<tr class="separator:a6fe6cad37e2cc92983e58ed0f0c2ab9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcbc5ae786a1dba26db99f920baa10f0"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#abcbc5ae786a1dba26db99f920baa10f0">INIT</a> = 0</td></tr>
<tr class="separator:abcbc5ae786a1dba26db99f920baa10f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f59ad1d58ac54dd8b6fbddcab2c5bed"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a8f59ad1d58ac54dd8b6fbddcab2c5bed">DELETE</a> = 1</td></tr>
<tr class="separator:a8f59ad1d58ac54dd8b6fbddcab2c5bed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08323e3ea4bfe2be9550039a04fadb25"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html#a08323e3ea4bfe2be9550039a04fadb25">KEEP</a> = 1</td></tr>
<tr class="separator:a08323e3ea4bfe2be9550039a04fadb25"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Simplifies a buffer input line to remove concavities with shallow depth. </p>
<p>The most important benefit of doing this is to reduce the number of points and the complexity of shape which will be buffered. It also reduces the risk of gores created by the quantized fillet arcs (although this issue should be eliminated in any case by the offset curve generation logic).</p>
<p>A key aspect of the simplification is that it affects inside (concave or inward) corners only. Convex (outward) corners are preserved, since they are required to ensure that the generated buffer curve lies at the correct distance from the input geometry.</p>
<p>Another important heuristic used is that the end segments of the input are never simplified. This ensures that the client buffer code is able to generate end caps faithfully.</p>
<p>No attempt is made to avoid self-intersections in the output. This is acceptable for use for generating a buffer offset curve, since the buffer algorithm is insensitive to invalid polygonal geometry. However, this means that this algorithm cannot be used as a general-purpose polygon simplification technique.</p>
<dl class="section author"><dt>Author</dt><dd>Martin Davis </dd></dl>
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00072">72</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a6a9404367d2f2d7dc1d68e13e1712a44"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferInputLineSimplifier::BufferInputLineSimplifier </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &amp;&#160;</td>
<td class="paramname"><em>input</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a20a61bc3e8a0dd35c7d945d16f21a310"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferInputLineSimplifier::BufferInputLineSimplifier </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aded59a0ae46be64f51d680880eae4741"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a>&gt; geos::operation::buffer::BufferInputLineSimplifier::collapseLine </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aea7cbb5fc0ba7e06ed3bff4473c583c7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::buffer::BufferInputLineSimplifier::deleteShallowConcavities </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Uses a sliding window containing 3 vertices to detect shallow angles in which the middle vertex can be deleted, since it does not affect the shape of the resulting buffer in a significant way. </p><dl class="section return"><dt>Returns</dt><dd></dd></dl>
</div>
</div>
<a class="anchor" id="a96022ac3b379ba0bd7a108f5c157e68c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t geos::operation::buffer::BufferInputLineSimplifier::findNextNonDeletedIndex </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>index</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Finds the next non-deleted index, or the end of the point array if none</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">index</td><td></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the next non-deleted index, if any </dd>
<dd>
inputLine.size() if there are no more non-deleted indices </dd></dl>
</div>
</div>
<a class="anchor" id="a23a556bbf3999f64f79d11c25c140917"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::buffer::BufferInputLineSimplifier::isConcave </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="add3a269e3a4cb97817af7a45bf956283"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::buffer::BufferInputLineSimplifier::isDeletable </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distanceTol</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ae7539c9c8c4db0fdebae9ab66e3ff6a9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::buffer::BufferInputLineSimplifier::isShallow </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distanceTol</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a81edd3537b9c4bcb3dbc1705ff1cf6f1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::buffer::BufferInputLineSimplifier::isShallowConcavity </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distanceTol</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac21e85973e3dfe69ad81d8355a360182"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::buffer::BufferInputLineSimplifier::isShallowSampled </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>i2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distanceTol</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Checks for shallowness over a sample of points in the given section.</p>
<p>This helps prevents the siplification from incrementally "skipping" over points which are in fact non-shallow.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>start coordinate of section </td></tr>
<tr><td class="paramname">p2</td><td>end coordinate of section </td></tr>
<tr><td class="paramname">i0</td><td>start index of section </td></tr>
<tr><td class="paramname">i2</td><td>end index of section </td></tr>
<tr><td class="paramname">distanceTol</td><td>distance tolerance </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
</div>
</div>
<a class="anchor" id="ae40ed287739c2226dacad16746587368"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a>&amp; geos::operation::buffer::BufferInputLineSimplifier::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferInputLineSimplifier.html">BufferInputLineSimplifier</a> &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ada2c76bc6ac435323f5e284288fcc2d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a>&gt; geos::operation::buffer::BufferInputLineSimplifier::simplify </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> &amp;&#160;</td>
<td class="paramname"><em>inputLine</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distanceTol</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Simplify the input coordinate list.</p>
<p>If the distance tolerance is positive, concavities on the LEFT side of the line are simplified. If the supplied distance tolerance is negative, concavities on the RIGHT side of the line are simplified.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">inputLine</td><td>the coordinate sequence to simplify </td></tr>
<tr><td class="paramname">distanceTol</td><td>simplification distance tolerance to use </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a simplified version of the coordinate sequence </dd></dl>
</div>
</div>
<a class="anchor" id="a6e7b2c0914fb8bdeccb6d00101d6696f"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a>&gt; geos::operation::buffer::BufferInputLineSimplifier::simplify </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distanceTol</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Simplify the input coordinate list. If the distance tolerance is positive, concavities on the LEFT side of the line are simplified. If the supplied distance tolerance is negative, concavities on the RIGHT side of the line are simplified.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">distanceTol</td><td>simplification distance tolerance to use </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the simplified coordinate list </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="af50047c8a474abb5706d85bde7be7559"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int geos::operation::buffer::BufferInputLineSimplifier::angleOrientation</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00170">170</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="a8f59ad1d58ac54dd8b6fbddcab2c5bed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::operation::buffer::BufferInputLineSimplifier::DELETE = 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00163">163</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa76ae9ca87ef59bbfc357da6cf6e25c1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double geos::operation::buffer::BufferInputLineSimplifier::distanceTol</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00167">167</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="abcbc5ae786a1dba26db99f920baa10f0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::operation::buffer::BufferInputLineSimplifier::INIT = 0</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00162">162</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="aaf6f7ce0bf0b4f211a897bdc20b235d4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a>&amp; geos::operation::buffer::BufferInputLineSimplifier::inputLine</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00166">166</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="ab1edd3597c5f1bc9614e1855d94651e1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;int&gt; geos::operation::buffer::BufferInputLineSimplifier::isDeleted</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00168">168</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="a08323e3ea4bfe2be9550039a04fadb25"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::operation::buffer::BufferInputLineSimplifier::KEEP = 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00164">164</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6fe6cad37e2cc92983e58ed0f0c2ab9d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::operation::buffer::BufferInputLineSimplifier::NUM_PTS_TO_CHECK = 10</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="BufferInputLineSimplifier_8h_source.html#l00160">160</a> of file <a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="BufferInputLineSimplifier_8h_source.html">BufferInputLineSimplifier.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>