Vector2.Normalize函数,对于对角线输出感到困惑

时间:2014-08-30 14:01:38

标签: c# xna

我的问题是使用Vector2.Normalize函数(特别是在XNA中)

这可能是我对矢量数学的不理解,但正如我所理解的那样,规范化会给你一个方向或一个渐变。

如果你在一个方向上施加一个速度,例如向上和向下,它只会返回特定轴的加号或负值1以及对我来说有意义的方向。

但是如果我要求将对角线移动的矢量2标准化,则说明每1个单位向下1个单位。它返回这个。

{X:0.7071068 Y:0.7071068}

这让我感到惊讶,因为我认为它更像是[X:0.5 Y:0.5]

我的理由是什么?如果一个方向的绝对值是1而另一个方向的绝对值是另一个方向的1,那么不应该以45度角移动产生0.5的中点?

并且不会增加0.5和0.5会产生1的大小我认为标准化的矢量应该坚持吗?

我不知道我是否可以使用像DYDX这样的东西看到自己的答案,因为它只是一个方向,而不是一些已知终点的线。

1 个答案:

答案 0 :(得分:5)

这是一个视觉辅助工具。规范化总是使向量的长度为1.0。因此图像中的3个向量都等于1.0。 x&对角矢量的y坐标明显大于0.5f