Newton's Cannon: Finding the displacement, velocity, acceleration

1. Aug 5, 2012

Duvno

I'm working on a Java project to simulate Newton's Cannon (example: http://spaceplace.nasa.gov/how-orbits-work/).

How do I find the x and y components of displacement, velocity and acceleration of the projectile after a time Δt?

I know that I need to use Newton's law of gravitation, however I haven't come much further.

2. Aug 5, 2012

Staff: Mentor

Use an iterative method to track the position and velocity of the ball in small time steps, or use the analytic solutions of the Kepler problem. The first one is easier to implement, the second one is more robust.

3. Aug 5, 2012

Lamarr

Form a differential equation using the Newton's Law of Gravitation, resolving x and y components of velocity.

Then solve the differential equation, which can be very hard, and you'll get an exact solution.

4. Aug 6, 2012

ecneicS

I modelled something similar earlier this summer. The method I ended up using is really easy.

Your program needs the inital x, y, and z components and the inital v_x, v_y, v_z components. For each time, you want to find what the acceleration is using a = (GM)/(x+y+z)^2.

Once you have that, you can use the motion equations that deal with constant acceleration bodies. This is an approximation that can produce infinitesimally small error given that your Δt is small enough. The relevant equations are:

d = d_0 + v_0d*Δt + 1/2*a_d*Δt^2 (for x, y and z)
v_d = a_d*Δt (for v_x, v_y, v_z)

so the workflow would look like this:

-give the program x0, y0, z0, and v0x,v0y, v0z
-calculate a1 using gravitation equation and x0, y0, z0
-calculate v1x, v1y, v1z using a1x, a1y, a1z (make sure you aren't using a1)
-calculate x1, y1, z1, using v1x, v1y, v1z, and a1x, a1y, a1z
-calculate a2 using gravitation equation and x1, y1, z1
-that is the iterative process you would use should you choose this method.

I found it really incredible that your accuracy is limited only by how small your Δt is. It's cool that even if you found some function x(t), y(t), z(t), the constant acceleration equation produces the same result as Δt->0.

Hope this helped.

Last edited: Aug 6, 2012