Delen via


Gedragswijziging voor Vector2.Lerp en Vector4.Lerp

De implementatie van Vector2.Lerp(Vector2, Vector2, Single) en Vector4.Lerp(Vector4, Vector4, Single) is gewijzigd om correct rekening te houden met een afrondingsfout voor drijvende komma's.

Beschrijving wijzigen

Eerder, Vector2.Lerp(Vector2, Vector2, Single) en Vector4.Lerp(Vector4, Vector4, Single) werden geïmplementeerd als value1 + (value2 - value1) * amount. Vanwege een drijvende-komma-afrondingsfout retourneert dit algoritme echter niet altijd value2 wanneer amount .1.0f

In .NET 5 en hoger gebruikt de implementatie hetzelfde algoritme als Vector3.Lerp(Vector3, Vector3, Single).(value1 * (1.0f - amount)) + (value2 * amount) Dit algoritme verwerkt correct de afrondingsfout. Wanneer amount1.0f is, is het resultaat precies value2. Met het bijgewerkte algoritme kan het ook vrij worden geoptimaliseerd door MathF.FusedMultiplyAdd te gebruiken zodra deze beschikbaar is.

Geïntroduceerde versie

5,0

Er is geen actie nodig. Als u echter het oude gedrag wilt behouden, kunt u uw eigen Lerp functie implementeren die gebruikmaakt van het vorige algoritme van value1 + (value2 - value1) * amount.

Betreffende API's