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])); }
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; }
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]); }