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 度
谢谢!
答案 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));
}