Пример #1
0
        private void HandleSiteEvent(SiteEvent siteEvent)
        {
            EventTree.TreeNode node = _eventTree.GetClosest(this, _eventTree.GetRoot(), siteEvent);


            if (node == null || node is EventTree.BreakpointNode)
            {
                return;
            }
            EventTree.LeafNode closest = (EventTree.LeafNode)node;

            if (closest.GetDisappearEvent() != null)
            {
                _eventQueue.Delete(closest.GetDisappearEvent().GetHandle());

                closest.SetDisappearEvent(null);
            }

            List <CircleEvent> circleEvents2 = _eventTree.InsertNewSiteEvent(closest, new TreeItem(siteEvent.V()));

            foreach (var ce in circleEvents2)
            {
                IPriorityQueueHandle <IEvent> h = null;
                _eventQueue.Add(ref h, ce);
                ce.SetHandle(h);
            }
        }
Пример #2
0
        public VoronoiGenerator(List <VectorNode> nodeList)
        {
            _nodeList   = nodeList;
            _eventQueue = new IntervalHeap <IEvent>(new EventComparer());

            RemoveDuplicatePoints();
            foreach (var node in _nodeList)
            {
                var se = new SiteEvent(node);
                IPriorityQueueHandle <IEvent> h = null;
                _eventQueue.Add(ref h, se);
                se.SetHandle(h);
            }
        }
Пример #3
0
        public void Rebuild()
        {
            System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
            watch.Start();
            _eventQueue = null;
            _eventTree  = new EventTree();
            _allCircleEvents.Clear();
            _eventQueue = new IntervalHeap <IEvent>(new EventComparer());

            RemoveDuplicatePoints();
            foreach (var node in _nodeList)
            {
                node.halfEdge = null;
                var se = new SiteEvent(node);
                IPriorityQueueHandle <IEvent> h = null;
                _eventQueue.Add(ref h, se);
                se.SetHandle(h);
            }
            CreateDiagram();
            watch.Stop();
        }