Rotating object around moving object/player in 2D
- by Boston
I am trying to implement a camera which rotates around the world around the player. I have found many solutions online to the task of rotating an object about the origin, or about an arbitrary point. The procedure seems to be to translate the point to be rotated about to the origin, perform the rotation, translate back, then draw. I have gotten this working for rotation around the origin as well as for a fixed point. Rotation of objects around the player works as well, provided the player does not move. However, if the objects are rotated around the player by some non-zero degree, if the player moves after the rotation it causes the rotated objects to move as well. I probably have done a poor job explaining this so here's an image: http://i.imgur.com/1n63iWR.gif
And here's the code for the behavior:
renderx = (Ox - Px)*cos(camAngle) - (Oy - Py)*sin(camAngle) + Px;
rendery = (Ox - Px)*sin(camAngle) + (Oy - Py)*cos(camAngle) + Py;
Where (Ox,Oy) is the actual position of the object to be rotated and (Px,Py) is the actual position of the player. Any ideas? I am using C++ with SDL2.0.