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
совсем. Для чего тебе это?