geos_390_docs/namespacegeos.html

267 lines
20 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 Namespace 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 class="current"><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><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="namespaces.html"><span>Namespace&#160;List</span></a></li>
<li><a href="namespacemembers.html"><span>Namespace&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">geos Namespace Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Basic namespace for all GEOS functionalities.
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacegeos_1_1algorithm"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1algorithm.html">algorithm</a></td></tr>
<tr class="memdesc:namespacegeos_1_1algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains classes and interfaces implementing fundamental computational geometry algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1detail"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1detail.html">detail</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1edgegraph"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1edgegraph.html">edgegraph</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1geom"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1geom.html">geom</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1geomgraph"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1geomgraph.html">geomgraph</a></td></tr>
<tr class="memdesc:namespacegeos_1_1geomgraph"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains classes that implement topology graphs. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1index"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1index.html">index</a></td></tr>
<tr class="memdesc:namespacegeos_1_1index"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides classes for various kinds of spatial indexes. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1io"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1io.html">io</a></td></tr>
<tr class="memdesc:namespacegeos_1_1io"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains the interfaces for converting JTS objects to and from other formats. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1linearref"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1linearref.html">linearref</a></td></tr>
<tr class="memdesc:namespacegeos_1_1linearref"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains classes and interfaces implementing linear referencing on linear geometries. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1math"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1math.html">math</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1noding"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1noding.html">noding</a></td></tr>
<tr class="memdesc:namespacegeos_1_1noding"><td class="mdescLeft">&#160;</td><td class="mdescRight">Classes to compute nodings for arrangements of line segments and line segment sequences. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1operation"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1operation.html">operation</a></td></tr>
<tr class="memdesc:namespacegeos_1_1operation"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides classes for implementing operations on geometries. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1planargraph"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1planargraph.html">planargraph</a></td></tr>
<tr class="memdesc:namespacegeos_1_1planargraph"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains classes to implement a planar graph data structure. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1precision"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1precision.html">precision</a></td></tr>
<tr class="memdesc:namespacegeos_1_1precision"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides classes for manipulating the precision model of Geometries. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1shape"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1shape.html">shape</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1simplify"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1simplify.html">simplify</a></td></tr>
<tr class="memdesc:namespacegeos_1_1simplify"><td class="mdescLeft">&#160;</td><td class="mdescRight">Classes which implement algorithms for simplifying or generalizing geometries. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1triangulate"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1triangulate.html">triangulate</a></td></tr>
<tr class="memdesc:namespacegeos_1_1triangulate"><td class="mdescLeft">&#160;</td><td class="mdescRight">Classes to compute Delaunay triangulations. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:namespacegeos_1_1util"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos_1_1util.html">util</a></td></tr>
<tr class="memdesc:namespacegeos_1_1util"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility classes for GEOS. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:adf0602c66307e651e7f07888eaab72f6"><td class="memTemplParams" colspan="2">template&lt;class T &gt; </td></tr>
<tr class="memitem:adf0602c66307e651e7f07888eaab72f6"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacegeos.html#adf0602c66307e651e7f07888eaab72f6">ignore_unused_variable_warning</a> (T const &amp;)</td></tr>
<tr class="separator:adf0602c66307e651e7f07888eaab72f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:af537681897661335bc531829214caf31"><td class="memItemLeft" align="right" valign="top">constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos.html#af537681897661335bc531829214caf31">MATH_PI</a> = 3.14159265358979323846</td></tr>
<tr class="separator:af537681897661335bc531829214caf31"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3207604faf2271d877e558c0c7fd2dcc"><td class="memItemLeft" align="right" valign="top">constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos.html#a3207604faf2271d877e558c0c7fd2dcc">DoubleNotANumber</a> = std::numeric_limits&lt;double&gt;::quiet_NaN()</td></tr>
<tr class="separator:a3207604faf2271d877e558c0c7fd2dcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80c8b290eaaa427328f150929d1846a9"><td class="memItemLeft" align="right" valign="top">constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos.html#a80c8b290eaaa427328f150929d1846a9">DoubleMax</a> = (std::numeric_limits&lt;double&gt;::max)()</td></tr>
<tr class="separator:a80c8b290eaaa427328f150929d1846a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1e8294465c26096c8651bf889d4a742"><td class="memItemLeft" align="right" valign="top">constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos.html#ac1e8294465c26096c8651bf889d4a742">DoubleInfinity</a> = (std::numeric_limits&lt;double&gt;::infinity)()</td></tr>
<tr class="separator:ac1e8294465c26096c8651bf889d4a742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25a52e38fe5ea7bce68d1dd5f9cba6e4"><td class="memItemLeft" align="right" valign="top">constexpr double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacegeos.html#a25a52e38fe5ea7bce68d1dd5f9cba6e4">DoubleNegInfinity</a> = (-(std::numeric_limits&lt;double&gt;::infinity)())</td></tr>
<tr class="separator:a25a52e38fe5ea7bce68d1dd5f9cba6e4"><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>Basic namespace for all GEOS functionalities. </p>
<p>Implements extended-precision floating-point numbers which maintain 106 bits (approximately 30 decimal digits) of precision. </p>
<p>A DoubleDouble uses a representation containing two double-precision values. A number x is represented as a pair of doubles, x.hi and x.lo, such that the number represented by x is x.hi + x.lo, where </p><pre>
|x.lo| &lt;= 0.5*ulp(x.hi)
</pre><p> and ulp(y) means "unit in the last place of y". The basic arithmetic operations are implemented using convenient properties of IEEE-754 floating-point arithmetic. </p>
<p>The range of values which can be represented is the same as in IEEE-754. The precision of the representable numbers is twice as great as IEEE-754 double precision. </p>
<p>The correctness of the arithmetic algorithms relies on operations being performed with standard IEEE-754 double precision and rounding. This is the Java standard arithmetic model, but for performance reasons Java implementations are not constrained to using this standard by default. Some processors (notably the Intel Pentium architecture) perform floating point operations in (non-IEEE-754-standard) extended-precision. A JVM implementation may choose to use the non-standard extended-precision as its default arithmetic mode. To prevent this from happening, this code uses the Java <code>strictfp</code> modifier, which forces all operations to take place in the standard IEEE-754 rounding model. </p>
<p>The API provides both a set of value-oriented operations and a set of mutating operations. Value-oriented operations treat DoubleDouble values as immutable; operations on them return new objects carrying the result of the operation. This provides a simple and safe semantics for writing DoubleDouble expressions. However, there is a performance penalty for the object allocations required. The mutable interface updates object values in-place. It provides optimum memory performance, but requires care to ensure that aliasing errors are not created and constant values are not changed. </p>
<p>For example, the following code example constructs three DD instances: two to hold the input values and one to hold the result of the addition. </p><pre>
DD a = new DD(2.0);
DD b = new DD(3.0);
DD c = a.add(b);
</pre><p> In contrast, the following approach uses only one object: </p><pre>
DD a = new DD(2.0);
a.selfAdd(3.0);
</pre> <p>This implementation uses algorithms originally designed variously by Knuth, Kahan, Dekker, and Linnainmaa. Douglas Priest developed the first C implementation of these techniques. Other more recent C++ implementation are due to Keith M. Briggs and David Bailey et al.</p>
<h3>References</h3>
<ul>
<li>
Priest, D., <em>Algorithms for Arbitrary Precision Floating Point Arithmetic</em>, in P. Kornerup and D. Matula, Eds., Proc. 10th Symposium on Computer Arithmetic, IEEE Computer Society Press, Los Alamitos, Calif., 1991. </li>
<li>
Yozo Hida, Xiaoye S. Li and David H. Bailey, <em>Quad-Double Arithmetic: Algorithms, Implementation, and Application</em>, manuscript, Oct 2000; Lawrence Berkeley National Laboratory Report BNL-46996. </li>
<li>
David Bailey, <em>High Precision Software Directory</em>; <code><a href="http://crd.lbl.gov/~dhbailey/mpdist/index.html">http://crd.lbl.gov/~dhbailey/mpdist/index.html</a></code> </li>
</ul>
<dl class="section author"><dt>Author</dt><dd>Martin Davis </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="adf0602c66307e651e7f07888eaab72f6"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T &gt; </div>
<table class="memname">
<tr>
<td class="memname">void geos::ignore_unused_variable_warning </td>
<td>(</td>
<td class="paramtype">T const &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="util_8h_source.html#l00044">44</a> of file <a class="el" href="util_8h_source.html">util.h</a>.</p>
<p>Referenced by <a class="el" href="ScaledNoder_8h_source.html#l00090">geos::noding::ScaledNoder::filter_ro()</a>, <a class="el" href="Octant_8h_source.html#l00066">geos::noding::Octant::octant()</a>, and <a class="el" href="PointBuilder_8h_source.html#l00086">geos::operation::overlay::PointBuilder::PointBuilder()</a>.</p>
<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="namespacegeos_adf0602c66307e651e7f07888eaab72f6_icgraph.svg" width="411" height="191"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="ac1e8294465c26096c8651bf889d4a742"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr double geos::DoubleInfinity = (std::numeric_limits&lt;double&gt;::infinity)()</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="constants_8h_source.html#l00046">46</a> of file <a class="el" href="constants_8h_source.html">constants.h</a>.</p>
</div>
</div>
<a class="anchor" id="a80c8b290eaaa427328f150929d1846a9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr double geos::DoubleMax = (std::numeric_limits&lt;double&gt;::max)()</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="constants_8h_source.html#l00045">45</a> of file <a class="el" href="constants_8h_source.html">constants.h</a>.</p>
</div>
</div>
<a class="anchor" id="a25a52e38fe5ea7bce68d1dd5f9cba6e4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr double geos::DoubleNegInfinity = (-(std::numeric_limits&lt;double&gt;::infinity)())</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="constants_8h_source.html#l00047">47</a> of file <a class="el" href="constants_8h_source.html">constants.h</a>.</p>
</div>
</div>
<a class="anchor" id="a3207604faf2271d877e558c0c7fd2dcc"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr double geos::DoubleNotANumber = std::numeric_limits&lt;double&gt;::quiet_NaN()</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="constants_8h_source.html#l00044">44</a> of file <a class="el" href="constants_8h_source.html">constants.h</a>.</p>
<p>Referenced by <a class="el" href="ElevationModel_8h_source.html#l00089">geos::operation::overlayng::ElevationModel::ElevationCell::compute()</a>.</p>
</div>
</div>
<a class="anchor" id="af537681897661335bc531829214caf31"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">constexpr double geos::MATH_PI = 3.14159265358979323846</td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="constants_8h_source.html#l00039">39</a> of file <a class="el" href="constants_8h_source.html">constants.h</a>.</p>
</div>
</div>
</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>