Journal METAPOST 1.0 est sorti

Posté par  .
Étiquettes :
0
14
juin
2007
La chose m'avait échappé, mais oui: METAPOST 1.0 est sorti.
http://tug.org/pipermail/metapost/2007-April/000902.html

On peut le télécharger là:
https://foundry.supelec.fr/projects/metapost/

Mais le site de supelec est en carafe, il donne pas les fichiers. Encore un coup des grandes écoles parisiennes.

Et si on attend qu'il arrive, mettons, dans debian (au hasard):
- il va devoir d'abord arriver dans texlive. en 2008 puisque texlive c'est une fois par an.
- ensuite il va falloir que texlive 2008 arrive dans sid puis testing.
- ensuite il faudra attendre que debian sorte une nouvelle version. Donc fin 2008 au mieux.

Je crois que vais plutôt essayer de me le compiler moi-même.

METAPOST, c'est un langage pour faire de jolis dessins.
http://fr.wikipedia.org/wiki/Metapost

http://melusine.eu.org/syracuse/metapost/galeries/

Animations avec les swftools:
http://melusine.eu.org/syracuse/metapost/animations/

Plein d'exemples avec LaTex:
http://melusine.eu.org/lab/cp

Sinon on peut utiliser Texmaker pour mixer des images Metapost avec Latex (si on aime pas la ligne de commande).
http://www.xm1math.net/texmaker/index_fr.html
  • # whoa pour une nouvelle

    Posté par  (site web personnel) . Évalué à 2.

    Bon, le changelog ne dit pas si les messages d'erreur sont devenus compréhensibles (ou simplement aident pour la trouver et la corriger). Mais c'est intéressant.
    Et cette version est disponible dans les autres distributions de latex (tetex est peut-être figée, mais il doit bien y en avoir d'autres) ?

    Sinon, je ne comprends pas trop la référence à texmaker et la ligne de commande. J'ai configuré mon éditeur pour que quand je clique ou tape la commande qui dit "vas-y, compile moi ça", il lance rubber sur le .tex. (cela dit, j'aime la ligne de commande)
    • [^] # Re: whoa pour une nouvelle

      Posté par  . Évalué à 2.

      J'ai configuré mon éditeur pour que quand je clique ou tape la commande qui dit "vas-y, compile moi ça", il lance rubber sur le .tex. (cela dit, j'aime la ligne de commande)
      emacs ?

      texmaker est une interface avec un menu qui lance la compilation. Pour un débutant c'est assez simple, ça évite de se coleter avec la ligne de commande.

      Je ne connaissais pas rubber, j'ai l'habitude de compiler directement en ligne de commande à la main. Voici un journal qui en parle pour ceux qui sont comme moi:
      http://linuxfr.org/~vdanjean/21244.html

      Et cette version est disponible dans les autres distributions de latex (tetex est peut-être figée, mais il doit bien y en avoir d'autres) ?
      MetaPost est inclus dans TexLive (tetex semble abandonné). Donc on devrait avoir cette version dans le prochain texlive, qui est packagé dans debian. Pour windows ProTeXt le contient aussi. je pense que la plupart des distributions le proposent, mais je n'ai pas vérifié.
      • [^] # Re: whoa pour une nouvelle

        Posté par  (site web personnel) . Évalué à 2.

        > emacs ?

        Non, vim. (et "vas-y, compile-moi ça" se dit :make, il y a aussi un bouton dans gvim)

        > MetaPost est inclus dans TexLive (tetex semble abandonné). Donc on devrait avoir cette version dans le prochain texlive, qui est packagé dans debian.

        Oui, tu l'avais écrit dans le journal, d'où le "autre".
        Pour windows, je connais miktex, qui bien sur contient metapost, mais j'ignore quelle version. Et il y a bien longtemps, j'avais eu un cd d'AsTeX, mais ça ne doit plus exister.

        Enfin voilà. Et en attendant metapost1 que ça arrive dans mon gestionnaire de paquets, va falloir s'accrocher (il n'y a pas encore texlive, alors...)
        • [^] # Re: whoa pour une nouvelle

          Posté par  . Évalué à 2.

          Enfin voilà. Et en attendant metapost1 que ça arrive dans mon gestionnaire de paquets, va falloir s'accrocher (il n'y a pas encore texlive, alors...)

          Si c'est gentoo, tu peux changer direct de distro, y'a plus de mainteneur pour tex donc la transition sur texlive risque de prendre *beaucoup* de temps (à moins qu'un nouveau dev se propose ce qui est très peu probable).

          A mon avis c'est plus probable que gentoo split/fork/meurt plutot que texlive soit disponible :) (d'ailleurs gentoo-dev est assez "fun" en ce moment)
          • [^] # Re: whoa pour une nouvelle

            Posté par  (site web personnel) . Évalué à 2.

            En même temps, vu comme l'ancien mainteneur était compétent, c'est pas forcément un mal. :)

            -->[]
          • [^] # Re: whoa pour une nouvelle

            Posté par  . Évalué à 2.

            Oups, oups, je suis pas au courant. Je ne reçois plus de newsletter Gentoo depuis plusieurs semaines maintenant mais je ne pensais pas qu'il y avait des problèmes internes.
            Que se passe-t-il ? Qu'est ce qui se dit sur gentoo-dev ?
            Je suis sur Gentoo depuis presque 5 ans et je n'ai absolument pas envie que la distrib meurt !
            • [^] # Re: whoa pour une nouvelle

              Posté par  . Évalué à 4.

              Il faudrait que quelqu'un qui a bien suivi fasse une depeche, ou tout au moins un journal.
              Entre le retour suivi du départ de drobbins, la sale ambiance, le nombre importants de dev qui partent (parmi eux des devs qui bossaient vraiment beaucoup pour la distro).
              Ensuite le désastre du Code of Conduct et la police (avec des bans de la mailing list).

              Mais bon je n'ai suivi que de très loin, j'ai aussi été sur gentoo quelques années, mais l'ambiance n'est pas au top depuis un certain temps (j'ai l'impression depuis le départ de drobbins en fait, mais je peu me tromper j'avais pas assez de recul à l'époque).
        • [^] # Re: whoa pour une nouvelle

          Posté par  . Évalué à 2.

          tetex c'est fini:
          http://www.mail-archive.com/ctan-ann@dante.de/msg01091.html
          texlive est dans etch.
          Il y a quoi d'autre dans les distributions linux, à part ces deux là?

          Pour Windows, j'ai cité ProTeXt, qui en fait utilise MikTex. MikTex 2.6 est sorti juste en meme temps que metapost 1.0, je ne pense pas qu'il soit dedans. Il faudra attendre la 2.7.
          http://miktex.org/2.6/Default.aspx
  • # Et par rapport à pgf/Tikz et autres ?

    Posté par  . Évalué à 1.

    Je me posais une question : quels sont les avantages et inconvénients de metapost par rapport à pgf/tikz ou pstricks ?

    J'aimerais bien me mettre à un de ces langages...

    M.
    • [^] # Re: Et par rapport à pgf/Tikz et autres ?

      Posté par  (site web personnel) . Évalué à 2.

      L'avantage, c'est que c'est cohérent avec TeX. Normal, metapost est juste une extension de metafont pour faire des dessins autres que juste des polices de caractère, et metafont a été inventé par Donald en même temps que TeX.

      L'inconvénient, c'est que c'est cohérent avec TeX, que la syntaxe en est encore plus horrible, que c'est un bordel incompréhensible et que la doc est très rare et franchement pas claire.

      Sinon, c'est beaucoup plus puissant que pstricks, mais je crois que ça vaut pgf/tikz (que je ne connais pas bien). Et il y a aussi asymptote qui se veut un metapost avec une syntaxe proche du C++.
    • [^] # Re: Et par rapport à pgf/Tikz et autres ?

      Posté par  . Évalué à 3.

      Ce que j'aime bien dans METAPOST, c'est sa capacité à résoudre des équations, et son extensibilité par des macros.

      Voir par exemple la doc des macros de géométrie de Christophe Poulain:
      http://melusine.eu.org/syracuse/texpng/cprl/christophe/docs/(...)

      Ici un exemple d'utilisation pour un dessin «à main levée» d'un cercle et ses deux tangentes passant par un point M.
      http://ticeblog.ycombe.net/index.php/2007/06/07/91-faire-des(...)

      Ici un document détaillant les différences entre METAPOST et les logiciels de dessin classique.
      http://www.loria.fr/~roegel/TeX/41-roegel.pdf
      • [^] # Re: Et par rapport à pgf/Tikz et autres ?

        Posté par  . Évalué à 3.

        Plus précisément, Metapost embarque un solveur d'équation linéaire. Ça permet de faire ça [1] sans faire trop de calcul.

        Dans l'exemple que je donne, je dessine plein de pentagone ayant des côté en commun. J'ai donc les points z0 et z1 qui sont définit et j'aimerai calculer les points
        z2, z3, z4 qui me finissent mon pentagone. Pour cela, il suffit d'écrire

        z2-z1=(z0-z1) rotated 108;
        z3-z2=(z1-z2) rotated 108;
        z4-z3=(z2-z3) rotated 108;

        et paf, les points z2, z3 et z4 sont calculés.

        Si on veut une application affine qui transforme z1 et z2, z3 en z4 et z5 en z6, on écrit

        transform T;
        z1 transformed T=z2;
        z3 transformed T=z4;
        z5 transformed T=z6;

        et après, on peut appliquer la transformation T à n'importe quoi.

        [1] http://frederic.mazoit.free.fr/LaTeX_metapost/calendrier/
      • [^] # Re: Et par rapport à pgf/Tikz et autres ?

        Posté par  . Évalué à 1.


        Ce que j'aime bien dans METAPOST, c'est sa capacité à résoudre des équations.

        Vu les équations que Metapost est capable de résoudre, c'est vraiment une fonctionnalité anodine.


        et son extensibilité par des macros.

        Tous les langages mentionnés dans ce journal sont capable de ça.
        Metapost est un langage obsolète qui ne permet même pas de passer facilement des paramètres optionnels.
        • [^] # Re: Et par rapport à pgf/Tikz et autres ?

          Posté par  . Évalué à 2.

          > Vu les équations que Metapost est capable de résoudre,
          > c'est vraiment une fonctionnalité anodine.

          C'est peut-être une fonctionnalité anodine mais c'est la seule raison pour laquelle je ne suis pas encore passé à asymptote.

          Comme toujours, à partir du moment où on travaille avec un langage Turing puissant, on peut faire la même chose. Oui mais l'expressivité, c'est quelque chose d'essentiel.
          • [^] # Re: Et par rapport à pgf/Tikz et autres ?

            Posté par  . Évalué à 1.

            C'est peut-être une fonctionnalité anodine mais c'est la seule raison pour laquelle je ne suis pas encore passé à asymptote.

            Ben c'est bien dommage de se priver de la puissance d'Asymptote pour ça.
            Dans la pratique cette fonctionnalité sert essentiellement à trouver le point d'intersection de deux droites; Asymptote utilise pour cela la routine "extension(pair P, pair Q, pair p, pair q)".
            Comme mentionné à cette page http://asymptote.sourceforge.net/FAQ/section8.html#whatever s'il y a beaucoup de personnes à demander cette fonctionnalité elle pourra être implémentée.
            Tu peux aussi la coder toi même en utilisant le solveur matriciel et la proposer à l'équipe des développeurs.

            Par curiosité, comment définit-on en Metapost la transformation "projection sur une droite parallèlement à une deuxième" ?
            Une fois qu'elle est définie peut-on l'appliquer à tout les objets où faut-il coder un routine spécialisée pour chacun ?
            • [^] # Re: Et par rapport à pgf/Tikz et autres ?

              Posté par  . Évalué à 2.

              Je ne suis pas prof de math et je ne dessine donc pas de mediatrice...

              Dans la pratique, je l'utilise surtout quand j'ai dessiné un bout de schéma que je stock dans une "picture" et que je veux placer ce schéma dans un dessin plus gros.

              J'utilise ce genre de chose aussi quand je veux placer des boites les unes par rapport aux autres. Par exemple,

              A.c=(0,0);

              xpart(A.c-B.c)=0;
              ypart(D.c-C.c)=0;
              xpart(C.c)=xpart(.5[A.c,B.c]);
              ypart(D.c-C.c)=ypart(C.c-A.c);;
              ypart(A.c-D.c)=3xpart(B.c-A.c)=15cm;

              drawboxed(A,B,C,D);
    • [^] # Re: Et par rapport à pgf/Tikz et autres ?

      Posté par  (site web personnel) . Évalué à 1.

      Ils ont tous des avantages inconvénients. Je me suis mis récemment à pgf/tikz et je pense y rester.

      Metapost et pstriks sont plus puissant. Metapost à un solveur d'équations. Pstriks offre presque tout ce que peut faire postscript (donc ton imprimante). Pgf est pcp plus portable. Pgf permet de tracer facilement, joliment, de manière intégrer avec ton latex grâce à gnuplot (j'adore !). Metapost permet de faire des animations je crois. Je crois que pour faire de l'inline on ne peut utilser que pgf ou pstriks.

      Pour finir asymptote est le plus puissant de tous parce qu'il a été conçu ainsi. C'est un véritable langage de programmation pour le graphisme avec les structure conditionnelle etc. On peut faire des animations, des animations, tracer des courbes hyper facilement. Il généère un eps donc n'est pas lié à LaTeX comme pgf. J'ai trouvé qu'il n'avait que des qualités mais pour faire de l'inline il n'est pas pratique donc je trouve l'intégration moins facile (avec le reste du latex).

      Donc pour la plupart de mes figure j'utilise pgf qui est vraiment bien. Pour les figures indépendant ou très compliqué je me garde asymptote sous le code. Pstriks est trop brute et pas portable (pas de pdflatex). Metapost m'est presque inconnu.
      • [^] # Re: Et par rapport à pgf/Tikz et autres ?

        Posté par  . Évalué à 2.

        Pour finir asymptote est le plus puissant de tous parce qu'il a été conçu ainsi. C'est un véritable langage de programmation pour le graphisme avec les structure conditionnelle etc. On peut faire des animations, des animations, tracer des courbes hyper facilement. Il généère un eps donc n'est pas lié à LaTeX comme pgf. J'ai trouvé qu'il n'avait que des qualités mais pour faire de l'inline il n'est pas pratique donc je trouve l'intégration moins facile (avec le reste du latex).

        ça s'applique déjà à METAPOST, tout ça. Asymptote gère en plus la 3D et les nomres flottants.
        • [^] # Re: Et par rapport à pgf/Tikz et autres ?

          Posté par  . Évalué à 1.

          ça s'applique déjà à METAPOST, tout ça.

          Non, Metapost est un langage de programmation pauvre et dépassé:
          * la précision des calculs est de l'ordre de 1e-4;
          * pas de paramètres optionnels;
          * pas de notion de signature de routines;
          * pas de notion d'objet (pour un logiciel de création graphique c'est vraiment dommage).

          Asymptote gère en plus la 3D et les nomBres flottants.

          C'est déjà énorme mais il fait aussi beaucoup d'autres choses:

          * équations matricielles;
          * équations polynomiales du 2eme, 3eme et bientôt 4eme degré;
          * différents types d'interpolations;
          * etc...

          Le reproche que l'on peut faire à Asymptote est sa jeunesse.
          Beaucoup de modules ont été écrit pour Metapost alors qu'en Asymptote beaucoup reste encore à faire.
          En tout cas Asymptote a plus de potentiel que le mourant Metapost.
          • [^] # Re: Et par rapport à pgf/Tikz et autres ?

            Posté par  . Évalué à 3.

            Allez je marche dedans.

            la précision des calculs est de l'ordre de 1e-4;
            Super. Heureusement que c'est pour faire du dessin et pas prédire la météo.

            pas de paramètres optionnels;
            Mince alors, il faudra le dire à Christophe Poulain. Dans ses macros il y en a ou les paramètres sont vachement variables. Cercles peut predre deux, points, un points une distance...

            pas de notion de signature de routines;
            J'ai l'air bête si je te dis que ke ne sais pas ce que tu veux dire par là?

            pas de notion d'objet (pour un logiciel de création graphique c'est vraiment dommage).
            Génial. J'aurait pas osé. Pourquoi tu ne lui reproche pas de ne pas être un langage fonctionnel en plus?

            Asymptote fait aussi beaucoup d'autres choses.
            Tiens tu devrais mettre à jour sa page sur wikipedia. Je me suis un peu basé dessus pour la différence entre les deux.

            Mais le gros reproche qu'on peut faire à Asymptote, tu l'as un peu oublié: adopter une syntaxe proche de l'imbittable c++, c'est quand même une faute de gout impardonnable.
            • [^] # Re: Et par rapport à pgf/Tikz et autres ?

              Posté par  . Évalué à 1.

              la précision des calculs est de l'ordre de 1e-4;

              Super. Heureusement que c'est pour faire du dessin et pas prédire la météo.

              Si tu connaissais un temps soit peu les calculs nécessaire pour faire du graphisme de qualité tu ne dirais pas ça.
              Essaye de faire une routine en Metapost qui place un point sur une ellipse d'après son abscisse curviligne, tu comprendras pourquoi 1e-4 de précision est insuffisant.


              pas de paramètres optionnels;

              Mince alors, il faudra le dire à Christophe Poulain.


              Sais-tu au moins comment on code des paramètres optionnels en Metapost ?
              Il faut écrire un truc du genre: vardef cercles(text t)=...
              et il faut se farcir un scan du texte pour en extraire tous les éléments.
              Encore plus loufoque, des paramètres optionnels avec des valeurs par défaut:
              http://melusine.eu.org/syracuse/metapost/vrac/ivaldi/options(...)
              Tu appels ça un langage de programmation puissant ? Moi non.


              pas de notion d'objet (pour un logiciel de création graphique c'est vraiment dommage).

              Pourquoi tu ne lui reproche pas de ne pas être un langage fonctionnel en plus?


              Simplement parce qu'un composant graphique se décrit et se manipule plus facilement dans un langage objet que dans un langage fonctionnel.
              En Metapost les seules choses que tu puisses manipuler sont les points, les chemins, les couleur, et un peu les transformations; à l'époque c'était bien joli mais maintenant on est capable de faire légèrement mieux.

              Tiens tu devrais mettre à jour sa page sur wikipedia.

              Il n'y a pas que Wikipedia sur la toile: [pub]http://piprim.tuxfamily.org/[/pub]


              Mais le gros reproche qu'on peut faire à Asymptote, tu l'as un peu oublié: adopter une syntaxe proche de l'imbittable c++, c'est quand même une faute de gout impardonnable.


              C'est un point de vue totalement subjectif que je ne partage pas.
              Le débogage en Metapost c'est une horreur et je qualifierais la syntaxe de molle.
              J'ai pas mal codé en Metapost et en Asymptote.
              Avec Metapost on passe son temps à chercher comment on va contourné les limitations, avec Asymptote, une fois les structures bien définies, le code coule de source.

              Tiens j'ai oublié une autre limitation de Metapost: pas la possibilité de faire de la transparence.
              Qu'on ne dise pas « il y a les routines d'Anthony Phan », l'auteur affirme lui-même que ce n'est pas robuste.
              Bref, si l'on veut débuter dans un langage de graphisme pour LaTeX il ne faut pas choisir Metapost car il n'a pas d'avenir.
              • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                Posté par  . Évalué à 2.

                Essaye de faire une routine en Metapost qui place un point sur une ellipse d'après son abscisse curviligne, tu comprendras pourquoi 1e-4 de précision est insuffisant.

                J'ai fait ça plusieurs fois, et je ne vois pas où est le problème au niveau de la précision.
                • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                  Posté par  . Évalué à 2.

                  Le problème est qu'il faut utiliser un algorithme pour calculer les valeurs approchées d'une intégrale elliptique puis utiliser une méthode type dichotomie pour trouvé les coordonnées polaires du point relativement à un foyer de l'ellipse et un de ses axes.
                  L'algorithme pour l'intégrale elliptique est très sensible aux erreurs d'arrondi, ajoute à cela l'approximation de la dichotomie et enfin la conversion polaire -> rectangulaire; le point a de bonne chance de se trouver en dehors de l'ellipse.
                  • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                    Posté par  . Évalué à 3.

                    Pour ce genre de choses, je ne vois pas pourquoi tu n'approximes pas ton ellipse pas des segments de droites. Avec le truc super basique ci dessous, j'obtiens 3.14142 comme approximation de pi, ce qui n'est pas trop mal. En faisant un truc plus évolué avec un pas adaptatif, on peut très bien obtenir quelque chose de suffisamment précis et de rapide.

                    u=5cm;
                    beginfig(1)
                    path elipse;
                    pair a;

                    elipse=(u,0)..
                    for i=1 upto 99:
                    ((u,0) rotated (3.6*i))..
                    endfor cycle;

                    s=0;
                    l=.01;
                    for i=l step l until length(elipse):
                    a:=(point i of elipse)-(point (i-l) of elipse);
                    s:=s+((xpart a)++(ypart a));
                    draw point i of elipse;
                    endfor;
                    show s/(2u);
                    endfig;
                    end
                    • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                      Posté par  . Évalué à 2.

                      >> Pour ce genre de choses, je ne vois pas pourquoi tu n'approximes pas ton ellipse pas des segments de droites.

                      1. parce que je veux une routine générique qui ne dépende pas du nombre de points de l'ellipse;
                      2. parce que c'est très très long à l'exécution.
                      Avec ton code:
                      time mpost essai.mp donne "real 0m1.692s"

                      >> Avec le truc super basique ci dessous, j'obtiens 3.14142 comme approximation de pi

                      Avec ce code j'obtiens 3.1415926535898:

                      8<------8<------8<------8<------8<------8<------8<------8<------
                      import graph;
                      write(arclength(Circle((0,0),1))/2);
                      8<------8<------8<------8<------8<------8<------8<------8<------

                      et "time asy essai" donne "real 0m0.812s"

                      Pour des ellipses un peu allongées, une bonne précision et un temps de compilation acceptable ton code n'est pas optimum.
                      • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                        Posté par  . Évalué à 3.

                        C'est clair que mon code est lent. Cependant, j'ai écris le code ci-dessus en 5 minutes. Je n'ai pas essayé d'implémenter un algo à pas variable.
                        J'imagine que pour la méthode à coup d'intégrale elliptique, tu utilises un algo d'approximation et pour que le temps de calcul ne soit pas trop long, tu dois utiliser une méthode à pas adaptatif auquel cas, l'algo serait fondamentalement du même type. Pour ce qui est du nombre de points de l'ellipse, length(C) permet de régler le problème.

                        Par ailleurs, je ne prétends pas qu'asymptote, c'est de la merde et que metapost, c'est génial. D'ailleurs, quand on me demande comment je fais les figures, je mentionne metapost mais je conseille asymptote. Si je ne connaissais pas metapost, je commencerais par asymptote. Maintenant, au vu de l'utilisation et la connaissance de metapost que j'ai, asymptote n'apporte pas assez d'avantages pour que je saute le pas. Il manque juste le solveur linéaire dont je me sert beaucoup.

                        Bref.

                        Frédéric

                        P.S. je trouve amusant de me voir "trans-cité" dans un autre forum.
                        • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                          Posté par  . Évalué à 1.

                          Si je ne connaissais pas metapost, je commencerais par asymptote. Maintenant, au vu de l'utilisation et la connaissance de metapost que j'ai, asymptote n'apporte pas assez d'avantages pour que je saute le pas.

                          On a réussi à finir d'accord !
                          Bon week-end.
                      • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                        Posté par  . Évalué à 3.

                        Je sais pas si j'ai bien compris ce que tu cherchais à faire, mais pourquoi tu n'utilises pas le arclength de METAPOST si tu utilises celui d'Asymptote?

                        $ cat ellipse.mp
                        show (arclength(fullcircle xscaled 200));
                        end

                        $ time mpost ellipse.mp
                        (ellipse.mp
                        >> 400.03091 )
                        Transcript written on ellipse.log.

                        real 0m0.086s
                        user 0m0.068s
                        sys 0m0.020s

                        ---------------------------------------------------

                        $ cat ellipse.asy
                        import graph;
                        write(arclength(xscale(100.0)*Circle((0,0),1)));

                        $ time asy ellipse.asy
                        400.109832972265

                        real 0m2.083s
                        user 0m1.936s
                        sys 0m0.108s

                        --------------------------------------------------

                        C'est sûr qu'Asymptote est plus précis, mais ça se paye d'une certaine lenteur. Peut-être due en partie à la digestion de l'import, d'ailleurs.
                        • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                          Posté par  . Évalué à 1.

                          Tout d'abord il a un problème:
                          en Metapost tu prends un cercle défini par 4 noeuds alors qu'avec Asymptote tu en prends un défini par 400 points.
                          Je dois quand même avouer qu'Asymptote est globalement plus lent que Metapost, c'est connu.

                          Ensuite tu a bien cerné le problème, l'utilisation de "arclength" est très gourmande (surtout avec Asymptote) pour un résultat somme toute approximatif.
                          Je développe actuellement le module de géométrie pour Asymptote en définissant les objets "line", "circle", "ellipse" etc..
                          Je travaille sur la définition des objets non sur leur représentation (le path); cela me fait gagner en précision et en rapidité.
                          Ensuite on peut tracer les objets avec autant de points que l'on veux en modifiant une variable globale.
                          Comme normalement on ne trace les objets qu'une seule fois, le temps de compilation reste réduit.

                          Voici ce que j'obtiens avec mon module en développement:
                          8<------8<------8<------8<------8<------8<------8<------8<------
                          import geo_dev;

                          ellipse el=ellipse((0,0),100,1);
                          write(el.e);
                          write(arclength(el));
                          8<------8<------8<------8<------8<------8<------8<------8<------

                          $ time asy essai [1]

                          e=0.999949998749938
                          l=400.109832972265

                          real 0m0.930s
                          user 0m0.840s
                          sys 0m0.010s

                          Attention, le 'arclength' utilisé s'applique ici à l'objet 'ellipse' et appelle des routines qui me sont propres (c'est l'histoire des signature: deux routines peuvent avoir le même nom à condition qu'elles aient des paramètres différents); elles sont basées sur l'approximation d'une intégrale elliptique grâce aux algorithmes trouvés ici: http://www.nrbook.com/b/bookcpdf/c6-11.pdf

                          La valeur de 'e', l'excentricité, est calculée à 1e-18.
                          Avec le logiciel (libre bien sûr) de calcul formel Maxima j'obtiens:

                          (%i1) 4*100*elliptic_ec(0.999949998749938^2);
                          (%o1) 400.1098329722645


                          Voici ce que j'obtiens avec Metapost et 999 points

                          8<------8<------8<------8<------8<------8<------8<------8<------
                          u=1;
                          path ellipse;
                          pair a;
                          N=999;
                          pas=360/(N+1);
                          ellipse=(u,0)..
                          for i=1 upto N:
                          ((u,0) rotated (pas*i))..
                          endfor cycle;

                          ellipse:=ellipse xscaled 100;

                          show(arclength(ellipse));
                          8<------8<------8<------8<------8<------8<------8<------8<------

                          $ time mpost essai.mp

                          >> 400.11249 )
                          Transcript written on essai.log.

                          real 0m0.197s
                          user 0m0.170s
                          sys 0m0.010s

                          soit une erreur de -2.657028e-3, ce qui est très convenable.
                          Cependant avec la précision de calcul d'Asymptote on peut se resservir des résultats dans d'autres calculs sans trop de crainte sur les erreurs d'arrondi.
                          D'ailleurs si Metapost ou même pstricks ont du mal avec la 3D c'est bien à cause des problèmes d'arrondi.

                          Si ça t'intéresse, tu peux voire mon travail de dev ici:
                          http://piprim.tuxfamily.org/asymptote/travaux/
                          On remarquera en particulier la possibilité de travailler dans un repère cartésien quelconque, chaque objet étant lié à son propre repère, le tout de façon complètement transparente pour l'utilisateur.

                          [1] Pour que ces résultat soient comparables voici ce que donne la compilation de ton code chez moi:
                          real 0m0.243s
                          user 0m0.140s
                          sys 0m0.010s
              • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                Posté par  . Évalué à 3.

                Il n'y a pas que Wikipedia sur la toile: [pub]http://piprim.tuxfamily.org/[/pub]
                Tu n'as pas bien compris. Comme je n'utilise pas asymptote, pour comparer les fonctionnalités je me suis naturellement tourné vers wikipedia. Ta page contient des exemples très jolis, mais ne décrit pas les fonctionnalité d'Asymptote comme tu viens de le faire.

                D'ailleurs la page d'asymptote http://asymptote.sourceforge.net/ ne donne guère plus que ce que résume wikipedia. Ce que tu ajoutes n'est clairement affiché nulle part. D'ou ma suggestion de mettre à jour la page de wikipedia.

                Maintenant la plupart des exemples de ta page sont réalisables en METAPOST. METAPOST convient très bien à quelques personnes. Il est toujours maintenu. Pourquoi vouloir leur interdire de l'utiliser? La liberté c'est le choix, aussi.

                D'ailleurs si les mecs qui ont fait Asymptote avaient eu la bonne idée de garder la syntaxe (nettement plus lisible) de METAPOST, on aurait pu avoir une compatibilité de l'un vers l'autre. Au lieu de ça tu te sens obligé de venir agresser les gens qui utilisent METAPOST, parce que tu ne peux pas utiliser leur travail avec Asymptote. C'est un peu idiot, non?

                J'utiliserai surement asymptote le jour ou je voudrai faire des trucs pour lesquels METAPOST suffit pas. J'irai pas pour autant agresser les gens qui utilisent METAPOST pour leur dire de l'abandonner.

                Tu as l'air un peu aigri, c'est parce qu'Asymptote n'a pas le succès qu'il mérite? Fait un article pour DFLP à la prochaine révision majeure, enrichis sa page sur wikipedia, écrit des scripts pour récupérer les fichiers METAPOST dans Asymptote. Mais agresser les utilisateurs de METAPOST comme ça, c'est le meilleur moyen de ne pas leur donner envie d'y venir voir.
                • [^] # Re: Et par rapport à pgf/Tikz et autres ?

                  Posté par  . Évalué à 2.

                  Pourquoi vouloir leur interdire de l'utiliser? La liberté c'est le choix, aussi.

                  Loin de moi l'idée d'interdire quoi que ce soit.
                  Je veux simplement signaler que Metapost est obsolète et j'en expose, peut-être brutalement, les raisons.

                  Tu as l'air un peu aigri, c'est parce qu'Asymptote n'a pas le succès qu'il mérite ?

                  Je ne suis pas aigri mais je m'emporte rapidement, c'est mon tempérament par trop latin; ce qui m'a énervé c'est la fascination que tu sembles avoir pour ce langage qui, s'il est expressif (je le reconnais), n'en ait pas moins très limité.
                  Excuses moi si tu t'es senti agressé, ce n'était vraiment pas mon but.
                  En revanche il est vrai qu'Asymptote n'a pas (pas encore) le succès qu'il mérite.
                  Sans rancunes.
  • # Réparé !

    Posté par  . Évalué à 3.

    Mais le site de supelec est en carafe, il donne pas les fichiers. Encore un coup des grandes écoles parisiennes

    ça y est c'est réparé.
  • # Petit test rapide.

    Posté par  . Évalué à 2.

    La compilation se fait sans soucis. Il m'a fallu bison que je n'avais pas.

    L'installation se fait à la main. Pour pas saloper mon texlive de debian, j'ai mis les exécutables dans ~/bin et le reste dans ~/texmf.

    Il faut regénérer les mem, ce qui serait resté chinois pour moi sans google:
    http://osdir.com/ml/tex.metapost/2007-01/msg00003.html

    Après ça marche.

    Les nouveautés de cette version sont décrites là, en anglais:
    http://www.tug.org/metapost/articles/metapost2006.pdf

    support du cmyk, des greyscales, template pour générer les fichiers, prologues pour des EPS complets...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.