平均两个角度环绕

时间:2009-07-21 12:33:16

标签: math average angle

  

可能重复:
  How do you calculate the average of a set of angles?

我有两个角度,a = 20度,b = 350度。这两个角度的平均值是185度。但是,如果我们认为最大角度是360度并且允许环绕,则可以看到5度是更接近的平均值。

在计算平均值时,我遇到了一个很好的公式来解决这个问题。有人有任何提示吗?

还是我在这里拍脚?这被认为是数学中的“坏习惯”吗?

3 个答案:

答案 0 :(得分:2)

试试这个(C#中的例子):

    static void Main(string[] args)
    {
        Console.WriteLine(GetAngleAverage(0,0));
        Console.WriteLine(GetAngleAverage(269, 271));
        Console.WriteLine(GetAngleAverage(350, 20));
        Console.WriteLine(GetAngleAverage(361, 361));
    }

    static int GetAngleAverage(int a, int b)
    {
        a = a % 360;
        b = b % 360;

        int sum = a + b;
        if (sum > 360 && sum < 540)
        {
            sum = sum % 180;
        }
        return sum / 2;
    }

我认为它有效,输出是

0
270
5
1

答案 1 :(得分:1)

只需取正常平均值,然后取mod 180.在你的例子中,这就像预期的那样得到5度。

答案 2 :(得分:1)

如果您查看角度圆圈,您会看到有2个相对的“角度”与您的“平均值”相对应。

因此185°和5°都是正确的。

但是你提到了更接近平均值。因此,在这种情况下,您可以选择更接近的角度。

通常,角度的“平均”涉及逆时针方向。如果切换两个角度(或顺时针方向),“平均”不一样。

例如,对于a=20°b=350°,您正在寻找a之后和b 之前逆时针方向的角度185°就是答案。如果您正在寻找a之前和b之后逆时针方向(或a之后和b之前的逆时针方向)的角度,{{ 1}}就是答案。

this post的答案是正确的方法。

所以解决方案的伪代码是