我目前有一个来自画布上手绘图的点数组列表。我想知道是否有一个简单的算法来检测该形状是否代表一个圆圈。我已经对此进行了一些研究,我指出的主要项目是霍夫变换或位图图像,但这两者似乎都有点过头了我需要它的顶部。任何指向算法或实现的指针都会非常有帮助。
提前感谢sansoms,
如果我正确解释了您的问题,您想知道所有点是否都在一个圆圈上。
如图所示,我们从列表中选择三个点 A、B、C 并计算假定圆的原点 O。通过检查 O 与列表中每个点之间的距离,我们可以得出这些点是否在一个圆上的结论。
也许这个答案可以给你一些想法:https ://stackoverflow.com/a/940041/12860
简而言之:计算二阶导数。如果它相当一致,它可能是一个圆圈。
阅读您的评论,绘制圆的更简单方法是用户单击中心点,然后拖动圆的半径。它的计算量要少得多,用户绘制起来也更容易。
您可以对矩形或任何其他凸多边形做同样的事情。
如果您不知道用户想要绘制什么(例如,圆、椭圆、直线或矩形),您可以使用一些基本的优化算法来找到与手绘点最匹配的形状。