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 :

pb relier des points avec la SDL en C


Sujet :

SDL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 31
    Points
    31
    Par défaut pb relier des points avec la SDL en C
    bonjour,

    je parviens à tracer des points sur un graph en SDL, et pour les relier et donner l'allure d'une courbe, j'utilise une fonction "line" décrite dans un tutoriel sur ce site (http://anomaly.developpez.com/tutoriel/sdl/partie2/), j'ai donc ajouter cette partie à la fin de mon programme :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    void setPixel(int x, int y, Uint32 coul)
    {
     SDL_Surface*ecran;
    ecran = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE);
      *((Uint32*)(ecran->pixels) + x + y * ecran->w) = coul;
    }
     
    void setPixelVerif(int x, int y, Uint32 coul)
    {
     SDL_Surface*ecran;
    ecran = SDL_SetVideoMode(640,480,32,SDL_HWSURFACE);
      if (x >= 0 && x < ecran->w &&
          y >= 0 && y < ecran->h)
        setPixel(x, y, coul);
    }
     
    void echangerEntiers(int* x, int* y)
    {
      int t = *x;
      *x = *y;
      *y = t;
    }
     
    /*----------fonction ligne----------*/
    void line(int x1, int y1, int x2, int y2, Uint32 coul)
    {
      int d, dx, dy, aincr, bincr, xincr, yincr, x, y;
     
      if (abs(x2 - x1) < abs(y2 - y1)) {
        /* parcours par l'axe vertical */
     
        if (y1 > y2) {
          echangerEntiers(&x1, &x2);
          echangerEntiers(&y1, &y2);
        }
     
        xincr = x2 > x1 ? 1 : -1;
        dy = y2 - y1;
        dx = abs(x2 - x1);
        d = 2 * dx - dy;
        aincr = 2 * (dx - dy);
        bincr = 2 * dx;
        x = x1;
        y = y1;
     
        setPixelVerif(x, y, coul);
     
        for (y = y1+1; y <= y2; ++y) {
          if (d >= 0) {
    	x += xincr;
    	d += aincr;
          } else
    	d += bincr;
     
        setPixelVerif(x, y, coul);
        }
     
      } else {
        /* parcours par l'axe horizontal */
     
        if (x1 > x2) {
          echangerEntiers(&x1, &x2);
          echangerEntiers(&y1, &y2);
        }
     
        yincr = y2 > y1 ? 1 : -1;
        dx = x2 - x1;
        dy = abs(y2 - y1);
        d = 2 * dy - dx;
        aincr = 2 * (dy - dx);
        bincr = 2 * dy;
        x = x1;
        y = y1;
     
      setPixelVerif(x, y, coul);
     
        for (x = x1+1; x <= x2; ++x) {
          if (d >= 0) {
    	y += yincr;
    	d += aincr;
          } else
    	d += bincr;
     
          setPixelVerif(x, y, coul);
        }
      }
    }
    or il m'affiche désormais un écran noir alors qu'avant de rajouter tout ca j'avais les points de mon graph tracés.
    Est-ce que je dois remplacer "ecran->w" ,"ecran->pixels" ... par leur valeur ou faire d'autres modifications?

    Merci d'avance pour votre aide

  2. #2
    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
    Il faudrait voir le code complet et compilable pour vraiment avoir une bonne idée. Par contre, une chose à vérifier serait que tu ouvres ta fenêtre en 32 bits et de la même résolution que le code posté donc 640*480.

    Sinon change les dimensions.

    Jc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. relier des points entre eux avec une boucle
    Par persé dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/04/2015, 10h04
  2. [JFreeChart] Ordre pour relier des points avec XYLineAndShapeRenderer
    Par Yann_69 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 18/09/2012, 16h53
  3. Impossible de relier des points avec plot
    Par Sylver52 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 28/05/2009, 08h21
  4. Relier des points dans une paintbox par une courbe
    Par Benjikos dans le forum Débuter
    Réponses: 4
    Dernier message: 19/08/2007, 13h06
  5. Gestion des evenements avec la SDL
    Par gusgus dans le forum Ogre
    Réponses: 5
    Dernier message: 01/11/2006, 10h47

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