Наименьшая разница между двумя углами?

Я пытаюсь вычислить наименьшую разницу между двумя углами.

Это мой текущий код (небольшая вариация того, что я нашел в Интернете):

float a1 = MathHelper.ToDegrees(Rot);
float a2 = MathHelper.ToDegrees(m_fTargetRot);

float dif = (float)(Math.Abs(a1 - a2);

if (dif > 180)
  dif = 360 - dif;

dif = MathHelper.ToRadians(dif);

Он отлично работает, за исключением футляры на краю круга. Например, если текущий угол равен 355, а целевой угол равен 5, он вычисляет разницу в -350, а не в 10, поскольку 365 градусов равно 5 градусам.

Есть идеи, что я могу сделать, чтобы это сработало?

8
задан Richard 15 October 2013 в 21:10
поделиться