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

Qwt Discussion :

Comment dessiner une courbe ?


Sujet :

Qwt

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Physicien
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Physicien

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Comment dessiner une courbe ?
    Bonjour,

    Je voudrais dessiner une courbe toute simple (y = sin x) et j'ai passé une journée avec qcustomplot et un peu de temps avec qwt.

    Savez-vous comment faire s'il vous plaît ?

    Merci d'avance.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Physicien
    Inscrit en
    Mars 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Physicien

    Informations forums :
    Inscription : Mars 2015
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Comme je sais que la réponse n'arrivera pas car je ne vois pas pourquoi d'autres auraient trouvé si moi je n'ai pas trouvé après tout ce temps, alors je donne ma réponse.

    Mots-clés pour la recherche google :
    Dessiner une courbe avec QT Creator
    Dessiner un graphe avec QT Creator
    Dessiner un graphique avec QT Creator
    Tracer une courbe avec QT Creator
    Tracer un graphe avec QT Creator
    Tracer un graphique avec QT Creator

    1. Lancer QT Creator.
    2. Cliquer sur Fichier, puis Nouveau fichier ou projet….
    3. Dans la colonne de gauche en haut, cliquer sur Application ; puis dans la colonne du milieu, cliquer sur Application Qt avec widgets ; puis sur Choose….
    4. Taper le nom du projet après Nom : ; indiquer l’emplacement où doit se situer le projet après Créer dans : ; puis cliquer sur Suivant > ; puis cliquer sur Suivant > ; puis laisser "Créer l’interface graphique" puis cliquer sur Suivant > ; puis cliquer sur Terminer.
    5. Dans la colonne de gauche, déployer Formulaires ; puis double-cliquer sur mainwindow.ui ; puis faire défiler la colonne de gauche tout en bas ; puis dans Display Widgets, double-cliquer sans relâcher sur Label, puis déplacer la souris sur la colonne du milieu en haut à l’endroit où se situe une grille de points sur fond jaune, puis relâcher la souris. Déplacer l’angle supérieur gauche de TextLabel en haut à gauche de la grille de points sur fond jaune.
    6. Remplacer le mainwindow.h par :
    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
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QMainWindow>
    #include <QImage>
     
    namespace Ui
    {
      class MainWindow;
    }
     
    class MainWindow : public QMainWindow
    {
      Q_OBJECT
     
    public:
      explicit MainWindow(QWidget *parent = 0);
      ~MainWindow();
     
    private:
      Ui::MainWindow *ui;
      QImage image;
    };
     
    int xtoi(long double x);
    int ytoj(long double y);
    long double itox(int i);
    long double jtoy(int j);
    bool validite(int i,int j);
     
    #endif // MAINWINDOW_H
    7. Remplacer le mainwindow.cpp par :
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QImage>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
     
    #define Y1  sin(x)
     
    #define XMIN      -13.60
    #define XMAX       13.60
    #define XSCALE      1.0
    #define YMIN       -6.71
    #define YMAX        6.71
    #define YSCALE      1.0
     
    #define LARGEUR_SOUHAITEE   3000 // max = 1360
    #define HAUTEUR_SOUHAITEE   3000 // max = 671
    #define LARGEUR_ECRAN   1366
    #define HAUTEUR_ECRAN   768
    #define OFFSET_HAUT     37
    #define OFFSET_BAS      60
    #define OFFSET_GAUCHE   6
    #define OFFSET_DROITE   0
    #define EPAISSEUR_SCALE 10
    int largeur = LARGEUR_SOUHAITEE;
    int hauteur = HAUTEUR_SOUHAITEE;
     
    MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent),
      ui(new Ui::MainWindow)
    {
      ui->setupUi(this);
     
      // 1.Dimensionnement de l'image
      if (largeur > LARGEUR_ECRAN - OFFSET_GAUCHE - OFFSET_DROITE)
        largeur = LARGEUR_ECRAN - OFFSET_GAUCHE - OFFSET_DROITE;
      if (hauteur > HAUTEUR_ECRAN - OFFSET_HAUT - OFFSET_BAS)
        hauteur = HAUTEUR_ECRAN - OFFSET_HAUT - OFFSET_BAS;
      image = QImage(QSize(largeur,hauteur), QImage::Format_RGB32);
     
      // 2.Creation des variables
      int                i,j,k;
      long double        x,y;
      unsigned long int* image_matrice = (unsigned long int*)calloc(largeur*hauteur,sizeof(unsigned long int));
     
      // 3.Creation d'une image blanche
      for (i = 0 ; i < largeur ; ++i)
        for (j = 0 ; j < hauteur ; ++j)
          image_matrice[i*hauteur+j] = 0x00ffffff;
     
      // 4.Trace des axes
      // Trace de l'axe x
      for (i = xtoi(XMIN) ; i <= xtoi(XMAX) ; ++i)
        {j = ytoj(0); if (validite(i,j)) image_matrice[i*hauteur+j] = 0x00ff0000;}
      // Trace de l'axe y
      for (j = ytoj(YMIN) ; j <= ytoj(YMAX) ; ++j)
        {i = xtoi(0); if (validite(i,j)) image_matrice[i*hauteur+j] = 0x00ff0000;}
     
      // 5.Trace des echelles
      // Trace de l'echelle x
      for (x = ceil(XMIN) ; x <= floor(XMAX) ; ++x)
        for (k = 0 ; k < EPAISSEUR_SCALE ; ++k)
          {i = xtoi(x); j = ytoj(0) - k; if (validite(i,j)) image_matrice[i*hauteur+j] = 0x00ff0000;}
      // Trace de l'echelle y
      for (y = ceil(YMIN) ; y <= floor(YMAX) ; ++y)
        for (k = 0 ; k < EPAISSEUR_SCALE ; ++k)
          {j = ytoj(y); i = xtoi(0) - k; if (validite(i,j)) image_matrice[i*hauteur+j] = 0x00ff0000;}
     
      // 6.Trace de la courbe y = f(x)
      for (i = xtoi(XMIN) ; i <= xtoi(XMAX) ; ++i)
        {x = itox(i); j = ytoj(Y1); if (validite(i,j)) image_matrice[i*hauteur+j] = 0x00000000;}
     
      // 7.Construction de l'image
      // Attention a la convention : chez moi, l'origine est en bas a gauche.
      for (i = 0 ; i < largeur ; ++i)
        for (j = 0 ; j < hauteur ; ++j)
          image.setPixel(QPoint(i,hauteur-1-j),image_matrice[i*hauteur+j]);
     
      // 8.Liberation de la memoire
      free(image_matrice);
     
      ui->label->setPixmap(QPixmap::fromImage(image));
      ui->label->resize(largeur,hauteur);
      ui->label->setScaledContents(true);
      ui->label->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
    }
     
    MainWindow::~MainWindow()
    {
      delete ui;
    }
     
    int xtoi(long double x)
    {
      return (x-XMIN)/(XMAX-XMIN)*largeur;
    }
     
    int ytoj(long double y)
    {
      return (y-YMIN)/(YMAX-YMIN)*hauteur;
    }
     
    long double itox(int i)
    {
      return ((long double)i/largeur)*(XMAX-XMIN)+XMIN;
    }
     
    long double jtoy(int j)
    {
      return ((long double)j/hauteur)*(YMAX-YMIN)+YMIN;
    }
     
    bool validite(int i,int j)
    {
      if ((i<0) || (i>=largeur) || (j<0) || (j>=hauteur)) return 0;
      return 1;
    }
    8. Modifier les valeurs adéquates dans le mainwindow.cpp concernant ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #define Y1  sin(x)
     
    #define XMIN      -13.60
    #define XMAX       13.60
    #define XSCALE      1.0
    #define YMIN       -6.71
    #define YMAX        6.71
    #define YSCALE      1.0

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

Discussions similaires

  1. Comment dessiner une courbe à trois paramètres?
    Par NoussaL dans le forum VB.NET
    Réponses: 12
    Dernier message: 03/11/2008, 14h49
  2. Réponses: 7
    Dernier message: 29/07/2008, 08h39
  3. comment dessiner des courbes en c++builder?
    Par bob75018 dans le forum C++Builder
    Réponses: 8
    Dernier message: 17/01/2006, 20h19
  4. Réponses: 3
    Dernier message: 29/06/2005, 14h29
  5. Comment dessiner une ligne dans un Chart ?
    Par libititi dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2005, 14h56

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