我正在编写 iPhone 代码,它可以模糊地识别刷过的线是否是直线。我得到两个端点的方位,并将其与 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
你明白我在说什么吗?