Exemples de figures

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Exemples de figures

Message par MB »

Je propose ici des exemples de figures que j'ai réalisé avec Asymptote et qui pourront peut être servir à d'autres ou être commentés (amélioration du code par exemple).

Le fichier contenant le code (nommé ici figure.asy) est compilé à l'aide de la commande suivante afin de produire un fichier PDF (qui pourra être intégré dans un fichier LaTeX).

Code : Tout sélectionner

asy -f pdf -noV figure.asy
Pour poster le fichier sur le forum, il est converti en PNG à l'aide de la commande suivante (plus de rapport avec Asymptote) :

Code : Tout sélectionner

convert -geometry 500 -density 300 -units PixelsPerInch figure.pdf figure.png
Le paramètre 500 permet de définir la largeur (en pixels) de l'image obtenue.
En général j'augmente un peu les dimensions de l'image sur le PNG afin d'éviter que la figure soit trop "collée" aux bords.

Pour d'autres exemples, consulter le site de Philippe Ivaldi : ici.
Dernière modification par MB le dimanche 20 mai 2007, 23:22, modifié 1 fois.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

Code : Tout sélectionner

unitsize(1cm);
import geometry;
import math; 

pair pO=(0,0);
pair pA=(-5,0);
pair pB=(5,0);

dot(pO);
dot(pA);
dot(pB);

label("$O$",pO,SE);
label("$A$",pA,SW);
label("$B$",pB,SE);

draw(circle(pO,5));
draw(pA--pB);

pair pM=intersectionpoint(circle(pA,4),circle(pO,5));
pair pN=intersectionpoint(circle(pA,9),circle(pO,5));

dot(pM);
dot(pN);

label("$M$",pM,NW);
label("$N$",pN,NE);

draw(pA--pM--pB);
draw(pA--pN--pB);

perpendicular(pM,SE,pM--pB,blue);
perpendicular(pN,NE,pN--pA,blue);

pair pI=intersectionpoint(pA--interp(pA,pM,5),pB--interp(pB,pN,5));

dot(pI);

label("$I$",pI,NE);

draw(pM--pI);
draw(pN--pI);

pair pH=intersectionpoint(pA--pN,pM--pB);

dot(pH);

label("$H$",pH,2*NE+N);

pair pJ=intersectionpoint(pI--interp(pI,pH,2),pA--pB);

dot(pJ);

label("$J$",pJ,SW);

drawline(pI,pJ,dashed);
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

Code : Tout sélectionner

unitsize(1cm);
import geometry;

pair pE=(0,0);
pair pS=(0,-8);
pair pC=(8,0);
pair pN=(0,3);
pair pA=(8,5);

pair pO=intersectionpoint(pA--pS,pE--pC); 

label("$E$",pE,W);
label("$S$",pS,SW);
label("$C$",pC,E);
label("$N$",pN,NW);
label("$A$",pA,NE);
label("$O$",pO,SE);

perpendicular(pE,NE,blue);
perpendicular(pC,NW,blue);

draw(pO--pN--pS--pO);
draw(pA--pC);
draw("$5 \; cm$",pE--pO,S);
draw("$3 \; cm$",pO--pC,S);
draw("$6 \; cm$",pO--pA,W);

draw("$30^\circ$",arc(pN,pO,pE,1),blue);
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
guiguiche
Modérateur général
Modérateur général
Messages : 8094
Inscription : vendredi 06 janvier 2006, 15:32
Statut actuel : Enseignant
Localisation : Le Mans

Message par guiguiche »

C'est beau !
Allez, juste pour chipoter : les "cm" seraient plus jolis en écriture droite.
Pas d'aide par MP : les questions sont publiques, les réponses aussi.
Tu as apprécié l'aide qui t'a été fournie ? Alors n'hésite pas à rendre la pareille à quelqu'un d'autre.
Un peu d'autopromotion.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

guiguiche a écrit :Allez, juste pour chipoter : les "cm" seraient plus jolis en écriture droite.
Ah oui. J'ai l'habitude de noter comme ça ... mais c'est vrai que c'est sans doute pas le mieux.

$$ AB = 2 \; cm $$
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2587
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Message par gigiair »

Bravo !
Dans le convert, -density 300, c'est pour une imprimante qui imprime en 300dpi. À l'écran 72 ou 96 dpi suffisent en général.
si tu lance asy -f png, le format d'image par défaut est png.
--
JJR.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

