Aracılığıyla paylaş


Vector2.Lerp ve Vector4.Lerp için davranış değişikliği

"Vector2.Lerp(Vector2, Vector2, Single) ve Vector4.Lerp(Vector4, Vector4, Single)'in uygulanması, kayan nokta yuvarlama hatasını doğru bir şekilde dikkate almak için değiştirildi."

Açıklamayı değiştir

Vector2.Lerp(Vector2, Vector2, Single) ve Vector4.Lerp(Vector4, Vector4, Single) daha önce value1 + (value2 - value1) * amount olarak uygulanıyordu. Ancak kayan nokta yuvarlama hatası nedeniyle, value2amount olduğunda bu algoritma her zaman 1.0f döndürmez.

.NET 5 ve sonraki sürümlerde, uygulama Vector3.Lerp(Vector3, Vector3, Single) ile aynı algoritmayı kullanır; bu algoritma (value1 * (1.0f - amount)) + (value2 * amount). Bu algoritma yuvarlama hatasını doğru şekilde hesaplar. Şimdi amount1.0f olduğunda, sonuç tam olarak value2 olur. Güncellenmiş algoritma, kullanılabilir olduğunda MathF.FusedMultiplyAdd kullanılarak algoritmanın serbestçe optimize edilmesini de sağlar.

Sürüm kullanıma sunulmuştur

5.0

Eyleme gerek yoktur. Ancak, eski davranışı korumak istiyorsanız, önceki algoritmasını Lerpkullanan kendi value1 + (value2 - value1) * amount işlevinizi uygulayabilirsiniz.

Etkilenen API'ler