20 {
21 float aDiff = pModel.m_fHeadingAngle - pModel.m_fOrientationAngle;
22 if (aDiff < -Math.PI)
23 {
24 aDiff += Math.PI2;
25 }
26 else if (aDiff > Math.PI)
27 {
28 aDiff -= Math.PI2;
29 }
30
31
32
33 if (pLastHeadingDiff < -Math.PI_HALF && aDiff > 0)
34 {
35 aDiff = -Math.PI + 0.01;
36 pLastHeadingDiff = aDiff;
37 pModel.m_fHeadingAngle = pModel.m_fOrientationAngle + aDiff;
38
39
40
41 return true;
42 }
43 else if (pLastHeadingDiff > Math.PI_HALF && aDiff < 0)
44 {
45 aDiff = Math.PI - 0.01;
46 pLastHeadingDiff = aDiff;
47 pModel.m_fHeadingAngle = pModel.m_fOrientationAngle + aDiff;
48
49
50
51 return true;
52 }
53
54 pLastHeadingDiff = aDiff;
55
56 return false;
57 }