我正在创建一个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。我错过了什么?
答案 0 :(得分:3)
角度是 44.48384°,如果你测量原点周围的角度(正如你所料,因为“两个矢量之间的角度”)。
也许你已经定义了你想要计算错误的角度,因为我正在努力研究这两个点如何形成90°的角度。
这是我在纸上对这两点做的快速草图(请原谅粗暴!):
我的Y坐标方向错误,但问题是一样的。