From 71741d4234d5bf551a8b7456c7ae332623fe3a7d Mon Sep 17 00:00:00 2001 From: Thomas Friedel Date: Tue, 1 Oct 2019 12:04:13 +0200 Subject: [PATCH] fixed a bug with anticlockwise arcs and ellipses updated to new sdl library version --- go.mod | 2 +- go.sum | 2 ++ path2d.go | 16 ++++++++++------ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 64f0637..b1135d9 100644 --- a/go.mod +++ b/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 diff --git a/go.sum b/go.sum index 50fc6de..81570cf 100644 --- a/go.sum +++ b/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= diff --git a/path2d.go b/path2d.go index c8be2b4..16db526 100644 --- a/path2d.go +++ b/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 } }