geos_390_docs/classgeos_1_1algorithm_1_1L...

1623 lines
84 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::LineIntersector 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_1LineIntersector.html">LineIntersector</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<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-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1algorithm_1_1LineIntersector-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::algorithm::LineIntersector Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>A <a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html" title="A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...">LineIntersector</a> is an algorithm that can both test whether two line segments intersect and compute the intersection point if they do.
<a href="classgeos_1_1algorithm_1_1LineIntersector.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::algorithm::LineIntersector:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1algorithm_1_1LineIntersector__coll__graph.svg" width="512" 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-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a01e91decbc5f4c8410b965611f706a65"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a01e91decbc5f4c8410b965611f706a65">intersection_type</a> : uint8_t { <a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a01e91decbc5f4c8410b965611f706a65a41ea06e310475a259b08e43598705fed">NO_INTERSECTION</a> = 0,
<a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a01e91decbc5f4c8410b965611f706a65ac27172d289eac55bb325f5eb73564b56">POINT_INTERSECTION</a> = 1,
<a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a01e91decbc5f4c8410b965611f706a65a7feb3f604c1af5bfe7e422a084b0eade">COLLINEAR_INTERSECTION</a> = 2
}</td></tr>
<tr class="separator:a01e91decbc5f4c8410b965611f706a65"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><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:ac1fbd5ba547c2f1d72991298d3aad68a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#ac1fbd5ba547c2f1d72991298d3aad68a">LineIntersector</a> (const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *initialPrecisionModel=nullptr)</td></tr>
<tr class="separator:ac1fbd5ba547c2f1d72991298d3aad68a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c09750ec291a520f724c848745a8cfd"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a7c09750ec291a520f724c848745a8cfd">~LineIntersector</a> ()</td></tr>
<tr class="separator:a7c09750ec291a520f724c848745a8cfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a788a8925549e86880cd4f263140845cc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a788a8925549e86880cd4f263140845cc">isInteriorIntersection</a> ()</td></tr>
<tr class="memdesc:a788a8925549e86880cd4f263140845cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether either intersection point is an interior point of one of the input segments. <a href="#a788a8925549e86880cd4f263140845cc">More...</a><br /></td></tr>
<tr class="separator:a788a8925549e86880cd4f263140845cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b32fcb769a6ba099b93a6c9c09841ff"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a8b32fcb769a6ba099b93a6c9c09841ff">isInteriorIntersection</a> (size_t inputLineIndex)</td></tr>
<tr class="memdesc:a8b32fcb769a6ba099b93a6c9c09841ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether either intersection point is an interior point of the specified input segment. <a href="#a8b32fcb769a6ba099b93a6c9c09841ff">More...</a><br /></td></tr>
<tr class="separator:a8b32fcb769a6ba099b93a6c9c09841ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a742294f2808e7d07387771ca31a6c07f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a742294f2808e7d07387771ca31a6c07f">setPrecisionModel</a> (const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *newPM)</td></tr>
<tr class="separator:a742294f2808e7d07387771ca31a6c07f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafe1a3029946d270c4f79503d4abd8ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#aafe1a3029946d270c4f79503d4abd8ff">computeIntersection</a> (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;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2)</td></tr>
<tr class="separator:aafe1a3029946d270c4f79503d4abd8ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05ea0783ab6adef9152f3b882efa31d7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a05ea0783ab6adef9152f3b882efa31d7">computeIntersection</a> (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 <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p3, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p4)</td></tr>
<tr class="memdesc:a05ea0783ab6adef9152f3b882efa31d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the intersection of the lines p1-p2 and p3-p4. <a href="#a05ea0783ab6adef9152f3b882efa31d7">More...</a><br /></td></tr>
<tr class="separator:a05ea0783ab6adef9152f3b882efa31d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6101cab64b058fc4a08587a4ae32af58"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a6101cab64b058fc4a08587a4ae32af58">toString</a> () const </td></tr>
<tr class="separator:a6101cab64b058fc4a08587a4ae32af58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6189821070c6a9081cb2bce8c3c54091"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a6189821070c6a9081cb2bce8c3c54091">hasIntersection</a> () const </td></tr>
<tr class="separator:a6189821070c6a9081cb2bce8c3c54091"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afda5b273b82754400b154d1100866a2e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#afda5b273b82754400b154d1100866a2e">getIntersectionNum</a> () const </td></tr>
<tr class="separator:afda5b273b82754400b154d1100866a2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa79d750d46c1bd0dd0d6091bed301c4e"><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_1algorithm_1_1LineIntersector.html#aa79d750d46c1bd0dd0d6091bed301c4e">getIntersection</a> (size_t intIndex) const </td></tr>
<tr class="separator:aa79d750d46c1bd0dd0d6091bed301c4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5045a086917ab106515c73d6ed1e6a2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#ad5045a086917ab106515c73d6ed1e6a2">isIntersection</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;pt) const </td></tr>
<tr class="memdesc:ad5045a086917ab106515c73d6ed1e6a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test whether a point is a intersection point of two line segments. <a href="#ad5045a086917ab106515c73d6ed1e6a2">More...</a><br /></td></tr>
<tr class="separator:ad5045a086917ab106515c73d6ed1e6a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19d15a24c61e942bd83be9ae43cda5fc"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a19d15a24c61e942bd83be9ae43cda5fc">isProper</a> () const </td></tr>
<tr class="memdesc:a19d15a24c61e942bd83be9ae43cda5fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tests whether an intersection is proper. <a href="#a19d15a24c61e942bd83be9ae43cda5fc">More...</a><br /></td></tr>
<tr class="separator:a19d15a24c61e942bd83be9ae43cda5fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe672cedad75cc2223391e78f987f23a"><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_1algorithm_1_1LineIntersector.html#abe672cedad75cc2223391e78f987f23a">getIntersectionAlongSegment</a> (size_t segmentIndex, size_t intIndex)</td></tr>
<tr class="memdesc:abe672cedad75cc2223391e78f987f23a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the intIndex'th intersection point in the direction of a specified input line segment. <a href="#abe672cedad75cc2223391e78f987f23a">More...</a><br /></td></tr>
<tr class="separator:abe672cedad75cc2223391e78f987f23a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a585f9939fc401da687929bdc0c76b528"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a585f9939fc401da687929bdc0c76b528">getIndexAlongSegment</a> (size_t segmentIndex, size_t intIndex)</td></tr>
<tr class="memdesc:a585f9939fc401da687929bdc0c76b528"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the index of the intIndex'th intersection point in the direction of a specified input line segment. <a href="#a585f9939fc401da687929bdc0c76b528">More...</a><br /></td></tr>
<tr class="separator:a585f9939fc401da687929bdc0c76b528"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b4d3cfaa8b0a1cffd4ac520a7977f87"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a8b4d3cfaa8b0a1cffd4ac520a7977f87">getEdgeDistance</a> (size_t geomIndex, size_t intIndex) const </td></tr>
<tr class="memdesc:a8b4d3cfaa8b0a1cffd4ac520a7977f87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the "edge distance" of an intersection point along the specified input line segment. <a href="#a8b4d3cfaa8b0a1cffd4ac520a7977f87">More...</a><br /></td></tr>
<tr class="separator:a8b4d3cfaa8b0a1cffd4ac520a7977f87"><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:ad3b0c7b64e8e86a00f5ded4e9898165b"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#ad3b0c7b64e8e86a00f5ded4e9898165b">interpolateZ</a> (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;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr class="memdesc:ad3b0c7b64e8e86a00f5ded4e9898165b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a Z value being the interpolation of Z from p0 and p1 at the given point p. <a href="#ad3b0c7b64e8e86a00f5ded4e9898165b">More...</a><br /></td></tr>
<tr class="separator:ad3b0c7b64e8e86a00f5ded4e9898165b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdd0af88c0da30b78d381b17914dca94"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#acdd0af88c0da30b78d381b17914dca94">computeEdgeDistance</a> (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;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr class="separator:acdd0af88c0da30b78d381b17914dca94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad28d55013c5d7df0ca36eadaeb06c6bb"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#ad28d55013c5d7df0ca36eadaeb06c6bb">nonRobustComputeEdgeDistance</a> (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;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2)</td></tr>
<tr class="separator:ad28d55013c5d7df0ca36eadaeb06c6bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e7508254753523e4f8277ba76bc96a2"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a1e7508254753523e4f8277ba76bc96a2">hasIntersection</a> (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;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2)</td></tr>
<tr class="memdesc:a1e7508254753523e4f8277ba76bc96a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Same as above but doesn't compute intersection point. Faster. <a href="#a1e7508254753523e4f8277ba76bc96a2">More...</a><br /></td></tr>
<tr class="separator:a1e7508254753523e4f8277ba76bc96a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97a04a7c7894f88f4c86c488b32f7921"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a97a04a7c7894f88f4c86c488b32f7921">isSameSignAndNonZero</a> (double a, double b)</td></tr>
<tr class="separator:a97a04a7c7894f88f4c86c488b32f7921"><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:ad467b79d09ab198b889da9c3782e7120"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#ad467b79d09ab198b889da9c3782e7120">isCollinear</a> () const </td></tr>
<tr class="separator:ad467b79d09ab198b889da9c3782e7120"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f4a0a87227232634d42c69efbb46e9c"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a2f4a0a87227232634d42c69efbb46e9c">computeIntersect</a> (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 <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q2)</td></tr>
<tr class="separator:a2f4a0a87227232634d42c69efbb46e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8138cb98f95d6414b2352caa026b3f1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#af8138cb98f95d6414b2352caa026b3f1">isEndPoint</a> () const </td></tr>
<tr class="separator:af8138cb98f95d6414b2352caa026b3f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf52c7efd911e52f2d05bdfce06e6d44"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#aaf52c7efd911e52f2d05bdfce06e6d44">computeIntLineIndex</a> ()</td></tr>
<tr class="separator:aaf52c7efd911e52f2d05bdfce06e6d44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58383398fca09e847320450a18f34c60"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a58383398fca09e847320450a18f34c60">computeIntLineIndex</a> (size_t segmentIndex)</td></tr>
<tr class="separator:a58383398fca09e847320450a18f34c60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e438a45c5f41c9fa264dd430c0ea9af"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a8e438a45c5f41c9fa264dd430c0ea9af">computeCollinearIntersection</a> (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 <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q2)</td></tr>
<tr class="separator:a8e438a45c5f41c9fa264dd430c0ea9af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95cab21090d7f06b6a2d44cbfb8d0476"><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_1algorithm_1_1LineIntersector.html#a95cab21090d7f06b6a2d44cbfb8d0476">intersection</a> (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 <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q2) const </td></tr>
<tr class="memdesc:a95cab21090d7f06b6a2d44cbfb8d0476"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method computes the actual value of the intersection point. <a href="#a95cab21090d7f06b6a2d44cbfb8d0476">More...</a><br /></td></tr>
<tr class="separator:a95cab21090d7f06b6a2d44cbfb8d0476"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a187d8f4e80026f970c37b6f1f12430"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a8a187d8f4e80026f970c37b6f1f12430">isInSegmentEnvelopes</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;<a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a5cc4fa20fb2307fefa4af83dda1fc50f">intPt</a>) const </td></tr>
<tr class="separator:a8a187d8f4e80026f970c37b6f1f12430"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87083034aae16aa78372f2629c1cc097"><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_1algorithm_1_1LineIntersector.html#a87083034aae16aa78372f2629c1cc097">intersectionSafe</a> (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 <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q2) const </td></tr>
<tr class="separator:a87083034aae16aa78372f2629c1cc097"><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-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:addd591a119b9b85747a144efce0d4fa6"><td class="memItemLeft" align="right" valign="top">static <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_1algorithm_1_1LineIntersector.html#addd591a119b9b85747a144efce0d4fa6">nearestEndpoint</a> (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 <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q2)</td></tr>
<tr class="separator:addd591a119b9b85747a144efce0d4fa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3408fdf24e0e851bdd6d08436d110b80"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a3408fdf24e0e851bdd6d08436d110b80">zGet</a> (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:a3408fdf24e0e851bdd6d08436d110b80"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49e5b7eb47647a42056b131dfb41add5"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a49e5b7eb47647a42056b131dfb41add5">zGetOrInterpolate</a> (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;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr class="separator:a49e5b7eb47647a42056b131dfb41add5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af79c19ebaff996a616517ffb7b2ed07b"><td class="memItemLeft" align="right" valign="top">static <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_1algorithm_1_1LineIntersector.html#af79c19ebaff996a616517ffb7b2ed07b">zGetOrInterpolateCopy</a> (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;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr class="separator:af79c19ebaff996a616517ffb7b2ed07b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e2857c338be11fae1eac5321000d68a"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a2e2857c338be11fae1eac5321000d68a">zInterpolate</a> (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;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr class="memdesc:a2e2857c338be11fae1eac5321000d68a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a Z value being the interpolation of Z from p0 to p1 at the given point p. <a href="#a2e2857c338be11fae1eac5321000d68a">More...</a><br /></td></tr>
<tr class="separator:a2e2857c338be11fae1eac5321000d68a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33cfc711ba0230ee5d3cef3a87922882"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a33cfc711ba0230ee5d3cef3a87922882">zInterpolate</a> (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;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;q2)</td></tr>
<tr class="separator:a33cfc711ba0230ee5d3cef3a87922882"><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:a6bb8df071978beb672d2afaeaa1e18d3"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a6bb8df071978beb672d2afaeaa1e18d3">precisionModel</a></td></tr>
<tr class="separator:a6bb8df071978beb672d2afaeaa1e18d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a736e0a797b44365e5c7217059849fbf6"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a736e0a797b44365e5c7217059849fbf6">result</a></td></tr>
<tr class="separator:a736e0a797b44365e5c7217059849fbf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8197e180cd57c854434d8d97e4fcbeda"><td class="memItemLeft" align="right" valign="top">const <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_1algorithm_1_1LineIntersector.html#a8197e180cd57c854434d8d97e4fcbeda">inputLines</a> [2][2]</td></tr>
<tr class="separator:a8197e180cd57c854434d8d97e4fcbeda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5cc4fa20fb2307fefa4af83dda1fc50f"><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_1algorithm_1_1LineIntersector.html#a5cc4fa20fb2307fefa4af83dda1fc50f">intPt</a> [2]</td></tr>
<tr class="separator:a5cc4fa20fb2307fefa4af83dda1fc50f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad80fa7e5ddffea6eebc7bd2e8e6fab81"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#ad80fa7e5ddffea6eebc7bd2e8e6fab81">intLineIndex</a> [2][2]</td></tr>
<tr class="separator:ad80fa7e5ddffea6eebc7bd2e8e6fab81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb90a6e1bf1813c286b77d1bfcf0b1f0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#acb90a6e1bf1813c286b77d1bfcf0b1f0">isProperVar</a></td></tr>
<tr class="separator:acb90a6e1bf1813c286b77d1bfcf0b1f0"><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>A <a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html" title="A LineIntersector is an algorithm that can both test whether two line segments intersect and compute ...">LineIntersector</a> is an algorithm that can both test whether two line segments intersect and compute the intersection point if they do. </p>
<p>The intersection point may be computed in a precise or non-precise manner. Computing it precisely involves rounding it to an integer. (This assumes that the input coordinates have been made precise by scaling them to an integer grid.) </p>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00049">49</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div><h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="a01e91decbc5f4c8410b965611f706a65"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html#a01e91decbc5f4c8410b965611f706a65">geos::algorithm::LineIntersector::intersection_type</a> : uint8_t</td>
</tr>
</table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a01e91decbc5f4c8410b965611f706a65a41ea06e310475a259b08e43598705fed"></a>NO_INTERSECTION&#160;</td><td class="fielddoc">
<p>Indicates that line segments do not intersect. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a01e91decbc5f4c8410b965611f706a65ac27172d289eac55bb325f5eb73564b56"></a>POINT_INTERSECTION&#160;</td><td class="fielddoc">
<p>Indicates that line segments intersect in a single point. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="a01e91decbc5f4c8410b965611f706a65a7feb3f604c1af5bfe7e422a084b0eade"></a>COLLINEAR_INTERSECTION&#160;</td><td class="fielddoc">
<p>Indicates that line segments intersect in a line segment. </p>
</td></tr>
</table>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00131">131</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ac1fbd5ba547c2f1d72991298d3aad68a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::algorithm::LineIntersector::LineIntersector </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td>
<td class="paramname"><em>initialPrecisionModel</em> = <code>nullptr</code></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>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00081">81</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7c09750ec291a520f724c848745a8cfd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::algorithm::LineIntersector::~LineIntersector </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> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00088">88</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a8e438a45c5f41c9fa264dd430c0ea9af"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t geos::algorithm::LineIntersector::computeCollinearIntersection </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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>q1</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>q2</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="acdd0af88c0da30b78d381b17914dca94"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::computeEdgeDistance </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>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>Computes the "edge distance" of an intersection point p in an edge.</p>
<p>The edge distance is a metric of the point along the edge. The metric used is a robust and easy to compute metric function. It is <b>not</b> equivalent to the usual Euclidean metric. It relies on the fact that either the x or the y ordinates of the points in the edge are unique, depending on whether the edge is longer in the horizontal or vertical direction.</p>
<p>NOTE: This function may produce incorrect distances for inputs where p is not precisely on p1-p2 (E.g. p = (139,9) p1 = (139,10), p2 = (280,1) produces distanct 0.0, which is incorrect.</p>
<p>My hypothesis is that the function is safe to use for points which are the result of <b>rounding</b> points which lie on the line, but not safe to use for <b>truncated</b> points. </p>
</div>
</div>
<a class="anchor" id="a2f4a0a87227232634d42c69efbb46e9c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">uint8_t geos::algorithm::LineIntersector::computeIntersect </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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>q1</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>q2</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="aafe1a3029946d270c4f79503d4abd8ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::LineIntersector::computeIntersection </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>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></td>
</tr>
</table>
</div><div class="memdoc">
<p>Compute the intersection of a point p and the line p1-p2.</p>
<p>This function computes the boolean value of the hasIntersection test. The actual value of the intersection (if there is one) is equal to the value of <code>p</code>. </p>
</div>
</div>
<a class="anchor" id="a05ea0783ab6adef9152f3b882efa31d7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void geos::algorithm::LineIntersector::computeIntersection </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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p3</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>p4</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the intersection of the lines p1-p2 and p3-p4. </p>
</div>
</div>
<a class="anchor" id="aaf52c7efd911e52f2d05bdfce06e6d44"></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::LineIntersector::computeIntLineIndex </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">
</div>
</div>
<a class="anchor" id="a58383398fca09e847320450a18f34c60"></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::LineIntersector::computeIntLineIndex </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>segmentIndex</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="a8b4d3cfaa8b0a1cffd4ac520a7977f87"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double geos::algorithm::LineIntersector::getEdgeDistance </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>geomIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>intIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the "edge distance" of an intersection point along the specified input line segment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">geomIndex</td><td>is 0 or 1 </td></tr>
<tr><td class="paramname">intIndex</td><td>is 0 or 1</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the edge distance of the intersection point </dd></dl>
</div>
</div>
<a class="anchor" id="a585f9939fc401da687929bdc0c76b528"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t geos::algorithm::LineIntersector::getIndexAlongSegment </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>segmentIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>intIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the index of the intIndex'th intersection point in the direction of a specified input line segment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segmentIndex</td><td>is 0 or 1 </td></tr>
<tr><td class="paramname">intIndex</td><td>is 0 or 1</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the index of the intersection point along the segment (0 or 1) </dd></dl>
</div>
</div>
<a class="anchor" id="aa79d750d46c1bd0dd0d6091bed301c4e"></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::algorithm::LineIntersector::getIntersection </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>intIndex</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>Returns the intIndex'th intersection point</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">intIndex</td><td>is 0 or 1</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the intIndex'th intersection point </dd></dl>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00177">177</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="abe672cedad75cc2223391e78f987f23a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a>&amp; geos::algorithm::LineIntersector::getIntersectionAlongSegment </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>segmentIndex</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>intIndex</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Computes the intIndex'th intersection point in the direction of a specified input line segment. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">segmentIndex</td><td>is 0 or 1 </td></tr>
<tr><td class="paramname">intIndex</td><td>is 0 or 1</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the intIndex'th intersection point in the direction of the specified input line segment </dd></dl>
</div>
</div>
<a class="anchor" id="afda5b273b82754400b154d1100866a2e"></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::algorithm::LineIntersector::getIntersectionNum </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>Returns the number of intersection points found.</p>
<p>This will be either 0, 1 or 2. </p>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00164">164</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1e7508254753523e4f8277ba76bc96a2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool geos::algorithm::LineIntersector::hasIntersection </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>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></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>Same as above but doesn't compute intersection point. Faster. </p>
</div>
</div>
<a class="anchor" id="a6189821070c6a9081cb2bce8c3c54091"></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::LineIntersector::hasIntersection </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>Tests whether the input geometries intersect.</p>
<dl class="section return"><dt>Returns</dt><dd>true if the input geometries intersect </dd></dl>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00154">154</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="ad3b0c7b64e8e86a00f5ded4e9898165b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::interpolateZ </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>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>Return a Z value being the interpolation of Z from p0 and p1 at the given point p. </p>
</div>
</div>
<a class="anchor" id="a95cab21090d7f06b6a2d44cbfb8d0476"></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::algorithm::LineIntersector::intersection </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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>q1</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>q2</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>This method computes the actual value of the intersection point. </p>
<p>To obtain the maximum precision from the intersection calculation, the coordinates are normalized by subtracting the minimum ordinate values (in absolute value). This has the effect of removing common significant digits from the calculation to maintain more bits of precision. </p>
</div>
</div>
<a class="anchor" id="a87083034aae16aa78372f2629c1cc097"></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::algorithm::LineIntersector::intersectionSafe </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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>q1</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>q2</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>Computes a segment intersection. Round-off error can cause the raw computation to fail, (usually due to the segments being approximately parallel). If this happens, a reasonable approximation is computed instead.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p1</td><td>a segment endpoint </td></tr>
<tr><td class="paramname">p2</td><td>a segment endpoint </td></tr>
<tr><td class="paramname">q1</td><td>a segment endpoint </td></tr>
<tr><td class="paramname">q2</td><td>a segment endpoint </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the computed intersection point is stored there </dd></dl>
</div>
</div>
<a class="anchor" id="ad467b79d09ab198b889da9c3782e7120"></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::LineIntersector::isCollinear </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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00283">283</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="af8138cb98f95d6414b2352caa026b3f1"></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::LineIntersector::isEndPoint </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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00292">292</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a8a187d8f4e80026f970c37b6f1f12430"></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::LineIntersector::isInSegmentEnvelopes </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>intPt</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>Test whether a point lies in the envelopes of both input segments. A correctly computed intersection point should return true for this test. Since this test is for debugging purposes only, no attempt is made to optimize the envelope test.</p>
<dl class="section return"><dt>Returns</dt><dd>true if the input point lies within both input segment envelopes </dd></dl>
</div>
</div>
<a class="anchor" id="a788a8925549e86880cd4f263140845cc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool geos::algorithm::LineIntersector::isInteriorIntersection </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether either intersection point is an interior point of one of the input segments. </p>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if either intersection point is in the interior of one of the input segments </dd></dl>
</div>
</div>
<a class="anchor" id="a8b32fcb769a6ba099b93a6c9c09841ff"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool geos::algorithm::LineIntersector::isInteriorIntersection </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>inputLineIndex</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests whether either intersection point is an interior point of the specified input segment. </p>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if either intersection point is in the interior of the input segment </dd></dl>
</div>
</div>
<a class="anchor" id="ad5045a086917ab106515c73d6ed1e6a2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool geos::algorithm::LineIntersector::isIntersection </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>pt</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Test whether a point is a intersection point of two line segments. </p>
<p>Note that if the intersection is a line segment, this method only tests for equality with the endpoints of the intersection segment. It does <b>not</b> return true if the input point is internal to the intersection segment.</p>
<dl class="section return"><dt>Returns</dt><dd>true if the input point is one of the intersection points. </dd></dl>
</div>
</div>
<a class="anchor" id="a19d15a24c61e942bd83be9ae43cda5fc"></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::LineIntersector::isProper </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>Tests whether an intersection is proper. </p>
<p>The intersection between two line segments is considered proper if they intersect in a single point in the interior of both segments (e.g. the intersection is a single point and is not equal to any of the endpoints).</p>
<p>The intersection between a point and a line segment is considered proper if the point lies in the interior of the segment (e.g. is not equal to either of the endpoints).</p>
<dl class="section return"><dt>Returns</dt><dd>true if the intersection is proper </dd></dl>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00215">215</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a97a04a7c7894f88f4c86c488b32f7921"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool geos::algorithm::LineIntersector::isSameSignAndNonZero </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>a</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>b</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>Returns false if both numbers are zero.</p>
<dl class="section return"><dt>Returns</dt><dd>true if both numbers are positive or if both numbers are negative. </dd></dl>
</div>
</div>
<a class="anchor" id="addd591a119b9b85747a144efce0d4fa6"></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_1geom_1_1Coordinate.html">geom::Coordinate</a> geos::algorithm::LineIntersector::nearestEndpoint </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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>q1</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>q2</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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Finds the endpoint of the segments P and Q which is closest to the other segment. This is a reasonable surrogate for the true intersection points in ill-conditioned cases (e.g. where two segments are nearly coincident, or where the endpoint of one segment lies almost on the other segment). </p>
<p>This replaces the older CentralEndpoint heuristic, which chose the wrong endpoint in some cases where the segments had very distinct slopes and one endpoint lay almost on the other segment.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p1</td><td>an endpoint of segment P </td></tr>
<tr><td class="paramname">p2</td><td>an endpoint of segment P </td></tr>
<tr><td class="paramname">q1</td><td>an endpoint of segment Q </td></tr>
<tr><td class="paramname">q2</td><td>an endpoint of segment Q </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the nearest endpoint to the other segment </dd></dl>
</div>
</div>
<a class="anchor" id="ad28d55013c5d7df0ca36eadaeb06c6bb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::nonRobustComputeEdgeDistance </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>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></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>
<a class="anchor" id="a742294f2808e7d07387771ca31a6c07f"></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::LineIntersector::setPrecisionModel </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td>
<td class="paramname"><em>newPM</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>Force computed intersection to be rounded to a given precision model.</p>
<p>No getter is provided, because the precision model is not required to be specified. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">newPM</td><td>the PrecisionModel to use for rounding </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00115">115</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6101cab64b058fc4a08587a4ae32af58"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string geos::algorithm::LineIntersector::toString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a3408fdf24e0e851bdd6d08436d110b80"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::zGet </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">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a49e5b7eb47647a42056b131dfb41add5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::zGetOrInterpolate </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>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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="af79c19ebaff996a616517ffb7b2ed07b"></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_1geom_1_1Coordinate.html">geom::Coordinate</a> geos::algorithm::LineIntersector::zGetOrInterpolateCopy </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>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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a2e2857c338be11fae1eac5321000d68a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::zInterpolate </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>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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return a Z value being the interpolation of Z from p0 to p1 at the given point p. </p>
</div>
</div>
<a class="anchor" id="a33cfc711ba0230ee5d3cef3a87922882"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static double geos::algorithm::LineIntersector::zInterpolate </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>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">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>q1</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>q2</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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a8197e180cd57c854434d8d97e4fcbeda"></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>* geos::algorithm::LineIntersector::inputLines[2][2]</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="LineIntersector_8h_source.html#l00264">264</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="ad80fa7e5ddffea6eebc7bd2e8e6fab81"></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::algorithm::LineIntersector::intLineIndex[2][2]</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>The indexes of the endpoints of the intersection lines, in order along the corresponding line </p>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00276">276</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a5cc4fa20fb2307fefa4af83dda1fc50f"></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::algorithm::LineIntersector::intPt[2]</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>We store real Coordinates here because we must compute the Z of intersection point. </p>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00270">270</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="acb90a6e1bf1813c286b77d1bfcf0b1f0"></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::LineIntersector::isProperVar</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="LineIntersector_8h_source.html#l00278">278</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a6bb8df071978beb672d2afaeaa1e18d3"></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_1PrecisionModel.html">geom::PrecisionModel</a>* geos::algorithm::LineIntersector::precisionModel</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>If makePrecise is true, computed intersection coordinates will be made precise using Coordinate::makePrecise </p>
<p>Definition at line <a class="el" href="LineIntersector_8h_source.html#l00260">260</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<a class="anchor" id="a736e0a797b44365e5c7217059849fbf6"></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::algorithm::LineIntersector::result</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="LineIntersector_8h_source.html#l00262">262</a> of file <a class="el" href="LineIntersector_8h_source.html">LineIntersector.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="LineIntersector_8h_source.html">LineIntersector.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>