Esempio n. 1
0
 // ************************************************************************
 public void CopyTo(Quadrant q)
 {
     base.CopyTo(q);
     q.FirstPoint  = this.FirstPoint;
     q.CurrentNode = this.CurrentNode;
     q.LastPoint   = this.LastPoint;
     q.RootPoint   = this.RootPoint;
     q.ListOfPoint = this.ListOfPoint;
 }
        // ******************************************************************
        public bool MoveNext()
        {
            if (!_convexHull.IsInitDone)
            {
                return(false);
            }

            if (_currentQuadrant == null)
            {
                _currentQuadrant = _convexHull._q1;
                _currentNode     = _currentQuadrant.GetFirstNode();
            }
            else
            {
                for (;;)
                {
                    AvlNode <PolygonPoint> nextNode = _currentNode.GetNextNode();
                    if (nextNode == null)
                    {
                        if (_currentQuadrant == _convexHull._q4)
                        {
                            return(false);
                        }

                        _currentQuadrant = _currentQuadrant.GetNextQuadrant();

                        nextNode = _currentQuadrant.GetFirstNode();

                        if (nextNode.Item == _currentNode.Item)
                        {
                            _currentNode = nextNode;
                            return(MoveNext());
                        }
                    }
                    else
                    {
                        _currentNode = nextNode;
                        break;
                    }
                }
            }

            return(true);
        }
 // ******************************************************************
 public void Reset()
 {
     _currentQuadrant = null;
     _currentNode     = null;
 }