Vector2.Lerp 和 Vector4.Lerp 的行为变更

Vector2.Lerp(Vector2, Vector2, Single)Vector4.Lerp(Vector4, Vector4, Single) 的实现已更改,以正确考虑浮点数舍入误差。

更改描述

以前,Vector2.Lerp(Vector2, Vector2, Single)Vector4.Lerp(Vector4, Vector4, Single) 实现为 value1 + (value2 - value1) * amount。 但是,由于浮点数舍入误差,在 amount1.0f 时,此算法不会始终返回 value2

在 .NET 5 及更高版本中,该实现使用与 Vector3.Lerp(Vector3, Vector3, Single) 相同的算法,即 (value1 * (1.0f - amount)) + (value2 * amount)。 此算法可正确考虑舍入误差。 现在,当 amount1.0f 时,结果为精确的 value2。 更新的算法还允许使用 MathF.FusedMultiplyAdd(如果可用)自由地优化算法。

引入的版本

5.0

无需执行任何操作。 但是,如果你想要保留旧行为,则可以实现自己的 Lerp 函数,使用先前的算法 value1 + (value2 - value1) * amount

受影响的 API