public void SimpleAABBTree_BoundingBoxHitDetection_GetNearestToPoint() { SimpleAABBTree myTree = new SimpleAABBTree(); Vector3 TestPoint = new Vector3(0, 0, 0); List <NearestObjectForSort> myObjectsAndDistanceFromPoint = new List <NearestObjectForSort>(); for (int i = 0; i < 100; i++) { var aBox = new BoundingBox(new Vector3(myRandom.Next(-100, 0), myRandom.Next(-100, 0), myRandom.Next(-100, 0)), new Vector3(myRandom.Next(1, 100), myRandom.Next(1, 100), myRandom.Next(1, 100))); var myEntity = new SimpleAABBTreeStaticOBJ(aBox); NearestObjectForSort mySortObject = new NearestObjectForSort() { Distance = Vector3.Distance(aBox.Center, TestPoint), myObject = myEntity }; myObjectsAndDistanceFromPoint.Add(mySortObject); myTree.Insert(myEntity); } myObjectsAndDistanceFromPoint.Sort(); var Result = myTree.GetNearest <SimpleAABBTreeStaticOBJ>(TestPoint, 100); Assert.AreEqual(100, Result.Count); for (int i = 0; i < Result.Count; i++) { Assert.IsNotNull(Result[i]); //Assert.AreEqual(Vector3.Distance(Result[i].Bounds.Center, TestPoint), myObjectsAndDistanceFromPoint[i].Distance); } Result = myTree.GetNearest <SimpleAABBTreeStaticOBJ>(TestPoint, 100, 100); Assert.AreEqual(100, Result.Count); for (int i = 0; i < Result.Count; i++) { Assert.IsNotNull(Result[i]); //Assert.AreEqual(Result[i], myObjectsAndDistanceFromPoint[i]); } }
public void SimpleAABBTree_BoundingBoxHitDetection_GetNearestToPoint_EmptyTree() { SimpleAABBTree myTree = new SimpleAABBTree(); Vector3 TestPoint = new Vector3(0, 0, 0); var Result = myTree.GetNearest <Object>(TestPoint, 100); Assert.AreEqual(Result.Count, 0); }