# SDL sprite rotation and movement issue

This topic is 4499 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Heyo, Im having an issue with moving a rotated sprite. If anyone is familiar with sdl there is an addon called sdl_graphics (sdl_gfx its sometimes labeled) that allows for rotating of surfaces. I am developing a 2d sdl engine with versatility in mind. One of the things Im adding is the ability to rotate images and move them along the rotated angle. Think space shooter where arrow keys turn you left or right (the rotation) and up and down move you forward and backward, but not up and down on screen, rather forward and backward in the direction you are facing (the rotation angle). Im using rotation 0 to mean up and sdl's rotation uses positive degrees as counter clockwise rotation. Now technically the rotation bit works, just a little jumpy and not really smooth, but if i use 1 degree increments it rotates too slowly. The main problem is with the movement. As far as what we know during runtime, we know the current position, and we know the rotation angle, as well as the movement speed (const float). When calculating the x and y offsets im using this float XDiff = abs(sin(Rotation%90))*MovementSpeed; float YDiff = abs(cos(Rotation%90))*MovementSpeed; then either adding or subtracting each value depending on which quadrant the angle is located in(+ + for south east, + - for north east, - - for north west, - + for south west...0,0 being top left corner of screen) heres the thing, when you get the angle and apply that method, the moventment isnt always in the right direction, you may be rotated at 30 degrees, but it would move you as tho you were at say 10 degrees, but if you hit 35 degrees you jump like you moving at 87 degrees. The ammount is is off, and the direction it is off is not a constant. any ideas?

##### Share on other sites
the C/C++ versions of cin and cos use radians, not degrees.

##### Share on other sites
wow thanks, that simplified my code for calculating new position from 20+ lines to only 2 lines :) THANKS!

1. 1
Rutin
70
2. 2
3. 3
4. 4
5. 5

• 21
• 10
• 33
• 20
• 9
• ### Forum Statistics

• Total Topics
633423
• Total Posts
3011805
• ### Who's Online (See full list)

There are no registered users currently online

×