Merge /u/edauvergne/flightgear/ branch lat_lon_precision_fix_v3 into next
http://sourceforge.net/p/flightgear/flightgear/merge-requests/23/
This commit is contained in:
commit
76c6665af4
1 changed files with 34 additions and 14 deletions
|
@ -381,18 +381,28 @@ FGProperties::getLongitudeString ()
|
|||
// dd mm.mmm' (DMM-Format) -- uses a round-off factor tailored to the
|
||||
// required precision of the minutes field (three decimal places),
|
||||
// preventing minute values of 60.
|
||||
double deg = d + 5.0E-4 / 60.0;
|
||||
double min = (deg - int(deg)) * 60.0 - 4.999E-4;
|
||||
snprintf(buf, 32, "%d*%06.3f%c", int(deg), min, c);
|
||||
double min = (d - int(d)) * 60.0;
|
||||
if (min >= 59.9995) {
|
||||
min -= 60.0;
|
||||
d += 1.0;
|
||||
}
|
||||
snprintf(buf, 32, "%d*%06.3f%c", int(d), fabs(min), c);
|
||||
|
||||
} else {
|
||||
// mm'ss.s'' (DMS-Format) -- uses a round-off factor tailored to the
|
||||
// required precision of the seconds field (one decimal place),
|
||||
// preventing second values of 60.
|
||||
double deg = d + 0.05 / 3600.0;
|
||||
double min = (deg - int(deg)) * 60.0;
|
||||
double sec = (min - int(min)) * 60.0 - 0.049;
|
||||
snprintf(buf, 32, "%d*%02d %04.1f%c", int(deg),
|
||||
double min = (d - int(d)) * 60.0;
|
||||
double sec = (min - int(min)) * 60.0;
|
||||
if (sec >= 59.95) {
|
||||
sec -= 60.0;
|
||||
min += 1.0;
|
||||
if (min >= 60.0) {
|
||||
min -= 60.0;
|
||||
d += 1.0;
|
||||
}
|
||||
}
|
||||
snprintf(buf, 32, "%d*%02d %04.1f%c", int(d),
|
||||
int(min), fabs(sec), c);
|
||||
}
|
||||
buf[31] = '\0';
|
||||
|
@ -412,15 +422,25 @@ FGProperties::getLatitudeString ()
|
|||
snprintf(buf, 32, "%3.6f%c", d, c);
|
||||
|
||||
} else if (format == 1) {
|
||||
double deg = d + 5.0E-4 / 60.0;
|
||||
double min = (deg - int(deg)) * 60.0 - 4.999E-4;
|
||||
snprintf(buf, 32, "%d*%06.3f%c", int(deg), min, c);
|
||||
double min = (d - int(d)) * 60.0;
|
||||
if (min >= 59.9995) {
|
||||
min -= 60.0;
|
||||
d += 1.0;
|
||||
}
|
||||
snprintf(buf, 32, "%d*%06.3f%c", int(d), fabs(min), c);
|
||||
|
||||
} else {
|
||||
double deg = d + 0.05 / 3600.0;
|
||||
double min = (deg - int(deg)) * 60.0;
|
||||
double sec = (min - int(min)) * 60.0 - 0.049;
|
||||
snprintf(buf, 32, "%d*%02d %04.1f%c", int(deg),
|
||||
double min = (d - int(d)) * 60.0;
|
||||
double sec = (min - int(min)) * 60.0;
|
||||
if (sec >= 59.95) {
|
||||
sec -= 60.0;
|
||||
min += 1.0;
|
||||
if (min >= 60.0) {
|
||||
min -= 60.0;
|
||||
d += 1.0;
|
||||
}
|
||||
}
|
||||
snprintf(buf, 32, "%d*%02d %04.1f%c", int(d),
|
||||
int(min), fabs(sec), c);
|
||||
}
|
||||
buf[31] = '\0';
|
||||
|
|
Loading…
Add table
Reference in a new issue