gigiair a écrit :Dans le convert, -density 300, c'est pour une imprimante qui imprime en 300dpi. À l'écran 72 ou 96 dpi suffisent en général.
Oui c'est vrai. Mais bon, ça reste assez léger comme fichier.
gigiair a écrit :si tu lance asy -f png, le format d'image par défaut est png.
Oui, je savais, mais comme j'ai besoin du PDF à la base, convert est plus rapide.
En plus le PNG produit par Asymptote est de bien mauvaise qualité ! (mais on doit pouvoir trafiquer les options).
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
P.Fradin

Message par P.Fradin »

Salut,

Deux questions:

1) Il y a quand même un truc très gênant pour un matheux: l'intersection de deux cercles non disjoints et non tangents c'est deux points et non pas un seul! Autrement dit, l'intersection de deux cercles, pour un informaticien, c'est une liste de deux points en général.

2) C'est réservé à Asymptote ce fil? Je dis ça car il y a un moment j'ai eu l'idée de lancer un fil dans lequel chacun irait de sa plus belle plume pour proposer ses graphiques (avec sources), mais je ne l'ai pas fait pensant que cela puisse être "mal pris".
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

P.Fradin a écrit :1) Il y a quand même un truc très gênant pour un matheux: l'intersection de deux cercles non disjoints et non tangents c'est deux points et non pas un seul! Autrement dit, l'intersection de deux cercles, pour un informaticien, c'est une liste de deux points en général.
Oui, tu trouves des précisions dans la documentation :
real[] intersect(path p, path q, real fuzz=0);
If p and q have at least one intersection point, return a real array of length 2 containing the times representing the respective path times along p and q, in the sense of point(path, real), for one such intersection point (as chosen by the algorithm described on page 137 of The MetaFontbook). Perform the computations to the absolute error specified by fuzz, or, if fuzz is 0, to machine precision. If the paths do not intersect, return a real array of length 0.

pair intersectionpoint(path p, path q, real fuzz=0);
returns the intersection point point(p,intersect(p,q,fuzz)[0]).
J'ai pas tout compris à la fonction intersect et j'ai pas trop fait de tests encore. Je vais essayer. J'avais déjà pensé à ce problème. Mais pour l'instant je ne sais pas comment on fait pour récupérer les autres points d'intersection.

[Edit] Si c'est bon j'ai compris à quoi servait cette fonction mais ça ne permet pas de récupérer les autres points d'intersection.
P.Fradin a écrit :2) C'est réservé à Asymptote ce fil? Je dis ça car il y a un moment j'ai eu l'idée de lancer un fil dans lequel chacun irait de sa plus belle plume pour proposer ses graphiques (avec sources), mais je ne l'ai pas fait pensant que cela puisse être "mal pris".
Oui ce sujet est consacré à Asymptote et je vais essayer de poster les figures que je réalise avec. Je débute. Par contre, tu peux ouvrir un autre sujet si tu le souhaites. Ton idée ne me pose aucun problème.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

Apparemment c'est pas prévu à la base de retourner directement une liste de points d'intersection. J'ai trouvé ici le code suivant :

Code : Tout sélectionner

pair[] intersection(path p1, path p2, int n=8)
{
  pair[] rpair=new pair[];
  path tpath;
  real[] tpoint;
  real l1=length(p1), l2=length(p2);
  int i=0;
  for (real t1=0; t1<l1 ; t1+=l1/n)
    {
      for (real t2=0; t2<l2; t2+=l2/n)
        {
          tpoint=intersect(subpath(p1,t1,11+l1/n),subpath(p2,t2,12+l2/n));
          if (tpoint.length == 2)
            {
              rpair[i]=point(subpath(p1,t1,11+l1/n),tpoint[0]);
              ++i;
            }
        }
    }
  return rpair;
}
Ca existe dans Metapost ?
Il semble que la fonction intersect corresponde à la fonction intersectiontime de Metapost.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2587
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Message par gigiair »

MB a écrit : J'ai pas tout compris à la fonction intersect et j'ai pas trop fait de tests encore. Je vais essayer. J'avais déjà pensé à ce problème. Mais pour l'instant je ne sais pas comment on fait pour récupérer les autres points d'intersection.
J'espère ne pas dire de bêtise. Un path est une application d'un intervalle $[a,b]$ de $\R$ vers $\R \times \R$ : $t \mapsto (x(t),y(t))$.
L'intersection de deux path $p_1:\ t \mapsto p_1(t) $ et $p_2:\ t \mapsto p_2(t)$ est le premier point $t_0 \in [a,b] $ tel que $p_1(t_0)=p_2(t_0)$. Pour avoir le point suivant, il suffit de prendre l'intersection de $p_2$ avec le subpath de $p_1$ à partir de $p_1(t_0)$.

