Example #1
0
        public Quadtree(double x, double y, double width, double minWidth)
        {
            this.minWidth = minWidth;
            m_Rect = new Box(x, y, width, width);
            m_List = new List<Node>();

            m_AreaOne = null;
            m_AreaTwo = null;
            m_AreaThree = null;
            m_AreaFour = null;
        }
Example #2
0
        void SavesNode(Quadtree quadTree, string idNode, XmlWriter write)
        {
            if (quadTree == null) return;

            if(quadTree.m_List.Count != 0)
            {
                write.WriteStartElement("Node");
                write.WriteAttributeString("id", idNode);
                foreach(var item in quadTree.m_List)
                {
                    write.WriteStartElement("Object");

                    write.WriteAttributeString("id", item.m_Id.ToString());
                    write.WriteAttributeString("index", item.m_Index.ToString());
                    write.WriteAttributeString("x", item.m_X.ToString());
                    write.WriteAttributeString("y", item.m_Y.ToString());
                    write.WriteAttributeString("width", item.m_Width.ToString());
                    write.WriteAttributeString("height", item.m_Height.ToString());

                    write.WriteEndElement();
                }
                write.WriteEndElement();
            }
            else
            {
                double id = int.Parse(idNode) * 10;

                if(quadTree.m_AreaOne != null)
                {
                    SavesNode(quadTree.m_AreaOne, (id + 1).ToString(), write);
                }

                if (quadTree.m_AreaTwo != null)
                {
                    SavesNode(quadTree.m_AreaTwo, (id + 2).ToString(), write);
                }

                if (quadTree.m_AreaThree != null)
                {
                    SavesNode(quadTree.m_AreaThree, (id + 3).ToString(), write);
                }

                if (quadTree.m_AreaFour != null)
                {
                    SavesNode(quadTree.m_AreaFour, (id + 4).ToString(), write);
                }
            }
        }
Example #3
0
        public void CreateQuadTree()
        {
            // make real world left = x, right = x + width, top = y + height, bottom = y
            foreach (var item in m_Temp)
                item.m_Y += item.m_Height;

            //for (int i = 0; i < m_ArrayNode.Count; i++)
            //{
            //    m_ArrayNode[i].m_Y += m_ArrayNode[i].m_Height;
            //    m_Temp.Add(m_ArrayNode[i]);
            //}

            m_QuadTree = new Quadtree(0, 0, m_Bitmap.Width, MainWindow.minWidth);
            foreach(var item in m_Temp)
            {
                item.m_Y = m_Bitmap.Height - item.m_Y;
                m_QuadTree.Insert(item);
            }
        }
Example #4
0
        public void CreateQuadTree()
        {
            // make real world left = x, right = x + width, top = y + height, bottom = y
            foreach (var item in m_Temp)
                item.m_Y += item.m_Height;

            m_QuadTree = new Quadtree(0, 0, m_MapWidth, MainWindow.minWidth);
            foreach(var item in m_Temp)
            {
                item.m_Y = m_MapHeight - item.m_Y;
                m_QuadTree.Insert(item);
            }
        }
Example #5
0
        void Split()
        {
            if(m_AreaOne == null)
                m_AreaOne = new Quadtree(m_Rect.x + m_Rect.width / 2, m_Rect.y + m_Rect.height / 2, m_Rect.width / 2, minWidth);

            if(m_AreaTwo == null)
                m_AreaTwo = new Quadtree(m_Rect.x, m_Rect.y + m_Rect.height / 2, m_Rect.width / 2, minWidth);

            if(m_AreaThree == null)
                m_AreaThree = new Quadtree(m_Rect.x, m_Rect.y, m_Rect.width / 2, minWidth);

            if (m_AreaFour == null)
                m_AreaFour = new Quadtree(m_Rect.x + m_Rect.width / 2, m_Rect.y, m_Rect.width / 2, minWidth);
        }