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 :

problème avec idle


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 68
    Par défaut problème avec idle
    bonjours, dans un programme je veux placer la camera à des positions précises , pour cela j'ai utilisé la fonction idle. mon problème est: lorsque j'écris eyex +=r; les choses ne marchent plus,mais lorsque je remplace la variable r par sa valeur numérique (eyex +=1.026) ça marche bien !! qu'est ce qu'il faut faire pour régler ce truc ? (sachant que je suis obligé d'utiliser la variable et non pas sa valeur numérique )

    le code est le suivant:
    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
      double r;// rayon de l'objet affiché 
     static double eyex=-r,eyey=-r,eyez=-r;
    void GLUTRedraw(void)
    {
    ......
    .......
    gluLookAt((GLfloat)eyex,(GLfloat)eyey,(GLfloat)eyez,gx,gy,gz,ux,uy,uz);  
    ....
      r=sqrt((carre(gx))+(carre(gy))+(carre(gz)));
    .....
    }
    static void idle(void)
     {	 
    	 eyex +=r; 
       if (eyex > (2*r)) { 
    	   eyex=-r;eyey +=r; 
    	   if (eyey > (2*r)) {
    		   eyex=-r; eyey=-r;eyez +=r; 
    		   if (eyez>(3*r)) {
    			   fprintf(f,"%s\t",myObjet);fprintf(f,"\n");
    			    exit(0); 
    		   }
    	   }
      }   
      glutPostRedisplay(); 
     }
    cordialement

  2. #2
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Citation Envoyé par M77ATTAR Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      double r;// rayon de l'objet affiché 
     static double eyex=-r,eyey=-r,eyez=-r;
    Tu n'initialises par r, il faut lui donner une valeur avant de l'utiliser.

    Et affiche la valeur de r après cela pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r=sqrt((carre(gx))+(carre(gy))+(carre(gz)));
    Et pourquoi utilises tu des variables globales?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 68
    Par défaut
    effectivement j'ai l'initialisé comme suit:
    double r=0.0;
    la tâche est semi réparé !!! car les variables eyex et eyey prennent les valeurs:-r, 0 et r alors que eyez prend seulement 0 et r (il lui manque -r !!);
    comment procéder pour que les trois variables: eyex,eyey, et eyez prennent tous les valeurs: -r,0, et r ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par M77ATTAR Voir le message
    effectivement j'ai l'initialisé comme suit:
    double r=0.0;
    la tâche est semi réparé !!! car les variables eyex et eyey prennent les valeurs:-r, 0 et r alors que eyez prend seulement 0 et r (il lui manque -r !!);
    comment procéder pour que les trois variables: eyex,eyey, et eyez prennent tous les valeurs: -r,0, et r ?
    Bonjour,

    je ne comprends absolument pas ce que tu racontes.
    1 variable a 1 valeur à un instant donné.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 68
    Par défaut
    je veux que la camera (gluLookAt((GLfloat)eyex,(GLfloat)eyey,(GLfloat)eyez,...) se déplace d'une position à l'autre (8 positions) à l'aide de la fonction idle qui change les valeurs de eyex,eyey, et eyez selon la boucle 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
    static void idle(void)
     {	 
    	 eyex +=r; 
       if (eyex > r) { 
    	   eyex=-r; eyey +=r; 
    	   if (eyey > r) {
    		   eyex=-r; eyey=-r;eyez +=r; 
    		   if (eyez> r) {
    			   fprintf(f,"%s\t",myObjet);fprintf(f,"\n");
    			    exit(0); 
    		   }
    	   }
      }   
      glutPostRedisplay(); 
     }
    .(dans cette boucle eyez ne prend pas "-r") ma question est: comment changer la boucle pour qu'elle parcourt les toutes les positions suivantes:
    -r,-r,r;
    r,-r,r;
    -r,r,r;
    r,r,r;
    -r,r,-r;
    r,r,-r;
    -r,-r,-r;
    r,-r,-r;

  6. #6
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Ben là tu es loin du compte, car là c'est plutôt :

    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
     
    x     y     z
    -r    -r    -r
    0    -r    -r
    r    -r    -r
    2r    -r    -r
    -r    0    -r
    0    0    -r
    r    0    -r
    2r    0    -r
    -r    r    -r
    0    r    -r
    r    r    -r
    2r    r    -r
    -r    2r    -r
    -r    -r    0
    ...
    et ainsi de suite.

Discussions similaires

  1. Problème avec la condition "else" et Crash Idle avec la touche ^
    Par pancakesnutella dans le forum Général Python
    Réponses: 5
    Dernier message: 25/03/2014, 23h06
  2. Problème avec l'antislash sur l'IDLE
    Par siskas dans le forum EDI/RAD
    Réponses: 1
    Dernier message: 10/08/2010, 13h04
  3. [oracle 10g] -Problème avec idle-time
    Par Loïck dans le forum Oracle
    Réponses: 2
    Dernier message: 02/07/2008, 15h03
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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