2

所有矢量

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

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

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

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

每个 M 向量都是主向量或基向量。

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

例如

1.) M1 和 C1 方向正确。

2.) M2 和 C2 方向为左。

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

附言。对不起我的英语不好,如果你不明白我想说什么,问我。

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

4

1 回答 1

2

多亏了 MvG 来自Direct 计算 2 个向量之间的顺时针角度的方法,他的解决方案工作完美。

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";
};
于 2014-05-13T05:55:03.413 回答