如何对角度的一致性进行评分?

How to score the consistency of angles?

提问人:garystu 提问时间:11/15/2023 更新时间:11/16/2023 访问量:42

问:

我通过在将角度放在单位圆上后平均它们的坐标来平均角度。我读到结果点或质心/质心的长度是这些角度一致性的指标。这在我的脑海中是有道理的,两个完全相反的角度将平均到 (0,0) 给出 0 的长度;两个完全相同的角度将给出一个单位向量。

然而,我正在努力解释这个值,并正在寻找是否有人知道任何指导原则或已发布的启发式方法?例如,该值似乎不线性地表示一致性。在我的脑海中,似乎只有非常接近 1.0 的长度表示良好的一致性,并且一堆相差超过 90 度的点仍然可以给出长度为 >0.9 的质心。

有没有人知道这方面的任何理论或指导?我不想盲目地对此应用任意转换(例如 y=1000^(x-1)),以使其成为更直观的“一致性分数”。

我是否走错了路,有更好的方法来获得这些角度的一致性?

算法 数学 统计 几何 三角学

评论

0赞 Robert Dodier 11/15/2023
有趣的问题,虽然这里是题外话;请尝试 stats.stackexchange.com。您可以考虑查看循环数据的分布;我认为最常见的一种叫做 von Mises 分布。你可以找到 von Mises 分布的参数,然后你就会估计它的中间值,以及围绕它分布的数据量。祝你好运,玩得开心。

答:

0赞 Mike 'Pomax' Kamermans 11/16/2023 #1

请注意,它可以是一个指标,但它几乎毫无用处,因为有无数的安排打破了这个假设。例如,使用多边形中心:

(x,y) = (0,0)
for all p in points:
  (x,y) += p
center = (x,y)

我们可以简单地构建“问题案例”:

enter image description here

(显示一些多边形的减少,如果我们继续前进,最终会收敛到中心)。

从圆心到多边形中心的距离在这里为零,但我很难将这些角度称为一致、均匀、均匀等。

一个更好的指标是确定圆上点之间每个圆弧的角度,然后计算每个圆弧之间的误差总和以及“完美”角度(只需 2pi 除以您拥有的点数):

n = points.length
tau = 2 * pi
perfect = tau / 2
error = 0
maxError = (n-2) * perfect + TAU;
for all p in points:
  a = p
  b = points.first if p is last, otherwise p.next
  # use clockwise angles:
  angle = (atan2(a.y*b.x - a.x*b.y, a.x*b.a + a.y*b*y) + tau) % tau
  error += abs(perfect - angle)
error = error / maxError

数字越接近零(介于 0 和 1 之间),您的积分就越接近完美分布。最大误差基于以下事实:如果所有点都彼此重叠,则最大误差是,因此每个圆弧都偏离了整个量,并且从最后一个点到第一个点的最后一个圆弧偏离了“整个圆,减去”。perfectperfect

例如,如果我们将填充圆圈的红色程度联系起来,我们会得到更有用的东西:error

enter image description here