如何修改这个计算2点之间角度的函数

时间:2012-01-17 05:31:58

标签: angle points

经过大量搜索,我终于找到了我一直在寻找的功能:

public double getAngle(Point centerCircle)
{
    double angle1= Math.atan2(centerCircle.y-this.y,centerCircle.x-this.x);
double angle2= Math.atan2(0,centerCircle.x-(centerCircle.x*2));
return Math.toDegrees(angle2-angle1);
}
抱歉,但我对数学有点迟钝,所以我需要改变这个功能,以便遵循:

其中3 O'Clock 90 且12 O'Clock 180

而不是

其中3 O'Clock 0 且12 O'Clock 90

谢谢!

2 个答案:

答案 0 :(得分:0)

如果 angle1 angle2 以弧度为单位,只需添加PI / 2,如下所示:

return Math.toDegrees(angle2-angle1+(Math.PI/2));

答案 1 :(得分:0)

你似乎在这里要求一些不同的东西,所以我会看看我是否可以涵盖所有的基础。

1)如果您正在寻找两点之间的角度(具有相同的原点/中心点),只要它们是一致的,0 / 90/180/270指向的方向无关紧要。无论方向如何,角度都是相同的。

2)如果你正在寻找(e,ey)点E的角度,原点为(cx,cy),0度指向下并逆时针增加(如你所知),那么你可以使用this answer中的公式,以获得基于0度= 3点的角度。然后添加90度以获得最终结果。 (如有必要,减去360。)

3)您可以使用#2中的步骤计算两个不同点的角度,然后从另一个点中减去一个以获得它们之间的角度。

getAngleBetweenAAndB(Point A, Point B){
  return abs(getAngle(A) - getAngle(B));
}