Beispiel #1
0
        public void ContainsCases(int x, int y, bool shouldPass)
        {
            var point = new Point2Int(x, y);
            var box   = new Bounding2DBox(new Point2Int(-1, -1), new Point2Int(1, 1));

            Assert.AreEqual(shouldPass, box.ContainsPoint(point));
        }
Beispiel #2
0
        public void SubDivide(Point2Int[] points, Point2Int newPoint, Bounding2DBox boundingBox, out QuadTree northWest, out QuadTree northEast, out QuadTree southWest, out QuadTree southEast)
        {
            int maxItems = points.Length;
            var center   = boundingBox.CenterPoint();

            var bottomLeftOfNorthWest = new Point2Int(boundingBox.LowerLeft.X, center.Y);
            var topRightOfNorthWest   = new Point2Int(center.X, boundingBox.UpperRight.Y);
            var bottomLeftOfNorthEast = center;
            var topRightOfNorthEast   = boundingBox.UpperRight;
            var bottomLeftOfSouthWest = boundingBox.LowerLeft;
            var topRightOfSouthWest   = center;
            var bottomLeftOfSouthEast = new Point2Int(center.X, boundingBox.LowerLeft.Y);
            var topRightOfSouthEast   = new Point2Int(boundingBox.UpperRight.X, center.Y);

            northWest = new QuadTree(new Bounding2DBox(bottomLeftOfNorthWest, topRightOfNorthWest), maxItems, this);
            northEast = new QuadTree(new Bounding2DBox(bottomLeftOfNorthEast, topRightOfNorthEast), maxItems, this);
            southWest = new QuadTree(new Bounding2DBox(bottomLeftOfSouthWest, topRightOfSouthWest), maxItems, this);
            southEast = new QuadTree(new Bounding2DBox(bottomLeftOfSouthEast, topRightOfSouthEast), maxItems, this);

            foreach (var point2Int in points)
            {
                AddPoint(northWest, northEast, southWest, southEast, point2Int, center);
            }

            AddPoint(northWest, northEast, southWest, southEast, newPoint, center);
        }
Beispiel #3
0
        public void AssertValuesHold(int lx, int ly, int ux, int uy)
        {
            var bottomLeft = new Point2Int(lx, ly);
            var topRight   = new Point2Int(ux, uy);
            var ut         = new Bounding2DBox(bottomLeft, topRight);

            Assert.AreEqual(bottomLeft, ut.LowerLeft);
            Assert.AreEqual(topRight, ut.UpperRight);
        }
Beispiel #4
0
        public void BoundaryTests(int minx, int miny, int maxx, int maxy, bool shouldPass)
        {
            var bottomLeft = new Point2Int(minx, miny);
            var topRight   = new Point2Int(maxx, maxy);

            var areaUnderTest = new Bounding2DBox(bottomLeft, topRight);
            var box           = new Bounding2DBox(new Point2Int(-1, -1), new Point2Int(1, 1));

            Assert.AreEqual(shouldPass, box.DoesBoundaryBoxIntersect(areaUnderTest));
        }
Beispiel #5
0
        public void PointInAreaAssert(
            int quadMinx, int quadMiny, int quadMaxx, int quadMaxy,
            int boundaryMinx, int boundaryMiny, int boundaryMaxx, int boundaryMaxy,
            int pointx, int pointy,
            bool expected)
        {
            var quadBoundingBox = new Bounding2DBox(new Point2Int(quadMinx, quadMiny), new Point2Int(quadMaxx, quadMaxy));
            var area            = new Bounding2DBox(new Point2Int(boundaryMinx, boundaryMiny), new Point2Int(boundaryMaxx, boundaryMaxy));

            var point = new Point2Int(pointx, pointy);

            var ut = new QuadTree(quadBoundingBox, 10, new SimpleQuadTreeDivisionStrategy());

            ut.Add(point);

            var points = new List <Point2Int>();

            ut.GetPointsInArea(area, ref points);

            Assert.AreEqual(expected, points.Contains(point));
        }
Beispiel #6
0
        public void AssertDefaultValuesAreEmpty()
        {
            var ut = new Bounding2DBox();

            Assert.AreEqual(Bounding2DBox.Empty, ut);
        }