当前位置: 首页>>代码示例>>C#>>正文


C# QuadTree.Search方法代码示例

本文整理汇总了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));
        }
开发者ID:clapis,项目名称:roamler,代码行数:28,代码来源:PointQuadTreeTests.cs

示例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)));
        }
开发者ID:clapis,项目名称:roamler,代码行数:32,代码来源:PointQuadTreeTests.cs

示例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));
        }
开发者ID:clapis,项目名称:roamler,代码行数:19,代码来源:PointQuadTreeTests.cs

示例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));
        }
开发者ID:clapis,项目名称:roamler,代码行数:28,代码来源:PointQuadTreeTests.cs

示例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);
        }
开发者ID:clapis,项目名称:roamler,代码行数:12,代码来源:PointQuadTreeTests.cs


注:本文中的QuadTree.Search方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。