【发布时间】:2012-10-25 13:47:12
【问题描述】:
我正在尝试实现在 C# 中描述 here 的 Bentley-Ottmann 算法。
特别是,我在扫描线状态结构中为 Segment 类实现 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)
{
?????
}
}
我不清楚在将两个段添加到扫描线状态结构时应该如何比较它们?
【问题讨论】:
-
是否可以将您的问题与 Bentley-Ottmann 算法分离?这样做会让更多的观众受益。
-
根据 Bentley-Ottmann 算法,跨越扫描线的线段保存在通常是平衡二叉搜索树(AVL-tree、RB-tree 等)的结构中。我尝试为 Segment 类实现简单的通用 BST,但我需要知道 Segment 类的正确比较方法才能正确实现它。这种方式与算法密切相关,我不清楚。
-
那么您的问题很简单,“我如何比较两个自定义对象(在这种情况下为段)?”
标签: c# intersection segment