Ответ 1
Вы можете использовать fmod
(для double
) и fmodf
(для float
) для math.h:
#import <math.h>
rotationAngle = fmodf(rotationAngle, 360.0f);
искали mod-оператор в ios, как и %
в c, но не повезло найти его. Попробовал ответ в этой ссылке, но он дает ту же ошибку.
У меня есть переменная float 'rotationAngle', угол которой продолжает увеличиваться или уменьшаться на основе движения пальцев пользователя.
Что-то вроде этого:
if (startPoint.x < pt.x) {
if (pt.y<936/2)
rotationAngle += pt.x - startPoint.x;
else
rotationAngle += startPoint.x - pt.x;
}
rotationAngle = (rotationAngle % 360);
}
Мне просто нужно убедиться, что rotationAngle не пересекает ограничение +/- 360. Любая помощь любому телу. Спасибо
Вы можете использовать fmod
(для double
) и fmodf
(для float
) для math.h:
#import <math.h>
rotationAngle = fmodf(rotationAngle, 360.0f);
Используйте функцию fmod
, которая выполняет модуль с плавающей точкой, для определения см. здесь: http://www.cplusplus.com/reference/clibrary/cmath/fmod/. Примеры того, как это работает (с возвращаемыми значениями):
fmodf(100, 360); // 100
fmodf(300, 360); // 300
fmodf(500, 360); // 140
fmodf(1600, 360); // 160
fmodf(-100, 360); // -100
fmodf(-300, 360); // -300
fmodf(-500, 360); // -140
fmodf
принимает "float" в качестве аргументов, fmod
принимает "double" и fmodl
занимает "double long", но все они делают то же самое.
Я передал его сначала int
rotationAngle = (((int)rotationAngle) % 360);
если вы хотите использовать большую точность
float t = rotationAngle-((int)rotationAngle);
rotationAngle = (((int)rotationAngle) % 360);
rotationAngle+=t;