Where: V = initial muzzle velocity (pixels/iteration) initX,initY = initial position of projectile (ie. gun's position) t = current time a = acceleration due to gravity (0.5 pixels/iteration) Including air resistance: "Decelerating component proportional to v-squared and a component proportional to v. The former is much larger." "To take into account wind drag, add to the horizontal distance moved a small extra distance term proportional to the wind speed at each time step." newX = initX+((V*Math.cos(h))*t); newY = initY+t*(V*Math.sin(h)+a*t/2); Configuration: v = 20; // velocity var initX = mouse.clientX; // start X point var initY = mouse.clientY; // start Y point var t = 1; // time var a = 0.5; // gravity var h = 5; // angle