Bentley-Ottmann算法中Segment类的IComparable实现

时间:2012-11-05 17:10:55

标签: c# intersection segment

我正在尝试实现在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)
    {
        ?????
    }
}

我不清楚我将它们添加到扫描线状态结构时应该如何比较两个段?

1 个答案:

答案 0 :(得分:0)

为什么要尝试比较线段?四个坐标的元组没有任何总排序。

如果您想要沿多边形边界出现边的顺序,您应该只跟踪段索引。我猜那是Edge属性?试试return Edge.CompareTo(other.Edge)

但我建议不要实施IComparable。你需要什么?