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

C++ Discussion :

pointeur et erreur de calcul.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut pointeur et erreur de calcul.
    Bonjour.

    J'ai un problème que j'ai réussit à résoudre sans pour autant avoir une explication :

    pour calculer une trajectoire depuis des coordonnées en pointeurs, si je le fais simplement comme suit , le calcul est erroné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
                _physics -> setDestination ( sf::Vector2f (  ( *_x ) , ( *_x ) * _slopeWay.x + _slopeWay.y ) ) ;
    or si je le fais ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
                _physics -> setDestination ( sf::Vector2f ( 1 + ( *_x ) , 1 + ( *_x ) * _slopeWay.x + _slopeWay.y ) ) ;
    En rajoutant 1 devant , le calcul se fait correctement.

    Avez vous par hasard une explication qui vous vient comme ca ? ou ca viendrait probablement de plus loin dans le code.

    Merci si vous pouvez m'éclairer sur cette bizarrerie.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Il faut qu'on aie plus d'informations : sur les types utilisés et sur l'erreur en elle-même.

    • Type de _x ?
    • Type _slopeWay.x, _slopeWay.y ?
    • Signature des constructeurs de Vector2f ?
    • Comment vérifies-tu que le calcul est faux ?


    A mon avis, tu testes une égalité sur un nombre flottant. Hors tu ne peux pas faire ça avec les nombres flottants, il faut comparer avec une marge d'erreur. Le fait que ça fonctionne dans le second cas est un coup de chance.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Sans plus de code que ca, tu nous dis, "si je pose une cuillère à côté de mon assiette, le plat est meilleur, pourquoi?"
    La seule réponse qu'on peut te donner, c'est "Si tu le dis".

    Il nous faudrait voir comment tu utilises ces valeurs.

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    ok, merci pour vos réponses.

    pour *_x / *_y , c'est un float, pour _slopeWay est un sf::Vector2f.

    j'utiliser la SFML, alors sf::Vector2f est censé être fait proprement.

    Comment vérifies-tu que le calcul est faux ?
    Disons que mon objet est censé retourner sur sa pente de départ. Quand je mets pas les valeurs + 1 devant, il ne bouge tout simplement pas. ( d'autres objets semblent aussi affecté ).

    ca doit donc venir de mon entité _physics.

    Je voulais simplement verrifier s'il y avait une façon particulière d'utiliser des valeurs de pointeurs dans des fonctions de calculs, qui pourrait être la cause de cette erreur.
    Mais apparemment pas.

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

Discussions similaires

  1. [2.0] Erreur de calcul numérique de .net o_O
    Par Smeuuh dans le forum Framework .NET
    Réponses: 8
    Dernier message: 11/11/2006, 17h04
  2. [Tableaux] erreur de calcul
    Par dleu dans le forum Langage
    Réponses: 18
    Dernier message: 08/12/2005, 13h28
  3. erreur sur calcul
    Par Sendo dans le forum Access
    Réponses: 2
    Dernier message: 29/09/2005, 09h46
  4. Rotation erreur de calcul
    Par Speed41 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 09/03/2005, 16h55
  5. C++Builder fait une erreur de calcul
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/01/2004, 22h27

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