Kick Off football game like - The ball physics questions

Here we go, first my little jar to illustrates what i am doing
http://www.yourfilehost.com/media.php?cat=other&file=3242kotrials.jar

I am using Golden T Game Engine (GTGE) library to develop my application

Then a little video about what I expect to reproduce http://youtube.com/watch?v=vksEQrgjbZI

Then little history about Kick Off http://en.wikipedia.org/wiki/Kick_Off

And at least my question, related to the ball physics, as you see it’s a 2D game, but the ball simulate 3D by changing sprite representation when it’s height position changing
and you take a look in the jar file, in the res/sprites directory you have the ball.png sprites file. First five sprites are for normal bouncing but latest four one are when the ball is growing in the air, with the last one, that is only the ball’s shadow, which has to be placed somewhere on the pitch.

Some parameters I can provide

	/** acceleration constant (m/s^2) */
	public static final double	G = 9.81;
	/** ball mass (kg)

	 * <a href="http://www.fifa.com/">FIFA.com</a> says: <em>not more than 450 g in weight and not less than 410 g</em>

	 */
	public static final double	M = 0.430;
	/** air resistance term */
	public static final double	K = 0.350;
	/** bounce angle factor (must be less that 1) */
	public static final double	BOUNCE_SPEED_FACTOR = 0.8;
	/** In order to save calculation time, M/K is precalculated */
	//private static final double	M_K = M/K;
	/** In order to save calculation time, K/M is precalculated */
	private static final double	K_M = K/M;
	/** In order to save calculation time, MG/K is precalculated */
        //private static final double	MG_K = M*G/K;	

What would be the best way to handle that problem.

Just to figure out what is a sprite in the GTGE library, take a look here http://goldenstudios.or.id/products/GTGE/docs/com/golden/gamedev/object/Sprite.html

Thanx for your help

you may find it fairly boring, but you better write a scaling operation instead of loading the sprite scaled for the time the ball is hanging in the air. This will bring a smoother effect and all resources problem are solved within the loading time. While you place the ball on field, make a short calculation of the height, and compute a linear transform like and take care to immediate loading too :


// compute scaling
double zoom = 1.0;
// ...
// instance a new mediatracker if you don't have one already and try to keep it as a member variable
Mediatracker mt = new MediaTracker((Component)component);
// add the image that gets scaled
mt.addImage(image, 0, (double)zoom * image.getWidth(component), (double)zoom * image.getHeight(component));
try { mt.waitForID(0);
// finally draw it (RenderedImage interface is the fastest, e.g. a BufferedImage instance)
// position your ball
(Graphis2D).translate((int)x, (int)y);
(Graphics2D).drawRenderedImage(image, AffineTransform.getScaleInstance(zoom, zoom));
// reset back the origin orthogonality
(Graphics2D).translate(-(int)x, -(int)y);
} catch(Exception e) {}

In fact there is no problem of loading time, cause the image are loaded once for all when creating sprite, then my ball sprite is holding a BufferedImage[] array, I just need then to handle which one I draw.
An other reason is that I want to stay close as possible to the original game, all the sprites are extracted from the original game.