For my 2D physics engine, I'm using the unit vectors of the direction an object is facing to represent its orientation; essentially, [Cos(theta),Sin(theta)] where theta is the object's rotation in angles. This makes it very easy for me to make an object face a target but it's difficult to increment the rotation. With angles, what I want to achieve is this:
//progress is the interpolation value from 0 to 1
rotation = startRotation * (1-progress) + targetRotation * progress;
How can I do something something similar with unit vector direction? Note: I'd rather not use inverse trig functions because they're expensive and imprecise.
Use a rotation matrix. Assuming that your rotation increment is constant then let $d\theta = (targetRotation - startRotation)/n$ where $n$ is the number of steps you wish to take. Then your incremental rotation matrix could be computed once as follows:
$$R = \left[ \begin{array}{cc} \cos d\theta & -\sin d\theta \\ \sin d\theta & \cos d\theta \end{array} \right]$$
then your update step would simply be:
$$u_{k+1} = Ru_k$$
where $u$ is your unit vector. I assume that you know how to create and multiply matrices and vectors in your programming language of choice.