Je représente les directions du vent en utilisant des valeurs entières (un Enum) allant de 0 pour le Nord à 15 pour le Nord-Nord-Ouest.Vérifier si la direction du vent se trouve dans une plage spécifiée
J'ai besoin de vérifier si une direction de vent donnée (valeur entière entre 0 et 15) est dans une certaine plage. Je spécifie ma valeur WindDirectionFrom
en commençant par me déplacer dans le sens des aiguilles d'une montre vers WindDirectionTo
pour spécifier la plage de direction du vent admissible.
Evidemment, si WindDirectionFrom=0
et WindDirectionTo=4
(entre N et la direction E) et la direction du vent est NE (2) le calcul est simplement
int currentWindDirection = 2;
bool inRange = (WindDirectionFrom <= currentWindDirection && currentWindDirection <= WindDirectionTo);
//(0 <= 2 && 2 <= 4) simple enough...
Toutefois, pour un cas différent où dire WindDirectionFrom=15
, WindDirectionTo=4
et direction du vent est nE (2) à nouveau, le calcul se brise immédiatement ...
bool inRange = (WindDirectionFrom <= currentWindDirection && currentWindDirection <= WindDirectionTo);
//(15 <= 2 && 2 <= 4) oops :(
Je suis sûr que cela ne peut pas être trop difficile, mais je vais avoir un vrai blocage mental avec celui-ci.
droit Aah, eh bien je suis en utilisant C# donc je suppose que ça va être à peu près la même syntaxe que vous » Je suis arrivé ici. –
Correct, sauf que de nombreuses langues ne permettent pas l'arithmétique sur enums (pour une bonne raison). L'OP devra obtenir ses enums en nombres. – msw