75 _earth.GenInverse(_lat1, _lon1, lat, lon, _mask,
76 s12, t, t, t, t, t, S12);
80 _crossings += transit(_lon1, lon);
82 _lat1 = lat; _lon1 = lon;
90 real lat, lon, S12, t;
91 _earth.GenDirect(_lat1, _lon1, azi,
false, s, _mask,
92 lat, lon, t, t, t, t, t, S12);
96 _crossings += transitdirect(_lon1, lon);
98 _lat1 = lat; _lon1 = lon;
105 real& perimeter, real& area)
const
115 perimeter = _perimetersum();
118 _earth.GenInverse(_lat1, _lon1, _lat0, _lon0, _mask,
119 s12, t, t, t, t, t, S12);
120 perimeter = _perimetersum(s12);
123 int crossings = _crossings + transit(_lon1, _lon0);
124 AreaReduce(tempsum, crossings, reverse, sign);
125 area =
real(0) + tempsum();
131 bool reverse,
bool sign,
132 real& perimeter, real& area)
const
140 perimeter = _perimetersum();
141 real tempsum = _polyline ? 0 : _areasum();
142 int crossings = _crossings;
143 unsigned num = _num + 1;
144 for (
int i = 0; i < (_polyline ? 1 : 2); ++i) {
146 _earth.GenInverse(i == 0 ? _lat1 : lat, i == 0 ? _lon1 : lon,
147 i != 0 ? _lat0 : lat, i != 0 ? _lon0 : lon,
148 _mask, s12, t, t, t, t, t, S12);
152 crossings += transit(i == 0 ? _lon1 : lon,
153 i != 0 ? _lon0 : lon);
160 AreaReduce(tempsum, crossings, reverse, sign);
161 area =
real(0) + tempsum;
167 bool reverse,
bool sign,
168 real& perimeter, real& area)
const
176 unsigned num = _num + 1;
177 perimeter = _perimetersum() + s;
181 real tempsum = _areasum();
182 int crossings = _crossings;
184 real lat, lon, s12, S12, t;
185 _earth.GenDirect(_lat1, _lon1, azi,
false, s, _mask,
186 lat, lon, t, t, t, t, t, S12);
188 crossings += transitdirect(_lon1, lon);
189 _earth.GenInverse(lat, lon, _lat0, _lon0, _mask,
190 s12, t, t, t, t, t, S12);
193 crossings += transit(lon, _lon0);
196 AreaReduce(tempsum, crossings, reverse, sign);
197 area =
real(0) + tempsum;