fixed intersect function

This commit is contained in:
Ben Cragg 2019-01-29 12:31:59 +00:00
parent ecda96a36f
commit 4d30a8fe49
2 changed files with 10 additions and 3 deletions

View File

@ -491,7 +491,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

View File

@ -574,9 +574,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,
},
{