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 :

probléme dans l'utilisation d'un tableau


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 17
    Points
    17
    Par défaut probléme dans l'utilisation d'un tableau
    j'ai effectué un programme sous visual c++ on utilisant les sources de VTKsurfaces aprés faire un calcul d'une équation de filtrage j'enregistre le résultat dans un tableau bidimensionnel et ce qu'il faut faire maintenant c'est de faire changer les coordonnées qui sont déjà été enregistrer dans le tableau en utilisant setpointcoordinates
    mon tableau et comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    double**tableau; 
    tableau=new double*[this->Input->GetNumberOfCoordinates()]; 
    for(int i=0;i<this->Input->GetNumberOfCoordinates();i++) 
    { 
    tableau[i]=new double[3]; 
     
    for (int j=0;j<3;j++) 
    { 
    tableau[i][j]=E[n];//tel que E contient le résultat de tous les coordonées de repére X, Y, et Z 
    } 
    }
    et ce que je dois faire c'est de mettre à jour mes coordonnées qui s'été enregistrer dans le tableau en utilisant SETCOORDINATES.
    je sais qu'il faut mettre une boucle mais je me mets qoui la dedant ???????????? merci pour vos aides

  2. #2
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    Je n'ai pas tout compris... C'est quoi E[n] ?
    Essai de reformuler ton problème aussi... J'ai beau lire et re-lire, je ne comprends pas ce que tu souhaites faire...
    Tu as des problèmes avec VTK ou avec le C++ ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par superspag
    Je n'ai pas tout compris... C'est quoi E[n] ?
    Essai de reformuler ton problème aussi... J'ai beau lire et re-lire, je ne comprends pas ce que tu souhaites faire...
    Tu as des problèmes avec VTK ou avec le C++ ?
    j'ai un probléme avec C++ on fait E[n] est une équation qui contient les nouveaux positions de mes sommets donc je garde une coppie de ce résultat (E[n]) dans le tableau et je ferme } aprés ce que je dois faire c'est d'appler cette résultat du tableau et de faire changer les coordonnées comme tous mes points ont des coordonnées avec la fonction SetOPointCoordinates.
    c'est ça ce que je souhaite faire j'espére que tu as compris mon problème

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Je dois dire que je ne comprend rien du tout moi non plus.

    E[n] est une équation
    Tu devrais nous mettre le code dans lequel tu déclares E.

    changer les coordonnées comme tous mes points ont des coordonnées avec la fonction SetOPointCoordinates.
    Tu devrais nous dire de quels "points" tu parles, car ce n'est pas très clair.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    class vtkLaplacianFairing
    {
    public:

    void SetInput(vtkSurface *Input) {this->Input=Input;};

    void ApplyFiltering(double Lambda)
    {

    double **Tableau;
    Tableau= new double* [this->Input->GetNumberOfPoints()];
    double A[3],B[3],E[3];
    double X[3],Y[3];
    vtkIdList *MyList=vtkIdList::New();

    for (int i=0; i<this->Input->GetNumberOfPoints(); i++)//prendre tous les sommets (i)

    {
    this->Input->GetVertexNeighbours(i,MyList);//elle me passe les sommets qui ont des voisinages avec le sommet choisi
    this->Input->GetPointCoordinates(i,X);//pour savoir les coordonées de chaque sommet en x,y,z
    double somme[3];
    somme[0]=0; somme[1]=0;somme[2]=0;
    for (j=0;j<MyList->GetNumberOfIds();j++) //le nbre d'ID correspond au nombre des points de voisinage
    {

    this->Input->GetPointCoordinates(MyList->GetId(j),Y);//prendre les voisins Y(j) de i

    A[0]=Y[0]-X[0];
    A[1]=Y[1]-X[1];//on soustraire Y(j) de X(i) pour chaque axe
    A[2]=Y[2]-X[2];

    B[0]=A[0]/(double)MyList->GetNumberOfIds();
    B[1]=A[1]/(double)MyList->GetNumberOfIds();
    B[2]=A[2]/(double)MyList->GetNumberOfIds();

    somme[0]=somme[0]+B[0];
    somme[1]=somme[1]+B[1];//pour le calcul de Laplacian Discret= somme wij(y(j)-X(i)) telque wij=1/nbre des voisins
    somme[2]=somme[2]+B[2];

    }
    E[0]=X[0]+Lambda*somme[0];//calcul du nouveau position des sommets
    E[1]=X[1]+Lambda*somme[1];
    E[2]=X[2]+Lambda*somme[2];

    Tableau[i]=new double[3];
    for (int n=0;n<3;n++)
    {
    Tableau[i][n]=E[n];//on enregistre tous les valeurs dans le tableau qui contient tous
    //le calcul des nouveaux positions des sommets en X, Y et Z c.a.d. on garde une copie de nos résultats dans ce tableau
    }

    }


    this->Input->SetPointCoordinates(.....,.....);//pour changer les coordonées du chaque sommet (elle est là mon problème je sais pas qoui mettre ici


    delete [] Tableau;
    }
    protected:
    vtkSurface *Input;

    };

    voilà je t'ai mis toute ma classe E[n] est le résultat de toute une équation elle contient la nouvelle position des points donc les nouveaux coordonnées des points.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    peux-tu rajouter des balises [ CODE ] autour de ton code ?
    et aussi l'indenter ?
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ceci est du code
    {
    	ceci est indenté correctement
    }
    afin que ce soit lisible ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Je crois que j'ai compris le problème, la question que je me pose c'est à quoi ressemble la méthode this->Input->SetPointCoordinates(.....,.....);
    Est-ce que ça met à jour les 3 valeurs que tu lui donnes, si tu les passe par référence? Dans ce cas, ça donnerait un truc dans ce genre je pense:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this->Input->SetPointCoordinates(i, tableau[i]);
    Mais faudrait connaître l'entête de la fonction SetPointCoordinates pour te répondre précisement.

  8. #8
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    J'ai lu est re-lu plusieur fois et je crois avoir compris

    Tu ne sais pas comment utiliser la fonction SetPointCoordinates qui est une fonction proposée par la librairie VTK... ça n'est donc pas un problème C++ mais un problème d'utilisation de VTK

    Je ne connais pas du tout VTK... à vu de nez, par symetrie avec la fonction GetPointCoordinates, je te dirais d'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int n=0;n<3;n++) {
      Tableau[i][n] = E[n];
      this->Input->SetPointCoordinates(n,E);
    }
    Mais je ne garanti pas le resultat

    Tu as pensé à regarder la documentation de cette librairie ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Cheps
    Je crois que j'ai compris le problème, la question que je me pose c'est à quoi ressemble la méthode this->Input->SetPointCoordinates(.....,.....);
    Est-ce que ça met à jour les 3 valeurs que tu lui donnes, si tu les passe par référence? Dans ce cas, ça donnerait un truc dans ce genre je pense:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this->Input->SetPointCoordinates(i, tableau[i]);
    Mais faudrait connaître l'entête de la fonction SetPointCoordinates pour te répondre précisement.
    c'est également pareil ta tout compris j'ai fais pareil on fait presque pareil mais d'une autre maniére mais la tienne elle marche parfaitement je te remercie infiniment pour ton aide

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 37
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par superspag
    J'ai lu est re-lu plusieur fois et je crois avoir compris

    Tu ne sais pas comment utiliser la fonction SetPointCoordinates qui est une fonction proposée par la librairie VTK... ça n'est donc pas un problème C++ mais un problème d'utilisation de VTK

    Je ne connais pas du tout VTK... à vu de nez, par symetrie avec la fonction GetPointCoordinates, je te dirais d'essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (int n=0;n<3;n++) {
      Tableau[i][n] = E[n];
      this->Input->SetPointCoordinates(n,E);
    }
    la tienne elle marche aussi mois j'ai asseyé tout d'abord ta methode elle mache mais mon prof m'a dis que j'ajoute des truc de plus pour rien donc il me l'a fait soustraire en une seul ligne seule d'avant mais dans tout les cas je te remercie pour ton aide bonne soirée à tous

    Mais je ne garanti pas le resultat

    Tu as pensé à regarder la documentation de cette librairie ?

  11. #11
    Membre habitué
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Points : 186
    Points
    186
    Par défaut
    Houla oui, selon mon raisonement il fallait sortir this->Input->SetPointCoordinates(n,E); de la boucle for

    J'etait pas bien reveillé

    Sinon, content que ça marche pour toi

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/04/2008, 01h01
  2. Problème dans l'utilisation d'un tableau
    Par NoiBe dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/05/2007, 17h19
  3. problème dans l'utilisation de g_access()
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 18
    Dernier message: 02/03/2007, 15h57
  4. Problème dans l'utilisation du WebBrowser
    Par MCShiff dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/01/2007, 13h52

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