fixed a bug with anticlockwise arcs and ellipses
updated to new sdl library version
This commit is contained in:
parent
239ab21259
commit
71741d4234
3 changed files with 13 additions and 7 deletions
2
go.mod
2
go.mod
|
@ -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
2
go.sum
|
@ -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=
|
||||
|
|
16
path2d.go
16
path2d.go
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue