From caaba150e83a0fc594194c562134e36dfb1e5abb Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Tue, 18 Sep 2018 14:15:42 +0200 Subject: [PATCH] fixed a bug when lines in a polygon are parallel --- paths.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/paths.go b/paths.go index 98b9446..38aa82f 100644 --- a/paths.go +++ b/paths.go @@ -501,7 +501,11 @@ func lineIntersection(a0, a1, b0, b1 vec) (vec, float64, float64) { if (va[0] == 0 && vb[0] == 0) || (va[1] == 0 && vb[1] == 0) || (va[0] == 0 && va[1] == 0) || (vb[0] == 0 && vb[1] == 0) { return vec{}, float64(math.Inf(1)), float64(math.Inf(1)) } - p := (vb[1]*(a0[0]-b0[0]) - a0[1]*vb[0] + b0[1]*vb[0]) / (va[1]*vb[0] - va[0]*vb[1]) + d := va[1]*vb[0] - va[0]*vb[1] + if d == 0 { + return vec{}, float64(math.Inf(1)), float64(math.Inf(1)) + } + p := (vb[1]*(a0[0]-b0[0]) - a0[1]*vb[0] + b0[1]*vb[0]) / d var q float64 if vb[0] == 0 { q = (a0[1] + p*va[1] - b0[1]) / vb[1]