测量XNA中两个矢量之间的角度

时间:2014-01-09 11:00:19

标签: c# vector xna rotation trigonometry

我正在创建一个XNA游戏,但在角度旋转时,与标准笛卡尔坐标的工作方式有点混淆。

假设我有以下内容,我想找到这些矢量之间的角度

Vector2 p1 = new Vector2(111, 0);
Vector2 p2 = new Vector2(223, 110);

float angle = (float)Math.Atan2(p2.Y - p1.Y, p2.X - p1.X);
Debug.WriteLine(MathHelper.ToDegrees(angle).ToString());

我认为角度应该接近90度,但它给出了44.48384。

想一想,我是否正确假设它是水平线之间的角度,即Vector2(0,0)和Vector2(111,0)以及Vector2(0,0)和Vector2(223,110)之间的角度?

然而,如果我使用tan x = 110/223计算角度,则得到的角度为26.25。我错过了什么?

1 个答案:

答案 0 :(得分:3)

角度 44.48384°,如果你测量原点周围的角度(正如你所料,因为“两个矢量之间的角度”)。

也许你已经定义了你想要计算错误的角度,因为我正在努力研究这两个点如何形成90°的角度。

这是我在纸上对这两点做的快速草图(请原谅粗暴!):

enter image description here

我的Y坐标方向错误,但问题是一样的。