C# 向量2.规范化函数,对对角线输出感到困惑

C# 向量2.规范化函数,对对角线输出感到困惑,c#,xna,C#,Xna,我的问题是何时使用Vector2.Normalize函数(特别是在XNA中) 这可能是我对向量数学的理解不好,但据我所知,规范化给了你一个方向,或者说梯度 如果你在一个方向上应用一个速度,比如上下左右,它只会返回特定轴的正或负1,这个方向对我来说是有意义的 但是,如果我要求规范化一个向量2,在这个向量2沿对角线方向移动,假设每向右移动1个单位,向下移动1个单位。它返回这个 {X:0.7071068 Y:0.7071068} 这让我惊讶,因为我本以为它会更像[X:0.5y:0.5] 我的理由是什么

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

这可能是我对向量数学的理解不好,但据我所知,规范化给了你一个方向,或者说梯度

如果你在一个方向上应用一个速度,比如上下左右,它只会返回特定轴的正或负1,这个方向对我来说是有意义的

但是,如果我要求规范化一个向量2,在这个向量2沿对角线方向移动,假设每向右移动1个单位,向下移动1个单位。它返回这个

{X:0.7071068 Y:0.7071068}

这让我惊讶,因为我本以为它会更像[X:0.5y:0.5]

我的理由是什么?如果一个方向的绝对值为1,另一个方向的绝对值为1,那么以45度角移动是否会产生类似于0.5的中点

加上0.5和0.5会不会产生我认为标准化向量应该遵循的1的大小


我不知道我是否能用像DYDX这样的东西为自己找到答案,因为它只是一个方向,而不是一条有已知终点的线

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

规范化向量会保持方向,但会将其长度设置为1,因此我不明白为什么这是错误的。0.707等于1/sqrt(2)。因此长度是sqrt(1/sqrt(2)**2+1/sqrt(2)**2)=1。这里的编程问题在哪里?如果您对不理解规范化方向向量有一些问题,那么您最好阅读一些相关信息,并在math.stackexchange上提问。如果你有一些编程问题是由向量的当前表示引起的,请用代码、期望的和当前的结果来描述它。抱歉,现在我对其背后的数学有了更好的理解,我意识到它更适合像你所说的数学交换。我之前没有找到合适的资源。我不确定Vector2.Normalize方法处理规范化的方式是否与标准数学中的方式有所不同,直到我理解了它给出的答案。