Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L'implémentation de Vector2.Lerp(Vector2, Vector2, Single) et Vector4.Lerp(Vector4, Vector4, Single) a été modifiée pour prendre correctement en compte une erreur d'arrondi à virgule flottante.
Description de la modification
Auparavant, Vector2.Lerp(Vector2, Vector2, Single) et Vector4.Lerp(Vector4, Vector4, Single) étaient implémentés en tant que value1 + (value2 - value1) * amount. Toutefois, en raison d’une erreur d’arrondi à virgule flottante, cet algorithme ne retourne pas toujours value2 lorsque amount est 1.0f.
Dans .NET 5 et versions ultérieures, l’implémentation utilise le même algorithme que Vector3.Lerp(Vector3, Vector3, Single), qui est (value1 * (1.0f - amount)) + (value2 * amount). Cet algorithme prend correctement en compte l’erreur d’arrondi. Maintenant, quand amount c’est 1.0f, le résultat est précisément value2. L’algorithme mis à jour permet également à l’algorithme d’être optimisé librement à l’aide MathF.FusedMultiplyAdd du moment où il est disponible.
Version introduite
5,0
Action recommandée
Aucune action n’est nécessaire. Toutefois, si vous souhaitez conserver l’ancien comportement, vous pouvez implémenter votre propre Lerp fonction qui utilise l’algorithme précédent de value1 + (value2 - value1) * amount.