Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt 5 : 5.7.1 - Qt Creator : 4.2.0 - Qt Installer : 2.0.3 - JOM : 1.1.2 - Qt Build suite : 1.7.0 - VS Qt 5 : 2.0.0

ZeGrapher

2

Réponses

  • je n'ai pas encore eu le temps de dire ce que je pensais de ton soft, donc me voilà

    Tout d'abord, un grand bravo, il est fonctionnel, joli, et il fait bien ce qu'on lui demande (je suis notamment très impressionné par le tracé des dérivées et primitives). Jusqu'alors j'utilisais Géogebra, mais je crois que ça va changer.

    Ensuite, je sous sous mac, donc je l'ai compilé sur mon ordi la version 2.0. Il y a un problème lorsque tu utilise les fonctions isnan et isinf, étant donné que je n'ai vu nulpart using namespace std, il faut plutôt utiliser

    std::isnan()
    //et
    std::isinf()
    Mis a part ça tout semble bien fonctionner (je ne pense pas avoir essayé toutes les fonctionnalités), du coup voilà la version 2.0 pour mac ici.(un lien vers ma dropbox)

    Sinon une petite remarque totalement subjective : je trouve le logo pas terrible (enfin surtout la couleur) il n'y a pas moyen de changer ça ?

    En tout cas bon courage, surtout si tu t'attaque à Regressi
  • Bonjour,

    Pour ce qui est des "isnan" et "isinf", j'inclurai la prochaine fois "math.h" à la place de "cmath", car c'est de là que vient le problème, c'est aussi le cas sur Windows, où j'ai du faire cette opération. Donc sa marche aussi en appelant std, bien donc.

    Sinon, merci pour cette version Mac, j'ai quelques questions à son propos:
    - Le logo y est-il intégré ?
    - Les ".dylib" y sont-ils bien ?
    Voilà c'est, mais j'ai l'impression que c'est fait, mieux vaut demander.

    Vous trouvez le logo assez désagréable, eh bien c'est la première fois que je lis cela :| Je ne vais pas le changer pour l'instant, peut être c'est le faites qu'il ressemble à ceux d'Adobe qui vous dérange ? En avez vous un en tête, dans ce cas je le changerai peut être, il y a plus de chances que non, mais bon. Moi il me plaît bien à vrai dire, qu'en pensez vous, les autres ?
  • Salut,

    pour répondre à tes questions, le logo est bien intégré. Pour ce qui est des .dylib, c'est la première fois que j'en entends parler sous mac (ça un rapport avec les .dll sous Window ?), mais j'ai utilisé une commande qt pour créer le paquet donc j'imagine qu'elle le fait correctement. Voilà la commande

    macdeployqt nom_du_fichier.app -dmg
    Sinon pour ce qui est du logo, je vais nuancer : il n'est pas désagréable. Il est simple, lisible, mais juste cette couleur me chagrine un peu.

    PS : le lien vers m'a dropbox est juste pour que tu puisses récupérer le paquet pour le mettre sur ton site, après quoi je le supprimerai.
  • Bien merci beaucoup !

    J'ai bien aimé la couleur quant à moi, les goût et les couleurs... Bon passons, donc je vais mettre ton paquet sur le site puis on verra les retours, enfin s'il y en a, car il y en que très rarement.
    Les utilisateurs généralement ne se cassent par trop les pieds, ça marche pas, on passe à autre chose, surtout face à du nouveau. ^_^

    Bon donc, je déclares la version Mac en ligne !
  • March 2013 modifié
    maloubobola said:

    Pour ce qui est des .dylib, c'est la première fois que j'en entends parler sous mac (ça un rapport avec les .dll sous Window ?)
    Oui c'est en gros l'équivalent sous la pomme :)

    EDIT : je suis en train de tester la version mac, et rien a dire, continue comme ça :D
    Je vais surement jeter un oeil au code source, j'apprendrais surement pas mal de choses :)
  • AKSAKS
    March 2013 modifié
    Bien, on dirait que macdeployqt a fait tout le nécéssaire, puisque elle fonctionne bien chez toi, GiveMeMyName.
    Quand tu jetteras un coup d'oeil au code source, n'hésites pas à me demander qui fait quoi.

    C'est vrai, il manque à ZeGrapher maintenant un petit manuel d'utilisation, et une documentation du code source. Pour cette dernière, vu que je travaille toujours seul, le besoin pour la continuation du développement est moindre, mais pour les personnes qui veulent l'étudier, oui. Mais comme le dit si bien la GPL, le code source ne vient avec aucune obligation de ma part, j'aime bien cet esprit ^_^
  • Il est bon de rappeler l'existence de MacDeployQt pour ceux qui se lance dans Qt sur Mac ;)
  • J'ai enfin mis le lien vers ton site en bas de page, désolé pour le temps que cela a pris...
  • Ah super !!! :cool:

    Merci! :D
  • AKSAKS
    May 2013 modifié
    Bonjour ! Cela fait assez longtemps que je ne n'ai pas posté l'état d'avancement de la version en cours, donc me voici !

    Comme je l'ai évoqué plus haut, je suis en train de travailler sur un module de représentation de données, une sorte de Regressi-like pour ceux qui le connaissent, et ça a pas mal avancé depuis:

    - Un onglet "Données" a été ajouté à la fenêtre "Tracer" où il y a des onglets pour les fonctions, droites, suites et équations paramétriques. On pourra donc cliquer sur "ajouter" pour ajouter un widget données, on pourra alors choisir sur ce même widget les personnalisations graphiques:

    image

    Petite, ou pour moi grande innovation dans cette version, quelque chose que je n'ai vu nul part ailleurs, ce que j'ai nommé "sélecteurs", ce sont les sortes de "pins" au dessus des colonnes dans l'image en dessous, on peut les déplacer à la souris pour choisir quelle colonne fera office des abscisse, et l'autres de ordonnées, ou bien l'angle et la distance si on est en coordonnées polaires. Une fois déplacées et lâchées, elle est automatiquement animée pour se mettre au centre de la colonne où elle a été lâchée, ou bien une permutation s'effectue si on la lâche au dessus de l'autre "sélecteur du même type.

    image

    Le "sélecteur" bleu est une sorte de sélecteur universel, on peut le mettre sur les colonnes, entre les colonnes, sur les lignes (à gauche des lignes dans le petit espace vide, il suffit de cliquer dessus pour que ça apparaît) et entre les lignes. Le GroupBox, dans l'image il porte le titre "actions sur la colonne" s'adapte en fonction de la position du "sélecteur" bleu. Et propose diverses actions:

    - Quand il est entre deux colonnes/lignes, il ne proposera que l'action "insérer" pour insérer une ligne/colonne.
    - Quand il est sur une ligne, il ne proposera que "supprimer"
    - Quand il est sur une colonne, et c'est là que ça devient intéressant: il propose ce que vous lisez sur l'image, pour l'instant, si vous avez des propositions, feel free to suggest !

    Remplir:

    image

    Deux types de "remplissage" sont proposées:

    - à partir d'une expression, c'est la plus intéressante ! On vous propose x' en fonction de x, ou x' représente la nouvelle valeur de la cellule à calcule et à y mettre, et x l'ancienne valeur de la cellule. On pourra alors utiliser les noms des autres colonnes comme variables dans l'expression, par exemple: si on met " x' = Volume * x " ça multipliera chaque valeur de la cellule de la colonne "avancement" par la valeur dans la même ligne dans la colonne "Volume". On pourra aussi utiliser les fonctions et suites déclarées dans les autres onglets, tout sera interconnecté !

    Le problème de ce remplissage est qu'il faut qu'il y ait déjà des valeurs dans les cellules, c'est là où intervient le deuxième type de remplissage:

    - à partir d'une valeur de départ, d'un pas et d'une arrivée, et ça remplira la colonne case par case avec ces paramètres là. On peut bien sûr combiner les deux remplissages. Par exemple: On veut remplir une colonne avec les 10 premiers termes de la suite u, donc on remplit d'abord la colonne avec des entiers de 1 à 10 avec le deuxième remplissage, puis on applique un second remplissage avec une expression, qui sera " x' = u(x) "

    Trier:

    Tout est dans le titre... Un petit screen pour bien comprendre quelques subtilités:

    image



    Voilà tout pour l'instant pour ce qui est du développement en lui même.
    Pour ceux qui souhaiteraient essayer et/ou voir le dernier code en date, j'ai ajouté un gestionnaire de version git chez sourceforge: " git://git.code.sf.net/p/zegrapher/code zegrapher-code "

    Merci !
  • Après un long moment de silence, justifié bien sûr: les études... Je reviens un petit peu sur ce projet pendant cette période de répit pour se reposer de la précédente guerre et se préparer pour la grande qui arrive (les concours après la prépa xD).

    Bien, quant à ZeGrapher, j'ai codé maintenant tout ce qui est dans la saisie de données:
    - Insertion/supression de colonnes/lignes avec un petit ajout qui était prévu: si on rempli une cellule de la dernière ligne/colonne, une autre sera créée automatiquement
    - tri et remplissage des colonnes: prédéfini et à partir d'une expression.

    Si vous voulez tester, c'est par ici: "git clone git://git.code.sf.net/p/zegrapher/code zegrapher-code"

    Voilà voilà, Merci.
  • AKSAKS
    April 2015 modifié
    Petit à petit, l'oiseau fait son nid...

    Actuellement je suis en train de coder la régression polynomiale des données mais avec deux type d'approximation: approcher les points uniquement sans se soucier de ce qui les sépare, donc c'est une produit scalaire discret qui est utilisé ; et approcher les points reliés par des segments, pour éviter que le polynôme qui approche les points fasse n'importe quoi entre deux points. Le tout sera laissé au choix de l'utilisateur!

    Petite précision mathématique: L'approximation est en "norme 2", c'est à dire le polynôme est choisi telle que la somme des carrés des différences entre les données et la valeur du polynômes en les points des données est minimale. Ainsi un produit scalaire peut être utilisé. Contrairement à la "norme 1", je dois faire quelques recherches dessus pour pouvoir l'implémenter.

    Sinon quoi, ah oui! la barre d'outils a été positionné à gauche de la fenêtre maintenant. et un bouton de repositionnent de la vue vers celle par défaut a été ajouté!

    ça ressemble à ça maintenant, pas de gros changements en fait:

    http://zegrapher.com/ScreenShots/new_zegrapher.png

    (oui j'adore cette courbe! La courbe papillon )
  • AKSAKS
    July 2015 modifié
    Et voilà! Après plus de deux ans, la finalisation de cette version pointe enfin le bout de son nez... :D

    Voici une version "presque" finie! qui veut l'essayer pour m'en donner des nouvelles ?

    (je vous aurais bien donné un lien git, mais sourceforge est en maintenance suite à un crash de leur système interne paraît-il... )

    à plus!
  • Salut

    Il existe des installer pour les différentes plaetformes ?
  • Bonsoir !

    Alertes (je t'en fais grâce) et erreurs dans la compil :
    maingraph.o: In function `MainGraph::drawHoveringConsequence()':
    maingraph.cpp:(.text+0x109e): undefined reference to `GraphDraw::drawOneFunction(int, int, int)'
    collect2: error: ld returned 1 exit status
    Makefile:305: recipe for target 'ZeGrapher' failed
    make: *** [ZeGrapher] Error 1
    00:55:36: The process "/usr/bin/make" exited with code 2.
    Error while building/deploying project ZeGrapher (kit: qt-4.8.7)
    When executing step "Make"
    Linux, Qt 4.8.7
  • Haha oui on dirait que j'ai fait des modifs avant d'uploader le code...

    Le voici! J'ai pris le temps de passer sous Qt5

    Sinon, zeecrowdev, pour l'instant, ce que j'ai donné en lien est tout simplement le code source. Il n'existe pas d'installeur windows, mais il est dans les dépôts Debian et Ubuntu, sinon je fourni des exécutables.
  • Compilation avec 3 avertissements en Qt5
    Lancement OK
    Changements d'écran, saisie et affichage de quelques valeurs OK mais tests fonctionnels très limités à cause des 40 ans écoulés depuis mon bac C ;)

    Rappel : Mageia Linux 5, bureau Xfce, Qt 5.5.0
  • AKSAKS
    July 2015 modifié
    Oui pour la compilation, il y a déjà deux avertissements du style :

    "/Projects/ZeGrapher/Windows/fenetrefonctions.ui:-1: warning: Z-order assignment: '' is not a valid widget."
    Qui est un petit bug de la part de Qt Designer que je trimbale depuis déjà plusieurs versions... C'est quoi le troisième avertissement ?

    Mais sinon pour l'essai, tu as raté le plus rigolo dans la chose: ajoute dès le début une modélisation, et il y aura une courbe qui approchera d'une manière "optimale" les points que tu saisi, au fur et à mesure qu'ils sont saisi. tu peux augmenter le degré du polynôme et la courbe les approchant sera de plus en plus "fidèle". Enfin bref, c'est implémenter ça qui m'a pris quelque dizaines d'heures de réflexion/programmation.

    Sinon, je continue sur les finitions. Ah oui, une question: pour le tableau, j'utilise un QTableWidget, je voudrais avoir quand l'utilisateur appuie sur la touche clavier "supprimer" pour vider les cases du tableau sélectionnées. Et aussi quand il appuie sur "Entrer" quand il saisi une valeur pour que le logiciel lui mette le curseur automatiquement sur la cellule en dessous... Mais je ne trouve rien de tout ça... Paraît-il, selon ma compréhension de la documentation, qu'il faut que je réimplémente QTableView pour le faire, c'est vrai ?

    PS: Je viens de remarquer qu'on peut mettre des QLineEdit dans les cellules, je peux alors détourner les returnPressed() déjà. Mais bon... Trop de travail pour peu de gain.
  • kide65 said:
    Au vu de celle-ci, moi aussi ;)
  • C'est quoi le troisième avertissement ?
    Il me pointe la ligne de définition de 'item' dans datatable.cpp
    bool DataTable::fillColumnFromExpr(int col, QString expr)
    {
    // .(...)
    QTableWidgetItem *item;
    et me dit
    /opt/qt-5.5.0/5.5/gcc_64/include/QtWidgets/qtablewidget.h:356: warning: 'item' may be used uninitialized in this function [-Wmaybe-uninitialized]
    { return (view ? view->column(this) : -1); }
    ^
    en pointant sur un en-tête de Qt : qtablewidget.h
    Désolé je n'ai pas le temps de regarder le code.
  • AKSAKS
    July 2015 modifié
    C'est amplement suffisant! Merci. Je vais voir ça si ce qu'il dit est possible :)

    PS: non c'est bon ça ne doit pas être possible, mais je vais modifier le code pour que cet avertissement n'apparaisse plus.
  • Je viens de remarquer la "rubrique" twitter en haut, et que tu as fait un petit tweet sur ZeGrapher dergen, merci, ça fait toujours plaisir :)
  • Vraiment impressionné ! Tres bonne app !
    Si pour une prochaine version, tu pouvais faire le meme design que speedcrunch... Voir t'intégrer à leurs projects !
    http://speedcrunch.org/
  • kide65 said:
    Je viens de remarquer la "rubrique" twitter en haut, et que tu as fait un petit tweet sur ZeGrapher dergen, merci, ça fait toujours plaisir :)

    Arf, pour les tweets, il faut remercier zeecrowddev qui fait un très bon job en assurant son évolution...
  • Ah! Eh bien merci zeecrowddev :D
  • Sourceforge a rétabli son site, vous pouvez obtenir le code le plus récent par git:

    git clone git://git.code.sf.net/p/zegrapher/code ZeGrapher
    Le travail sur cette version 3 avance à grands pas !
  • Salut!

    Je viens de modifier un peu mon code pour qu'il soit compilable sous Windows, avec une cross-compilation en en mode "release" j'obtiens un executable d'une taille 52.7 Mo... J'ai vu que "ANGLE" y est inclus, qui inclut lui même des modules d'OpenGL, c'est à cause de ça vous croyez ? Quelqu'un sous Windows pourrait-il avoir l'amabilité de le compiler et me dire quelle taille ça donne pour lui en mode "Release" ? (le code peut être cloné par git, post du dessus!)
  • Bonsoir,

    Je ne peux pas t'aider pour windows mais je tenais à te remercier pour ton logiciel.
    Je ne sais pas si la dernière fois que je l'ai testé, il y avait déjà la régression polynomiale mais ça marche bien. J'étais justement en train de chercher un code GPL là dessus et au moment de la compilation, je vois un "polynomialregression.cpp" passer, le bonheur ! J'aurais quelques suggestions/envies :
    - Proposer le widget d'affichage de courbes en tant que QWidget que l'on puisse utiliser dans d'autres applications avec tous les avantages de ZeGrapher. Je ne peux m'empêcher de faire le parallèle avec qCustomPlot.
    - Donner le choix d'une pondération pour les régressions. J'ai des idées mais je ne suis pas expert dans ce domaine.
    - Proposer d'autres régressions (typiquement gaussienne).

    Je suis prêt à t'aider (même sur tes TODO), plus sur la partie Qt que mathématiques... Dis moi si tu es intéressé.
  • Salut! Je suis toujours ravi d'avoir des retours positifs sur ZeGrapher et de savoir qu'il est utile ! :D
    mika said:

    - Proposer le widget d'affichage de courbes en tant que QWidget que l'on puisse utiliser dans d'autres applications avec tous les avantages de ZeGrapher. Je ne peux m'empêcher de faire le parallèle avec qCustomPlot.
    J'ai déjà entendu parler et vu QCustomPlot puis je l'ai oublié. Pour la représentation de données, QCustomPlot est clairement meilleur dans le nombre de fonctionnalités proposées. Mais c'est vrai que proposer ZeGrapher en mode "embedded" peut être utile, car après avoir regardé très vite dans la doc de QCustomPlot, il ne propose pas de tracé de fonctions à travers leur expressions. Mais bon, je ne vois pas vraiment en cela peut servir à part tracer des fonctions, du coup pourquoi pas utiliser ZeGrapher directement, quoique... Quoi qu'il en soit, je n'ai jamais structuré le code de ZeGrapher dans ce sens. Quoique le graphe est représenté par un widget qui dérive de QWidget, et il est effectivement assez aisé de l'intégrer dans d'autres projets, c'est exactement pour ça qu'il est en open-source, mais le coté pré-mâché n'est pas là :lol:
    mika said:

    Je ne sais pas si la dernière fois que je l'ai testé, il y avait déjà la régression polynomiale mais ça marche bien.
    La regression polynomiale n'existe pas dans la version actuellement disponible en téléchargement, c'est sur ça que je travaille depuis plus de deux ans...
    mika said:

    - Proposer d'autres régressions (typiquement gaussienne).
    Eh bien dans l'état actuel de mes connaissances mathématiques, je ne peux proposer que des régressions "linéaires", c'est à dire ici: je ne peux trouver que les " meilleurs* " coefficients dans une régression sous forme d'une somme de fonctions, je développe par un exemple:

    reg(x) = A1 * f(x) + ... + A5 * h(x)
    là je peux déterminer les coefficients A1,..., A5, ok!

    reg(x) = A1 * exp( A2 * x² )
    par contre ici, on veut déterminer un coefficient A2 qui est à l'intérieur d'une fonction non linéaire, ici l'exponentielle. Je ne sais pas faire... Enfin j'ai une idée d'algorithme si on donne un intervalle où A2 et A1 se trouvent. Je compte coder ça de toute façon dans des version ultérieures, quand mes connaissances mathématiques et temps seront plus amples.
    NOTE: dans ce dernier exemple, on peut se ramener à une régression linéaire en lui appliquant " ln " : " ln( reg(x) ) = ln(A1) + A2 * x² " et ici ça devient linéaire! (il faut que A1 > 0 ... )
    mika said:

    - Donner le choix d'une pondération pour les régressions. J'ai des idées mais je ne suis pas expert dans ce domaine.
    C'est ici que je dois te définir " meilleur* " Je l'ai déjà fait dans un post antérieur mais bon... Meilleur ici veut dire que la sommé des carrés des différences entre la régression et les données est minimale:
    si je nomme "(xi, yi)" les données (i étant un index), f la régression, alors on aura la regression f telle que " somme sur i des ( yi - f(xi) )² " est minimale, ça c'est quand on choisit la régression "proche des points". Pour ce qui est de la régression "proche des segments" c'est à dire des points (xi, yi) reliés par des segments, alors on aura alors la régression f telle que " l'intégrale dans l'intervalle des données de ( y(x) - f(x) )² dx " est minimale, y(x) étant la fonction affine par morceaux constituée des points reliés par des segments. Voilà
    Bon tout ça est lié à la définition d'une norme, ce que tu as nommé "pondération" dans le sens où on l'on veut définir "meilleure" régression.
    mika said:

    Je suis prêt à t'aider (même sur tes TODO), plus sur la partie Qt que mathématiques... Dis moi si tu es intéressé.
    J'ai toujours eu envie de travailler en équipe sur un projet informatique. Sauf que je n'ai aucune expérience là-dessus... Je ne sais pas comment on gère la chose dans Git, comment se répartir les tâches, décider des tâches. Tu ne serais pas graphiste par hasard ? J'aimerais rendre ZeGrapher plus attrayant visuellement... :lol: . Dis moi ce que tu as a proposer et on en discutera!
    Sinon, le rythme de sorti est de... Je ne sais pas, sauf que la dernière version que j'ai sorti date d'il y a deux ans, depuis je travaille encore sur la nouvelle version... Bon j'adore peaufiner et rien ne me presse, et aussi j'ai la fâcheuse manie de restructurer de fond en comble le code pour en faire un plus élégant à mon goût, enfin bref.

    Voilà!
  • J'ai pas vu passer ta prompte réponse, je pouvais toujours attendre...
    kide65 said:

    il est effectivement assez aisé de l'intégrer dans d'autres projets, c'est exactement pour ça qu'il est en open-source, mais le coté pré-mâché n'est pas là
    Oui, le but est vraiment de pouvoir l'intégrer dans d'autres projets open source. Je faisais le parallèle avec qCustomPlot, non pour les fonctionnalités mais vraiment sur le fait qu'on peut l'intégrer dans n'importe quelle application.

    Pour les calculs de régression gaussienne, je vois bien que ce n'est pas facile, je vais essayer de me documenter (je ne pourrai pas le faire avant septembre).
    Pour la pondération, je pensais aussi au calcul des carrés minimum (je ne connaissais pas l'autre méthode, merci pour l'info). Le truc, c'est que pour faire de la prédiction, le "début" de la courbe peut avoir plus d'importance que la "fin" par exemple. La pondération consisterait à multiplier chaque point par un facteur, décroissant si le début a plus d'importance, pour prendre en compte le sens physique d'une courbe. Après, ce n'est pas une priorité pour moi mais en discutant avec des personnes du métier, ça a l'air important.
    kide65 said:

    Tu ne serais pas graphiste par hasard ?
    Si, je suis tellement bon qu'ils n'ont pas voulu de mes propositions pour la mascotte de libcaca. Je ne vois pas de problème de graphisme dans ton application. Au pire, j'en verrais au niveau de l’ergonomie, j'utilise un gestionnaire de fenêtre "tilling" (i3) et toutes les fenêtres de ZeGrapher arrivent en plein écran. Ma préférence (qui n'est évidemment pas partagée par tout le monde) va vers la possibilité de tout avoir dans la même fenêtre en utilisant des onglets par exemple pour cacher les informations inutiles. Une possibilité est de laisser le choix entre fenêtres flottantes et fenêtres intégrées comme dans Amarok par exemple. je peux m'occuper de ça mais il y a sûrement d'autres priorités.

    J'ai un peu d'expérience en travail collaboratif pour la répartition des tâches mais avec Git, ça va être funky de régler les conflits, ça fera une bonne expérience...

    On peut commencer à partager le code, on verra bien ce que je peux apporter. Je suis un peu parano, je pense que tu me fais autant confiance que je te fais confiance mais à ta place, je ferais un autre dépôt Git dans lequel nos deux clés publiques sont acceptées. Je peux m'occuper de la création du dépôt si tu veux.

    À bientôt
Connectez-vous ou Inscrivez-vous pour répondre.