我想计算两条线段 A 和 B 之间的顺时针角度。所以得到的角度必须在 0 到 360-1 度之间。我在 SO 中看到了所有其他答案,但他们给了我负面的角度。谢谢。
问问题
2783 次
3 回答
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
将为您提供一个介于-359
和之间359
的任何整数的值,然后第二行是确保它在 0 到 359 的范围内。
一行的鬼鬼祟祟的版本:
degrees = ((degrees % 360) + 360) % 360;
这将在所有条件下使其正常化。除非性能很关键,否则我不确定我是否会过于担心使用内联单线,但我会解释一下。
从degrees % 360
,您将得到一个介于-359
和之间的数字359
。添加360
会将范围修改为介于1
和之间729
。然后决赛% 360
将把它带回范围0
通过359
。
于 2010-07-05T02:02:38.993 回答
2
我会尝试 :
if degrees is between [-360, 360]
degrees = (degrees + 360) % 360;
else degrees = (degrees % 360) + 360) % 360;
于 2011-03-31T10:00:55.260 回答
1
当然,您可以通过调整将任何具有负角的解决方案调整为始终为 0-360:
浮动正=(角度<0)?(360 + 角度) : 角度
于 2010-07-05T01:45:41.157 回答