geos_390_docs/classgeos_1_1algorithm_1_1C...

632 lines
32 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::algorithm::ConvexHull 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_1algorithm.html">algorithm</a></li><li class="navelem"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html">ConvexHull</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1algorithm_1_1ConvexHull-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::algorithm::ConvexHull Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Computes the convex hull of a Geometry.
<a href="classgeos_1_1algorithm_1_1ConvexHull.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="ConvexHull_8h_source.html">ConvexHull.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::algorithm::ConvexHull:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1algorithm_1_1ConvexHull__coll__graph.svg" width="480" height="239"><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:ab5b11d7619d4b8ceb9dbea8fdb5a3fe3"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#ab5b11d7619d4b8ceb9dbea8fdb5a3fe3">ConvexHull</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *newGeometry)</td></tr>
<tr class="separator:ab5b11d7619d4b8ceb9dbea8fdb5a3fe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c421b60ccbf6a1ca2524f5be13f0210"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a7c421b60ccbf6a1ca2524f5be13f0210">~ConvexHull</a> ()</td></tr>
<tr class="separator:a7c421b60ccbf6a1ca2524f5be13f0210"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6db1811f5255815456e2f9a9a381f291"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a6db1811f5255815456e2f9a9a381f291">getConvexHull</a> ()</td></tr>
<tr class="separator:a6db1811f5255815456e2f9a9a381f291"><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:ac0ebfdb0e04c2e3c349a42b96bc4d668"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#ac0ebfdb0e04c2e3c349a42b96bc4d668">extractCoordinates</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *geom)</td></tr>
<tr class="separator:ac0ebfdb0e04c2e3c349a42b96bc4d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bdd0ff34b591e4fba3a038dc6009efd"><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_1algorithm_1_1ConvexHull.html#a7bdd0ff34b591e4fba3a038dc6009efd">toCoordinateSequence</a> (<a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;cv)</td></tr>
<tr class="separator:a7bdd0ff34b591e4fba3a038dc6009efd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad478a681db74b5bc17849707c6f3ce86"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#ad478a681db74b5bc17849707c6f3ce86">computeOctPts</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;src, <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;tgt)</td></tr>
<tr class="separator:ad478a681db74b5bc17849707c6f3ce86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a602bba83d913d30b9a302503c3e524c3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a602bba83d913d30b9a302503c3e524c3">computeOctRing</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;src, <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;tgt)</td></tr>
<tr class="separator:a602bba83d913d30b9a302503c3e524c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9f2a2a691e4379510ac383347ca34bc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#aa9f2a2a691e4379510ac383347ca34bc">reduce</a> (<a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;pts)</td></tr>
<tr class="separator:aa9f2a2a691e4379510ac383347ca34bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6354e00de2504c1db72675887422fd5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#ab6354e00de2504c1db72675887422fd5">padArray3</a> (<a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;pts)</td></tr>
<tr class="memdesc:ab6354e00de2504c1db72675887422fd5"><td class="mdescLeft">&#160;</td><td class="mdescRight">parameter will be modified <a href="#ab6354e00de2504c1db72675887422fd5">More...</a><br /></td></tr>
<tr class="separator:ab6354e00de2504c1db72675887422fd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a428336c7962bde839314d3bb80427513"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a428336c7962bde839314d3bb80427513">preSort</a> (<a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;pts)</td></tr>
<tr class="memdesc:a428336c7962bde839314d3bb80427513"><td class="mdescLeft">&#160;</td><td class="mdescRight">parameter will be modified <a href="#a428336c7962bde839314d3bb80427513">More...</a><br /></td></tr>
<tr class="separator:a428336c7962bde839314d3bb80427513"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07a587b52cac3d80af170d4a3031c9f8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a07a587b52cac3d80af170d4a3031c9f8">polarCompare</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;o, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q)</td></tr>
<tr class="separator:a07a587b52cac3d80af170d4a3031c9f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab323bc33d2da97b7c3c14df626c7709c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#ab323bc33d2da97b7c3c14df626c7709c">grahamScan</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;c, <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;ps)</td></tr>
<tr class="separator:ab323bc33d2da97b7c3c14df626c7709c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c1d4dfa073c7374dc89c161032cffc9"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a7c1d4dfa073c7374dc89c161032cffc9">lineOrPolygon</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;vertices)</td></tr>
<tr class="separator:a7c1d4dfa073c7374dc89c161032cffc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfc4b6f6ce61f1bc1579966552a7c6be"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#abfc4b6f6ce61f1bc1579966552a7c6be">cleanRing</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;input, <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;cleaned)</td></tr>
<tr class="separator:abfc4b6f6ce61f1bc1579966552a7c6be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6486761ad2bf9101501ba478d0076ad"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#aa6486761ad2bf9101501ba478d0076ad">isBetween</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;c1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;c2, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;c3)</td></tr>
<tr class="separator:aa6486761ad2bf9101501ba478d0076ad"><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:abdc58119826eb8b076fec9a655a36ba5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#abdc58119826eb8b076fec9a655a36ba5">geomFactory</a></td></tr>
<tr class="separator:abdc58119826eb8b076fec9a655a36ba5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a199ba621fdf237c5f15b437103745e3f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1ConvexHull.html#a199ba621fdf237c5f15b437103745e3f">inputPts</a></td></tr>
<tr class="separator:a199ba621fdf237c5f15b437103745e3f"><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>Computes the convex hull of a Geometry. </p>
<p>The convex hull is the smallest convex Geometry that contains all the points in the input Geometry.</p>
<p>Uses the Graham Scan algorithm.</p>
<p>Last port: algorithm/ConvexHull.java rev. 1.26 (JTS-1.7) </p>
<p>Definition at line <a class="el" href="ConvexHull_8h_source.html#l00059">59</a> of file <a class="el" href="ConvexHull_8h_source.html">ConvexHull.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab5b11d7619d4b8ceb9dbea8fdb5a3fe3"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">geos::algorithm::ConvexHull::ConvexHull </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>newGeometry</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new convex hull construction for the input Geometry. </p>
</div>
</div>
<a class="anchor" id="a7c421b60ccbf6a1ca2524f5be13f0210"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">geos::algorithm::ConvexHull::~ConvexHull </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="abfc4b6f6ce61f1bc1579966552a7c6be"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::cleanRing </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>input</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>cleaned</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Write in 'cleaned' a version of 'input' with collinear vertexes removed. </p>
</div>
</div>
<a class="anchor" id="ad478a681db74b5bc17849707c6f3ce86"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::computeOctPts </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>tgt</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a602bba83d913d30b9a302503c3e524c3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::algorithm::ConvexHull::computeOctRing </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>tgt</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac0ebfdb0e04c2e3c349a42b96bc4d668"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::extractCoordinates </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>geom</em></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">
</div>
</div>
<a class="anchor" id="a6db1811f5255815456e2f9a9a381f291"></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_1Geometry.html">geom::Geometry</a>&gt; geos::algorithm::ConvexHull::getConvexHull </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns a Geometry that represents the convex hull of the input geometry. The returned geometry contains the minimal number of points needed to represent the convex hull. In particular, no more than two consecutive points will be collinear.</p>
<dl class="section return"><dt>Returns</dt><dd>if the convex hull contains 3 or more points, a Polygon; 2 points, a LineString; 1 point, a Point; 0 points, an empty GeometryCollection. </dd></dl>
</div>
</div>
<a class="anchor" id="ab323bc33d2da97b7c3c14df626c7709c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::grahamScan </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>ps</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa6486761ad2bf9101501ba478d0076ad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::algorithm::ConvexHull::isBetween </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>c1</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>c2</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>c3</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether the three coordinates are collinear and c2 lies between c1 and c3 inclusive </dd></dl>
</div>
</div>
<a class="anchor" id="a7c1d4dfa073c7374dc89c161032cffc9"></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_1Geometry.html">geom::Geometry</a>&gt; geos::algorithm::ConvexHull::lineOrPolygon </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>vertices</em></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">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">vertices</td><td>the vertices of a linear ring, which may or may not be flattened (i.e. vertices collinear)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a 2-vertex LineString if the vertices are collinear; otherwise, a Polygon with unnecessary (collinear) vertices removed </dd></dl>
</div>
</div>
<a class="anchor" id="ab6354e00de2504c1db72675887422fd5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::padArray3 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>pts</em></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>parameter will be modified </p>
</div>
</div>
<a class="anchor" id="a07a587b52cac3d80af170d4a3031c9f8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int geos::algorithm::ConvexHull::polarCompare </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>o</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>p</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>q</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Given two points p and q compare them with respect to their radial ordering about point o. First checks radial ordering. If points are collinear, the comparison is based on their distance to the origin.</p>
<p>p &lt; q iff</p>
<ul>
<li>ang(o-p) &lt; ang(o-q) (e.g. o-p-q is CCW)</li>
<li>or ang(o-p) == ang(o-q) &amp;&amp; dist(o,p) &lt; dist(o,q)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">o</td><td>the origin </td></tr>
<tr><td class="paramname">p</td><td>a point </td></tr>
<tr><td class="paramname">q</td><td>another point </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>-1, 0 or 1 depending on whether p is less than, equal to or greater than q </dd></dl>
</div>
</div>
<a class="anchor" id="a428336c7962bde839314d3bb80427513"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::preSort </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>pts</em></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>parameter will be modified </p>
</div>
</div>
<a class="anchor" id="aa9f2a2a691e4379510ac383347ca34bc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::ConvexHull::reduce </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>pts</em></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 heuristic to reduce the number of points scanned to compute the hull. The heuristic is to find a polygon guaranteed to be in (or on) the hull, and eliminate all points inside it. A quadrilateral defined by the extremal points in the four orthogonal directions can be used, but even more inclusive is to use an octilateral defined by the points in the 8 cardinal directions.</p>
<p>Note that even if the method used to determine the polygon vertices is not 100% robust, this does not affect the robustness of the convex hull.</p>
<p>To satisfy the requirements of the Graham Scan algorithm, the resulting array has at least 3 entries.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pts</td><td>The vector of const Coordinate pointers to be reduced (to at least 3 elements)</td></tr>
</table>
</dd>
</dl>
<p>WARNING: the parameter will be modified </p>
</div>
</div>
<a class="anchor" id="a7bdd0ff34b591e4fba3a038dc6009efd"></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::algorithm::ConvexHull::toCoordinateSequence </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> &amp;&#160;</td>
<td class="paramname"><em>cv</em></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>Create a CoordinateSequence from the Coordinate::ConstVect This is needed to construct the geometries. Here coordinate copies happen The returned object is newly allocated !NO EXCEPTION SAFE! </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="abdc58119826eb8b076fec9a655a36ba5"></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_1GeometryFactory.html">geom::GeometryFactory</a>* geos::algorithm::ConvexHull::geomFactory</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="ConvexHull_8h_source.html#l00061">61</a> of file <a class="el" href="ConvexHull_8h_source.html">ConvexHull.h</a>.</p>
</div>
</div>
<a class="anchor" id="a199ba621fdf237c5f15b437103745e3f"></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_1geom_1_1Coordinate.html#a59a363dbe699943a46ea014355e63cac">geom::Coordinate::ConstVect</a> geos::algorithm::ConvexHull::inputPts</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="ConvexHull_8h_source.html#l00062">62</a> of file <a class="el" href="ConvexHull_8h_source.html">ConvexHull.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ConvexHull_8h_source.html">ConvexHull.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>