Bagikan melalui


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

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.

API yang Terpengaruh