两个向量/点之间的Angular

lqfhib0f  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(380)

我有以下功能

public float getAngle(Point p2) {

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

我的问题是,返回的Angular 看起来像-20(我预期为20)或50,而我预期为310。逆时针获得“正常”范围0到359的值的正确方法是什么?

cclgggtu

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 .

相关问题