如何在java中找到两个向量之间的顺时针角度

时间:2014-05-12 15:05:01

标签: java vector atan2

All vector

首先,我想将以下向量称为:

矢量M1 = [O→M1]; 矢量C1 = [O→E];

矢量M2 = [A→M2]; 向量C2 = [A→C];

矢量M3 = [B→M3]; 矢量C3 = [B→G];

每个M向量是主要向量或基本向量。

我的问题是如何在这些矢量(M到C)之间找到角度。决定C看哪个方向与M比较。

e.g。

1。)M1和C1方向是正确的。

2。)M2和C2方向留下。

3.)M3和C3方向回来了。

PS。抱歉我的英语不好,如果你不明白我想说的话,请问我。

编辑: 角度应该是顺时针方向。

1 个答案:

答案 0 :(得分:2)

感谢来自Direct way of computing clockwise angle between 2 vectors的MvG,他的解决方案非常完美。

double dot = C.dot(M);
double det = ((C.getX()*M.getZ()) - (C.getZ()*M.getX()));
double angle = Math.toDegrees(Math.atan2(det, dot));

String movedirection = "";
if(angle < -135 || angle >= 135){
movedirection = "Front";
};
if(angle < 135 && angle >= 45){
movedirection = "right";
};
if(angle < 45 && angle >= -45){
movedirection = "back";
};
if(angle < -45 && angle >= -135){
movedirection = "left";
};
相关问题