10 #if !defined(GEOGRAPHICLIB_POLYGONAREA_HPP)
11 #define GEOGRAPHICLIB_POLYGONAREA_HPP 1
64 template <
class GeodType = Geodesic>
75 real _lat0, _lon0, _lat1, _lon1;
76 static int transit(real lon1, real lon2) {
86 lon1 <= 0 && lon2 > 0 && lon12 > 0 ? 1 :
87 (lon2 <= 0 && lon1 > 0 && lon12 < 0 ? -1 : 0);
92 static int transitdirect(real lon1, real lon2) {
99 #if GEOGRAPHICLIB_CXX11_MATH && GEOGRAPHICLIB_PRECISION != 4
100 using std::remainder;
101 lon1 = remainder(lon1, real(720)); lon2 = remainder(lon2, real(720));
102 return ( (lon2 >= 0 && lon2 < 360 ? 0 : 1) -
103 (lon1 >= 0 && lon1 < 360 ? 0 : 1) );
106 lon1 = fmod(lon1, real(720)); lon2 = fmod(lon2, real(720));
107 return ( ((lon2 >= 0 && lon2 < 360) || lon2 < -360 ? 0 : 1) -
108 ((lon1 >= 0 && lon1 < 360) || lon1 < -360 ? 0 : 1) );
122 , _area0(_earth.EllipsoidArea())
123 , _polyline(polyline)
124 , _mask(GeodType::LATITUDE | GeodType::LONGITUDE | GeodType::DISTANCE |
125 (_polyline ? GeodType::NONE :
126 GeodType::AREA | GeodType::LONG_UNROLL))
137 _lat0 = _lon0 = _lat1 = _lon1 =
Math::NaN();
177 unsigned Compute(
bool reverse,
bool sign,
260 { lat = _lat1; lon = _lon1; }
290 #endif // GEOGRAPHICLIB_POLYGONAREA_HPP