fixed a bug in the triangulation function

This commit is contained in:
Thomas Friedel 2018-07-27 16:46:18 +02:00
parent f32a3df7f6
commit 61612d0b50

View file

@ -73,14 +73,16 @@ func triangulatePath(path []pathPoint, target []float32) []float32 {
var i int var i int
triangles: triangles:
for i = range polygon { for i = range polygon {
ib := (i + 1) % len(polygon)
ic := (i + 2) % len(polygon)
a := polygon[i] a := polygon[i]
b := polygon[(i+1)%len(polygon)] b := polygon[ib]
c := polygon[(i+2)%len(polygon)] c := polygon[ic]
if isSamePoint(a, c, math.SmallestNonzeroFloat64) { if isSamePoint(a, c, math.SmallestNonzeroFloat64) {
break break
} }
for i2, p := range polygon { for i2, p := range polygon {
if i2 >= i && i2 <= i+2 { if i2 == i || i2 == ib || i2 == ic {
continue continue
} }
if triangleContainsPoint(a, b, c, p) { if triangleContainsPoint(a, b, c, p) {
@ -90,7 +92,6 @@ func triangulatePath(path []pathPoint, target []float32) []float32 {
if !polygonContainsPoint(polygon, center) { if !polygonContainsPoint(polygon, center) {
continue triangles continue triangles
} }
break
} }
target = append(target, float32(a[0]), float32(a[1]), float32(b[0]), float32(b[1]), float32(c[0]), float32(c[1])) target = append(target, float32(a[0]), float32(a[1]), float32(b[0]), float32(b[1]), float32(c[0]), float32(c[1]))
break break