Hey,
I had to solve a similar problem where i needed to write a MEL tool to simulate arrows(projectiles). I came up with this procedure below to calculate the initial velocity of an object to get it from point A to point B reaching a height H with gravity G. This may not be the solution to your problem, but may give you a more accurate way to calculation the projectile motion of the balls.
//----------------------------------------------------------------
//
// Compute the velocity to launch a projectile from p0 to p1
// with a parabola height of h
//
global proc vector ComputeInitialVelocity( vector $p0, vector $p1, float $h, float $g )
{
vector $vel;
// Find the position and direction we want to jump in
vector $dir = <>; // jump direction
float $R = sqrt($dir.x*$dir.x + $dir.z*$dir.z); // horizontal distance
float $b = $dir.y; // vertical distance
float $theta;
float $cosA;
float $v0;
// If h is too small to make the jump (i.e. the sqrt if -ve)
// then clamp it to abs([img]http://www.highend3d.com/boards/style_emoticons/<#EMO_DIR#>/cool.gif[/img] (an angle big enough to make the jump)
$h = max($h, abs($[img]http://www.highend3d.com/boards/style_emoticons/<#EMO_DIR#>/cool.gif[/img]);
// Compute the initial angle
$theta = atan(2*($h+sqrt($h*($h+$[img]http://www.highend3d.com/boards/style_emoticons/<#EMO_DIR#>/cool.gif[/img]))/$R);
$cosA = cos($theta);
// Compute the velocity
$v0 = sqrt( 0.5 * $g * $R * $R / ($cosA*$cosA*($R * tan($theta) - $[img]http://www.highend3d.com/boards/style_emoticons/<#EMO_DIR#>/cool.gif[/img]) );
// Find the amount we need to rotate around the Y
// axis to face the target
float $yrot = atan2( -$dir.z, $dir.x );
// Compute the velocity vector in XY plane
float $velx = $v0 * $cosA;
float $vely = $v0 * sin($theta);
// Rotate around y
float $velz = $velx * -sin($yrot);
$velx *= cos($yrot);
$vel = << $velx, $vely, $velz>>;
return $vel;
}
//Example of use
vector $InitialVelocity = ComputeInitialVelocity( <>, <>, 8, 9.8 )
//----------------------------------------------------------------
To test out the procedure just create 2 locators in different positions, create a sphere and add a gravity field to it. Run the procedure with the locators positions as p0 and p1, choose a height for the projectile, and set the gravity to the same gravity as your gravity field magnitude. The procedure will return a vector whihc u can apply to the initial velocity attribute of your sphere(rigidbody).
On playback the sphere should be shot from locator A to locator B at the height you specified!
hope some of this helps..