Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculate the position of an accelerating body after a certain time [closed]

Tags:

How do I calculate the position of an accelerating body (e.g. a car) after a certain time (e.g. 1 second)?

For a moving body that it not accelerating, it is a linear relationship, so I presume for an accelerating body it involves a square somewhere.

Any ideas?

like image 256
Iain Avatar asked Sep 30 '08 15:09

Iain


People also ask

How do you calculate for position given acceleration?

s = s + u * dt; u = u + a * dt; where dt is the length of a frame (measured using a timer: 1/60th second or so). This method has the advantage that the acceleration can vary in time.

How do you find final position with acceleration and time?

Solving for Final Position with Constant Accelerationv = v 0 + a t . v = v 0 + a t .


2 Answers

The equation is: s = ut + (1/2)a t^2

where s is position, u is velocity at t=0, t is time and a is a constant acceleration.

For example, if a car starts off stationary, and accelerates for two seconds with an acceleration of 3m/s^2, it moves (1/2) * 3 * 2^2 = 6m

This equation comes from integrating analytically the equations stating that velocity is the rate-of-change of position, and acceleration is the rate-of-change of velocity.

Usually in a game-programming situation, one would use a slightly different formulation: at every frame, the variables for velocity and position are integrated not analytically, but numerically:

s = s + u * dt; u = u + a * dt; 

where dt is the length of a frame (measured using a timer: 1/60th second or so). This method has the advantage that the acceleration can vary in time.

Edit A couple of people have noted that the Euler method of numerical integration (as shown here), though the simplest to demonstrate with, has fairly poor accuracy. See Velocity Verlet (often used in games), and 4th order Runge Kutta (a 'standard' method for scientific applications) for improved algorithms.

like image 192
Chris Johnson Avatar answered Sep 19 '22 18:09

Chris Johnson


Well, it depends on whether or not acceleration is constant. If it is it is simply

s = ut+1/2 at^2 

If a is not constant, you need to numerically integrated. Now there is a variety of methods and none of them will beat doing this by hand for accuracy, as they are all ultimately approximate solutions.

The easiest and least accurate is Euler's method . Here you divide time into discrete chunks called time steps, and perform

v[n] = v[n-1] * t * a[t] 

n is index, t is size of a time step. Position is similarly updated. This is only really good for those cases where accuracy is not all that important. A special version of Euler's method will yield an exact solution for projectile motion (see wiki), so while this method is crude, it can be perfect for some suituations.

The most common numerical integration method used in games and in some chemistry simulations is Velocity Verlet, which is a special form of the more generic Verlet method. I would recommend this one if Euler's is too crude.

like image 40
freespace Avatar answered Sep 19 '22 18:09

freespace