From d6b0dc454bdc65c9cc37f6010e0cb9603e75f3fe Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Mon, 12 Feb 2018 10:32:38 +0100 Subject: [PATCH] improved triangulation so that empty triangles can get removed, which can happen with self-intersecting polygons --- triangulation.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/triangulation.go b/triangulation.go index 4d99b19..d384d68 100644 --- a/triangulation.go +++ b/triangulation.go @@ -1,6 +1,7 @@ package canvas import ( + "math" "sort" "github.com/tfriedel6/lm" @@ -77,6 +78,9 @@ func triangulatePath(path []pathPoint, target []float32) []float32 { a := polygon[i] b := polygon[(i+1)%len(polygon)] c := polygon[(i+2)%len(polygon)] + if isSamePoint(a, c, math.SmallestNonzeroFloat32) { + break + } for i2, p := range polygon { if i2 >= i && i2 <= i+2 { continue