i have 2 angles, lets say 350 degrees and 40 degrees.

if i want to go from 350 to 40, the current code i use goes CCW, which is 310 degrees of rotation instead of 50.

how can i calculate which direction to rotate in? (shortest direction)

ive been working at this for 2 days now, maybe im over thinking it, i know it has to be simple.

heres the code i use:

Code:static uint nLastTime = timeGetTime(); static float fRotationSpeed = 0.0005f; if (m_bTrackCamera && m_bRotateToAngle) { if (timeGetTime() - nLastTime >= 10) // rotate every 10 ms { nLastTime = timeGetTime(); float fAngleFrom = D3DXToDegree(m_fRotZ); float fAngleTo = D3DXToDegree(m_fRotateToAngle); // find shorter rotation path ? if (fAngleTo > fAngleFrom) // CW { m_fRotZ += fRotationSpeed + (0.001f * (fAngleTo - fAngleFrom)); if (m_fRotZ > D3DX_PI * 2.0f) m_fRotZ -= D3DX_PI * 2.0f; if (m_fRotZ >= m_fRotateToAngle) { m_fRotZ = m_fRotateToAngle; m_bRotateToAngle = false; } } else // CCW { m_fRotZ -= fRotationSpeed + (0.001f * (fAngleFrom - fAngleTo)); if (m_fRotZ < 0.0f) m_fRotZ += D3DX_PI * 2.0f; if (m_fRotZ <= m_fRotateToAngle) { m_fRotZ = m_fRotateToAngle; m_bRotateToAngle = false; } } } }