IComparable реализация для класса Segment в алгоритме Бентли-Оттмана

Я пытаюсь реализовать алгоритм Бентли-Оттмана, который описан здесь в C#. В частности, у меня проблема с реализацией класса IComparable для сегмента в структуре состояния линии развертки. Класс сегмента указан ниже:

public class SweepLineSegment : IComparable<SweepLineSegment>
{
    public int Edge { get; set; }
    public PointF LeftmostVertexPoint { get; set; }
    public PointF RightmostVertexPoint { get; set; } 
    public SweepLineSegment Above { get; set; }
    public SweepLineSegment Below { get; set;} 

    public int CompareTo(SweepLineSegment other)
    {
        ?????
    }
}

Я не совсем понимаю, как мне сравнивать два сегмента, когда я добавляю их в структуру статуса линии развертки?

1 ответ

Почему вы пытаетесь сравнить отрезки для начала? Нет никакого полного порядка кортежей четырех координат.

Если вы хотите порядок, в котором стороны появляются по периметру многоугольника, вы должны просто отслеживать индекс сегмента. Я думаю, что это Edge имущество? Пытаться return Edge.CompareTo(other.Edge),

Но я бы предложил не осуществлять IComparable совсем. Для чего тебе это?

Другие вопросы по тегам