Tracer de courbes à partir d'un fichier texte [Résolu]

Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 21 nov. 2006 à 10:35 - Dernière réponse :  cs_acerman
- 21 janv. 2007 à 21:34
Bonjour,

J'ai un projet où je dois tracer des courbes à partir d'un fichier texte, mais je n'arrive pas à la faire.
Je travaille sous dev-cpp et j'ai bien vu le code laissé par yoyo29 mais le contenu de mon fichier texte est différent.

Voici un exemple de mon fichier texte:

0.000000  0.000000  0.000000  0.000000  0.000000  0.000000  81.695600  81.695600  81.695600  300.000000  99.064900  71.563700  -0.093689  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
1.000000  0.000000  0.000000  0.000000  0.000000  0.000000  74.127200  66.253700  74.000050  333.333333  99.065600  71.502700  0.350647  -0.673135  35.979600  0.573880  10.497799  -0.830380  0.459325  18.292683  0.008501
2.000000  0.000000  0.000000  0.000000  0.000000  0.000000  161.163000  62.866200  88.979639  65.217391  99.065600  71.533200

Comment à partir de ce fichier texte, je peux obtenir une courbe???

Merci d'avance
Afficher la suite 

Votre réponse

25 réponses

Meilleure réponse
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 27 nov. 2006 à 15:48
3
Merci
Ca y est clad (au fait c'est par rapport à Final Fantasy ton pseudo ?) je pense avoir fini.
Je récapitule tout ce qu'il faut changer dans mon code d'origine (se repérer aux commentaires) :

- Modifier les variables globales suivantes en les remplaçant totalement :/*Gestion des paramètres*/
int AbscisseMax, NbCourbes;
double DonneesCourbes[8][1000], Min, Max, DeltaMax;

- Remplacer la fonction DessinerQuadrillage() :/*Dessin du quadrillage*/
void DessinerQuadrillage()
{
    HDC hDC;
    hDC = GetDC(hDraw);
    DeleteObject(hbmImage);
    hbmImage = CreateCompatibleBitmap(hDC, 720, 515);
    SelectObject(hdcImage, hbmImage);
    PatBlt(hdcImage, 0, 0, 720, 515, WHITENESS);
    ReleaseDC(hDraw, hDC);
    hPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
    SelectObject(hdcImage, hPen); /* On choisit hPen comme plume courante */   
    if(Min >= 0 && Max >= 0)
    {
        Min = 0;
        DeltaMax = Max;
    }
    else if(Min <= 0 && Max <= 0)
    {
        Max = 0;
        DeltaMax = -Min;
    }
    else DeltaMax = Max - Min;
    MoveToEx(hdcImage, 10, 500, NULL);
    LineTo(hdcImage, 10, 5);
    LineTo(hdcImage, 3, 15);
    MoveToEx(hdcImage, 10, 5, NULL);
    LineTo(hdcImage, 17, 15);
    if(Min == 0)
    {
        MoveToEx(hdcImage, 2, 490, NULL);
        LineTo(hdcImage, 700, 490);
        LineTo(hdcImage, 690, 483);
        MoveToEx(hdcImage, 700, 490, NULL);
        LineTo(hdcImage, 690, 497);
    }
    else if(Max == 0)
    {
        MoveToEx(hdcImage, 2, 20, NULL);
        LineTo(hdcImage, 700, 20);
        LineTo(hdcImage, 690, 13);
        MoveToEx(hdcImage, 700, 20, NULL);
        LineTo(hdcImage, 690, 27);
    }
    else
    {
        int Temp = 490 - (int)(Min * -470 / DeltaMax);
        MoveToEx(hdcImage, 2, Temp, NULL);
        LineTo(hdcImage, 700, Temp);
        LineTo(hdcImage, 690, Temp - 7);
        MoveToEx(hdcImage, 700, Temp, NULL);
        LineTo(hdcImage, 690, Temp + 7);
    }
    DeleteObject(hPen); /* Destruction de la plume (donc libération de la mémoire) */
    hDC = GetDC(hDraw); /* On obtient le DC de la fenêtre */
    BitBlt(hDC, 0, 0, cxImage, cyImage, hdcImage, 0, 0, SRCCOPY);
    ReleaseDC(hDraw, hDC);
}

- Remplacer la fonction RecupDonnees(char*) :/*Récupération des données du fichier*/
void RecupDonnees(char* NomFichier)
{
    char Texte[TAILLEBUFFER + ZERO_FIN];
    FILE * Fich;
    int i=0, j=0, Sec;
    Fich = fopen(NomFichier, "r");
    if(!Fich) MessageBox(NULL, "Impossible d'ouvrir le fichier !", "Erreur", MB_ICONSTOP);
    while(fgets(Texte, TAILLEBUFFER, Fich))
    {
        NbCourbes = 0;
        i = 0;
        while(Texte[i] != '.') i++;
        Sec = atoi(Left(Texte, i));    // Récupération de la seconde (abscisse) pour les données
        while(Texte[i] != ' ') i++;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;        if(Sec 0) Min Max = DonneesCourbes[0][Sec] = atol(Mid(Texte, i + 1, j));
        else if((DonneesCourbes[0][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[0][Sec];
        else if(DonneesCourbes[0][Sec] < Min) Min = DonneesCourbes[0][Sec];
        NbCourbes++;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[1][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[1][Sec];
        else if(DonneesCourbes[1][Sec] < Min) Min = DonneesCourbes[1][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[2][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[2][Sec];
        else if(DonneesCourbes[2][Sec] < Min) Min = DonneesCourbes[2][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[3][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[3][Sec];
        else if(DonneesCourbes[3][Sec] < Min) Min = DonneesCourbes[3][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[4][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[4][Sec];
        else if(DonneesCourbes[4][Sec] < Min) Min = DonneesCourbes[4][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[5][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[5][Sec];
        else if(DonneesCourbes[5][Sec] < Min) Min = DonneesCourbes[5][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[6][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[6][Sec];
        else if(DonneesCourbes[6][Sec] < Min) Min = DonneesCourbes[6][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[7][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[7][Sec];
        else if(DonneesCourbes[7][Sec] < Min) Min = DonneesCourbes[7][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[8][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[8][Sec];
        else if(DonneesCourbes[8][Sec] < Min) Min = DonneesCourbes[8][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
FinBoucle:
        ;
    }
    fclose(Fich);
    AbscisseMax = Sec;
}

- Et enfin, remplacer la fonction TracerGraghes() :/*Tracé du(des) graphes*/
void TracerGraphes()
{
    for(int j=0;j<NbCourbes;j++)
    {        if(j 0) hPen CreatePen(PS_SOLID, 1, RGB(128, 0, 0));        if(j 1) hPen CreatePen(PS_SOLID, 1, RGB(255, 0, 0));        if(j 2) hPen CreatePen(PS_SOLID, 1, RGB(0, 128, 0));        if(j 3) hPen CreatePen(PS_SOLID, 1, RGB(0, 255, 0));        if(j 4) hPen CreatePen(PS_SOLID, 1, RGB(0, 0, 128));        if(j 5) hPen CreatePen(PS_SOLID, 1, RGB(0, 0, 255));        if(j 6) hPen CreatePen(PS_SOLID, 1, RGB(128, 128, 0));        if(j 7) hPen CreatePen(PS_SOLID, 1, RGB(128, 0, 128));        if(j 8) hPen CreatePen(PS_SOLID, 1, RGB(0, 128, 128));
        SelectObject(hdcImage, hPen);
        for(int i=0;i<=AbscisseMax;i++)
        {
            if(i) LineTo(hdcImage, (i * 670) / AbscisseMax + 10, 490 - (int)((DonneesCourbes[j][i] - Min) * 470 / DeltaMax));
            else MoveToEx(hdcImage, 10, 490 - (int)((DonneesCourbes[j][i] - Min) * 470 / DeltaMax), NULL);
        }
        DeleteObject(hPen);
    }
}

J'attends que tu testes pour voir ce que ça donne de ton côté.
Pour info, voilà ce que contient mon fichier texte de test :
0.000000 0.000000 0.000000
1.000000 7.005680 3.050150
2.000000 56.21455 -10.6521
3.000000 59.32415 13.25478
4.000000 105.2545 19.21554
5.000000 99.25145 6.285174
6.000000 72.32547 12.25474
7.000000 45.21477 2.014545
8.000000 65.25896 5.022000
9.000000 12.21856 19.15641

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

Merci yoyo269 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de yoyo269
mad_love_disease 64 Messages postés lundi 20 octobre 2003Date d'inscription 1 juillet 2010 Dernière intervention - 21 nov. 2006 à 12:29
0
Merci
Salut,

Ca dépends ce que représente ces chiffres. Peut etre que ce sont les ordonnées des points d'abcisses 0 à 58. Bref, plus de renseignements sur ces chiffres seraient les bienvenus

Mad Love Disease
Commenter la réponse de mad_love_disease
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 21 nov. 2006 à 13:54
0
Merci
Le premier chiffre de chaque ligne indique le temps (0.0000; 1.0000; 2.0000), ce qui sera notre abscisse et le reste les ordonnées, ce qui fait que nous aurons plusieurs courbes mais si on peut juste me dire comment faire une courbe simplement à partir d'un fichier texte comme ceci:

0.000000  12.23654
1.000000   3.214856
2.000000  8.23654
3.000000  22.23654
4.000000  19.21474
5.000000  1.024545
6.000000  4.211454
7.000000  5.2011114
8.000000  3.369854
9.000000  13.025836

Je pense qu'après je pourrai me débrouiller mais je ne commais pas la base pour pouvoir transformer ce fichier texte en courbe.

Merci
Commenter la réponse de Clad74
mad_love_disease 64 Messages postés lundi 20 octobre 2003Date d'inscription 1 juillet 2010 Dernière intervention - 21 nov. 2006 à 14:07
0
Merci
Ok, c'est déja beaucoup plus clair, merci pour tes précisions. Nous auront donc plusieurs courbes. Maintenant que desire tu faire. Veux tu tracer ces courbes sur un écran, ou veut les exprimer à l'aide d'une fonction mathématique, ou autre chose encore je ne sais pas mais si tu as les données, tout est possible après.

A bientot

Mad Love Disease
Commenter la réponse de mad_love_disease
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 21 nov. 2006 à 15:12
0
Merci
En faite, il y aura sur l'écran 9 courbes à afficher, donc je pensais faire comme le source de yoyo29. Avoir le quadrillage derrière mais le problème c'est que son code ne prends en compte qu'un type spéciale de fichier texte avec des données pour le programme puis les valeurs, moi dans mon fichier texte, il n'y a que des valeurs et je ne peux pas le modifier vu qu'il vient d'un appareil de mesure.
Commenter la réponse de Clad74
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 22 nov. 2006 à 08:46
0
Merci
Salut clad,

je peux y jeter un oeil et te dire quoi modifier dans mon code si tu veux ?
Par contre petite précision, il y a toujours 9 courbes, ou le nombre est variable ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
mad_love_disease 64 Messages postés lundi 20 octobre 2003Date d'inscription 1 juillet 2010 Dernière intervention - 22 nov. 2006 à 09:42
0
Merci
Bonjour à tous,

Je viens de regarder la source de yoyo et il me semble qu'elle est adapter à ton problème. Je te conseille de la compiler et d'essayer de la modifier, à l'endroit ou le fichier texte est chargé. Niveau code, on peut t'aider. Je reviendrai sur ce topic, mais la c'est l'heure du taff; @+

Mad Love Disease
Commenter la réponse de mad_love_disease
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 22 nov. 2006 à 18:41
0
Merci
Oui, je veux bien que tu me dise quoi modifié, sa serai super cool.
 Il y aura toujours 9 courbes à l'écran, celà ne variera pas.

Et Mad Love Disease, le code est spécifique à un type de fichier texte et je ne sais pas comment le modifier tout seul.

Merci d'avance.
Commenter la réponse de Clad74
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 22 nov. 2006 à 18:43
0
Merci
Ok clad je jette un oeil dessus ce soir !
Encore une petite précision, ton échelle d'abscisses est touours le même également ?
Ce que je veux dire c'est est-ce qu'il y a tjs le même nombre de secondes ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 22 nov. 2006 à 19:21
0
Merci
Alors en faite pour commencer on fait les courbes par rapport au fichier texte que l'on a qui sont des rapport d'une machine, par la suite on fera les courbes directement avec la machine donc la courbe évoluera en fonction du temps.

Je sais pas si je me suis bien  fait comprendre.lol.

0.000000  0.000000  0.000000 
1.000000  7.005680  3.050150 
2.000000  56.21455  -0.65214
3.000000  59.32415  13.25478
4.000000  105.2545  19.21554
5.000000  99.25145  6.285174
6.000000  72.32547  12.25474
7.000000  45.21477  2.014545
8.000000  65.25896  5.022000
9.000000  12.21856  19.15641

Mais déja si t'arrive à modifier ton code pour qu'avec les données du haut on obtienne 2courbes sa serai super, aprés je me débrouillerai (je pense)
La 1ere colonne c'est le temps puis la seconde les ordonnées de la courbe 1 puis les ordonnées de la courbe 2.

Merci d'avance
Commenter la réponse de Clad74
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 24 nov. 2006 à 13:35
0
Merci
Salut clad !

j'ai encore une petite question.
Est-ce qu'il risque d'y avoir les "NaN" que tu as dans ton premier message, dans le fichier ?
Sinon s'il n'y en a pas, la récupération des données est faite et fonctionne très bien.
Il me reste juste à faire une mise à l'échelle (rien de très sorcier , des maths en fait).

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 24 nov. 2006 à 17:30
0
Merci
Alors en fait j'aurais pas le temps de te finir la mise à l'échelle et en plus ce week-end je ne suis pas là.
Voilà donc ce que j'ai fait pour l'instant :

Fonctions à remplacer entièrement :/*Récupération des données du fichier*/
void RecupDonnees(char* NomFichier)
{
    char Texte[TAILLEBUFFER + ZERO_FIN];
    FILE * Fich;
    int i=0, j=0, Sec;
    Fich = fopen(NomFichier, "r");
    if(!Fich) MessageBox(NULL, "Impossible d'ouvrir le fichier !", "Erreur", MB_ICONSTOP);
    while(fgets(Texte, TAILLEBUFFER, Fich))
    {
        NbCourbes = 0;
        i = 0;
        while(Texte[i] != '.') i++;
        Sec = atoi(Left(Texte, i));    // Récupération de la seconde (abscisse) pour les données
        while(Texte[i] != ' ') i++;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;        if(Sec 0) Min Max = DonneesCourbes[0][Sec] = atol(Mid(Texte, i + 1, j));
        else if((DonneesCourbes[0][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[0][Sec];
        else if(DonneesCourbes[0][Sec] < Min) Min = DonneesCourbes[0][Sec];
        NbCourbes++;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[1][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[1][Sec];
        else if(DonneesCourbes[1][Sec] < Min) Min = DonneesCourbes[1][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[2][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[2][Sec];
        else if(DonneesCourbes[2][Sec] < Min) Min = DonneesCourbes[2][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[3][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[3][Sec];
        else if(DonneesCourbes[3][Sec] < Min) Min = DonneesCourbes[3][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[4][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[4][Sec];
        else if(DonneesCourbes[4][Sec] < Min) Min = DonneesCourbes[4][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[5][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[5][Sec];
        else if(DonneesCourbes[5][Sec] < Min) Min = DonneesCourbes[5][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[6][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[6][Sec];
        else if(DonneesCourbes[6][Sec] < Min) Min = DonneesCourbes[6][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
        i = j + 1;
        while(Texte[i] != ' ' && Texte[i] != '\n' && Texte[i] != 0) i++;
        if((DonneesCourbes[7][Sec] = atol(Mid(Texte, j + 1, i))) > Max) Max = DonneesCourbes[7][Sec];
        else if(DonneesCourbes[7][Sec] < Min) Min = DonneesCourbes[7][Sec];
        NbCourbes++;
        if(Texte[i] == '\n' || Texte[i] == 0) goto FinBoucle;
        j = i + 1;
        while(Texte[j] != ' ' && Texte[j] != '\n' && Texte[j] != 0) j++;
        if((DonneesCourbes[8][Sec] = atol(Mid(Texte, i + 1, j))) > Max) Max = DonneesCourbes[8][Sec];
        else if(DonneesCourbes[8][Sec] < Min) Min = DonneesCourbes[8][Sec];
        NbCourbes++;
        if(Texte[j] == '\n' || Texte[j] == 0) goto FinBoucle;
FinBoucle:
        ;
    }
    fclose(Fich);
    AbscisseMax = Sec;
}/*Tracé du(des) graphes*/
void TracerGraphes()
{
    double DeltaMax = Max - Min;
    for(int j=0;j<NbCourbes;j++)
    {        if(j 0) hPen CreatePen(PS_SOLID, 1, RGB(128, 0, 0));        if(j 1) hPen CreatePen(PS_SOLID, 1, RGB(255, 0, 0));        if(j 2) hPen CreatePen(PS_SOLID, 1, RGB(0, 128, 0));        if(j 3) hPen CreatePen(PS_SOLID, 1, RGB(0, 255, 0));        if(j 4) hPen CreatePen(PS_SOLID, 1, RGB(0, 0, 128));        if(j 5) hPen CreatePen(PS_SOLID, 1, RGB(0, 0, 255));        if(j 6) hPen CreatePen(PS_SOLID, 1, RGB(128, 128, 0));        if(j 7) hPen CreatePen(PS_SOLID, 1, RGB(128, 0, 128));        if(j 8) hPen CreatePen(PS_SOLID, 1, RGB(0, 128, 128));
        SelectObject(hdcImage, hPen);
        for(int i=0;i<=AbscisseMax;i++)
        {
            if(i) LineTo(hdcImage, (i * 700) / AbscisseMax + 10, (int)(DonneesCourbes[j][i] * 480 / Max));
            else MoveToEx(hdcImage, 10, (int)(DonneesCourbes[j][i] * 480 / Max), NULL);
        }
        DeleteObject(hPen);
    }
}

Variables à déclarer en global :
int AbscisseMax, NbCourbes;
double DonneesCourbes[8][1000], Min, Max;

Je te laisse tester et me dire ce que tu en penses.

PS: pour le format du fichier texte, j'ai supposé qu'il n'y avait qu'un espace entre deux valeurs et qu'en fin de ligne il n'y avait pas d'espace.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 24 nov. 2006 à 17:32
0
Merci
Petite rectification pour la boucle for, il faut mettre ça dedans pour que ça plus représentatif :

if(i) LineTo(hdcImage, (i * 700) / AbscisseMax + 10, 500 - (int)(DonneesCourbes[j][i] * 480 / Max));
else MoveToEx(hdcImage, 10, 500 - (int)(DonneesCourbes[j][i] * 480 / Max), NULL);

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 25 nov. 2006 à 15:48
0
Merci
Merci beaucoup yoyo, je peux pas voir si sa marche pour l'instant mais merci encore c'est vraiment super sympa, je te tiens au courant.

Clad74
Commenter la réponse de Clad74
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 26 nov. 2006 à 10:10
0
Merci
Ok pas de souci !
Ce soir je rentre chez moi et demain je me remets à ton sujet pour faire la mise à l'échelle.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 27 nov. 2006 à 19:02
0
Merci
Slt yoyo,


 


Si t'avait été voir mon site tu aurai vu par toi même que 'oui' mon pseudo est par rapport à Final Fantasy.lol.

Pour ton programme sa fonctionne super mais en faite ce que je voudrais, c'est que sa m'affiche 9 courbes sur 9 graphes différents. Je voulais déjà t' envoyé une image pour te montrer la disposition des courbes mais on ne peut pas sur les forums.

Si t'a une adresse à me passer en privé, je t'envoie une image que la disposition que je souhaite.

En attendant, je vais essayer de le faire par moi même.

Merci encore.

Et je voulais te demander aussi: aprés je vais devoir lire les données directement sur l'appareil et donc mes courbes vont évoluer et il faudrait qu'une fois que les graphes seraient remplis ( à 10sec environ), que sa se décale vers la gauche. C'est à dire que l'on efface les premières valeurs, on décale la courbe et les nouvelles valeurs apparaissent.

Je penses qu'on peut le faire déjà avec un fichier texte qui comporte encore plus de valeurs sur le temps mais j'en suis pas sur et si c'est possible, est-ce que tu sais comment faire??

Merci d'avance

Clad74
Commenter la réponse de Clad74
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 27 nov. 2006 à 19:47
0
Merci
Ah oui en effet, sur ton site on voit bien que c'est pour final fantasy ! lol
Pour l'adresse privée, tu peux aller sur mon site et aller dans la rubrique contact, juste pour envoyer un message quelconque mais en précisant bien ton mail !!!
Pour l'affichage des dernières valeurs ya absolument aucun souci, c'est très facile.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
Clad74 44 Messages postés mercredi 18 avril 2012Date d'inscription 5 avril 2013 Dernière intervention - 27 nov. 2006 à 20:25
0
Merci
Je suis allé sur ton site mais il n'y a pas d'adresse  perso.(ou en tout cas je l'ai pas vue.lol) Donc je peux pas mettre la disposition.


C'est trés facile de déplacer la courbe en fonction du temps??Commen y faut faire??lol.


Merci d'avance


Clad74
Commenter la réponse de Clad74
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 27 nov. 2006 à 20:34
0
Merci
Ben pour "déplacer", tu retraces tout avec uniquement les 10 derniers points !!! Logique !
Pour le mail, je t'ai dit d'envoyer un message en précisant ton adresse, t'as pas besoin de voir la mienne, juste tu remplis et après tu envoies.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269
yoyo269 1403 Messages postés lundi 23 février 2004Date d'inscription 11 janvier 2009 Dernière intervention - 27 nov. 2006 à 20:35
0
Merci
Au fait, quand une réponse te convient par rapport au sujet de ton post, clique sur le bouton accepter la réponse.
Ca sera plus facile de se repérer pour les autres utilisateurs.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Commenter la réponse de yoyo269

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.