两个之间的角度 vectors/points

Angle between two vectors/points

我有以下功能

public float getAngle(Point p2) {

    return (float) (MathUtils.radiansToDegrees * (Math.atan2(p2.y - y, p2.x - x)));
}

我遇到的问题是返回的角度看起来像 -20(我期望 20)或 50,而我期望 310。获取从 0 到“正常”范围内的值的正确方法是什么359逆时针?

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