I have the $(x,y)$ positions of a vehicle. How can I determine if the vehicle is turning left or right?
Note: I want the answer to be independent of whether the vehicle is in reverse gear or not. Does that make sense?
Currently, I do this finding the change in coordinates and then taking the 2D cross product (which gives you $z$-th component) and find if this is positive or negative. Basically, I try to relate it to the right-hand rule, but then how do I know if the vehicle is not turning? I think I need a holistic/general approach.
The left or right depends if you are going forward or backwards. Suppose that you have three points $P_{1,2,3}$, at times $t_{1,2,3}$. The initial direction is given by moving from $P_1$ to $P_2$. Let's say I move forward. Then $P_3$ can be on the left, so you need to turn to the left. If you go in reverse from $P_1$ to $P_2$, then $P_3$ is going to be on the right hand side, so you need to turn to the right.
Therefore there is no solution for your problem, unless you specify the forward/backward choice.
Suppose that we choose to move forward. How do we know if we turn left or right? A simple way is to use vector product. For that, we use 3D vectors, with the third component $0$. then we have $$\vec v_1=\vec P_2-\vec P_1=(x_2-x_1,y_2-y_1,0)$$ and similarly $$\vec v_2=\vec P_3-\vec P_2=(x_3-x_2,y_3-y_2,0)$$ Using the matrix notation, you can see that $$\vec v_1\times\vec v_2=[(x_2-x_1)(y_3-y_2)-(x_3-x_2)(y_2-y_1)]\hat z$$ Now if you use the definition of the cross product on wikipedia, you can see that the sign of the above expression is the same as the sign of the angle. That means that if $(x_2-x_1)(y_3-y_2)-(x_3-x_2)(y_2-y_1)>0$ then the car turns in positive trigonometric direction, which is left. If the expression is negative, you turn to the right. If the expression is $0$, you either stopped, or you continue moving in the original direction (either forward or backward). To distinguish between these two, use the scalar product.