From fc34d2c4cfc1de43243fd3d83120502c29ee745c Mon Sep 17 00:00:00 2001 From: Sebastian Kuzminsky Date: Sat, 6 Jan 2018 23:15:43 -0700 Subject: [PATCH] deal with float rounding error in Line.intersect(Line) This commit fixes #41. In the test case added in the previous commit, two non-intersecting lines are very nearly collinear, but float rounding errors lead to incorrect intersections reported. This commit makes Line.intersect() treat denominators below 1e-9 as 0, to make it more accepting of float rounding. --- svgpathtools/path.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/svgpathtools/path.py b/svgpathtools/path.py index 51378fd..f5fc806 100644 --- a/svgpathtools/path.py +++ b/svgpathtools/path.py @@ -572,7 +572,7 @@ class Line(object): d = (other_seg.start.imag, other_seg.end.imag) denom = ((a[1] - a[0])*(d[0] - d[1]) - (b[1] - b[0])*(c[0] - c[1])) - if denom == 0: + if denom < 1e-9: return [] t1 = (c[0]*(b[0] - d[1]) - c[1]*(b[0] - d[0]) -