Page 1 sur 1

Mathf.Approximately : Dans quels mesures se fait l'approximation de la méthode?

Publié : 23 Jan 2022 10:58
par megablast2
Bonjour,
Je dois vérifier si des valeurs sont prochent de zero, mais je ne sais pas comment faire. Je dois savoir si deux éléments sont a même hauteurs.

Code : Tout sélectionner

var _height =this.FloorPos.y -_neighbor.FloorPos.y;
Mais comme je ne suis pas certain qu'elles seront exactement à la même hauteur, j'aimerais que la comparaison soit approximative. Donc au finale, savoir si _height vaut "a peut pres égale" à zero.

Du coup en cherchant j'ai trouvé ceci qui pourrait aller :
/Mathf.Approximately
Mais je ne sais pas dans quel mesure se fait l'approximation, du coup j'hesite.

Dans le doute, j'ai fait ceci :

Code : Tout sélectionner

public static bool ApproximatelyEqual(float _value1, float _value2, float _gap = 0.05f)
        {
            float diff = Mathf.Abs(_value1 - _value2);
            return diff <= _gap;
        }
Vous auriez un avis la dessus?

Bonne journée,

Re: Mathf.Approximately : Dans quels mesures se fait l'approximation de la méthode?

Publié : 23 Jan 2022 11:47
par jmhoubre
La doc a écrit : Approximately() compares two floats and returns true if they are within a small value (Epsilon) of each other.
...
Mathf.Epsilon : A tiny floating point value (Read Only). The smallest value that a float can have different from zero.
En général, on se débrouille pour éviter de comparer des flottants. C'est ce que tu fais en faisant la différence entre tes nombres. Je trouve que ta valeur gap est un peu élevée.

Re: Mathf.Approximately : Dans quels mesures se fait l'approximation de la méthode?

Publié : 23 Jan 2022 11:50
par jmhoubre
Pour info, la ligne suivante affiche sur ma machine : Epsilon : 1,401298E-45

Code : Tout sélectionner

Debug.Log ($"Epsilon : {Mathf.Epsilon}");
Tu peux prendre gap de l'ordre de 1E-6. Après cela dépend du contexte. Par exemple, avec un Vector3 de position, si on respecte l'échelle d'Unity (1 unité Unity = 1 mètre), 1E-6 représente des millièmes de millimètres, autant dire que c'est imperceptible sur un écran tant qu'on a pas un écran 65636K.

Re: Mathf.Approximately : Dans quels mesures se fait l'approximation de la méthode?

Publié : 23 Jan 2022 15:32
par megablast2
Merci pour ton retour. Je ne pensais pas que ça pouvait être aussi précis. Après je ne pense pas en effet que ça est besoin d'être aussi précis pour le mon cas du moins.