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

Mar*_*dle 2 c# xna

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

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

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

但是如果我要求对矢量2进行标准化,那么对角线移动,比如每1个单位向下一个单位.它返回这个.

{X:0.7071068 Y:0.7071068}

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

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

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

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

Ste*_*e H 5

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