Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="node"></param>
        /// <param name="addEnv"></param>
        /// <returns></returns>
        public static Node CreateExpanded(Node node, IEnvelope addEnv)
        {
            IEnvelope expandEnv = new Envelope(addEnv);

            if (node != null)
            {
                expandEnv.ExpandToInclude(node.env);
            }

            Node largerNode = CreateNode(expandEnv);

            if (node != null)
            {
                largerNode.InsertNode(node);
            }
            return(largerNode);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="node"></param>
        public void InsertNode(Node node)
        {
            Assert.IsTrue(env == null || env.Contains(node.Envelope));
            int index = GetSubnodeIndex(node.env, centre);

            if (node.level == level - 1)
            {
                subnode[index] = node;
            }
            else
            {
                // the quad is not a direct child, so make a new child quad to contain it
                // and recursively insert the quad
                Node childNode = CreateSubnode(index);
                childNode.InsertNode(node);
                subnode[index] = childNode;
            }
        }