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

OpenGL Discussion :

Débordement en virgule flottante


Sujet :

OpenGL

  1. #1
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut Débordement en virgule flottante
    Bonjour à tous

    Je dois afficher une croix au centre de l'écran, j'ai donc fait la fonction suivante :

    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
     
    // Méthode qui dessine une croix au centre de l'écran
    void __fastcall TJeuForm::Croix(void)
    {
            // On définit un tableau de 4 points
            TPoint *TabPoints;
            TabPoints = new TPoint[4];
     
            // Coordonnées du centre de l'écran
            int xc, yc;
     
            // On calcule les coordonnées du centre de l'écran
            xc = Screen->Width / 2;
            yc = Screen->Height / 2;
     
            // On défini les coordonnées pour le carré central
            TabPoints[0].x = xc - 10;
            TabPoints[0].y = yc - 10;
            TabPoints[1].x = xc + 10;
            TabPoints[1].y = yc - 10;
            TabPoints[2].x = xc + 10;
            TabPoints[2].y = yc + 10;
            TabPoints[3].x = xc - 10;
            TabPoints[3].y = yc + 10;
     
            // On dessine le carré central
            glBegin(GL_QUADS);
                    for(int i = 0; i <= 3; i++)
                    {
                            glVertex2f(TabPoints[i].x, TabPoints[i].y);
                    }
            glEnd();
     
            // On dessine le carré de gauche
            glPushMatrix();
                    glTranslatef(-20.0, 0.0, 0.0);
                    glBegin(GL_QUADS);
                            for(int i = 0; i <= 3; i++)
                            {
                                    glVertex2f(TabPoints[i].x, TabPoints[i].y);
                            }
                    glEnd();
            glPopMatrix();
     
            // On dessine le carré de droite
            glPushMatrix();
                    glTranslatef(20.0, 0.0, 0.0);
                    glBegin(GL_QUADS);
                            for(int i = 0; i <= 3; i++)
                            {
                                    glVertex2f(TabPoints[i].x, TabPoints[i].y);
                            }
                    glEnd();
            glPopMatrix();
     
            // On dessine le carré du haut
            glPushMatrix();
                    glTranslatef(0.0, -20.0, 0.0);
                    glBegin(GL_QUADS);
                            for(int i = 0; i <= 3; i++)
                            {
                                    glVertex2f(TabPoints[i].x, TabPoints[i].y);
                            }
                    glEnd();
            glPopMatrix();
     
            // On dessine le carré du bas
            glPushMatrix();
                    glTranslatef(0.0, 20.0, 0.0);
                    glBegin(GL_QUADS);
                            for(int i = 0; i <= 3; i++)
                            {
                                    glVertex2f(TabPoints[i].x, TabPoints[i].y);
                            }
                    glEnd();
            glPopMatrix();
     
           // On détruit le tableau de points
           delete TabPoints;
    }
    Cette fonction affiche bien la croix désiré mais avec 4 ou 5 erreurs

    "Debordement en virgule flottante".

    J'ai essayé de mettre en commentaire la fin de la fonction et je me suis aperçu que cette erreur survient à partir du 3ème carré, les deux premiers ne pose aucun problème

    Est-ce que quelqu'un saurais d'oû peut venir le problème

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 527
    Points : 5 195
    Points
    5 195
    Par défaut
    je ne sais pas si ça a à voir avec ton problème mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabPoints = new TPoint[4];
    il est où ton delete ?

  3. #3
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Normalement, la destruction doit se faire automatiquement à la fin de la fonction mais tu as raison pour être sur qu'il se détruise, je vais le rajouter (corrigé dans le code de mon précédent post également)

    Mais, cela n'enleve en rien mon problème car même avec le delete, les erreurs sont toujours là

    Merci à toi shenron666

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Normalement, la destruction doit se faire automatiquement à la fin de la fonction
    Non. Pour avoir un objet "automatique" il ne faut justement pas l'allouer dynamiquement.

    En ce qui concerne ton problème par contre... Aucune idée !

  5. #5
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 527
    Points : 5 195
    Points
    5 195
    Par défaut
    Une règle simple à suivre : à chaque new son delete

    concernant ton problème, pourrais tu nous dire/montrer ce qu'est ton objet TPoint ?

  6. #6
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    TPoint est une classe toute faite de C++ qui te permet de stocker les coordonnées x et y d'un point.

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par kurul1
    TPoint est une classe toute faite de C++ qui te permet de stocker les coordonnées x et y d'un point.
    Pas de C++, non. De C++ Builder peut-être ?

  8. #8
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    effectivement j'avais un doute, j'ai vérifié, tu as raison de Borland C++

    désolé

  9. #9
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je viens de m'apercevoir que cela cela dessine très bien ma croix et c'est après que les erreurs surviennent.

Discussions similaires

  1. débordement en virgule flottante
    Par eclipse2007 dans le forum C++
    Réponses: 2
    Dernier message: 27/04/2009, 18h45
  2. Débordement virgule flottante
    Par hallaj dans le forum Langage
    Réponses: 1
    Dernier message: 10/07/2008, 15h09
  3. Erreur débordement en virgule flottante
    Par houred dans le forum Débuter
    Réponses: 5
    Dernier message: 30/06/2008, 08h08
  4. "Débordement en virgule flottante"
    Par Tchaill39 dans le forum Delphi
    Réponses: 7
    Dernier message: 23/03/2007, 13h38
  5. Probléme de débordement en virgule flottante
    Par wikers dans le forum Langage
    Réponses: 7
    Dernier message: 05/08/2005, 17h35

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