var diffx = (this.destination.x - pos.x), px = diffx / dist;
var diffy = (this.destination.y - pos.y), py = diffy / dist;
var angle = Math.atan2(diffy, diffx) - rot.z;
rot.set(0, 0, rot.z + angle / 24);
An object points towards my mouse cursor. I use the above code to calculate the angle in radians and "animate" the angle over a few frames. However, when the angle
variable turns from positive to negative (at PI radians), it turns clockwise all the way to the new cursor position (as seen in red). However, my desired path is to go straight to the new angle (green arrow).
EDIT:
This is what I came up with, seems to work. Could I improve?
if(atan - this.lastAtan < -Math.PI)
atan += Math.PI * 2;
else if(atan - this.lastAtan > Math.PI)
atan -= Math.PI * 2;
this.lastAtan = atan;
var zrot = rot.z + (atan * 12 * Game.dt);
rot.set(0, 0, zrot % (Math.PI * 2));