private static int CompareSweepEvents(ISweepEvent a, ISweepEvent b) { var result = a.Y.CompareTo(b.Y); if (result != 0) { return(result); } return(((int)a.Type).CompareTo((int)b.Type)); }
public void ExecuteNextEvent(FortunesAlgorithmState state) { if (state.Root == null) { ProcessFirstSiteEvents(state); return; } ISweepEvent sweepEvent = state.EventQueue.Dequeue(); if (sweepEvent.Type == SweepEventType.Site) { ProcessSiteEvent(state, (SiteEvent)sweepEvent); } else { ProcessCircleEvent(state, (CircleEvent)sweepEvent); } }