IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Trajectoire d'un ballon de basket


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 32
    Points
    32
    Par défaut Trajectoire d'un ballon de basket
    bonjour a tous

    voila je voudrais modeliser en sdl une trajectoire de ballon de basket

    voici le code avec les formule qui sont normalement correct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
     
     int tuxX0 = tuxX;
           int tuxY0 = tuxY;
                 int v = 5;
           int angle = 40;
           int g = 10;
           int b = 550;
           int h = (int)( ( pow(v,2)*pow(sin(angle),2) ) / 2*g );
           int T = (int)( ( ( 2*v*sin(angle) )/g ) + sqrt ( ( 2 * fabs( h-b ) ) / g ) );
           fprintf ( stderr, "Periode%d\n", T ); 
                 compteur = 0;
                 int temps = T;
                 fprintf(stderr, "compteur :%d\n",T);
                 while ( compteur != temps ) {
                       tuxX=(int)( (-0.5*g*pow(compteur,2)) + (v*sin(angle)*compteur) + tuxY0 );  
                       tuxY=(int)((v*cos(angle)*compteur)+tuxX0);
                    dst.x = tuxX;
                    dst.y = tuxY;
                    dstblue.x = tuxX - 1;
                    dstblue.y = tuxY - 1;
                    apply_surface(0,0,terrain,screen);
                    SDL_FillRect(screen, &dstblue, SDL_MapRGB(screen->format, 0, 0, 255));
                    SDL_BlitSurface(image, NULL, screen, &dst);
                    SDL_Flip(screen);
                       //SDL_Delay(40);
                       fprintf ( stderr, "X:%d\tY:%d\n", tuxX,tuxY );  
                       compteur ++;
                 }
    je rentre donc les formule et apres j'actualise l'afffichage au fur et a mesure

    le probleme c'est que lorsque j'execute le code le resultat ne me donne pas du tout une trajectoire de ballon de basket qui doit etre une parabole

    ainsi j'ai peut etre un probleme avec les formule ou avec l'affichage
    si certain sont bon en math

    merci de vos reponses

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    La formule a l'air bonne, en revanche je ne comprend rien au code que tu as fait, l'indentation est dans tous les sens, ...

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    Ca correspond à quoi les variables h et T?

    J'ai un léger doute pour le tuxY0 dans le calcul de tuxX. J'aurais mis un tuxX0... mais je ne sais peut-être pas tout... idem pour tuxY...

    Enfin, ça serait bien de commenter ton code si tu veux qu'on le "corrige"...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    merci pour vos reponses

    bon j'ai ajoute des commentaire dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
           int tuxX0 = tuxX;
           int tuxY0 = tuxY;
           /* variable vitesse */
                 int v = 5;
                 /* variable de l'angle de la trajectoire*/
           int angle = 40;
           /* attraction tereste arrondi a 10 */
                 int g = 10;
           /* hauteur entre le sol et le panier de basket
           int b = 550;
           /* calcul du point le plus haut de la trajectoire*/
           int h = (int)( ( pow(v,2)*pow(sin(angle),2) ) / 2*g );
          /* le temps que va mettre la balle a arriver a son point*/
           int T = (int)( ( ( 2*v*sin(angle) )/g ) + sqrt ( ( 2 * fabs( h-b ) ) / g ) );
           fprintf ( stderr, "Periode%d\n", T ); 
     
                 compteur = 0;
                 int temps = T;
                 fprintf(stderr, "compteur :%d\n",T);
                 /*tant que le compteur est different de t*/
                 while ( compteur != temps ) {
                       /* calcul de x et de y avec les composante sur l'axe des x et l'axe des y */
                       tuxX=(int)( (-0.5*g*pow(compteur,2)) + (v*sin(angle)*compteur) + tuxY0 );  
                       tuxY=(int)((v*cos(angle)*compteur)+tuxX0);
                       /* application des cooordonnées pour l'image*/
                    dst.x = tuxX;
                    dst.y = tuxY;
                    dstblue.x = tuxX - 1;
                    dstblue.y = tuxY - 1;
                    /*chargement  de l'image terrain dans la fenetre*/
                    apply_surface(0,0,terrain,screen);
                    SDL_FillRect(screen, &dstblue, SDL_MapRGB(screen->format, 0, 0, 255));
                    /* blit de l'image sur la fenetre*/
                    SDL_BlitSurface(image, NULL, screen, &dst);
                    SDL_Flip(screen);
                       //SDL_Delay(40);
                       fprintf ( stderr, "X:%d\tY:%d\n", tuxX,tuxY );  
                       compteur ++;
                 }   
     
    voila j'espere que c'est plus comprehensible
     
    merci

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 813
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 813
    Points : 7 641
    Points
    7 641
    Par défaut
    une ch'tite erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int h = (int)( ( pow(v,2)*pow(sin(angle),2) ) / 2*g );
    à remplacer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int h = (int)( ( pow(v,2)*pow(sin(angle),2) ) / (2*g) );
    Pour ton calcul de T... euh... j'aurais plutôt un truc dans le style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int T = (int)(((v*sin(angle))/g)+sqrt(((pow(v,2)*pow(sin(angle),2))/g+2*( x0-b )  ) );
    le x0 étant l'altitude de départ du ballon. Je te laisse vérifier les parenthèses, j'ai dû en oublier une ou deux au passage... et la formule aussi, ça fait un bout de temps que je n'ai pas résolu d'équation du second degré!

    Et remplacer le tuxY0 par un tuxX0 dans le calcul de tuxX (et inversement dans celui de tuxY)
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    bonjour

    merci de vos reponse que j'ai vu un peu tard
    j'ai effectue les changement, j'obtiens une parabole mais pas dans le sens voulu

    savez vous ce qui peut bien se passer

    merci

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    re bonjour
    bon voila j'ai trouve le probleme mais je ne sais pas le resoudre

    en fait dans la parablole il ya des valeur negative et je pense que c'est ca le probleme car dans ce cas la le programme ne peut plus afficher car les coordonnées ne sont pas negative

    si vous savez comment resoudre le probleme et pouvoir avoir une parabole que avec des valeur positive

    merci de vos reponses

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Est-ce qu'on pourrait avoir un code qui fonctionne afin de le tester, car c'est difficile de comprendre sans code...

    Jc

Discussions similaires

  1. trajectoire du ballon
    Par slim_java dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 19/05/2010, 13h49
  2. [IA] Calcul de trajectoire, heurstique et A*
    Par Olivier_ dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 03/01/2006, 17h47
  3. analyse de trajectoire
    Par victorracine dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 23/10/2005, 10h53
  4. Prédiction de trajectoire
    Par Xfennec dans le forum Développement
    Réponses: 3
    Dernier message: 27/07/2004, 16h08
  5. trajectoire anime en AS2
    Par savoyard dans le forum Flash
    Réponses: 20
    Dernier message: 07/11/2003, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo