<!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"/> <title>GEOS: geos::noding::SegmentIntersectionDetector Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related 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 class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"> <ul> <li><a class="el" href="namespacegeos.html">geos</a> </li> <li><a class="el" href="namespacegeos_1_1noding.html">noding</a> </li> <li><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html">geos::noding::SegmentIntersectionDetector</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <h1>geos::noding::SegmentIntersectionDetector Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="geos::noding::SegmentIntersectionDetector" --><!-- doxytag: inherits="geos::noding::SegmentIntersector" --> <p>Detects and records an intersection between two <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a>s, if one exists. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="SegmentIntersectionDetector_8h_source.html">SegmentIntersectionDetector.h</a>></code></p> <div class="dynheader"> Inheritance diagram for geos::noding::SegmentIntersectionDetector:</div> <div class="dyncontent"> <div class="center"> <img src="classgeos_1_1noding_1_1SegmentIntersectionDetector.png" usemap="#geos::noding::SegmentIntersectionDetector_map" alt=""/> <map id="geos::noding::SegmentIntersectionDetector_map" name="geos::noding::SegmentIntersectionDetector_map"> <area href="classgeos_1_1noding_1_1SegmentIntersector.html" alt="geos::noding::SegmentIntersector" shape="rect" coords="0,0,250,24"/> </map> </div> <p><a href="classgeos_1_1noding_1_1SegmentIntersectionDetector-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d364430f25d50c1637346477d4fdd51"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::SegmentIntersectionDetector" ref="a8d364430f25d50c1637346477d4fdd51" args="(LineIntersector *li)" --> </td><td class="memItemRight" valign="bottom"><b>SegmentIntersectionDetector</b> (<a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html">LineIntersector</a> *li)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5faf27cd487e3dcd4c75a8bdaa2fa738"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::setFindProper" ref="a5faf27cd487e3dcd4c75a8bdaa2fa738" args="(bool findProper)" --> void </td><td class="memItemRight" valign="bottom"><b>setFindProper</b> (bool findProper)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6305e9fa742ddc531aec0b52e44b9b30"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::setFindAllIntersectionTypes" ref="a6305e9fa742ddc531aec0b52e44b9b30" args="(bool findAllTypes)" --> void </td><td class="memItemRight" valign="bottom"><b>setFindAllIntersectionTypes</b> (bool findAllTypes)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#adb04288ed28b12593d58f0d767ec9064">hasIntersection</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#a506450066c5a2897ca109c269c47fd89">hasProperIntersection</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#aa7542ef3ed118313eabce3a8ddf766ed">hasNonProperIntersection</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> *const </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#aa13289ab24e47df9c67a503ce2880945">getIntersection</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#a378dc2d15f6a4f759daf5d9b32e5f259">getIntersectionSegments</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#a7696b62e218cd0c5dd221d8737f275e9">isDone</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Reports whether the client of this class needs to continue testing all intersections in an arrangement. <a href="#a7696b62e218cd0c5dd221d8737f275e9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1noding_1_1SegmentIntersectionDetector.html#a7c88328bf88e1939f739a9c724c7dd46">processIntersections</a> (<a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a> *e0, int segIndex0, <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a> *e1, int segIndex1)</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Detects and records an intersection between two <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">SegmentString</a>s, if one exists. </p> <p>This strategy can be configured to search for proper intersections. In this case, the presence of any intersection will still be recorded, but searching will continue until either a proper intersection has been found or no intersections are detected.</p> <p>Only a single intersection is recorded.</p> <dl class="version"><dt><b>Version:</b></dt><dd>1.7 </dd></dl> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="aa13289ab24e47df9c67a503ce2880945"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::getIntersection" ref="aa13289ab24e47df9c67a503ce2880945" args="() const " --> <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>* const geos::noding::SegmentIntersectionDetector::getIntersection </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the computed location of the intersection. Due to round-off, the location may not be exact.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>the coordinate for the intersection location </dd></dl> </div> </div> <a class="anchor" id="a378dc2d15f6a4f759daf5d9b32e5f259"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::getIntersectionSegments" ref="a378dc2d15f6a4f759daf5d9b32e5f259" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="classgeos_1_1geom_1_1CoordinateSequence.html">geom::CoordinateSequence</a>* geos::noding::SegmentIntersectionDetector::getIntersectionSegments </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the endpoints of the intersecting segments.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>an array of the segment endpoints (p00, p01, p10, p11) </dd></dl> </div> </div> <a class="anchor" id="adb04288ed28b12593d58f0d767ec9064"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::hasIntersection" ref="adb04288ed28b12593d58f0d767ec9064" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool geos::noding::SegmentIntersectionDetector::hasIntersection </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Tests whether an intersection was found.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if an intersection was found </dd></dl> </div> </div> <a class="anchor" id="aa7542ef3ed118313eabce3a8ddf766ed"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::hasNonProperIntersection" ref="aa7542ef3ed118313eabce3a8ddf766ed" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool geos::noding::SegmentIntersectionDetector::hasNonProperIntersection </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Tests whether a non-proper intersection was found.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if a non-proper intersection was found </dd></dl> </div> </div> <a class="anchor" id="a506450066c5a2897ca109c269c47fd89"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::hasProperIntersection" ref="a506450066c5a2897ca109c269c47fd89" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool geos::noding::SegmentIntersectionDetector::hasProperIntersection </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Tests whether a proper intersection was found.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if a proper intersection was found </dd></dl> </div> </div> <a class="anchor" id="a7696b62e218cd0c5dd221d8737f275e9"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::isDone" ref="a7696b62e218cd0c5dd221d8737f275e9" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool geos::noding::SegmentIntersectionDetector::isDone </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reports whether the client of this class needs to continue testing all intersections in an arrangement. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if there is not need to continue testing segments</dd></dl> <p>The default implementation always return false (process all intersections). </p> <p>Reimplemented from <a class="el" href="classgeos_1_1noding_1_1SegmentIntersector.html#a2402e2ce3a39edad9f5d283be73b5d1d">geos::noding::SegmentIntersector</a>.</p> </div> </div> <a class="anchor" id="a7c88328bf88e1939f739a9c724c7dd46"></a><!-- doxytag: member="geos::noding::SegmentIntersectionDetector::processIntersections" ref="a7c88328bf88e1939f739a9c724c7dd46" args="(noding::SegmentString *e0, int segIndex0, noding::SegmentString *e1, int segIndex1)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void geos::noding::SegmentIntersectionDetector::processIntersections </td> <td>(</td> <td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a> * </td> <td class="paramname"> <em>e0</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>segIndex0</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a> * </td> <td class="paramname"> <em>e1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>segIndex1</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>This method is called by clients of the <a class="el" href="classgeos_1_1noding_1_1SegmentIntersector.html">SegmentIntersector</a> class to process intersections for two segments of the <a class="el" href="">SegmentStrings</a> being intersected. Note that some clients (such as <a class="el" href="">MonotoneChain</a>s) may optimize away this call for segment pairs which they have determined do not intersect (e.g. by an disjoint envelope test). </p> <p>Implements <a class="el" href="classgeos_1_1noding_1_1SegmentIntersector.html#a23998a6202706d84baf9aac78f9d2ee5">geos::noding::SegmentIntersector</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="SegmentIntersectionDetector_8h_source.html">SegmentIntersectionDetector.h</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Thu Jul 22 2010 for GEOS by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> </body> </html>