Zmiana działania elementów Vector2.Lerp i Vector4.Lerp
Implementacja i Vector4.Lerp(Vector4, Vector4, Single) zmieniona w celu poprawnego Vector2.Lerp(Vector2, Vector2, Single) uwzględnienia błędu zaokrąglania zmiennoprzecinkowego.
Opis zmiany
Vector2.Lerp(Vector2, Vector2, Single) Wcześniej i Vector4.Lerp(Vector4, Vector4, Single) zostały zaimplementowane jako value1 + (value2 - value1) * amount
. Jednak ze względu na błąd zaokrąglania zmiennoprzecinkowego ten algorytm nie zawsze zwraca value2
wartość , gdy amount
ma wartość 1.0f
.
W programie .NET 5 lub nowszym implementacja używa tego samego algorytmu co Vector3.Lerp(Vector3, Vector3, Single), czyli (value1 * (1.0f - amount)) + (value2 * amount)
. Ten algorytm poprawnie odpowiada za błąd zaokrąglania. Teraz, gdy amount
ma 1.0f
wartość , wynik to dokładnie value2
. Zaktualizowany algorytm umożliwia również swobodne optymalizowanie algorytmu, MathF.FusedMultiplyAdd gdy jest dostępny.
Wprowadzona wersja
5,0
Zalecana akcja
Nie trzeba podejmować żadnych działań. Jeśli jednak chcesz zachować stare zachowanie, możesz zaimplementować własną Lerp
funkcję, która używa poprzedniego algorytmu value1 + (value2 - value1) * amount
.