Я представляю направления ветра с использованием целочисленных значений (Enum) в диапазоне от 0 для северных, до 15 для северо-северо-западных.Проверьте, соответствует ли направление ветра заданному диапазону
Мне нужно проверить, находится ли заданное направление ветра (целое значение от 0 до 15) в пределах определенного диапазона. Я указываю свое значение WindDirectionFrom
, которое сначала перемещается по часовой стрелке до WindDirectionTo
, чтобы указать диапазон допустимого направления ветра.
Очевидно, что если WindDirectionFrom=0
и WindDirectionTo=4
(между N и E направление) и направление ветра NE (2) вычисление является просто
int currentWindDirection = 2;
bool inRange = (WindDirectionFrom <= currentWindDirection && currentWindDirection <= WindDirectionTo);
//(0 <= 2 && 2 <= 4) simple enough...
Однако для другого случая, когда говорят WindDirectionFrom=15
, WindDirectionTo=4
и направление ветра NE (2) опять же, расчет сразу ломает ...
bool inRange = (WindDirectionFrom <= currentWindDirection && currentWindDirection <= WindDirectionTo);
//(15 <= 2 && 2 <= 4) oops :(
Я уверен, что это не может быть слишком сложным, но у меня реальный ментальный блок с этим.
Ааа хорошо, ну я использую C#, так что я предполагаю, что это будет в значительной степени тот же синтаксис, как вы» здесь. –
Правильно, за исключением многих языков, не разрешает арифметику на перечислениях (по уважительной причине). OP должен будет перевести свои числа в численные значения. – msw