使用固定半径圆平分一组点的算法

时间:2013-05-19 22:23:27

标签: algorithm geometry

假设我在笛卡尔平面中有一组点,由(X,Y)坐标的数组/向量定义。如果任何一组不连续点可以是连续的,则这组点在坐标平面中将是“连续的”。也就是说,这些点起源于矩形网格,其中通过先前算法消除了点的区域。点所概述的形状是任意的,但它往往会有边缘弧。

进一步假设我可以创建固定半径为r的圆圈。

我想要一个算法,它会找到一个圆圈的中心X,Y,该圆圈将尽可能接近给定点的一半。

2 个答案:

答案 0 :(得分:0)

好的,试试这个(对不起,如果我的措辞非常糟糕:我没有用英语学习数学)

第1步:查找轴

  • 对于所有点对,小于2r 计算连接线两侧的点数
  • 选择最差余额
  • 计算将这两个点平分为轴的线(“最大凹度的轴”)

第2步:寻找中心

  • 从远离轴(> 2r)开始,在步骤1中具有较低点数(凹面)
  • 在轴上移动中心,直到达到所需的点。这可以通过向上移动一个sqrt(delta)步骤来完成,其中delta是集合中2个点之间的最小距离,如果超越则向后移动一半,等等。

答案 1 :(得分:0)

您可能希望查看smallest enclosing circle of a point set的算法。

一种有点贪心的算法是简单地一次删除1点,直到圆半径小于或等于r。