fixed a bug in the triangulation function
This commit is contained in:
parent
f32a3df7f6
commit
61612d0b50
1 changed files with 5 additions and 4 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue