Я пишу код iPhone, который нечетко распознает, является ли проведенная линия прямой линией. Я получаю направление двух конечных точек и сравниваю его с 0, 90, 180 и 270 градусами с допуском 10 градусов плюс или минус. Прямо сейчас я делаю это с кучей блоков if, что кажется очень неуклюжим.
Как написать функцию, которая, учитывая подшипник 0..360, допуск процент (скажем, 20% = (от -10 ° до + 10 °)) и прямой угол как 90 градусов, возвращает ли подшипник в пределах допуска?
Обновление: Возможно, я слишком конкретен. Я думаю, что хорошая, общая функция, которая определяет, находится ли число в процентах от другого числа, полезна во многих областях. .
Например: номер swipeLength в пределах 10% из maxSwipe ? Это было бы полезно.
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
Вы видите, к чему я клоню?