スワイプした線がまっすぐかどうかをあいまいに認識する iPhone コードを書いています。2 つの終点の方位を取得し、それを 0、90、180、および 270 度と比較します。許容範囲はプラスマイナス 10 度です。今、私はたくさんの if ブロックを使ってそれをやっていますが、これは非常に不格好に思えます。
方位0..360、公差パーセンテージ (たとえば 20% = (-10° から +10°))、および90 度などの直線角度が与えられた場合、方位が公差内にあるかどうかを返す関数を作成する方法は?
更新: おそらく、私は具体的すぎます。数値が別の数値のパーセンテージ内にあるかどうかを判断する優れた一般的な関数は、多くの分野で役立つと思います。
例: swipeLength の数値はmaxSwipeの10 %以内ですか? それは役に立ちます。
BOOL isNumberWithinPercentOfNumber(float firstN, float percent, float secondN) {
// dunno how to calculate
}
BOOL result;
float swipeLength1 = 303;
float swipeLength2 = 310;
float tolerance = 10.0; // from -5% to 5%
float maxSwipe = 320.0;
result = isNumberWithinPercentOfNumber(swipeLength1, tolerance, maxSwipe);
// result = NO
result = isNumberWithinPercentOfNumber(swipeLength2, tolerance, maxSwipe);
// result = YES
私が何を得ているか分かりますか?