Share via


Alteração de comportamento para Vector2.Lerp e Vector4.Lerp

A implementação de Vector2.Lerp(Vector2, Vector2, Single) e Vector4.Lerp(Vector4, Vector4, Single) mudou para considerar corretamente um erro de arredondamento de ponto flutuante.

Descrição das alterações

Anteriormente, Vector2.Lerp(Vector2, Vector2, Single) e Vector4.Lerp(Vector4, Vector4, Single) eram implementados como value1 + (value2 - value1) * amount. No entanto, devido a um erro de arredondamento de ponto flutuante, esse algoritmo nem sempre retorna value2 quando amount é 1.0f.

No .NET 5 e versões posteriores, a implementação usa o mesmo algoritmo que Vector3.Lerp(Vector3, Vector3, Single), ou seja, (value1 * (1.0f - amount)) + (value2 * amount). Esse algoritmo resolve corretamente o erro de arredondamento. Agora, quando amount é 1.0f, o resultado é precisamente value2. O algoritmo atualizado também permite que o algoritmo seja otimizado livremente com o uso deMathF.FusedMultiplyAdd, quando ele está disponível.

Versão introduzida

5,0

Nenhuma ação é necessária. No entanto, se você quiser manter o comportamento antigo, poderá implementar sua própria função Lerp que usa o algoritmo anterior de value1 + (value2 - value1) * amount.

APIs afetadas