fixed a bug with anticlockwise arcs and ellipses

updated to new sdl library version
This commit is contained in:
Thomas Friedel 2019-10-01 12:04:13 +02:00
parent 239ab21259
commit 71741d4234
3 changed files with 13 additions and 7 deletions

2
go.mod
View file

@ -6,7 +6,7 @@ require (
github.com/go-gl/glfw v0.0.0-20181014061658-691ee1b84c51
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
github.com/samuel/go-pcx v0.0.0-20180426214139-d9c017170db4
github.com/veandco/go-sdl2 v0.3.0
github.com/veandco/go-sdl2 v0.3.3
golang.org/x/exp v0.0.0-20181106170214-d68db9428509
golang.org/x/image v0.0.0-20181109002202-aa35264064ba
golang.org/x/mobile v0.0.0-20181026062114-a27dd33d354d

2
go.sum
View file

@ -10,6 +10,8 @@ github.com/samuel/go-pcx v0.0.0-20180426214139-d9c017170db4 h1:Y/KOCu+ZLB730Pude
github.com/samuel/go-pcx v0.0.0-20180426214139-d9c017170db4/go.mod h1:qxuIawynlRhuaHowuXvd1xjyFWx87Ro4gkZlKRXtHnQ=
github.com/veandco/go-sdl2 v0.3.0 h1:IWYkHMp8V3v37NsKjszln8FFnX2+ab0538J371t+rss=
github.com/veandco/go-sdl2 v0.3.0/go.mod h1:FB+kTpX9YTE+urhYiClnRzpOXbiWgaU3+5F2AB78DPg=
github.com/veandco/go-sdl2 v0.3.3 h1:4/TirgB2MQ7oww3pM3Yfgf1YbChMlAQAmiCPe5koK0I=
github.com/veandco/go-sdl2 v0.3.3/go.mod h1:FB+kTpX9YTE+urhYiClnRzpOXbiWgaU3+5F2AB78DPg=
golang.org/x/exp v0.0.0-20181106170214-d68db9428509 h1:k21GX33vzpH/syMF7TgrLxe8ILtvwbyuHtEO3ebR82E=
golang.org/x/exp v0.0.0-20181106170214-d68db9428509/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/image v0.0.0-20181109002202-aa35264064ba h1:tKfAeDKyjJZwxAJ8TPBZaf6LpvauubUHT8wwpdz+OMM=

View file

@ -129,8 +129,10 @@ func (p *Path2D) Arc(x, y, radius, startAngle, endAngle float64, anticlockwise b
return
}
if (!anticlockwise && endAngle < startAngle) || (anticlockwise && endAngle > startAngle) {
endAngle, startAngle = startAngle, endAngle
if !anticlockwise && endAngle < startAngle {
endAngle = startAngle + (2*math.Pi - math.Mod(startAngle-endAngle, math.Pi*2))
} else if anticlockwise && endAngle > startAngle {
endAngle = startAngle - (2*math.Pi - math.Mod(endAngle-startAngle, math.Pi*2))
}
if !anticlockwise {
@ -142,7 +144,7 @@ func (p *Path2D) Arc(x, y, radius, startAngle, endAngle float64, anticlockwise b
} else {
diff := startAngle - endAngle
if diff >= math.Pi*4 {
diff = math.Mod(diff, math.Pi*2)
diff = math.Mod(diff, math.Pi*2) + math.Pi*2
endAngle = startAngle - diff
}
}
@ -274,8 +276,10 @@ func (p *Path2D) Ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle
return
}
if (!anticlockwise && endAngle < startAngle) || (anticlockwise && endAngle > startAngle) {
startAngle, endAngle = endAngle, startAngle
if !anticlockwise && endAngle < startAngle {
endAngle = startAngle + (2*math.Pi - math.Mod(startAngle-endAngle, math.Pi*2))
} else if anticlockwise && endAngle > startAngle {
endAngle = startAngle - (2*math.Pi - math.Mod(endAngle-startAngle, math.Pi*2))
}
if !anticlockwise {
@ -287,7 +291,7 @@ func (p *Path2D) Ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle
} else {
diff := startAngle - endAngle
if diff >= math.Pi*4 {
diff = math.Mod(diff, math.Pi*2)
diff = math.Mod(diff, math.Pi*2) + math.Pi*2
endAngle = startAngle - diff
}
}