两条线之间的顺时针角度

时间:2010-07-05 01:41:40

标签: c# geometry drawing 2d computational-geometry

我想计算两个线段A和B之间的顺时针角度。因此得到的角度必须在0到360-1度之间。我在SO中看到了所有其他答案,但他们给了我负面的角度。感谢。

3 个答案:

答案 0 :(得分:2)

要在C#中将任意角度转换为0-359范围,您可以使用以下“算法”:

public int Normalise (int degrees) {
    int retval = degrees % 360;
    if (retval < 0)
        retval += 360;
    return retval;
}

C#遵循与C和C ++相同的规则,i % 360将为{1}}和-359之间的任何整数提供值,然后第二行是确保它在范围内0到359(含)。

一行中的偷偷摸摸的版本:

359

这将在所有条件下将其标准化。我不确定我是否担心使用内联单行,除非性能至关重要,但我解释它。

degrees = ((degrees % 360) + 360) % 360; 开始,您将获得degrees % 360-359之间的数字。添加359会将范围修改为3601之间的范围。然后,最终的729会将其恢复到% 3600的范围。

答案 1 :(得分:2)

我会尝试:

if degrees is between [-360, 360]
    degrees = (degrees + 360) % 360;
else degrees = (degrees % 360) + 360) % 360;

答案 2 :(得分:1)

当然,您可以通过调整:

来调整任何负角度的解决方案,始终为0-360

浮动正=(角度<0)? (360 +角度):角度