我有以下功能
public float getAngle(Point p2) { return (float) (MathUtils.radiansToDegrees * (Math.atan2(p2.y - y, p2.x - x))); }
我的问题是,返回的Angular 看起来像-20(我预期为20)或50,而我预期为310。逆时针获得“正常”范围0到359的值的正确方法是什么?
cclgggtu1#
double deg = MathUtils.radiansToDegrees * Math.atan2(p2.y - y, p2.x - x); deg = deg > 0 ? 360 - deg : 0 - deg; return (float) deg;
这将以逆时针方式提供[0,360]的度数。注:使用 0 - deg 而不是 -deg 是为了确保 0.0 不会转换为 -0.0 .
0 - deg
-deg
0.0
-0.0
1条答案
按热度按时间cclgggtu1#
这将以逆时针方式提供[0,360]的度数。
注:使用
0 - deg
而不是-deg
是为了确保0.0
不会转换为-0.0
.