Я представляю направление ветра, используя целочисленные значения (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 :(
Я уверен, что это не может быть слишком сложно, но у меня есть настоящий ментальный блок с этим.