c# - Vector2.Normalize函数,对对角线输出感到困惑

标签 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。所以图像中的 3 个向量的长度都是相等的 1.0。对角向量的x和y坐标明显大于0.5f

关于c# - Vector2.Normalize函数,对对角线输出感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25583169/

相关文章:

c# - XNA 2D 相机 - 如何将其锁定/居中到动画 Sprite ?

c# - 稀疏八叉树的高效存储?

XNA 4.0 和(对我来说)无法解决的深度好奇渲染

c# - 在 OData 中评估 IQueryable 后如何填充模型中的某些属性?

c# - 设置最小起订量更新测试

c# - C# 8.0 中是否有针对非空的 "check and get"运算符?

c# - 你调用的对象是空的。使用 TPM 设备客户端发送消息时

c# - File.Delete 在调用 Image.FromFile 之前失败,尽管复制了加载的图像并销毁了原始图像

c# - 系统.IO.IOException : Sharing violation on path

c# - 延迟键盘输入帮助