Share via


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