我有一大组重叠的圆圈,每个圆圈都位于具有特定半径的随机位置。
type Circle =
struct
val x: float
val y: float
val radius: float
end
给定一个带有类型的新点
type Point =
struct
val x: float
val y: float
end
我想知道我的集合中的哪些圆圈包围了新点。线性搜索是微不足道的。我正在寻找一种结构,它可以容纳圆圈并返回比 O(N) 更好的封闭圆圈。
理想情况下,该结构应该能够快速插入新圆圈和移除圆圈。
我想在 F# 中实现它,但任何语言的想法都可以。
为了您的信息,我正在寻找实施
http://takisword.wordpress.com/2009/08/13/bowyerwatson-algorithm/
但如果我使用简单的方法扫描所有圆圈以查找每个新点,那将是 O(N^2)。