我正在尝试实现在C#中描述为here的Bentley-Ottmann算法。 特别是,我在实现IComparable< T>时遇到了问题。扫描线状态结构中的 Segment 类。细分类别列在下面:
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)
{
?????
}
}
我不清楚我将它们添加到扫描线状态结构时应该如何比较两个段?
答案 0 :(得分:0)
为什么要尝试比较线段?四个坐标的元组没有任何总排序。
如果您想要沿多边形边界出现边的顺序,您应该只跟踪段索引。我猜那是Edge
属性?试试return Edge.CompareTo(other.Edge)
。
但我建议不要实施IComparable
。你需要什么?