Skip to content

Commit

Permalink
fixed a bug with anticlockwise arcs and ellipses
Browse files Browse the repository at this point in the history
updated to new sdl library version
  • Loading branch information
tfriedel6 committed Oct 1, 2019
1 parent 239ab21 commit 71741d4
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 7 deletions.
2 changes: 1 addition & 1 deletion go.mod
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Expand Up @@ -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=
Expand Down
16 changes: 10 additions & 6 deletions path2d.go
Expand Up @@ -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 {
Expand All @@ -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
}
}
Expand Down Expand Up @@ -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 {
Expand All @@ -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
}
}
Expand Down

0 comments on commit 71741d4

Please sign in to comment.