stats: fix line segment intersection math

Linear algebra class was a while ago, but somehow this does look more
logical to me.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2021-01-04 10:37:28 -08:00
parent c63994f775
commit ce0f64df2e

View file

@ -686,9 +686,9 @@ void StatsView::addLinearRegression(double a, double b, double minX, double maxX
// but owing to floating point imprecision, let's test again.
if ((y1 < minY || y1 > maxY || y2 < minY || y2 > maxY) && fabs(a) > 0.0001) {
// Intersections with y = minY and y = maxY lines
double intersect_x1 = minY / a - b;
double intersect_x2 = maxY / a - b;
if (intersect_x1 < intersect_x2)
double intersect_x1 = (minY - b) / a;
double intersect_x2 = (maxY - b) / a;
if (intersect_x1 > intersect_x2)
std::swap(intersect_x1, intersect_x2);
minX = std::max(minX, intersect_x1);
maxX = std::min(maxX, intersect_x2);