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
。 不過,由於浮點四捨五入錯誤,當 amount
為 1.0f
時,此演算法不一定會傳回 value2
。
在 .NET 5 和更新版本中,實作會使用與 Vector3.Lerp(Vector3, Vector3, Single) 相同的演算法,也就是 (value1 * (1.0f - amount)) + (value2 * amount)
。 此演算法正確計算四捨五入錯誤。 現在,當為 amount
時 1.0f
,結果就確實就是 value2
。 更新的演算法也可讓演算法在可用時自由地最佳化 MathF.FusedMultiplyAdd。
導入的版本
5.0
建議的動作
不需要採取任何動作。 不過,如果您想要維持舊行為,您可以實作自己的 Lerp
函式,以使用先前的 value1 + (value2 - value1) * amount
演算法。