¿Cómo codificar el proyectil de una bola de diferente fuerza y ángulo en Java Swing?

He escrito la siguiente función para el movimiento de proyectiles de diferente fuerza y ángulo, pero no funciona correctamente. ¿Dónde me he equivocado? Quiero algo como el juego Angry Birds.

Código:

public void shootBall(int timeCounter){
    int gravity = 4;

    double time = timeCounter/40.0;
    int velocity = force_value;
    double radians = currentangle*Math.PI/180;
    ball.setX((int)((ball.getX()+10)*Math.cos(radians) + velocity*Math.cos(radians)*time));
    ball.setY((int)((ball.getY()+10)*Math.sin(radians) + velocity*Math.sin(radians)*time - 0.5*gravity*time*time));
    updateGame();
}

Quiero que la pelota sea lanzada desde la esquina inferior izquierda.

Respuestas a la pregunta(3)

Su respuesta a la pregunta