Perubahan perilaku untuk Vector2.Lerp dan Vector4.Lerp
Implementasi Vector2.Lerp(Vector2, Vector2, Single) dan Vector4.Lerp(Vector4, Vector4, Single) berubah menjadi memperhitungkan kesalahan pembulatan floating-point dengan benar.
Deskripsi perubahan
Sebelumnya, Vector2.Lerp(Vector2, Vector2, Single) dan Vector4.Lerp(Vector4, Vector4, Single) diimplementasikan sebagai value1 + (value2 - value1) * amount
. Namun, karena kesalahan pembulatan floating-point, algoritma ini tidak selalu kembali value2
ketika amount
adalah 1.0f
.
Di .NET 5 dan yang lebih baru, implementasi menggunakan algoritma yang sama dengan Vector3.Lerp(Vector3, Vector3, Single), yaitu (value1 * (1.0f - amount)) + (value2 * amount)
. Algoritma ini memperhitungkan kesalahan pembulatan dengan benar. Sekarang, ketika amount
adalah 1.0f
, hasilnya tepat value2
. Algoritma yang diperbarui juga memungkinkan algoritma dioptimalkan dengan bebas menggunakan MathF.FusedMultiplyAdd saat tersedia.
Versi yang diperkenalkan
5.0
Tindakan yang direkomendasikan
Tidak ada tindakan yang diperlukan. Namun, jika Anda ingin mempertahankan perilaku lama, Anda dapat menerapkan fungsi Anda sendiri Lerp
yang menggunakan algoritma sebelumnya dari value1 + (value2 - value1) * amount
.