В C или C ++ вы бы использовали fmod
, чтобы избавиться от некоторых ваших циклов.Вместо этого:
while(startAngle > 360.0) startAngle -= 360.0;
while(startAngle < -360.0) startAngle += 360.0;
Сделайте это:
startAngle = fmod(startAngle, 360.0);
if(startAngle < 0)
startAngle += 360.0;
Не используйте оператор нормального модуля (%
), так как это для целых чисел и не будет делать правильные вещисо значениями с плавающей запятой.
Ваш первый цикл:
while(endAngle > (startAngle + 359.0)) endAngle -= 1.0;
Может быть заменен следующим:
if(endAngle > startAngle + 359.0)
endAngle = startAngle + 359.0;
Но я думаю, что вы должны переосмыслить эту часть вашегоАлгоритм: нет смысла сравнивать углы до нормализации их до интервала [0,360).