Un cercle est affinement équivalent à (0,1)..(1,0)--(-1,0)..(0,-1)..cycle, donc le point d'intersection d'un cercle avec un autre path est le premier point du cercle rencontré à partir du point le plus à l'est quand on le parcourt dans le sens trigonométrique.
--
JJR.
P.Fradin

Message par P.Fradin »

MB a écrit :Apparemment c'est pas prévu à la base de retourner directement une liste de points d'intersection. ...
Ca existe dans Metapost ?
Dans Metapost je ne sais pas, mais dans TeXgraph oui (on va dire que je fais encore de la pub...):

Get(Cercle(-5,4)) InterL Get(Cercle(0,5)) donne la liste:

[-3.400088268595+3.66559631346*i, -3.400088268595-3.66559631346*i]

Il faut néanmoins faire attention à la fenêtre courante car les cercles peuvent être clippés.
Ph. Ivaldi

Message par Ph. Ivaldi »

P.Fradin a écrit :Salut,
Salut,
P.Fradin a écrit : 1) Il y a quand même un truc très gênant pour un matheux: l'intersection de deux cercles non disjoints et non tangents c'est deux points et non pas un seul! Autrement dit, l'intersection de deux cercles, pour un informaticien, c'est une liste de deux points en général.
Ça se régle facilement avec deux ou trois macros.

Code : Tout sélectionner

size(6cm,0);
import graph;

path arcpath(path apath, real t1, real t2)
{//return path between the times t1 and t2
  return subpath(apath, arctime(apath,t1), arctime(apath,t2));
}

pair[] intersection(path p1, path p2, int n=100)
{//return array of intersection's points
  pair[] rpair;
  path tpath;
  real[] tpoint;
  real l1=arclength(p1), l=arclength(p1), tl=0;
  int i=0;
  for (real j=0; j<= l1; j+=l1/n)
    {
      path sub_p1=arcpath(p1,j,j+l1/n);
      tpoint=intersect(sub_p1,p2);
      if (tpoint.length == 2)
        {
          rpair[i]=point(p2,tpoint[1]);
          ++i;
        }
    }
  return rpair;
}

pair [] intersection(path [] p1, path p2, int n=100)
{
  pair [] rpair;
  for (int i=0; i<p1.length; ++i) {
    pair [] tpair=intersection(p1[i],p2);
    for (int j=0; j<tpair.length; ++j) {
      rpair.push(tpair[j]);      
    }
  }
  return rpair;
}

path[] cleb= new path [] {shift(-2)*unitcircle};

int m=8;

draw(cleb[0]);
for (int i=0; i<m; ++i) {
  path clec=shift(3.5/m)*cleb[i];
  dot(intersection(cleb,clec));
  draw(clec);
  cleb.push(clec);
 }

path Csin=graph(new real(real x){return .3sin(pi*x);},-3,2.5);
draw(Csin--cycle,red);
dot(intersection(cleb,Csin--cycle),red);

donne

Image
P.Fradin

Message par P.Fradin »

La même chose avec TeXgraph:

Code : Tout sélectionner

[$M:=-2, $R:=1, $liste:=1/0, $P:=1/0, NbPoints:=75, DotStyle:=bigdot,
 for $k from 0 to 8 do
  $L:= Get(Cercle(M,R)), Insert(P, L InterL liste),
  Insert(liste, [jump,L]), Inc(M,0.4375)
 od,
Ligne(liste,0), Point(P), Color:= red,
tMin:=-3, tMax:=2.455, Width:=8,
L:= Get(Courbe(t+i*0.3*sin(pi*t),1)),
Point(L InterL liste), Ligne(L,0) ]
donne:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

@Ph. Ivaldi : Merci beaucoup, ça fonctionne très bien (l'autre fonction ne fonctionnait pas car je crois qu'elle avait tendance à boucler sur des cercles). Je donne un exemple d'utilisation plus simple :

Code : Tout sélectionner

unitsize(1cm);

pair pO=(0,0);
pair pA=(-5,0);
pair pB=(5,0);

dot(pO);
dot(pA);
dot(pB);

