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

2つのセグメントをスイープラインステータス構造に追加するときに、2つのセグメントをどのように比較すればよいかが明確にわかりません。

4

1 に答える 1

0

そもそもなぜ線分を比較しようとしているのですか?4 つの座標のタプルの完全な順序付けはありません。

多角形の周囲に沿って辺が表示される順序が必要な場合は、セグメント インデックスを追跡する必要があります。ひょっとして、それがEdge財産?試してみてくださいreturn Edge.CompareTo(other.Edge)

しかし、私はまったく実装しないことをお勧めIComparableします。何のために必要ですか?

于 2012-11-05T17:42:29.930 に答える