示例#1
0
        public QuadTreeImp createQuardTree()
        {
            if (_points == null || _rows == 0 || _columns == 0)
            {
                return(null);
            }
            _rootColor = getNodeColor();

            if (_rootColor == Colors.Gray)
            {
                int[,] _pointsNW = getPoints(Direction.NW);
                QuadTreeImp qtNW = new QuadTreeImp(_pointsNW, _rows / 2, _columns / 2, _depth + 1, Direction.NW, _canvas);
                _northWest = qtNW.createQuardTree();

                int[,] _pointsSW = getPoints(Direction.SW);
                QuadTreeImp qtSW = new QuadTreeImp(_pointsSW, _rows / 2, _columns / 2, _depth + 1, Direction.SW, _canvas);
                _southWest = qtSW.createQuardTree();

                int[,] _pointsSE = getPoints(Direction.SE);
                QuadTreeImp qtSE = new QuadTreeImp(_pointsSE, _rows / 2, _columns / 2, _depth + 1, Direction.SE, _canvas);
                _southEast = qtSE.createQuardTree();

                int[,] _pointsNE = getPoints(Direction.NE);
                QuadTreeImp qtNE = new QuadTreeImp(_pointsNE, _rows / 2, _columns / 2, _depth + 1, Direction.NE, _canvas);
                _northEast = qtNE.createQuardTree();
            }

            return(this);
        }
示例#2
0
        public void drwaQuadTree(Canvas canvas)
        {
            _quadTree = new QuadTreeImp(_points, _rows, _columns, 0, Direction.ROOT, canvas);
            _quadTree = _quadTree.createQuardTree();

            _quadTree.Position = getRootNodePosition(canvas);
            _quadTree.draw(canvas);
        }
示例#3
0
        public void drwaQuadTree(Canvas canvas, string preOrderTextFile)
        {
            StreamReader fileReader = File.OpenText(preOrderTextFile);
            string       header     = fileReader.ReadLine();

            char[]   delimiterChars = { ' ' };
            string[] headerEntries  = header.Split(delimiterChars);

            _rows    = Convert.ToInt32(headerEntries[0]);
            _columns = Convert.ToInt32(headerEntries[1]);

            _preOrderText = fileReader.ReadLine();
            _quadTree     = new QuadTreeImp(_rows, _columns, 0, Direction.ROOT, canvas);
            _quadTree     = _quadTree.createQuardTree(ref _preOrderText);

            _quadTree.Position = getRootNodePosition(canvas);
            _quadTree.draw(canvas);
        }
示例#4
0
        public QuadTreeImp createQuardTree(ref string preOrderText)
        {
            _rootColor = getNodeColor(ref preOrderText);

            if (_rootColor == Colors.Gray)
            {
                QuadTreeImp qtNW = new QuadTreeImp(_rows / 2, _columns / 2, _depth + 1, Direction.NW, _canvas);
                _northWest = qtNW.createQuardTree(ref preOrderText);

                QuadTreeImp qtSW = new QuadTreeImp(_rows / 2, _columns / 2, _depth + 1, Direction.SW, _canvas);
                _southWest = qtSW.createQuardTree(ref preOrderText);

                QuadTreeImp qtSE = new QuadTreeImp(_rows / 2, _columns / 2, _depth + 1, Direction.SE, _canvas);
                _southEast = qtSE.createQuardTree(ref preOrderText);

                QuadTreeImp qtNE = new QuadTreeImp(_rows / 2, _columns / 2, _depth + 1, Direction.NE, _canvas);
                _northEast = qtNE.createQuardTree(ref preOrderText);
            }

            return(this);
        }
示例#5
0
        private void addToPreOrderText(QuadTreeImp quadTree)
        {
            if (quadTree != null)
            {
                if (quadTree.RootColor == Colors.Gray)
                {
                    _preOrderText += "2 ";
                }
                else if (quadTree.RootColor == Colors.Black)
                {
                    _preOrderText += "1 ";
                }
                else if (quadTree.RootColor == Colors.White)
                {
                    _preOrderText += "0 ";
                }

                if (quadTree.NorthWest != null)
                {
                    addToPreOrderText(quadTree.NorthWest);
                }

                if (quadTree.SouthWest != null)
                {
                    addToPreOrderText(quadTree.SouthWest);
                }

                if (quadTree.SouthEast != null)
                {
                    addToPreOrderText(quadTree.SouthEast);
                }

                if (quadTree.NorthEast != null)
                {
                    addToPreOrderText(quadTree.NorthEast);
                }
            }
        }
示例#6
0
 public void clearQuadTree()
 {
     _quadTree = null;
 }