两条线之间的顺时针角度

3

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

3个回答

2
我会尝试:

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

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将为任何整数提供一个介于-359359之间的值,然后第二行是为了确保它在0到359的范围内。

一个狡猾的一行版本:

    degrees = ((degrees % 360) + 360) % 360;

这将使其在所有情况下都得到规范化。除非性能至关重要,否则我不确定是否需要过多担心使用内联单行代码,但是我进行解释。

degrees % 360中,您将获得一个介于-359359之间的数字。添加360将修改范围为1729。然后最终的% 360将使其回到0359的范围内。


1

你可以通过调整以下代码,将任何带有负角度的解决方案适应为始终为0-360:

float positive = (angle < 0) ? (360 + angle) : angle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接