From 2cce50832d2200d47aa046479ee531ce3406cff0 Mon Sep 17 00:00:00 2001 From: Ben Cragg Date: Tue, 29 Jan 2019 12:31:59 +0000 Subject: [PATCH] fixed intersect function --- geometry.go | 3 ++- geometry_test.go | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/geometry.go b/geometry.go index 70404bc..ab7573e 100644 --- a/geometry.go +++ b/geometry.go @@ -483,7 +483,8 @@ func (c Circle) IntersectsRect(r Rect) bool { }.Contains(c.Center) } // The center is in the diagonal quadrants - return c.Center.To(r.Min).Len() <= c.Radius || c.Center.To(r.Max).Len() <= c.Radius + return c.Center.To(r.Min).Len() <= c.Radius || c.Center.To(r.Max).Len() <= c.Radius || + c.Center.To(V(r.Min.X, r.Max.Y)).Len() <= c.Radius || c.Center.To(V(r.Max.X, r.Min.Y)).Len() <= c.Radius } // Matrix is a 2x3 affine matrix that can be used for all kinds of spatial transforms, such diff --git a/geometry_test.go b/geometry_test.go index 3738b86..0ea1f1c 100644 --- a/geometry_test.go +++ b/geometry_test.go @@ -490,9 +490,15 @@ func TestRect_IntersectsCircle(t *testing.T) { want: true, }, { - name: "Rect.IntersectsCircle(): circle overlaps one corner", + name: "Rect.IntersectsCircle(): circle overlaps bottom-left corner", fields: fields{Min: pixel.ZV, Max: pixel.V(10, 10)}, - args: args{c: pixel.C(1, pixel.ZV)}, + args: args{c: pixel.C(1, pixel.V(-.5, -.5))}, + want: true, + }, + { + name: "Rect.IntersectsCircle(): circle overlaps top-left corner", + fields: fields{Min: pixel.ZV, Max: pixel.V(10, 10)}, + args: args{c: pixel.C(1, pixel.V(-.5, 10.5))}, want: true, }, {