本文整理汇总了C#中QuadTree.Search方法的典型用法代码示例。如果您正苦于以下问题:C# QuadTree.Search方法的具体用法?C# QuadTree.Search怎么用?C# QuadTree.Search使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QuadTree
的用法示例。
在下文中一共展示了QuadTree.Search方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Search_AreaWithOnePoint_ReturnsOnePoint
public void Search_AreaWithOnePoint_ReturnsOnePoint()
{
var center = new Point(0, 0);
var boundary = new Boundary(center, 1, 1);
var quad = new QuadTree<Point>(boundary);
// insert one point in the second quadrant
var point = new Point(-0.75, +0.75);
quad.Insert(point);
// then insert one point in each remaining quadrant
var points = new List<Point>
{
new Point(+0.75, +0.75), // first quadrant
new Point(-0.75, -0.75), // third quadrant
new Point(+0.75, -0.75) // fourth quadrant
};
points.ForEach(p => quad.Insert(p));
// search second quadrant
var searchArea = new Boundary(new Point(-0.5, 0.5), 0.5, 0.5);
var results = quad.Search(searchArea);
Assert.IsTrue(results.Count == 1);
Assert.IsTrue(results.Contains(point));
}
示例2: Search_Area_ReturnsAreaPoints
public void Search_Area_ReturnsAreaPoints()
{
var center = new Point(0, 0);
var boundary = new Boundary(center, 1, 1);
var quad = new QuadTree<Point>(boundary);
var firstQuadrant = new Boundary(new Point(+0.5, +0.5), 0.5, 0.5);
var secondQuadrant = new Boundary(new Point(-0.5, +0.5), 0.5, 0.5);
var thirdQuadrant = new Boundary(new Point(-0.5, -0.5), 0.5, 0.5);
var fourthQuadrant = new Boundary(new Point(+0.5, -0.5), 0.5, 0.5);
var pointsPerQuadrant = 10;
var generator = new RandomGenerator();
// insert points in the third quadrant
var pointsInThirdQuadrant = generator.GeneratePointsWithin(thirdQuadrant, pointsPerQuadrant);
pointsInThirdQuadrant.ForEach(p => quad.Insert(p));
// insert points in other quadrants
var pointsInOtherQuadrants = new List<Point>();
pointsInOtherQuadrants.AddRange(generator.GeneratePointsWithin(firstQuadrant, pointsPerQuadrant));
pointsInOtherQuadrants.AddRange(generator.GeneratePointsWithin(secondQuadrant, pointsPerQuadrant));
pointsInOtherQuadrants.AddRange(generator.GeneratePointsWithin(fourthQuadrant, pointsPerQuadrant));
pointsInOtherQuadrants.ForEach(p => quad.Insert(p));
// search third quadrant
var results = quad.Search(thirdQuadrant);
// assert all result points are in third quadrant
Assert.IsTrue(results.Count == pointsPerQuadrant);
results.ForEach(p => Assert.IsTrue(thirdQuadrant.Contains(p)));
}
示例3: Search_PartialBoundary_ReturnResults
public void Search_PartialBoundary_ReturnResults()
{
var center = new Point(0, 0);
var boundary = new Boundary(center, 1, 1);
var quad = new QuadTree<Point>(boundary);
var point = new Point(0.75, 0.75);
var searchArea = new Boundary(new Point(1, 1), 1, 1);
Assert.IsTrue(boundary.Contains(point));
Assert.IsTrue(searchArea.Contains(point));
quad.Insert(point);
var results = quad.Search(searchArea);
Assert.IsTrue(results.Count == 1);
Assert.IsTrue(results.Contains(point));
}
示例4: Search_PointAtBoundaryCenter_IsReturnedOnlyOnce
public void Search_PointAtBoundaryCenter_IsReturnedOnlyOnce()
{
var center = new Point(0, 0);
var boundary = new Boundary(center, 1, 1);
var quad = new QuadTree<Point>(boundary);
// insert a point in each quadrant
var points = new List<Point>
{
new Point(+0.75, +0.75),
new Point(-0.75, +0.75),
new Point(-0.75, -0.75),
new Point(+0.75, -0.75)
};
points.ForEach(p => quad.Insert(p));
// insert an additional point at the center
var point = new Point(0, 0);
quad.Insert(point);
// search center
var searchArea = new Boundary(center, 0.5, 0.5);
var results = quad.Search(searchArea);
Assert.IsTrue(results.Count == 1);
Assert.IsTrue(results.Contains(point));
}
示例5: Search_OutOfBoundary_ReturnsEmtpyCollection
public void Search_OutOfBoundary_ReturnsEmtpyCollection()
{
var center = new Point(0, 0);
var boundary = new Boundary(center, 1, 1);
var quad = new QuadTree<Point>(boundary);
var searchArea = new Boundary(new Point(3,3), 0.1, 0.1);
var results = quad.Search(searchArea);
Assert.IsNotNull(results);
Assert.IsTrue(results.Count == 0);
}