Fix circlef contains (#515)

* Fix CircleF.Contains

* Added test for CircleF.Contains point
This commit is contained in:
Jon Seaman
2018-06-18 20:33:13 +10:00
committed by Dylan Wilson
parent 4c9a0136b1
commit 0482f3ef20
2 changed files with 26 additions and 14 deletions
+5 -2
View File
@@ -261,8 +261,11 @@ namespace MonoGame.Extended
/// </returns>
public static bool Contains(ref CircleF circle, Point2 point)
{
var distance = circle.Center - point;
return Math.Abs(distance.X) <= circle.Radius && Math.Abs(distance.Y) <= circle.Radius;
var dx = circle.Center.X - point.X;
var dy = circle.Center.Y - point.Y;
var d2 = dx * dx + dy * dy;
var r2 = circle.Radius * circle.Radius;
return d2 <= r2;
}
/// <summary>
@@ -1,14 +1,23 @@
//using System;
//using System.Collections.Generic;
//using System.Globalization;
//using Microsoft.Xna.Framework;
//using Xunit;
using System;
using System.Collections.Generic;
using System.Globalization;
using Microsoft.Xna.Framework;
using Xunit;
//namespace MonoGame.Extended.Tests.Primitives
//{
//
// public class CircleFTests
// {
namespace MonoGame.Extended.Tests.Primitives
{
public class CircleFTests
{
[Fact]
public void CircCircIntersectionDiagonalCircleTest()
{
var circle = new CircleF(new Point2(16.0f, 16.0f), 16.0f);
var point = new Point2(0, 0);
Assert.False(circle.Contains(point));
}
// public IEnumerable<TestCaseData> ConstructorTestCases
// {
// get
@@ -407,5 +416,5 @@
// var actualString = circle.ToString();
// Assert.Equal(expectedString, actualString);
// }
// }
//}
}
}