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
Ação recomendada
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de