3

我正在尝试实现在 C#中描述的Bentley-Ottmann 算法。特别是,我在扫描线状态结构中为Segment类实现 IComparable<T> 时遇到问题。下面列出了段类:

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)
    {
        ?????
    }
}

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

4

1 回答 1

0

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

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

但我建议根本不实施IComparable。你需要它做什么?

于 2012-11-05T17:42:29.930 回答