用点画圆

Draw circle from using points

我有多个代理(例如 6 个或 8 个),我想使用 boids 算法将它们排列成一个圆圈。代理的全局位置未知,但每个代理都知道其他代理相对于自身的位置。代理商也可以更新职位。我怎样才能将它们对齐为一个圆圈?如果您需要更多信息,请发表评论。

每个代理可以进行如下操作:

1) 计算点集的最小二乘拟合圆,该点集包含此代理的当前位置及其 3 个最近的邻居(您至少需要 4 个点),使用以下公式: http://www.had2know.com/academics/best-fit-circle-least-squares.html

2) 将此代理的当前位置投影到计算出的最小二乘拟合圆上

等等……

我没有正式证明它收敛。您可能需要一些 "damping" 以避免振荡。