Imported Upstream version 1.63.0
[platform/upstream/boost.git] / libs / geometry / doc / doxy / doxygen_output / html_by_doxygen / classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
5 <title>Boost.Geometry (aka GGL, Generic Geometry Library)</title>
6 <link href="doxygen.css" rel="stylesheet" type="text/css">
7 <link href="tabs.css" rel="stylesheet" type="text/css">
8 </head>
9 <table cellpadding="2" width="100%">
10 <tbody>
11 <tr>
12 <td valign="top">
13 <img alt="Boost.Geometry" src="images/ggl-logo-big.png" height="80" width="200">
14 &nbsp;&nbsp;
15 </td>
16 <td valign="top" align="right">
17 <a href="http://www.boost.org">
18 <img alt="Boost C++ Libraries" src="images/accepted_by_boost.png" height="80" width="230" border="0">
19 </a>
20 </td>
21 </tr>
22 </tbody>
23 </table>
24 <!-- Generated by Doxygen 1.8.6 -->
25   <div id="navrow1" class="tabs">
26     <ul class="tablist">
27       <li><a href="index.html"><span>Main&#160;Page</span></a></li>
28       <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
29       <li><a href="modules.html"><span>Modules</span></a></li>
30       <li><a href="namespaces.html"><span>Namespaces</span></a></li>
31       <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
32       <li><a href="files.html"><span>Files</span></a></li>
33       <li><a href="examples.html"><span>Examples</span></a></li>
34     </ul>
35   </div>
36   <div id="navrow2" class="tabs2">
37     <ul class="tablist">
38       <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
39       <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
40       <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
41       <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
42     </ul>
43   </div>
44 <div id="nav-path" class="navpath">
45   <ul>
46 <li class="navelem"><a class="el" href="namespaceboost.html">boost</a></li><li class="navelem"><a class="el" href="namespaceboost_1_1geometry.html">geometry</a></li><li class="navelem"><a class="el" href="namespaceboost_1_1geometry_1_1strategy.html">strategy</a></li><li class="navelem"><a class="el" href="namespaceboost_1_1geometry_1_1strategy_1_1area.html">area</a></li><li class="navelem"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">huiller</a></li>  </ul>
47 </div>
48 </div><!-- top -->
49 <div class="header">
50   <div class="summary">
51 <a href="#nested-classes">Classes</a> &#124;
52 <a href="#pub-types">Public Types</a> &#124;
53 <a href="#pub-methods">Public Member Functions</a> &#124;
54 <a href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller-members.html">List of all members</a>  </div>
55   <div class="headertitle">
56 <div class="title">boost::geometry::strategy::area::huiller&lt; PointOfSegment, CalculationType &gt; Class Template Reference<div class="ingroups"><a class="el" href="group__strategies.html">strategies: strategies</a></div></div>  </div>
57 </div><!--header-->
58 <div class="contents">
59
60 <p>Area calculation by spherical excess / Huiller's formula.  
61  <a href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#details">More...</a></p>
62 <table class="memberdecls">
63 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
64 Classes</h2></td></tr>
65 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a></td></tr>
66 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
67 </table><table class="memberdecls">
68 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
69 Public Types</h2></td></tr>
70 <tr class="memitem:afd6c4e54b9fb086eca7630b8f50eaf81"><td class="memItemLeft" align="right" valign="top">typedef calculation_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#afd6c4e54b9fb086eca7630b8f50eaf81">return_type</a></td></tr>
71 <tr class="separator:afd6c4e54b9fb086eca7630b8f50eaf81"><td class="memSeparator" colspan="2">&#160;</td></tr>
72 <tr class="memitem:a2ec31243d35ffaebcf60e76046bd6b4a"><td class="memItemLeft" align="right" valign="top">typedef PointOfSegment&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a2ec31243d35ffaebcf60e76046bd6b4a">segment_point_type</a></td></tr>
73 <tr class="separator:a2ec31243d35ffaebcf60e76046bd6b4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
74 <tr class="memitem:a67222a1964b0458b34367fbfb23ae942"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a67222a1964b0458b34367fbfb23ae942">state_type</a></td></tr>
75 <tr class="separator:a67222a1964b0458b34367fbfb23ae942"><td class="memSeparator" colspan="2">&#160;</td></tr>
76 </table><table class="memberdecls">
77 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
78 Public Member Functions</h2></td></tr>
79 <tr class="memitem:acc2ad98fa0ae1a6c32419f455c1aeb81"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#acc2ad98fa0ae1a6c32419f455c1aeb81">apply</a> (PointOfSegment const &amp;p1, PointOfSegment const &amp;p2, <a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a> &amp;state) const </td></tr>
80 <tr class="separator:acc2ad98fa0ae1a6c32419f455c1aeb81"><td class="memSeparator" colspan="2">&#160;</td></tr>
81 <tr class="memitem:a68d4bfec6da6c181cf1cf56faa134fda"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a68d4bfec6da6c181cf1cf56faa134fda">huiller</a> (calculation_type radius=1.0)</td></tr>
82 <tr class="separator:a68d4bfec6da6c181cf1cf56faa134fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
83 <tr class="memitem:ab5db2c52ce8b4cdcc504d07990d7c2b9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#afd6c4e54b9fb086eca7630b8f50eaf81">return_type</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#ab5db2c52ce8b4cdcc504d07990d7c2b9">result</a> (<a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a> const &amp;state) const </td></tr>
84 <tr class="separator:ab5db2c52ce8b4cdcc504d07990d7c2b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
85 </table>
86 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
87 <div class="textblock"><h3>template&lt;typename PointOfSegment, typename CalculationType = void&gt;<br/>
88 class boost::geometry::strategy::area::huiller&lt; PointOfSegment, CalculationType &gt;</h3>
89
90 <p>Area calculation by spherical excess / Huiller's formula. </p>
91 <dl class="tparams"><dt>Template Parameters</dt><dd>
92   <table class="tparams">
93     <tr><td class="paramname">PointOfSegment</td><td>point type of segments of rings/polygons </td></tr>
94     <tr><td class="paramname">CalculationType</td><td>numeric type for calculation (e.g. high precision); if [*void] then it is extracted automatically from the coordinate type and (if necessary) promoted to floating point </td></tr>
95   </table>
96   </dd>
97 </dl>
98 <dl class="section author"><dt>Author</dt><dd>Barend Gehrels. Adapted from:<ul>
99 <li><a href="http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gemsiv/sph_poly.c">http://webdocs.cs.ualberta.ca/~graphics/books/GraphicsGems/gemsiv/sph_poly.c</a></li>
100 <li><a href="http://tog.acm.org/resources/GraphicsGems/gemsiv/sph_poly.c">http://tog.acm.org/resources/GraphicsGems/gemsiv/sph_poly.c</a></li>
101 <li><a href="http://williams.best.vwh.net/avform.htm">http://williams.best.vwh.net/avform.htm</a> </li>
102 </ul>
103 </dd></dl>
104 <dl class="section note"><dt>Note</dt><dd>The version in Graphics Gems IV (page 132-137) didn't account for polygons crossing the 0 and 180 meridians. The fix for this algorithm can be found in Graphics Gems V (pages 45-46). See:<ul>
105 <li><a href="http://kysmykseka.net/koti/wizardry/Game%20Development/Programming/Graphics%20Gems%204.pdf">http://kysmykseka.net/koti/wizardry/Game%20Development/Programming/Graphics%20Gems%204.pdf</a></li>
106 <li><a href="http://kysmykseka.net/koti/wizardry/Game%20Development/Programming/Graphics%20Gems%205.pdf">http://kysmykseka.net/koti/wizardry/Game%20Development/Programming/Graphics%20Gems%205.pdf</a> </li>
107 </ul>
108 </dd>
109 <dd>
110 This version works for convex and non-convex polygons, for 180 meridian crossing polygons and for polygons with holes. However, some cases (especially 180 meridian cases) must still be checked. </dd>
111 <dd>
112 The version which sums angles, which is often seen, doesn't handle non-convex polygons correctly. </dd>
113 <dd>
114 The version which sums longitudes, see <a href="http://hdl.handle.net/2014/40409,">http://hdl.handle.net/2014/40409,</a> is simple and works well in most cases but not in 180 meridian crossing cases. This probably could be solved.</dd>
115 <dd>
116 This version is made for spherical equatorial coordinate systems</dd></dl>
117  </div><h2 class="groupheader">Member Typedef Documentation</h2>
118 <a class="anchor" id="afd6c4e54b9fb086eca7630b8f50eaf81"></a>
119 <div class="memitem">
120 <div class="memproto">
121 <div class="memtemplate">
122 template&lt;typename PointOfSegment , typename CalculationType  = void&gt; </div>
123       <table class="memname">
124         <tr>
125           <td class="memname">typedef calculation_type <a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>&lt; PointOfSegment, CalculationType &gt;::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#afd6c4e54b9fb086eca7630b8f50eaf81">return_type</a></td>
126         </tr>
127       </table>
128 </div><div class="memdoc">
129
130 </div>
131 </div>
132 <a class="anchor" id="a2ec31243d35ffaebcf60e76046bd6b4a"></a>
133 <div class="memitem">
134 <div class="memproto">
135 <div class="memtemplate">
136 template&lt;typename PointOfSegment , typename CalculationType  = void&gt; </div>
137       <table class="memname">
138         <tr>
139           <td class="memname">typedef PointOfSegment <a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>&lt; PointOfSegment, CalculationType &gt;::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a2ec31243d35ffaebcf60e76046bd6b4a">segment_point_type</a></td>
140         </tr>
141       </table>
142 </div><div class="memdoc">
143
144 </div>
145 </div>
146 <a class="anchor" id="a67222a1964b0458b34367fbfb23ae942"></a>
147 <div class="memitem">
148 <div class="memproto">
149 <div class="memtemplate">
150 template&lt;typename PointOfSegment , typename CalculationType  = void&gt; </div>
151       <table class="memname">
152         <tr>
153           <td class="memname">typedef <a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a> <a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>&lt; PointOfSegment, CalculationType &gt;::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a67222a1964b0458b34367fbfb23ae942">state_type</a></td>
154         </tr>
155       </table>
156 </div><div class="memdoc">
157
158 </div>
159 </div>
160 <h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
161 <a class="anchor" id="a68d4bfec6da6c181cf1cf56faa134fda"></a>
162 <div class="memitem">
163 <div class="memproto">
164 <div class="memtemplate">
165 template&lt;typename PointOfSegment , typename CalculationType  = void&gt; </div>
166       <table class="memname">
167         <tr>
168           <td class="memname"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>&lt; PointOfSegment, CalculationType &gt;::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">huiller</a> </td>
169           <td>(</td>
170           <td class="paramtype">calculation_type&#160;</td>
171           <td class="paramname"><em>radius</em> = <code>1.0</code></td><td>)</td>
172           <td></td>
173         </tr>
174       </table>
175 </div><div class="memdoc">
176
177 </div>
178 </div>
179 <h2 class="groupheader">Member Function Documentation</h2>
180 <a class="anchor" id="acc2ad98fa0ae1a6c32419f455c1aeb81"></a>
181 <div class="memitem">
182 <div class="memproto">
183 <div class="memtemplate">
184 template&lt;typename PointOfSegment , typename CalculationType  = void&gt; </div>
185       <table class="memname">
186         <tr>
187           <td class="memname">void <a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>&lt; PointOfSegment, CalculationType &gt;::apply </td>
188           <td>(</td>
189           <td class="paramtype">PointOfSegment const &amp;&#160;</td>
190           <td class="paramname"><em>p1</em>, </td>
191         </tr>
192         <tr>
193           <td class="paramkey"></td>
194           <td></td>
195           <td class="paramtype">PointOfSegment const &amp;&#160;</td>
196           <td class="paramname"><em>p2</em>, </td>
197         </tr>
198         <tr>
199           <td class="paramkey"></td>
200           <td></td>
201           <td class="paramtype"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a> &amp;&#160;</td>
202           <td class="paramname"><em>state</em>&#160;</td>
203         </tr>
204         <tr>
205           <td></td>
206           <td>)</td>
207           <td></td><td> const</td>
208         </tr>
209       </table>
210 </div><div class="memdoc">
211
212 </div>
213 </div>
214 <a class="anchor" id="ab5db2c52ce8b4cdcc504d07990d7c2b9"></a>
215 <div class="memitem">
216 <div class="memproto">
217 <div class="memtemplate">
218 template&lt;typename PointOfSegment , typename CalculationType  = void&gt; </div>
219       <table class="memname">
220         <tr>
221           <td class="memname"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#afd6c4e54b9fb086eca7630b8f50eaf81">return_type</a> <a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>&lt; PointOfSegment, CalculationType &gt;::result </td>
222           <td>(</td>
223           <td class="paramtype"><a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a> const &amp;&#160;</td>
224           <td class="paramname"><em>state</em></td><td>)</td>
225           <td> const</td>
226         </tr>
227       </table>
228 </div><div class="memdoc">
229
230 </div>
231 </div>
232 </div><!-- contents -->
233 <hr size="1">
234 <table width="100%">
235 <tbody>
236 <tr>
237 <td align="left"><small>
238 <p>April 2, 2011</p>
239 </small></td>
240 <td align="right">
241 <small>
242 Copyright &copy; 2007-2011 Barend Gehrels, Amsterdam, the Netherlands<br>
243 Copyright &copy; 2008-2011 Bruno Lalande, Paris, France<br>
244 Copyright &copy; 2009-2010 Mateusz Loskot, London, UK<br>
245 </small>
246 </td>
247 </tr>
248 </tbody>
249 </table>
250 <address style="text-align: right;"><small>
251 Documentation is generated by&nbsp;<a href="http://www.doxygen.org/index.html">Doxygen</a>
252 </small></address>
253 </body>
254 </html>