views:

88

answers:

2

Hi All,

I was in need of a little math help that I can't seem to find the answer to, any links to documentation would be greatly appreciated.

Heres my situation, I have no idea where I am in this maze, but I need to move around and find my way back to the start. I was thinking of implementing a waypoint list of places i've been offset from my start at 0,0. This is a 2D cartesian plane.

I've been given 2 properties, my translation speed from 0-1 and my rotation speed from -1 to 1. -1 is very left and +1 is very right. These are speed and not angles so thats where my problem lies. If I'm given 0 as a translation speed and 0.2 I will continually turn to my right at a slow speed.

How do I figure out the offsets given these 2 variables? I can store it every time I take a 'step'.

I just need to figure out the offsets in x and y terms given the translations and rotation speeds. And the rotation to get to those points.

Any help is appreciated.

+1  A: 

You could do it in two stages. First work out the change of direction to get a new direction vector and then secondly work out the new position using this new direction. Something like

angle = angle + omega * delta_t;

const double d_x = cos( angle );
const double d_y = sin( angle );

x = x + d_x * delta_t * v;
y = y + d_y * delta_t * v;

where you store your current angle out at each step. ( d_x, d_y ) is the current direction vector and omega is the rotation speed that you have. delta_t is obviously your timestep and v is your speed.

This may be too naive to split it up into two distinct stages. I'm not sure I haven't really thought it through too much and haven't tested it but if it works let me know!

Troubadour
+4  A: 
Beta
+1: Nice, I like it. Could possibly do with a little more description on that very last step i.e. that your analysis holds at each time step in a local x-y frame where x is in the current direction and so you are just accounting for the current angle at that timestep.
Troubadour
@Troubadour: you're right, I could have made that clearer-- but I don't want to get too verbose. I think putting a couple of lines in boldface will do...
Beta