use better heuristics to avoid zero plot ranges

This commit is contained in:
Axel Kohlmeyer
2023-10-27 00:20:34 -04:00
parent b9283cfcf6
commit 5a665c31f6

View File

@ -324,16 +324,26 @@ void ChartViewer::reset_zoom()
} }
// avoid (nearly) empty ranges // avoid (nearly) empty ranges
double deltax = fabs((xmax - xmin) / ((xmax == 0.0) ? 1.0 : xmax)); double deltax = xmax - xmin;
if (deltax < 1.0e-10) { if ((deltax / ((xmax == 0.0) ? 1.0 : xmax)) < 1.0e-10) {
xmin -= 100.0*deltax; if ((xmin == 0.0) || (xmax == 0.0)) {
xmax += 100.0*deltax; xmin = -0.025;
xmax = 0.025;
} else {
xmin -= 0.025 * fabs(xmin);
xmax += 0.025 * fabs(xmax);
}
} }
double deltay = fabs((ymax - ymin) / ((ymax == 0.0) ? 1.0 : ymax)); double deltay = ymax - ymin;
if (deltay < 1.0e-10) { if ((deltay / ((ymax == 0.0) ? 1.0 : ymax)) < 1.0e-10) {
ymin -= 100.0*deltay; if ((ymin == 0.0) || (ymax == 0.0)) {
ymax += 100.0*deltay; ymin = -0.025;
ymax = 0.025;
} else {
ymin -= 0.025 * fabs(ymin);
ymax += 0.025 * fabs(ymax);
}
} }
xaxis->setRange(xmin, xmax); xaxis->setRange(xmin, xmax);