Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType > Class Template Reference

Area calculation by spherical excess / Huiller's formula. More...

#include <area_huiller.hpp>

Classes

struct  excess_sum
 

Public Types

typedef calculation_type return_type
 
typedef PointOfSegment segment_point_type
 
typedef excess_sum state_type
 

Public Member Functions

 huiller (calculation_type radius=1.0)
 
void apply (PointOfSegment const &p1, PointOfSegment const &p2, excess_sum &state) const
 
return_type result (excess_sum const &state) const
 

Detailed Description

template<typename PointOfSegment, typename CalculationType = void>
class boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType >

Area calculation by spherical excess / Huiller's formula.

Template Parameters
PointOfSegmentpoint type of segments of rings/polygons
CalculationType
Author
Barend Gehrels. Adapted from:
Note
The version in Gems didn't account for polygons crossing the 180 meridian.
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.
The version which sums angles, which is often seen, doesn't handle non-convex polygons correctly.
The version which sums longitudes, see http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/40409/1/07-03.pdf, is simple and works well in most cases but not in 180 meridian crossing cases. This probably could be solved.
This version is made for spherical equatorial coordinate systems

{

[heading Example] [area_with_strategy] [area_with_strategy_output]

[heading See also] [link geometry.reference.algorithms.area.area_2_with_strategy area (with strategy)] }

Member Typedef Documentation

template<typename PointOfSegment , typename CalculationType = void>
typedef calculation_type boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType >::return_type
template<typename PointOfSegment , typename CalculationType = void>
typedef PointOfSegment boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType >::segment_point_type
template<typename PointOfSegment , typename CalculationType = void>
typedef excess_sum boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType >::state_type

Constructor & Destructor Documentation

template<typename PointOfSegment , typename CalculationType = void>
boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType >::huiller ( calculation_type  radius = 1.0)
inline

Member Function Documentation

template<typename PointOfSegment , typename CalculationType = void>
return_type boost::geometry::strategy::area::huiller< PointOfSegment, CalculationType >::result ( excess_sum const &  state) const
inline

The documentation for this class was generated from the following file: