note: all angles are in degrees. 360 is the same as 0 is the same as -360. ok? initialise variables drag, R, Q1, QQ1, Q2, QQ2, Q4, Q5, targetRotation set drag to a suitable value ( i use 8) set everything else to 0 do the following every frame:{ use trigonometry to get the angle between the mouse and the pointer, and set it to a variable targetRotation if targetRotation<0:{ add (targetRotation-QQ1) to Q1 } set QQ1 to targetRotation; if targetRotation>0:{ add (targetRotation-QQ2) to Q2 } set QQ2 to targetRotation; if Q3-180>targetRotation:{ add 360 to Q1 } Q3 = targetRotation; if Q4+180