两个向量/点之间的角度

时间:2021-07-05 03:00:04

标签: java math libgdx

我有以下功能

public float getAngle(Point p2) {

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

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

1 个答案:

答案 0 :(得分:2)

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

相关问题