北の場合は0、北北西の場合は15までの整数値(列挙型)を使用して風向を表しています。
与えられた風向(0から15の間の整数値)が特定の範囲内にあるかどうかを確認する必要があります。許容風向の範囲を指定するために、WindDirectionFrom
最初に時計回りに移動する値を指定します。WindDirectionTo
明らかに、WindDirectionFrom=0
and 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 :(
これはそれほど難しいことではないと確信していますが、私はこれで本当の精神的なブロックを持っています。