private static void UpdateActivePoints(ref Point p, ref Point firstActive, SkipList <Point> t, double delta)
        {
            var q = firstActive;

            while (p.X - q.X > delta && q.X < double.NegativeInfinity)
            {
                firstActive = t.Next(q);
                t.Remove(q);
                q = firstActive;
            }
        }
        private static void UpdateDeltaOnRight(ref Point p, ref Point r, ref double delta, SkipList <Point> t, ref Point?a, ref Point?b)
        {
            var i = 0;

            while (r != new Point(double.NegativeInfinity, double.PositiveInfinity) && (i < 4))
            {
                var dist = D(p, r);
                if (dist < delta)
                {
                    delta = dist;
                    a     = p;
                    b     = r;
                }
                r = t.Next(r);

                if (r == default(Point))
                {
                    break;
                }

                i++;
            }
        }