提问人:garystu 提问时间:11/15/2023 更新时间:11/16/2023 访问量:42
如何对角度的一致性进行评分?
How to score the consistency of angles?
问:
我通过在将角度放在单位圆上后平均它们的坐标来平均角度。我读到结果点或质心/质心的长度是这些角度一致性的指标。这在我的脑海中是有道理的,两个完全相反的角度将平均到 (0,0) 给出 0 的长度;两个完全相同的角度将给出一个单位向量。
然而,我正在努力解释这个值,并正在寻找是否有人知道任何指导原则或已发布的启发式方法?例如,该值似乎不线性地表示一致性。在我的脑海中,似乎只有非常接近 1.0 的长度表示良好的一致性,并且一堆相差超过 90 度的点仍然可以给出长度为 >0.9 的质心。
有没有人知道这方面的任何理论或指导?我不想盲目地对此应用任意转换(例如 y=1000^(x-1)),以使其成为更直观的“一致性分数”。
我是否走错了路,有更好的方法来获得这些角度的一致性?
答:
请注意,它可以是一个指标,但它几乎毫无用处,因为有无数的安排打破了这个假设。例如,使用多边形中心:
(x,y) = (0,0)
for all p in points:
(x,y) += p
center = (x,y)
我们可以简单地构建“问题案例”:
(显示一些多边形的减少,如果我们继续前进,最终会收敛到中心)。
从圆心到多边形中心的距离在这里为零,但我很难将这些角度称为一致、均匀、均匀等。
一个更好的指标是确定圆上点之间每个圆弧的角度,然后计算每个圆弧之间的误差总和以及“完美”角度(只需 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 之间),您的积分就越接近完美分布。最大误差基于以下事实:如果所有点都彼此重叠,则最大误差是,因此每个圆弧都偏离了整个量,并且从最后一个点到第一个点的最后一个圆弧偏离了“整个圆,减去”。perfect
perfect
例如,如果我们将填充圆圈的红色程度联系起来,我们会得到更有用的东西:error
评论