geos_390_docs/classgeos_1_1edgegraph_1_1H...

1067 lines
53 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::edgegraph::HalfEdge 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_1edgegraph.html">edgegraph</a></li><li class="navelem"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</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="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classgeos_1_1edgegraph_1_1HalfEdge-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::edgegraph::HalfEdge Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for geos::edgegraph::HalfEdge:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1edgegraph_1_1HalfEdge__inherit__graph.svg" width="456" height="131"><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>
<div class="dynheader">
Collaboration diagram for geos::edgegraph::HalfEdge:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1edgegraph_1_1HalfEdge__coll__graph.svg" width="298" height="135"><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:a2778e684e8e9c358ea94e350667ea3af"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a2778e684e8e9c358ea94e350667ea3af">HalfEdge</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p_orig)</td></tr>
<tr class="separator:a2778e684e8e9c358ea94e350667ea3af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e8f3906b3404277caf441b487a9db83"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a1e8f3906b3404277caf441b487a9db83">~HalfEdge</a> ()</td></tr>
<tr class="separator:a1e8f3906b3404277caf441b487a9db83"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbe2fa45d3c0f154bcfec685566e4fa5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#acbe2fa45d3c0f154bcfec685566e4fa5">link</a> (<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *p_sym)</td></tr>
<tr class="separator:acbe2fa45d3c0f154bcfec685566e4fa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a249fabaadaac23ea33982b68eae31bcd"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a249fabaadaac23ea33982b68eae31bcd">orig</a> () const </td></tr>
<tr class="separator:a249fabaadaac23ea33982b68eae31bcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a131ca2ffe38ccc76f026d3b7bd39cc33"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a131ca2ffe38ccc76f026d3b7bd39cc33">dest</a> () const </td></tr>
<tr class="separator:a131ca2ffe38ccc76f026d3b7bd39cc33"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0511a4b939c6526f6932ca80d1426a7c"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a0511a4b939c6526f6932ca80d1426a7c">directionX</a> () const </td></tr>
<tr class="separator:a0511a4b939c6526f6932ca80d1426a7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7c4bdf8198e4f64eefbbbac944c7238"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#ac7c4bdf8198e4f64eefbbbac944c7238">directionY</a> () const </td></tr>
<tr class="separator:ac7c4bdf8198e4f64eefbbbac944c7238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20617634c3ef1c1a0bff8b6c49fadae5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a20617634c3ef1c1a0bff8b6c49fadae5">sym</a> () const </td></tr>
<tr class="separator:a20617634c3ef1c1a0bff8b6c49fadae5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f29eb8ee8826276e3bc71ada1118e3a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a4f29eb8ee8826276e3bc71ada1118e3a">next</a> () const </td></tr>
<tr class="separator:a4f29eb8ee8826276e3bc71ada1118e3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a567465ea2c5c08214849fdaf765e2fde"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a567465ea2c5c08214849fdaf765e2fde">prev</a> () const </td></tr>
<tr class="separator:a567465ea2c5c08214849fdaf765e2fde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06a3d5e38e3f8f4380ddad2e40fb96ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a06a3d5e38e3f8f4380ddad2e40fb96ac">oNext</a> () const </td></tr>
<tr class="separator:a06a3d5e38e3f8f4380ddad2e40fb96ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9576ee1e0b724cd8f76163894bf18f3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a9576ee1e0b724cd8f76163894bf18f3e">setNext</a> (<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *e)</td></tr>
<tr class="separator:a9576ee1e0b724cd8f76163894bf18f3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a168886be0cb3e39f384b946b309092"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a5a168886be0cb3e39f384b946b309092">find</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a131ca2ffe38ccc76f026d3b7bd39cc33">dest</a>)</td></tr>
<tr class="separator:a5a168886be0cb3e39f384b946b309092"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a8d8ea3272964b3e62d77e38dde2d89"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a0a8d8ea3272964b3e62d77e38dde2d89">equals</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 </td></tr>
<tr class="separator:a0a8d8ea3272964b3e62d77e38dde2d89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab11e067b8c1eb1b9f5830c59fcadc1b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#aab11e067b8c1eb1b9f5830c59fcadc1b">insert</a> (<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *eAdd)</td></tr>
<tr class="separator:aab11e067b8c1eb1b9f5830c59fcadc1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4a207f933e2c950d100f88c4be89d29"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#af4a207f933e2c950d100f88c4be89d29">isEdgesSorted</a> () const </td></tr>
<tr class="separator:af4a207f933e2c950d100f88c4be89d29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb86ad7cc1934de01c2931e37273458a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#afb86ad7cc1934de01c2931e37273458a">compareAngularDirection</a> (const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *e) const </td></tr>
<tr class="separator:afb86ad7cc1934de01c2931e37273458a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90b0c6e8bc9fc6e9769033173636c5ef"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a90b0c6e8bc9fc6e9769033173636c5ef">compareTo</a> (const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *e) const </td></tr>
<tr class="separator:a90b0c6e8bc9fc6e9769033173636c5ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18161a7433297f804d637c0df5e62857"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a18161a7433297f804d637c0df5e62857">degree</a> ()</td></tr>
<tr class="separator:a18161a7433297f804d637c0df5e62857"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab537c3ae7f3fbd4d8de9325d1ee8a658"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#ab537c3ae7f3fbd4d8de9325d1ee8a658">prevNode</a> ()</td></tr>
<tr class="separator:ab537c3ae7f3fbd4d8de9325d1ee8a658"><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:afad539ff22ad23fa3db091c499bee1bf"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#afad539ff22ad23fa3db091c499bee1bf">create</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)</td></tr>
<tr class="separator:afad539ff22ad23fa3db091c499bee1bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dc4eca7b481cb1e509e22ea785ae1fb"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a1dc4eca7b481cb1e509e22ea785ae1fb">toStringNode</a> (const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *he, std::ostream &amp;os)</td></tr>
<tr class="separator:a1dc4eca7b481cb1e509e22ea785ae1fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:ac49fa70f802341bfcb353a99d3eed2da"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#ac49fa70f802341bfcb353a99d3eed2da">directionPt</a> () const </td></tr>
<tr class="separator:ac49fa70f802341bfcb353a99d3eed2da"><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:a9680a26e11893b3eab1dd88faa6b2d5c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a9680a26e11893b3eab1dd88faa6b2d5c">setSym</a> (<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *e)</td></tr>
<tr class="separator:a9680a26e11893b3eab1dd88faa6b2d5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbc8e05a861d33c9155da1a760b3d785"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#adbc8e05a861d33c9155da1a760b3d785">insertionEdge</a> (<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *eAdd)</td></tr>
<tr class="separator:adbc8e05a861d33c9155da1a760b3d785"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840589a80c07d4df689b12b723b95d8d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a840589a80c07d4df689b12b723b95d8d">insertAfter</a> (<a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *e)</td></tr>
<tr class="separator:a840589a80c07d4df689b12b723b95d8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a4f949501c7f68318e67bbdd34240ed"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a9a4f949501c7f68318e67bbdd34240ed">findLowest</a> () const </td></tr>
<tr class="separator:a9a4f949501c7f68318e67bbdd34240ed"><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:a0a53dd4afa4c505bc691835f724b7cd9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a0a53dd4afa4c505bc691835f724b7cd9">m_orig</a></td></tr>
<tr class="separator:a0a53dd4afa4c505bc691835f724b7cd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33315466658d5b7a46203b89a930e3da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a33315466658d5b7a46203b89a930e3da">m_sym</a></td></tr>
<tr class="separator:a33315466658d5b7a46203b89a930e3da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b103146805fd14cb9af33ad5c603317"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a1b103146805fd14cb9af33ad5c603317">m_next</a></td></tr>
<tr class="separator:a1b103146805fd14cb9af33ad5c603317"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a7ba8b60494db5142d87b3d1868362008"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a7ba8b60494db5142d87b3d1868362008">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> &amp;el)</td></tr>
<tr class="separator:a7ba8b60494db5142d87b3d1868362008"><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>Represents a directed component of an edge in an <a class="el" href="classgeos_1_1edgegraph_1_1EdgeGraph.html">EdgeGraph</a>. HalfEdges link vertices whose locations are defined by <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>s. HalfEdges start at an origin vertex, and terminate at a destination vertex. HalfEdges always occur in symmetric pairs, with the <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html#a20617634c3ef1c1a0bff8b6c49fadae5">sym()</a> method giving access to the oppositely-oriented component. HalfEdges and the methods on them form an edge algebra, which can be used to traverse and query the topology of the graph formed by the edges.</p>
<p>To support graphs where the edges are sequences of coordinates each edge may also have a direction point supplied. This is used to determine the ordering of the edges around the origin. HalfEdges with the same origin are ordered so that the ring of edges formed by them is oriented CCW.</p>
<p>By design HalfEdges carry minimal information about the actual usage of the graph they represent. They can be subclassed to carry more information if required.</p>
<p>HalfEdges form a complete and consistent data structure by themselves, but an <a class="el" href="classgeos_1_1edgegraph_1_1EdgeGraph.html">EdgeGraph</a> is useful to allow retrieving edges by vertex and edge location, as well as ensuring edges are created and linked appropriately.</p>
<dl class="section author"><dt>Author</dt><dd>Martin Davis </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00063">63</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a2778e684e8e9c358ea94e350667ea3af"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::edgegraph::HalfEdge::HalfEdge </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_orig</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a half-edge originating from a given coordinate.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p_orig</td><td>the origin coordinate </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00129">129</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1e8f3906b3404277caf441b487a9db83"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual geos::edgegraph::HalfEdge::~HalfEdge </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00133">133</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="afb86ad7cc1934de01c2931e37273458a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int geos::edgegraph::HalfEdge::compareAngularDirection </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>e</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Implements the total order relation:</p>
<p>The angle of edge a is greater than the angle of edge b, where the angle of an edge is the angle made by the first segment of the edge with the positive x-axis</p>
<p>When applied to a list of edges originating at the same point, this produces a CCW ordering of the edges around the point.</p>
<p>Using the obvious algorithm of computing the angle is not robust, since the angle calculation is susceptible to roundoff error. A robust algorithm is:</p>
<ul>
<li>First, compare the quadrants the edge vectors lie in. If the quadrants are different, it is trivial to determine which edge has a greater angle.</li>
<li>if the vectors lie in the same quadrant, the geom::Orientation::index() function can be used to determine the relative orientation of the vectors. </li>
</ul>
</div>
</div>
<a class="anchor" id="a90b0c6e8bc9fc6e9769033173636c5ef"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int geos::edgegraph::HalfEdge::compareTo </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>e</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00284">284</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>References <a class="el" href="namespacegeos_1_1geom.html#a2031e0143940407ca589d3216cf0eb06">geos::geom::operator&lt;&lt;()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1edgegraph_1_1HalfEdge_a90b0c6e8bc9fc6e9769033173636c5ef_cgraph.svg" width="435" height="55"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<a class="anchor" id="afad539ff22ad23fa3db091c499bee1bf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::create </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>&#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>Creates a <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> pair representing an edge between two vertices located at coordinates p0 and p1.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>a vertex coordinate </td></tr>
<tr><td class="paramname">p1</td><td>a vertex coordinate </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> with origin at p0 </dd></dl>
</div>
</div>
<a class="anchor" id="a18161a7433297f804d637c0df5e62857"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int geos::edgegraph::HalfEdge::degree </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the degree of the origin vertex. The degree is the number of edges originating from the vertex.</p>
<dl class="section return"><dt>Returns</dt><dd>the degree of the origin vertex </dd></dl>
</div>
</div>
<a class="anchor" id="a131ca2ffe38ccc76f026d3b7bd39cc33"></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_1Coordinate.html">geom::Coordinate</a>&amp; geos::edgegraph::HalfEdge::dest </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the destination coordinate of this edge.</p>
<dl class="section return"><dt>Returns</dt><dd>the destination coordinate </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00165">165</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>References <a class="el" href="HalfEdge_8h_source.html#l00068">m_orig</a>.</p>
</div>
</div>
<a class="anchor" id="ac49fa70f802341bfcb353a99d3eed2da"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>&amp; geos::edgegraph::HalfEdge::directionPt </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">inline</span><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the direction point of this edge. In the base case this is the dest coordinate of the edge. Subclasses may override to allow a <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> to represent an edge with more than two coordinates.</p>
<dl class="section return"><dt>Returns</dt><dd>the direction point for the edge </dd></dl>
<p>Reimplemented in <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html#ab5e3e036c6b8cf0fa9f88dcb64118dc2">geos::operation::overlayng::OverlayEdge</a>.</p>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00119">119</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<a class="anchor" id="a0511a4b939c6526f6932ca80d1426a7c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double geos::edgegraph::HalfEdge::directionX </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The X component of the direction vector.</p>
<dl class="section return"><dt>Returns</dt><dd>the X component of the direction vector </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00172">172</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>References <a class="el" href="Coordinate_8h_source.html#l00080">geos::geom::Coordinate::x</a>.</p>
</div>
</div>
<a class="anchor" id="ac7c4bdf8198e4f64eefbbbac944c7238"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">double geos::edgegraph::HalfEdge::directionY </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The Y component of the direction vector.</p>
<dl class="section return"><dt>Returns</dt><dd>the Y component of the direction vector </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00179">179</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>References <a class="el" href="Coordinate_8h_source.html#l00083">geos::geom::Coordinate::y</a>.</p>
</div>
</div>
<a class="anchor" id="a0a8d8ea3272964b3e62d77e38dde2d89"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool geos::edgegraph::HalfEdge::equals </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>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether this edge has the given orig and dest vertices.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>the origin vertex to test </td></tr>
<tr><td class="paramname">p1</td><td>the destination vertex to test </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the vertices are equal to the ones of this edge </dd></dl>
</div>
</div>
<a class="anchor" id="a5a168886be0cb3e39f384b946b309092"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::find </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>dest</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Finds the edge starting at the origin of this edge with the given dest vertex, if any.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dest</td><td>the dest vertex to search for </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the edge with the required dest vertex, if it exists, or null </dd></dl>
</div>
</div>
<a class="anchor" id="a9a4f949501c7f68318e67bbdd34240ed"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::findLowest </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">
<p>Finds the lowest edge around the origin, using the standard edge ordering.</p>
<dl class="section return"><dt>Returns</dt><dd>the lowest edge around the origin </dd></dl>
</div>
</div>
<a class="anchor" id="aab11e067b8c1eb1b9f5830c59fcadc1b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::edgegraph::HalfEdge::insert </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>eAdd</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Inserts an edge into the ring of edges around the origin vertex of this edge, ensuring that the edges remain ordered CCW. The inserted edge must have the same origin as this edge.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eAdd</td><td>the edge to insert </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a840589a80c07d4df689b12b723b95d8d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::edgegraph::HalfEdge::insertAfter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>e</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>Insert an edge with the same origin after this one. Assumes that the inserted edge is in the correct position around the ring.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">e</td><td>the edge to insert (with same origin) </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="adbc8e05a861d33c9155da1a760b3d785"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::insertionEdge </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>eAdd</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>Finds the insertion edge for a edge being added to this origin, ensuring that the star of edges around the origin remains fully CCW.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">eAdd</td><td>the edge being added </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the edge to insert after </dd></dl>
</div>
</div>
<a class="anchor" id="af4a207f933e2c950d100f88c4be89d29"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool geos::edgegraph::HalfEdge::isEdgesSorted </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether the edges around the origin are sorted correctly. Note that edges must be strictly increasing, which implies no two edges can have the same direction point.</p>
<dl class="section return"><dt>Returns</dt><dd>true if the origin edges are sorted correctly </dd></dl>
</div>
</div>
<a class="anchor" id="acbe2fa45d3c0f154bcfec685566e4fa5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::edgegraph::HalfEdge::link </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>p_sym</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Links this edge with its sym (opposite) edge. This must be done for each pair of edges created.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p_sym</td><td>the sym edge to link. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a4f29eb8ee8826276e3bc71ada1118e3a"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::next </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the next edge CCW around the destination vertex of this edge, with the dest vertex as its origin. If the vertex has degree 1 then this is the <b>sym</b> edge.</p>
<dl class="section return"><dt>Returns</dt><dd>the next edge </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00196">196</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>Referenced by <a class="el" href="HalfEdge_8h_source.html#l00204">prev()</a>.</p>
<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1edgegraph_1_1HalfEdge_a4f29eb8ee8826276e3bc71ada1118e3a_icgraph.svg" width="456" height="55"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<a class="anchor" id="a06a3d5e38e3f8f4380ddad2e40fb96ac"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::oNext </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the next edge CCW around the origin of this edge, with the same origin.</p>
<dl class="section return"><dt>Returns</dt><dd>the next edge around the origin </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00212">212</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>References <a class="el" href="HalfEdge_8h_source.html#l00070">m_next</a>.</p>
</div>
</div>
<a class="anchor" id="a249fabaadaac23ea33982b68eae31bcd"></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_1Coordinate.html">geom::Coordinate</a>&amp; geos::edgegraph::HalfEdge::orig </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the origin coordinate of this edge.</p>
<dl class="section return"><dt>Returns</dt><dd>the origin coordinate </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00158">158</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<a class="anchor" id="a567465ea2c5c08214849fdaf765e2fde"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::prev </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the edge previous to this one (with dest being the same as this orig).</p>
<dl class="section return"><dt>Returns</dt><dd>the previous edge to this one </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00204">204</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>References <a class="el" href="HalfEdge_8h_source.html#l00069">m_sym</a>, and <a class="el" href="HalfEdge_8h_source.html#l00196">next()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1edgegraph_1_1HalfEdge_a567465ea2c5c08214849fdaf765e2fde_cgraph.svg" width="456" height="55"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<a class="anchor" id="ab537c3ae7f3fbd4d8de9325d1ee8a658"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::prevNode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Finds the first node previous to this edge, if any. If no such node exists (i.e. the edge is part of a ring) then null is returned.</p>
<dl class="section return"><dt>Returns</dt><dd>an edge originating at the node prior to this edge, if any, or null if no node exists </dd></dl>
</div>
</div>
<a class="anchor" id="a9576ee1e0b724cd8f76163894bf18f3e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::edgegraph::HalfEdge::setNext </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>e</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the next edge CCW around the destination vertex of this edge.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">e</td><td>the next edge </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00219">219</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9680a26e11893b3eab1dd88faa6b2d5c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::edgegraph::HalfEdge::setSym </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>e</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the symmetric (opposite) edge to this edge.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">e</td><td>the sym edge to set </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00078">78</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<a class="anchor" id="a20617634c3ef1c1a0bff8b6c49fadae5"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::sym </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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the symmetric pair edge of this edge.</p>
<dl class="section return"><dt>Returns</dt><dd>the symmetric pair edge </dd></dl>
<p>Definition at line <a class="el" href="HalfEdge_8h_source.html#l00186">186</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1dc4eca7b481cb1e509e22ea785ae1fb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void geos::edgegraph::HalfEdge::toStringNode </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> *&#160;</td>
<td class="paramname"><em>he</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</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">
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="a7ba8b60494db5142d87b3d1868362008"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1edgegraph_1_1HalfEdge.html">HalfEdge</a> &amp;&#160;</td>
<td class="paramname"><em>el</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">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a1b103146805fd14cb9af33ad5c603317"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::m_next</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="HalfEdge_8h_source.html#l00070">70</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>Referenced by <a class="el" href="HalfEdge_8h_source.html#l00212">oNext()</a>.</p>
</div>
</div>
<a class="anchor" id="a0a53dd4afa4c505bc691835f724b7cd9"></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">geom::Coordinate</a> geos::edgegraph::HalfEdge::m_orig</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="HalfEdge_8h_source.html#l00068">68</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>Referenced by <a class="el" href="HalfEdge_8h_source.html#l00165">dest()</a>.</p>
</div>
</div>
<a class="anchor" id="a33315466658d5b7a46203b89a930e3da"></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_1edgegraph_1_1HalfEdge.html">HalfEdge</a>* geos::edgegraph::HalfEdge::m_sym</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="HalfEdge_8h_source.html#l00069">69</a> of file <a class="el" href="HalfEdge_8h_source.html">HalfEdge.h</a>.</p>
<p>Referenced by <a class="el" href="HalfEdge_8h_source.html#l00204">prev()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="HalfEdge_8h_source.html">HalfEdge.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>