确定路径是否描述圆



我正在尝试测试路径或折线是否描述了java中的圆。我该怎么做?我正在考虑测试路径上所有点的两点之间的最大距离是否几乎相同(考虑到一些错误)。这能行吗?我还有什么其他可能性可以检查?

假设 2D...

  1. 计算箱

    因此,从您获得的所有采样点中找到最小和最大x,y坐标值x[i],y[i]。让我们称它们为x0<=x1y0<=y1x0,y0,x1,y1

  2. 计算圆cx,cy中心

    只是bbox的中心,所以:

    cx = 0.5*(x1+x0)
    cy = 0.5*(y1+y0)
    
  3. 计算半径

    如果你真的有一个圆,那么bbox应该是方形的,所以

    fabs((x1-x0)-(y1-y0)) <= zero_threshold
    

    如果没有,你没有圆圈。如果是,半径为

    r = ~0.5*(x1-x0) = ~0.5*(y1-y0)
    

    平均也是如此...

    r = 0.25*(x1-x0 + y1-y0)
    
  4. 检查与圆的偏差

    计算最大腹肌差异...

    d = max ( fabs( (x[i]-cx)^2 + (y[i]-cy)^2 - r^2) )
    

    如果是d > max_radius_difference_threshold^2那么你没有圆圈。

另请查看此内容:

  • 算法:椭圆匹配

还有另一个告诉电话,比如

  • 如果您知道半径和路径长度,那么它应该与圆周长匹配
  • 均匀采样的闭合圆形路径的平均点也是中心
  • 均匀采样的圆形路径的线段之间的角度是恒定的
  • 圆只是凸的

圆的一般方程与中心(0,0)a^2 + b^2=r^2;其中r是圆的半径,a和b是放在a和b中的点的坐标,并得到r的值,如果r的值对于a和b的所有值都相同,则路径是一个圆。 注意:- 对于点 (h,k) 处的中心,公式更改为 :-

(a-h)^2+(b-k)^2=r^2;

最新更新