3

我目前有一个来自画布上手绘图的点数组列表。我想知道是否有一个简单的算法来检测该形状是否代表一个圆圈。我已经对此进行了一些研究,我指出的主要项目是霍夫变换或位图图像,但这两者似乎都有点过头了我需要它的顶部。任何指向算法或实现的指针都会非常有帮助。

提前感谢sansoms,

4

4 回答 4

3

在此处输入图像描述

如果我正确解释了您的问题,您想知道所有点是否都在一个圆圈上。

如图所示,我们从列表中选择三个点 A、B、C 并计算假定圆的原点 O。通过检查 O 与列表中每个点之间的距离,我们可以得出这些点是否在一个圆上的结论。

于 2012-11-19T12:51:44.833 回答
0

也许这个答案可以给你一些想法:https ://stackoverflow.com/a/940041/12860

简而言之:计算二阶导数。如果它相当一致,它可能是一个圆圈。

于 2012-11-19T11:35:44.930 回答
0

阅读您的评论,绘制圆的更简单方法是用户单击中心点,然后拖动圆的半径。它的计算量要少得多,用户绘制起来也更容易。

您可以对矩形或任何其他凸多边形做同样的事情。

于 2012-11-19T13:47:49.807 回答
0

如果您不知道用户想要绘制什么(例如,圆、椭圆、直线或矩形),您可以使用一些基本的优化算法来找到与手绘点最匹配的形状。

  • 对于每个基本形状(椭圆、矩形、三角形、直线等),创建该形状的随机实例并测量给定点的误差
  • (单独地)优化每个形状,直到椭圆最匹配给定点,矩形最匹配点,最佳三角形等。
  • 选择误差最小的形状并绘制它
于 2012-11-19T13:49:21.647 回答