54 Angle(longitude, longitudeUnits) {
55 if(mapping[
"LongitudeDomain"][0] ==
"360") {
58 else if(mapping[
"LongitudeDomain"][0] ==
"180") {
62 IString msg =
"Longitude domain [" +
63 IString(mapping[
"LongitudeDomain"][0]) +
"] not recognized";
67 if(mapping[
"LongitudeDirection"][0] ==
"PositiveEast") {
70 else if(mapping[
"LongitudeDirection"][0] ==
"PositiveWest") {
74 IString msg =
"Longitude direction [" +
75 IString(mapping[
"LongitudeDirection"][0]) +
"] not recognized";
101 IString msg =
"Longitude direction [" +
IString(lonDir) +
"] not valid";
118 Angle(longitude, longitudeUnits) {
128 IString msg =
"Longitude direction [" +
IString(lonDir) +
"] not valid";
140 :
Angle(longitudeToCopy) {
172 double longitude =
angle(units);
177 double halfWrap = wrapPoint / 2.0;
179 int numPlanetWraps = qFloor(longitude / wrapPoint);
184 if (numPlanetWraps != 0 && qFuzzyCompare(numPlanetWraps * wrapPoint, longitude)) {
185 if (numPlanetWraps > 0)
191 longitude -= numPlanetWraps * wrapPoint;
192 longitude = -(longitude - halfWrap) + halfWrap;
193 longitude -= numPlanetWraps * wrapPoint;
198 longitude = -1 * longitude;
228 double halfWrap = wrapPoint / 2.0;
230 int numPlanetWraps = qFloor(longitude / wrapPoint);
235 if (numPlanetWraps != 0 && qFuzzyCompare(numPlanetWraps * wrapPoint, longitude)) {
236 if (numPlanetWraps > 0)
243 longitude -= numPlanetWraps * wrapPoint;
244 longitude = -(longitude - halfWrap) + halfWrap;
245 longitude -= numPlanetWraps * wrapPoint;
250 longitude = -1 * longitude;
266 if(
this == &longitudeToCopy)
return *
this;
286 if (qFuzzyCompare(
degrees(), 360.0)) {
287 resultantLongitude = 360.0;
290 resultantLongitude -= 360 * qFloor(resultantLongitude / 360);
340 foreach (range, ranges) {
341 if (thisLon >= range.first && thisLon <= range.second) {
345 double thisLonRadians = thisLon.
radians();
346 double rangeStartRadians = range.first.radians();
347 double rangeEndRadians = range.second.radians();
349 if (qFuzzyCompare(thisLonRadians, rangeStartRadians) ||
350 qFuzzyCompare(thisLonRadians, rangeEndRadians)) {
355 if ((qFuzzyCompare(thisLonRadians, 0.0) || qFuzzyCompare(thisLonRadians, 2.0 *
PI)) &&
356 (qFuzzyCompare(rangeStartRadians, 0.0) ||
357 qFuzzyCompare(rangeEndRadians, 2.0 *
PI))) {
381 if (startLon.
isValid() && endLon.
isValid() && startLon < endLon) {
393 if (endLon2 < startLon) {
394 range.append(qMakePair(startLon2, endLon2));
404 range.append(qMakePair(startLon, endLon));