label("$O$",pO,SE);
label("$A$",pA,SW);
label("$B$",pB,SE);

draw(circle(pO,5));

path arcpath(path apath, real t1, real t2)
{
  return subpath(apath, arctime(apath,t1), arctime(apath,t2));
}

pair[] intersection(path p1, path p2, int n=100)
{
  pair[] rpair;
  path tpath;
  real[] tpoint;
  real l1=arclength(p1), l=arclength(p1), tl=0;
  int i=0;
  for (real j=0; j<= l1; j+=l1/n)
    {
      path sub_p1=arcpath(p1,j,j+l1/n);
      tpoint=intersect(sub_p1,p2);
      if (tpoint.length == 2)
        {
          rpair[i]=point(p2,tpoint[1]);
          ++i;
        }
    }
  return rpair;
}

pair[] pM_list = intersection(circle(pA,4),circle(pO,5));
pair[] pN_list = intersection(circle(pA,9),circle(pO,5));

dot(pM_list,blue);
dot(pN_list,red);

label("$M_1$", pM_list[0],NW,blue);
label("$M_2$", pM_list[1],SW,blue);
label("$N_1$", pN_list[0],NE,red);
label("$N_2$", pN_list[1],SE,red);
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

Nouvelle figure :

Code : Tout sélectionner

unitsize(1cm);
import math;
import geometry; 

real r=4;
real aAOE=60;

pair pO=(0,0);
dot(Label("$O$",align=NW),pO);

path cO=circle(pO,r);
draw(cO);

pair pA=rotate(40,pO)*(-r,0);
dot(Label("$A$",align=SW),pA);

pair pF=rotate(aAOE,pO)*pA;
dot(Label("$F$",align=S),pF);

pair pB=rotate(aAOE,pO)*pF;
dot(Label("$B$",align=SE),pB);

pair pE=intersectionpoint(pO--pF,pA--pB);
dot(Label("$E$",align=1.2*SE+0.3*E),pE);

draw(Label("4",align=NW),pO--pA);
draw(pA--pB^^pO--pB);
draw(Label("2",align=SW),pO--pE);
draw(pE--pF);

typedef void dotmark(picture, pair);
dotmark DotMark(pen p=currentpen)
{
  return new void(picture pic, pair pt)
    {
      dot(pic,pt,p);
    };
}

dotmark NoDotMark(pen p=currentpen)
{
  return new void(picture pic, pair pt){};
}

dotmark DotMark=DotMark();
dotmark NoDotMark=NoDotMark();

markroutine dirmarkroutine(int n, dotmark dotmark=NoDotMark) {
  return new void(picture pic=currentpicture, path g, frame f) {
    if(n == 0) return;
    else
      {
        real width=1/n;
        for(int i=0; i < n; ++i){
          add(pic,
              rotate(degrees(dir(g,arctime(g,(i+.5)*width*arclength(g)))))*f,
              relpoint(g,(i+.5)*width));
          dotmark(pic,relpoint(g,i*width));
        }
        dotmark(pic,relpoint(g,1));
      }
  };
}

picture picturemarkmaker(path g, real n=1,
                         real size=0, real space=0,
                         real angle=0, real hoffset=0, pen p=currentpen)
{
  picture opic;
  int pos=0;
  for(int i=1; i<=n; ++i)
    {
      draw (opic,shift((space*(pos-.5*((n+1)%2)),hoffset))*
            rotate(angle)*
            scale(size/2)*g,p);
      pos=pos+i*(-1)^(i+1);
    }
  return opic;
}

real minstickmarkspace=dotsize(currentpen);
real minstickmarksize=3*dotsize(currentpen);
frame stickpicture(real n=1, real size=0, real space=0,
                   real angle=0, real hoffset=0, pen p=currentpen)
{
  if(size == 0) size=minstickmarksize+2*linewidth(p);
  if(space == 0) space=minstickmarkspace+linewidth(p);
  return picturemarkmaker(N--S,n,size,space,angle,hoffset,p).fit();
}

marker StickMarker(int n=1, int div=1,
                   real size=0, real space=0,
                   real angle=0, real hoffset=0,
                   dotmark dotmark=NoDotMark(), pen p=currentpen)
  {
    return marker(stickpicture(n,size,space,angle,hoffset,p),dirmarkroutine(div,dotmark));
  }

draw(pO--pF,StickMarker(1,2,size=6,angle=-45,DotMark,red));
draw(pA--pB,StickMarker(2,2,size=6,angle=-45,DotMark,red));

