From 19144dc524d19c0ffb36443c023de4a1490c155c Mon Sep 17 00:00:00 2001 From: Pawel Baran Date: Mon, 12 Feb 2024 18:39:31 +0100 Subject: [PATCH] #3278 fixed --- Geometry_Engine/Compute/FitLine.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Geometry_Engine/Compute/FitLine.cs b/Geometry_Engine/Compute/FitLine.cs index 23ae84070..f5bdfcfaf 100644 --- a/Geometry_Engine/Compute/FitLine.cs +++ b/Geometry_Engine/Compute/FitLine.cs @@ -64,8 +64,16 @@ public static Line FitLine(this IEnumerable points, double tolerance = To double sumXY = points.Sum(x => x.X * x.Y); double p1 = sumX * sumX - sumY * sumY - n * (sumXsq - sumYsq); double p2 = n * sumXY - sumX * sumY; - double b = (p1 + Math.Sqrt(p1 * p1 + 4 * p2 * p2)) / (2 * p2); - Vector dir = new Vector { X = 1, Y = b }; + + Vector dir; + if (Math.Abs(p2) > tolerance) + { + double b = (p1 + Math.Sqrt(p1 * p1 + 4 * p2 * p2)) / (2 * p2); + dir = new Vector { X = 1, Y = b }; + } + else + dir = p1 < 0 ? Vector.XAxis : Vector.YAxis; + return new Line { Start = C, End = C + dir }; } else