从一个点的arraylist的java圈识别

时间:2012-11-19 11:27:05

标签: java arraylist detection geometry

我目前在画布上的徒手画中有一个点数的arraylist。我想知道是否有一个简单的算法来检测这个形状是否代表一个圆。我已经研究了一点,我指出的主要项目是霍夫变换或有位图图像但这两个看起来都有点过了我需要它的顶部。任何指向算法或实现的指针都会非常有用。

提前感谢sansoms,

4 个答案:

答案 0 :(得分:3)

enter image description here

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

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

答案 1 :(得分:0)

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

简而言之:计算二阶导数。如果它是一个非常恒定的,它可能是一个圆圈。

答案 2 :(得分:0)

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

您可以使用矩形或任何其他凸多边形执行相同的操作。

答案 3 :(得分:0)

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

  • 对于每个基本形状(椭圆形,矩形,三角形,直线等),创建该形状的随机实例并测量错误w.r.t.给定点
  • 优化每个形状(单独),直到椭圆最佳匹配给定点,矩形最佳匹配点,最佳三角形等。
  • 选择具有最低错误的形状并绘制它