perpendicular(pE,SE,pE--pA,blue); 

shipout(bbox(xmargin=2mm,invisible));
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

Code : Tout sélectionner

unitsize(1cm);
import geometry;
usepackage("mathrsfs");

real rBU=6;
real rTU=2;

pair pB=(0,0);
pair pU=(rBU,0);

path circle_1=circle((rBU/2,0),rBU/2);
path circle_2=circle(pU,rTU);

pair pT=intersectionpoint(circle_1,circle_2);
pair pO=intersectionpoint(reverse(circle_1),circle_2);

draw(Label("$\mathscr{C}$",Relative(.2)),subpath(circle_1,2,4),gray);
draw(subpath(circle_2,1.05,2.95),mediumgray);

dot(Label("$B$",align=W),pB); 
dot(Label("$U$",align=E),pU); 
dot(Label("$T$",align=N),pT); 
dot(Label("$O$",align=S),pO); 

draw(pB--pU--pO--pB^^pB--pT--pU);

typedef void dotmark(picture, pair);
dotmark DotMark(pen p=currentpen)
{
  return new void(picture pic, pair pt)
    {
      dot(pic,pt,p);
    };
}

dotmark NoDotMark(pen p=currentpen)
{
  return new void(picture pic, pair pt){};
}

dotmark DotMark=DotMark();
dotmark NoDotMark=NoDotMark();

markroutine dirmarkroutine(int n, dotmark dotmark=NoDotMark) {
  return new void(picture pic=currentpicture, path g, frame f) {
    if(n == 0) return;
    else
      {
        real width=1/n;
        for(int i=0; i < n; ++i){
          add(pic,
              rotate(degrees(dir(g,arctime(g,(i+.5)*width*arclength(g)))))*f,
              relpoint(g,(i+.5)*width));
          dotmark(pic,relpoint(g,i*width));
        }
        dotmark(pic,relpoint(g,1));
      }
  };
}

picture picturemarkmaker(path g, real n=1,
                         real size=0, real space=0,
                         real angle=0, real hoffset=0, pen p=currentpen)
{
  picture opic;
  int pos=0;
  for(int i=1; i<=n; ++i)
    {
      draw (opic,shift((space*(pos-.5*((n+1)%2)),hoffset))*
            rotate(angle)*
            scale(size/2)*g,p);
      pos=pos+i*(-1)^(i+1);
    }
  return opic;
}

real minstickmarkspace=dotsize(currentpen);
real minstickmarksize=3*dotsize(currentpen);
frame stickpicture(real n=1, real size=0, real space=0,
                   real angle=0, real hoffset=0, pen p=currentpen)
{
  if(size == 0) size=minstickmarksize+2*linewidth(p);
  if(space == 0) space=minstickmarkspace+linewidth(p);
  return picturemarkmaker(N--S,n,size,space,angle,hoffset,p).fit();
}

marker StickMarker(int n=1, int div=1,
                   real size=0, real space=0,
                   real angle=0, real hoffset=0,
                   dotmark dotmark=NoDotMark(), pen p=currentpen)
  {
    return marker(stickpicture(n,size,space,angle,hoffset,p),dirmarkroutine(div,dotmark));
  }

draw(pU--pT,StickMarker(2,1,size=6,angle=-45,DotMark,red));
draw(pU--pO,StickMarker(2,1,size=6,angle=-45,DotMark,red)); 

shipout(bbox(xmargin=1mm,invisible));
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
Tryphon
Utilisateur chevronné
Utilisateur chevronné
Messages : 1839
Inscription : mercredi 01 juin 2005, 18:39
Localisation : Un peu plus à l'Ouest

Message par Tryphon »

Y'a quand même vraiment beaucoup de choses à taper pour avoir une figure...
Pas de questions en MP
La calculatrice, c'est comme Linux, c'est de la merde !
Arnaud
Modérateur général
Modérateur général
Messages : 7095
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

Message par Arnaud »

Je crois que c'est une autre discussion, mais je suis du même avis. Je n'en vois pas trop l'intérêt, alors que par exemple geogebra exporte en PSTricks.
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
MB
Administrateur
Administrateur
Messages : 7260
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant

Message par MB »

Non, il n'y a pas tant de code que ça ! (là c'est à cause des marqueurs d'égalité de longueur qui ne sont pas intégrés directement dans Asymptote)
MB. (rejoignez pCloud afin d'obtenir 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.