1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
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">
9 <table cellpadding="2" width="100%">
13 <img alt="Boost.Geometry" src="images/ggl-logo-big.png" height="80" width="200">
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">
24 <!-- Generated by Doxygen 1.8.6 -->
25 <div id="navrow1" class="tabs">
27 <li><a href="index.html"><span>Main Page</span></a></li>
28 <li><a href="pages.html"><span>Related 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>
36 <div id="navrow2" class="tabs2">
38 <li><a href="annotated.html"><span>Class List</span></a></li>
39 <li><a href="classes.html"><span>Class Index</span></a></li>
40 <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
41 <li><a href="functions.html"><span>Class Members</span></a></li>
44 <div id="nav-path" class="navpath">
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>
51 <a href="#nested-classes">Classes</a> |
52 <a href="#pub-types">Public Types</a> |
53 <a href="#pub-methods">Public Member Functions</a> |
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< PointOfSegment, CalculationType > Class Template Reference<div class="ingroups"><a class="el" href="group__strategies.html">strategies: strategies</a></div></div> </div>
58 <div class="contents">
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  </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"> </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 </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"> </td></tr>
72 <tr class="memitem:a2ec31243d35ffaebcf60e76046bd6b4a"><td class="memItemLeft" align="right" valign="top">typedef PointOfSegment </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"> </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> </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"> </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 </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 &p1, PointOfSegment const &p2, <a class="el" href="structboost_1_1geometry_1_1strategy_1_1area_1_1huiller_1_1excess__sum.html">excess_sum</a> &state) const </td></tr>
80 <tr class="separator:acc2ad98fa0ae1a6c32419f455c1aeb81"><td class="memSeparator" colspan="2"> </td></tr>
81 <tr class="memitem:a68d4bfec6da6c181cf1cf56faa134fda"><td class="memItemLeft" align="right" valign="top"> </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"> </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> </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 &state) const </td></tr>
84 <tr class="separator:ab5db2c52ce8b4cdcc504d07990d7c2b9"><td class="memSeparator" colspan="2"> </td></tr>
86 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
87 <div class="textblock"><h3>template<typename PointOfSegment, typename CalculationType = void><br/>
88 class boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType ></h3>
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>
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>
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>
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>
112 The version which sums angles, which is often seen, doesn't handle non-convex polygons correctly. </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>
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<typename PointOfSegment , typename CalculationType = void> </div>
123 <table class="memname">
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>< PointOfSegment, CalculationType >::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#afd6c4e54b9fb086eca7630b8f50eaf81">return_type</a></td>
128 </div><div class="memdoc">
132 <a class="anchor" id="a2ec31243d35ffaebcf60e76046bd6b4a"></a>
133 <div class="memitem">
134 <div class="memproto">
135 <div class="memtemplate">
136 template<typename PointOfSegment , typename CalculationType = void> </div>
137 <table class="memname">
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>< PointOfSegment, CalculationType >::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a2ec31243d35ffaebcf60e76046bd6b4a">segment_point_type</a></td>
142 </div><div class="memdoc">
146 <a class="anchor" id="a67222a1964b0458b34367fbfb23ae942"></a>
147 <div class="memitem">
148 <div class="memproto">
149 <div class="memtemplate">
150 template<typename PointOfSegment , typename CalculationType = void> </div>
151 <table class="memname">
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>< PointOfSegment, CalculationType >::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html#a67222a1964b0458b34367fbfb23ae942">state_type</a></td>
156 </div><div class="memdoc">
160 <h2 class="groupheader">Constructor & Destructor Documentation</h2>
161 <a class="anchor" id="a68d4bfec6da6c181cf1cf56faa134fda"></a>
162 <div class="memitem">
163 <div class="memproto">
164 <div class="memtemplate">
165 template<typename PointOfSegment , typename CalculationType = void> </div>
166 <table class="memname">
168 <td class="memname"><a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">boost::geometry::strategy::area::huiller</a>< PointOfSegment, CalculationType >::<a class="el" href="classboost_1_1geometry_1_1strategy_1_1area_1_1huiller.html">huiller</a> </td>
170 <td class="paramtype">calculation_type </td>
171 <td class="paramname"><em>radius</em> = <code>1.0</code></td><td>)</td>
175 </div><div class="memdoc">
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<typename PointOfSegment , typename CalculationType = void> </div>
185 <table class="memname">
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>< PointOfSegment, CalculationType >::apply </td>
189 <td class="paramtype">PointOfSegment const & </td>
190 <td class="paramname"><em>p1</em>, </td>
193 <td class="paramkey"></td>
195 <td class="paramtype">PointOfSegment const & </td>
196 <td class="paramname"><em>p2</em>, </td>
199 <td class="paramkey"></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> & </td>
202 <td class="paramname"><em>state</em> </td>
207 <td></td><td> const</td>
210 </div><div class="memdoc">
214 <a class="anchor" id="ab5db2c52ce8b4cdcc504d07990d7c2b9"></a>
215 <div class="memitem">
216 <div class="memproto">
217 <div class="memtemplate">
218 template<typename PointOfSegment , typename CalculationType = void> </div>
219 <table class="memname">
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>< PointOfSegment, CalculationType >::result </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 & </td>
224 <td class="paramname"><em>state</em></td><td>)</td>
228 </div><div class="memdoc">
232 </div><!-- contents -->
237 <td align="left"><small>
242 Copyright © 2007-2011 Barend Gehrels, Amsterdam, the Netherlands<br>
243 Copyright © 2008-2011 Bruno Lalande, Paris, France<br>
244 Copyright © 2009-2010 Mateusz Loskot, London, UK<br>
250 <address style="text-align: right;"><small>
251 Documentation is generated by <a href="http://www.doxygen.org/index.html">Doxygen</a>