geos_390_docs/classgeos_1_1algorithm_1_1A...

825 lines
38 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::Angle 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_1Angle.html">Angle</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classgeos_1_1algorithm_1_1Angle-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::algorithm::Angle Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Utility functions for working with angles.
<a href="classgeos_1_1algorithm_1_1Angle.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="Angle_8h_source.html">Angle.h</a>&gt;</code></p>
<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:a9ad83c541e462f7e87f4ccb4453aa6ef"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a9ad83c541e462f7e87f4ccb4453aa6ef">toDegrees</a> (double radians)</td></tr>
<tr class="separator:a9ad83c541e462f7e87f4ccb4453aa6ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb3a56d12a8acaf534be3a9be1e66885"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#aeb3a56d12a8acaf534be3a9be1e66885">toRadians</a> (double angleDegrees)</td></tr>
<tr class="separator:aeb3a56d12a8acaf534be3a9be1e66885"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1510a92c16299367c5eeb982e1ac8209"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a1510a92c16299367c5eeb982e1ac8209">angle</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1)</td></tr>
<tr class="memdesc:a1510a92c16299367c5eeb982e1ac8209"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the angle of the vector from p0 to p1, relative to the positive X-axis. <a href="#a1510a92c16299367c5eeb982e1ac8209">More...</a><br /></td></tr>
<tr class="separator:a1510a92c16299367c5eeb982e1ac8209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee4dad3c63ac27529705e72bc44c315b"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#aee4dad3c63ac27529705e72bc44c315b">angle</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p)</td></tr>
<tr class="memdesc:aee4dad3c63ac27529705e72bc44c315b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the angle that the vector from (0,0) to p, relative to the positive X-axis. <a href="#aee4dad3c63ac27529705e72bc44c315b">More...</a><br /></td></tr>
<tr class="separator:aee4dad3c63ac27529705e72bc44c315b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ead08040de37e155075f32439c7c3b3"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a8ead08040de37e155075f32439c7c3b3">isAcute</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2)</td></tr>
<tr class="separator:a8ead08040de37e155075f32439c7c3b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43f4f2031e72038b9e6931da59330954"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a43f4f2031e72038b9e6931da59330954">isObtuse</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2)</td></tr>
<tr class="separator:a43f4f2031e72038b9e6931da59330954"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37b9b3ef28618d538e459d9171331190"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a37b9b3ef28618d538e459d9171331190">angleBetween</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;tip1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;tail, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;tip2)</td></tr>
<tr class="separator:a37b9b3ef28618d538e459d9171331190"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af483a721dcfc7506f70d3085408f991c"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#af483a721dcfc7506f70d3085408f991c">angleBetweenOriented</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;tip1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;tail, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;tip2)</td></tr>
<tr class="separator:af483a721dcfc7506f70d3085408f991c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d0faa9a4613314b73a211afbd475b2c"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a7d0faa9a4613314b73a211afbd475b2c">interiorAngle</a> (const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p0, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p1, const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;p2)</td></tr>
<tr class="separator:a7d0faa9a4613314b73a211afbd475b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e25f61567be2ab03f92d36c775a9b9b"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a4e25f61567be2ab03f92d36c775a9b9b">getTurn</a> (double ang1, double ang2)</td></tr>
<tr class="memdesc:a4e25f61567be2ab03f92d36c775a9b9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether an angle must turn clockwise or counterclockwise to overlap another angle. <a href="#a4e25f61567be2ab03f92d36c775a9b9b">More...</a><br /></td></tr>
<tr class="separator:a4e25f61567be2ab03f92d36c775a9b9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9ba65b29aaae8715cbf5d77dc7da077"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#ad9ba65b29aaae8715cbf5d77dc7da077">normalize</a> (double <a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a1510a92c16299367c5eeb982e1ac8209">angle</a>)</td></tr>
<tr class="memdesc:ad9ba65b29aaae8715cbf5d77dc7da077"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the normalized value of an angle, which is the equivalent angle in the range ( -Pi, Pi ]. <a href="#ad9ba65b29aaae8715cbf5d77dc7da077">More...</a><br /></td></tr>
<tr class="separator:ad9ba65b29aaae8715cbf5d77dc7da077"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad6d7eb020edf56d3289bb58b7235997"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#aad6d7eb020edf56d3289bb58b7235997">normalizePositive</a> (double <a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a1510a92c16299367c5eeb982e1ac8209">angle</a>)</td></tr>
<tr class="memdesc:aad6d7eb020edf56d3289bb58b7235997"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the normalized positive value of an angle, which is the equivalent angle in the range [ 0, 2*Pi ). <a href="#aad6d7eb020edf56d3289bb58b7235997">More...</a><br /></td></tr>
<tr class="separator:aad6d7eb020edf56d3289bb58b7235997"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11b9891ce2c21eb4988bcb18ac245e25"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a11b9891ce2c21eb4988bcb18ac245e25">diff</a> (double ang1, double ang2)</td></tr>
<tr class="separator:a11b9891ce2c21eb4988bcb18ac245e25"><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-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a851066e4c1a956519a623286cdeeeeba"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a851066e4c1a956519a623286cdeeeeba">PI_TIMES_2</a></td></tr>
<tr class="separator:a851066e4c1a956519a623286cdeeeeba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c5129ca94c6f102f0fd1530991a6c3e"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a4c5129ca94c6f102f0fd1530991a6c3e">PI_OVER_2</a></td></tr>
<tr class="separator:a4c5129ca94c6f102f0fd1530991a6c3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8fd7a590539526f27db780043138eb1"><td class="memItemLeft" align="right" valign="top">static const double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#ab8fd7a590539526f27db780043138eb1">PI_OVER_4</a></td></tr>
<tr class="separator:ab8fd7a590539526f27db780043138eb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a735054807eb53b763cc95b8807642ee4"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a735054807eb53b763cc95b8807642ee4">COUNTERCLOCKWISE</a> = Orientation::COUNTERCLOCKWISE</td></tr>
<tr class="memdesc:a735054807eb53b763cc95b8807642ee4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant representing counterclockwise orientation. <a href="#a735054807eb53b763cc95b8807642ee4">More...</a><br /></td></tr>
<tr class="separator:a735054807eb53b763cc95b8807642ee4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5429234c5e29ec6f331320d2883fdcf9"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a5429234c5e29ec6f331320d2883fdcf9">CLOCKWISE</a> = Orientation::CLOCKWISE</td></tr>
<tr class="memdesc:a5429234c5e29ec6f331320d2883fdcf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant representing clockwise orientation. <a href="#a5429234c5e29ec6f331320d2883fdcf9">More...</a><br /></td></tr>
<tr class="separator:a5429234c5e29ec6f331320d2883fdcf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a698bf884ab1d18c9a2508b6ee67e8d"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1algorithm_1_1Angle.html#a7a698bf884ab1d18c9a2508b6ee67e8d">NONE</a> = <a class="el" href="classgeos_1_1algorithm_1_1Orientation.html#a36890e95967fc02803d17dc7c6e232b5a6e8b6f908d14cfa3951435d421f29506">Orientation::COLLINEAR</a></td></tr>
<tr class="memdesc:a7a698bf884ab1d18c9a2508b6ee67e8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant representing no orientation. <a href="#a7a698bf884ab1d18c9a2508b6ee67e8d">More...</a><br /></td></tr>
<tr class="separator:a7a698bf884ab1d18c9a2508b6ee67e8d"><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>Utility functions for working with angles. </p>
<p>Unless otherwise noted, methods in this class express angles in radians. </p>
<p>Definition at line <a class="el" href="Angle_8h_source.html#l00039">39</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a1510a92c16299367c5eeb982e1ac8209"></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::Angle::angle </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>Returns the angle of the vector from p0 to p1, relative to the positive X-axis. </p>
<p>The angle is normalized to be in the range [ -Pi, Pi ].</p>
<dl class="section return"><dt>Returns</dt><dd>the normalized angle (in radians) that p0-p1 makes with the positive x-axis. </dd></dl>
</div>
</div>
<a class="anchor" id="aee4dad3c63ac27529705e72bc44c315b"></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::Angle::angle </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><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 the angle that the vector from (0,0) to p, relative to the positive X-axis. </p>
<p>The angle is normalized to be in the range ( -Pi, Pi ].</p>
<dl class="section return"><dt>Returns</dt><dd>the normalized angle (in radians) that p makes with the positive x-axis. </dd></dl>
</div>
</div>
<a class="anchor" id="a37b9b3ef28618d538e459d9171331190"></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::Angle::angleBetween </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>tip1</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>tail</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>tip2</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 the unoriented smallest angle between two vectors.</p>
<p>The computed angle will be in the range [0, Pi).</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tip1</td><td>the tip of one vector </td></tr>
<tr><td class="paramname">tail</td><td>the tail of each vector </td></tr>
<tr><td class="paramname">tip2</td><td>the tip of the other vector </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the angle between tail-tip1 and tail-tip2 </dd></dl>
</div>
</div>
<a class="anchor" id="af483a721dcfc7506f70d3085408f991c"></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::Angle::angleBetweenOriented </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>tip1</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>tail</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>tip2</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 the oriented smallest angle between two vectors.</p>
<p>The computed angle will be in the range (-Pi, Pi]. A positive result corresponds to a counterclockwise rotation from v1 to v2; a negative result corresponds to a clockwise rotation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">tip1</td><td>the tip of v1 </td></tr>
<tr><td class="paramname">tail</td><td>the tail of each vector </td></tr>
<tr><td class="paramname">tip2</td><td>the tip of v2 </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the angle between v1 and v2, relative to v1 </dd></dl>
</div>
</div>
<a class="anchor" id="a11b9891ce2c21eb4988bcb18ac245e25"></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::Angle::diff </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>ang1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>ang2</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 unoriented smallest difference between two angles.</p>
<p>The angles are assumed to be normalized to the range [-Pi, Pi]. The result will be in the range [0, Pi].</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ang1</td><td>the angle of one vector (in [-Pi, Pi] ) </td></tr>
<tr><td class="paramname">ang2</td><td>the angle of the other vector (in range [-Pi, Pi] ) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the angle (in radians) between the two vectors (in range [0, Pi] ) </dd></dl>
</div>
</div>
<a class="anchor" id="a4e25f61567be2ab03f92d36c775a9b9b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int geos::algorithm::Angle::getTurn </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>ang1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>ang2</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 whether an angle must turn clockwise or counterclockwise to overlap another angle. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ang1</td><td>an angle (in radians) </td></tr>
<tr><td class="paramname">ang2</td><td>an angle (in radians) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>whether a1 must turn CLOCKWISE, COUNTERCLOCKWISE or NONE to overlap a2. </dd></dl>
</div>
</div>
<a class="anchor" id="a7d0faa9a4613314b73a211afbd475b2c"></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::Angle::interiorAngle </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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 interior angle between two segments of a ring.</p>
<p>The ring is assumed to be oriented in a clockwise direction. The computed angle will be in the range [0, 2Pi]</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>a point of the ring </td></tr>
<tr><td class="paramname">p1</td><td>the next point of the ring </td></tr>
<tr><td class="paramname">p2</td><td>the next point of the ring </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the interior angle based at <code>p1</code> </dd></dl>
</div>
</div>
<a class="anchor" id="a8ead08040de37e155075f32439c7c3b3"></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::Angle::isAcute </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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>Tests whether the angle between p0-p1-p2 is acute.</p>
<p>An angle is acute if it is less than 90 degrees.</p>
<p>Note: this implementation is not precise (determistic) for angles very close to 90 degrees.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>an endpoint of the angle </td></tr>
<tr><td class="paramname">p1</td><td>the base of the angle </td></tr>
<tr><td class="paramname">p2</td><td>the other endpoint of the angle </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a43f4f2031e72038b9e6931da59330954"></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::Angle::isObtuse </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p0</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &amp;&#160;</td>
<td class="paramname"><em>p2</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></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>Tests whether the angle between p0-p1-p2 is obtuse.</p>
<p>An angle is obtuse if it is greater than 90 degrees.</p>
<p>Note: this implementation is not precise (determistic) for angles very close to 90 degrees.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">p0</td><td>an endpoint of the angle </td></tr>
<tr><td class="paramname">p1</td><td>the base of the angle </td></tr>
<tr><td class="paramname">p2</td><td>the other endpoint of the angle </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="ad9ba65b29aaae8715cbf5d77dc7da077"></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::Angle::normalize </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>angle</em></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 normalized value of an angle, which is the equivalent angle in the range ( -Pi, Pi ]. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">angle</td><td>the angle to normalize </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an equivalent angle in the range (-Pi, Pi] </dd></dl>
</div>
</div>
<a class="anchor" id="aad6d7eb020edf56d3289bb58b7235997"></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::Angle::normalizePositive </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>angle</em></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 normalized positive value of an angle, which is the equivalent angle in the range [ 0, 2*Pi ). </p>
<p>E.g.:</p><ul>
<li>normalizePositive(0.0) = 0.0</li>
<li>normalizePositive(-PI) = PI</li>
<li>normalizePositive(-2PI) = 0.0</li>
<li>normalizePositive(-3PI) = PI</li>
<li>normalizePositive(-4PI) = 0</li>
<li>normalizePositive(PI) = PI</li>
<li>normalizePositive(2PI) = 0.0</li>
<li>normalizePositive(3PI) = PI</li>
<li>normalizePositive(4PI) = 0.0</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">angle</td><td>the angle to normalize, in radians </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an equivalent positive angle </dd></dl>
</div>
</div>
<a class="anchor" id="a9ad83c541e462f7e87f4ccb4453aa6ef"></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::Angle::toDegrees </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>radians</em></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>Converts from radians to degrees.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">radians</td><td>an angle in radians </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the angle in degrees </dd></dl>
</div>
</div>
<a class="anchor" id="aeb3a56d12a8acaf534be3a9be1e66885"></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::Angle::toRadians </td>
<td>(</td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>angleDegrees</em></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>Converts from degrees to radians.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">angleDegrees</td><td>an angle in degrees </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the angle in radians </dd></dl>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a5429234c5e29ec6f331320d2883fdcf9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::algorithm::Angle::CLOCKWISE = Orientation::CLOCKWISE</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>Constant representing clockwise orientation. </p>
<p>Definition at line <a class="el" href="Angle_8h_source.html#l00050">50</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div>
</div>
<a class="anchor" id="a735054807eb53b763cc95b8807642ee4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::algorithm::Angle::COUNTERCLOCKWISE = Orientation::COUNTERCLOCKWISE</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>Constant representing counterclockwise orientation. </p>
<p>Definition at line <a class="el" href="Angle_8h_source.html#l00047">47</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7a698bf884ab1d18c9a2508b6ee67e8d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const int geos::algorithm::Angle::NONE = <a class="el" href="classgeos_1_1algorithm_1_1Orientation.html#a36890e95967fc02803d17dc7c6e232b5a6e8b6f908d14cfa3951435d421f29506">Orientation::COLLINEAR</a></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>Constant representing no orientation. </p>
<p>Definition at line <a class="el" href="Angle_8h_source.html#l00053">53</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div>
</div>
<a class="anchor" id="a4c5129ca94c6f102f0fd1530991a6c3e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double geos::algorithm::Angle::PI_OVER_2</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>Definition at line <a class="el" href="Angle_8h_source.html#l00043">43</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div>
</div>
<a class="anchor" id="ab8fd7a590539526f27db780043138eb1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double geos::algorithm::Angle::PI_OVER_4</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>Definition at line <a class="el" href="Angle_8h_source.html#l00044">44</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div>
</div>
<a class="anchor" id="a851066e4c1a956519a623286cdeeeeba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const double geos::algorithm::Angle::PI_TIMES_2</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>Definition at line <a class="el" href="Angle_8h_source.html#l00042">42</a> of file <a class="el" href="Angle_8h_source.html">Angle.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="Angle_8h_source.html">Angle.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>