Beispiel #1
0
        private BoundingBoxNode TreeForPath(string[] path, int offset)
        {
            var quadrants = new BoundingBoxNode[4];

            if (offset < path.Length)
            {
                var subs = Subdivide();
                switch (path[offset])
                {
                case "nw":
                    quadrants[0] = subs[0].TreeForPath(path, offset + 1);
                    break;

                case "ne":
                    quadrants[1] = subs[1].TreeForPath(path, offset + 1);
                    break;

                case "sw":
                    quadrants[2] = subs[2].TreeForPath(path, offset + 1);
                    break;

                case "se":
                    quadrants[3] = subs[3].TreeForPath(path, offset + 1);
                    break;
                }
            }

            return(new BoundingBoxNode(this, quadrants[0], quadrants[1], quadrants[2], quadrants[3]));
        }
Beispiel #2
0
 public BoundingBoxNode(BoundingBox bb, BoundingBoxNode nw, BoundingBoxNode ne, BoundingBoxNode sw,
                        BoundingBoxNode se)
 {
     this.bb = bb;
     this.nw = nw;
     this.ne = ne;
     this.sw = sw;
     this.se = se;
 }
Beispiel #3
0
        public BoundingBoxNode TreeForDepth(int depth)
        {
            var quadrants = new BoundingBoxNode[4];
            if (depth > 0) {
                var subs = Subdivide();
                quadrants[0] = subs[0].TreeForDepth(depth - 1);
                quadrants[1] = subs[1].TreeForDepth(depth - 1);
                quadrants[2] = subs[2].TreeForDepth(depth - 1);
                quadrants[3] = subs[3].TreeForDepth(depth - 1);
            }

            return new BoundingBoxNode(this, quadrants[0], quadrants[1], quadrants[2], quadrants[3]);
        }