需求:
android有个小项目要用到图形计算,求第二点与第一点相对于中心点产生的角度,有正负值之分,顺时针产生正角度,逆时针产生负角度。
input项
中心点(X,Y)坐标
第一点(X1,Y1)坐标
第二点(X2,Y2)坐标
output项
角度Degree
public double getActionDegrees(float x, float y, float x1, float y1, float x2, float y2)
{
double a = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
double b = Math.sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
double c = Math.sqrt((x1 - x) * (x1 - x) + (y1 - y) * (y1 - y));
// 余弦定理
double cosA = (b * b + c * c - a * a) / (2 * b * c);
// 返回余弦值为指定数字的角度,Math函数为我们提供的方法
double arcA = Math.acos(cosA);
double degree = arcA * 180 / Math.PI;
// 接下来我们要讨论正负值的关系了,也就是求出是顺时针还是逆时针。
// 第1、2象限
if (y1 < y && y2 < y)
{