salut,
dis toi que s'il n'y a pas de frottement, la vitesse horizontale de ta balle est constante (et oui, la resultante horizontale des forces qui s'appliquent a ta balle (ya que le poids) est nulle)
en gros voila l'equation parametrique du mouvement de la balle (x et y sont ses coordonnees)
x (t) = V0. cos( theta).t + x0
y (t) = V0. sin(theta).t - 1/2.g.t² + y0
V0 c'est la vitesse initiale a laquelle tu lances ta balle (si elle est nulle ta balle ne fait que tomber vers le bas ...) et theta c'est l'angle que fais V0 avec l'horizontal.
Si tu t'amuse a tracer ca sur ta calculatrice tu verras une jolie parabole ....
Tu peux creer deux vecteurs qui contiennent ces coordonnees:
#include <vector>
#include <math.h>
#include <iostream>
using namespace std;
const double g = 9.81; // la valeur de g
const double V0 = 5.; // 5 m/s au lancer
const double theta = 3.14/4. ; // un angle de Pi/4
const double X0 = 0.;
const double Y0 = 2.; // 2 m de haut au debut
const double T = 1.5; // on regarde ce qui se passe pendant 1.5 seconde
const double pas = 1. / 100.; // 100 points pour une seconde de mouvement
int main(int arc, char* argv[])
{
vector<double> x, y;
const int n = (int) (T / pas); // le nombre de points
x.resize(n); // petite optim ...
y.resize(n);
for (int i = 0; i < n ; i++)
{
double t = i*pas; // le temps
x[i] = V0 * cos(theta) * t + X0;
y[i] = V0 * sin(theta) * t - 0.5*g*t*t + Y0 ;
cout << "t = " << t << " : coordoonnees de la balle ( " << x[i] << " ; " << y[i] << " )" << endl;
}
// utilise les vecteur x et y qui contiennent les coordonnees de la balle
return 0;
}
a+