70 _earth.GenInverse(_lat1, _lon1, lat, lon, _mask,
71 s12, t, t, t, t, t, S12);
75 _crossings += transit(_lon1, lon);
77 _lat1 = lat; _lon1 = lon;
85 real lat, lon, S12, t;
86 _earth.GenDirect(_lat1, _lon1, azi,
false, s, _mask,
87 lat, lon, t, t, t, t, t, S12);
91 _crossings += transitdirect(_lon1, lon);
93 _lat1 = lat; _lon1 = lon;
100 real& perimeter, real& area)
const
110 perimeter = _perimetersum();
113 _earth.GenInverse(_lat1, _lon1, _lat0, _lon0, _mask,
114 s12, t, t, t, t, t, S12);
115 perimeter = _perimetersum(s12);
118 int crossings = _crossings + transit(_lon1, _lon0);
119 AreaReduce(tempsum, crossings, reverse, sign);
120 area =
real(0) + tempsum();
126 bool reverse,
bool sign,
127 real& perimeter, real& area)
const
135 perimeter = _perimetersum();
136 real tempsum = _polyline ? 0 : _areasum();
137 int crossings = _crossings;
138 unsigned num = _num + 1;
139 for (
int i = 0; i < (_polyline ? 1 : 2); ++i) {
141 _earth.GenInverse(i == 0 ? _lat1 : lat, i == 0 ? _lon1 : lon,
142 i != 0 ? _lat0 : lat, i != 0 ? _lon0 : lon,
143 _mask, s12, t, t, t, t, t, S12);
147 crossings += transit(i == 0 ? _lon1 : lon,
148 i != 0 ? _lon0 : lon);
155 AreaReduce(tempsum, crossings, reverse, sign);
156 area =
real(0) + tempsum;
162 bool reverse,
bool sign,
163 real& perimeter, real& area)
const
171 unsigned num = _num + 1;
172 perimeter = _perimetersum() + s;
176 real tempsum = _areasum();
177 int crossings = _crossings;
179 real lat, lon, s12, S12, t;
180 _earth.GenDirect(_lat1, _lon1, azi,
false, s, _mask,
181 lat, lon, t, t, t, t, t, S12);
183 crossings += transitdirect(_lon1, lon);
184 _earth.GenInverse(lat, lon, _lat0, _lon0, _mask,
185 s12, t, t, t, t, t, S12);
188 crossings += transit(lon, _lon0);
191 AreaReduce(tempsum, crossings, reverse, sign);
192 area =
real(0) + tempsum;