public void TestCount() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(16, 16, 0, 0, 1); List <Rect> rects = new List <Rect>() { new Rect(new Point(1, 1), new Size(1, 1)), new Rect(new Point(3, 3), new Size(1, 1)), new Rect(new Point(-3, 2), new Size(1, 1)), new Rect(new Point(-1, 0), new Size(1, 1)), new Rect(new Point(-2, -2), new Size(1, 1)), new Rect(new Point(2, -2), new Size(1, 1)), new Rect(new Point(3, -3), new Size(1, 1)) }; fieldTree.AddMany(rects); Assert.AreEqual(fieldTree.Count(), 7); int totalNum = 7; foreach (var item in rects) { fieldTree.Remove(item); totalNum -= 1; Assert.AreEqual(fieldTree.Count(), totalNum); } Assert.AreEqual(fieldTree.IsEmpty(), true); }
public void TestRangeQuery() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(8, 8, 0, 0, 1); List <Rect> rects = new List <Rect>() { new Rect(new Point(1, 1), new Size(1, 1)), new Rect(new Point(3, 3), new Size(1, 1)), new Rect(new Point(-3, 2), new Size(1, 1)), new Rect(new Point(-1, 0), new Size(1, 1)), new Rect(new Point(-2, -2), new Size(1, 1)), new Rect(new Point(2, -2), new Size(1, 1)), new Rect(new Point(3, -3), new Size(1, 1)) }; fieldTree.AddMany(rects); Assert.AreEqual(fieldTree.IsEmpty(), false); var r1 = fieldTree.RangeQuery(0, 0, 3); Assert.AreEqual(r1.Count, 2); var r2 = fieldTree.RangeQuery(0, 0, 3, 2); Assert.AreEqual(r2.Count, 1); var r3 = fieldTree.RangeQuery(-1, 0, 4, 10); Assert.AreEqual(r3.Count, 2); }
public void TestAddMultipleRectangles() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(10, 10); List <Rect> rects = new List <Rect>() { new Rect(new Point(1, 1), new Size(1, 1)), new Rect(new Point(3, 3), new Size(1, 1)), new Rect(new Point(-3, 2), new Size(1, 1)), new Rect(new Point(-1, 0), new Size(1, 1)), new Rect(new Point(-2, -2), new Size(1, 1)), new Rect(new Point(2, -2), new Size(1, 1)), new Rect(new Point(3, -3), new Size(1, 1)) }; fieldTree.AddMany(rects); Assert.AreEqual(fieldTree.IsEmpty(), false); var r = fieldTree.FindNearestObjects(0, 0); Assert.AreEqual(r.Count, 1); Assert.AreEqual(r[0].Equals(new Rect(new Point(-1, 0), new Size(1, 1))), true); r = fieldTree.FindNearestObjects(2, 0); Assert.AreEqual(r.Count, 1); Assert.AreEqual(r[0].Equals(new Rect(new Point(1, 1), new Size(1, 1))), true); }
public void AddSingleRectangle() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(10, 10); Rect rect1 = new Rect(new Point(2, 2), new Size(3, 3)); fieldTree.Add(rect1); Assert.AreEqual(fieldTree.IsEmpty(), false); }
public void AddSingleRectangleAndPop() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(10, 10); Rect rect1 = new Rect(new Point(2, 2), new Size(3, 3)); fieldTree.Add(rect1); Rect r = fieldTree.PopNearestObject(0, 0); Assert.AreEqual(fieldTree.IsEmpty(), true); Assert.AreEqual(r, rect1); }
public void TestClear() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(10, 10); Rect rect1 = new Rect(new Point(2, 2), new Size(3, 3)); Rect rect2 = new Rect(new Point(-2, 2), new Size(1, 1)); Rect rect3 = new Rect(new Point(3, 2), new Size(1, 2)); Rect rect4 = new Rect(new Point(2, -2), new Size(1, 1)); fieldTree.Add(rect1); fieldTree.Add(rect2); fieldTree.Add(rect3); fieldTree.Add(rect4); fieldTree.Clear(); Assert.AreEqual(fieldTree.IsEmpty(), true); }
public void TestAll() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(16, 16, 0, 0, 1); List <Rect> rects = new List <Rect>() { new Rect(new Point(1, 1), new Size(1, 1)), new Rect(new Point(3, 3), new Size(1, 1)), new Rect(new Point(-3, 2), new Size(1, 1)), new Rect(new Point(-1, 0), new Size(1, 1)), new Rect(new Point(-2, -2), new Size(1, 1)), new Rect(new Point(2, -2), new Size(1, 1)), new Rect(new Point(3, -3), new Size(1, 1)) }; fieldTree.AddMany(rects); Assert.AreEqual(fieldTree.IsEmpty(), false); var r1 = fieldTree.All(); Assert.AreEqual(r1.Count, 7); }
public void TestINN() { PartitionFieldTree <Rect> fieldTree = new PartitionFieldTree <Rect>(10, 10, 0, 0, 1); List <Rect> rects = new List <Rect>() { new Rect(new Point(1, 1), new Size(1, 1)), new Rect(new Point(3, 3), new Size(1, 1)), new Rect(new Point(-3, 2), new Size(1, 1)), new Rect(new Point(-1, 0), new Size(1, 1)), new Rect(new Point(-2, -2), new Size(1, 1)), new Rect(new Point(2, -2), new Size(1, 1)), new Rect(new Point(3, -3), new Size(1, 1)) }; fieldTree.AddMany(rects); Assert.AreEqual(fieldTree.IsEmpty(), false); fieldTree.InitIncrementalNearestNeighbor(0, 0); var r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(-1, 0), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(1, 1), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(2, -2), new Size(1, 1))) || r.Equals(new Rect(new Point(-2, -2), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(2, -2), new Size(1, 1))) || r.Equals(new Rect(new Point(-2, -2), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(-3, 2), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(3, 3), new Size(1, 1))) || r.Equals(new Rect(new Point(3, -3), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r.Equals(new Rect(new Point(3, 3), new Size(1, 1))) || r.Equals(new Rect(new Point(3, -3), new Size(1, 1))), true); r = fieldTree.IncrementalNearestNeighborFindNext(); Assert.AreEqual(r, null); }