Exemples de figures

Tout ce qui concerne l'utilisation ou l'installation d'Asymptote.

Modérateur: gdm_asy

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Exemples de figures

Messagepar MB » Mercredi 10 Janvier 2007, 19:52

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 édition par MB le Dimanche 20 Mai 2007, 22:22, édité 1 fois.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Messagepar MB » Mercredi 10 Janvier 2007, 19:53

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);
Fichiers joints
Figure1.png
(45.86 Kio) Téléchargé 2718 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Mercredi 10 Janvier 2007, 19:57

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);
Fichiers joints
Figure3.png
(26.01 Kio) Téléchargé 2716 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar guiguiche » Mercredi 10 Janvier 2007, 20:28

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.
guiguiche
Modérateur
 
Messages: 8067
Inscription: Vendredi 06 Janvier 2006, 15:32
Localisation: Le Mans
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Mercredi 10 Janvier 2007, 20:41

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 (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar gigiair » Mercredi 10 Janvier 2007, 20:43

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.
gigiair
Exa-utilisateur
 
Messages: 2439
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Messagepar MB » Mercredi 10 Janvier 2007, 20:49

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 (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar P.Fradin » Mercredi 10 Janvier 2007, 20:51

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".
P.Fradin
 

Messagepar MB » Mercredi 10 Janvier 2007, 21:08

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 (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Mercredi 10 Janvier 2007, 22:17

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 (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar gigiair » Mercredi 10 Janvier 2007, 22:29

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.
gigiair
Exa-utilisateur
 
Messages: 2439
Inscription: Samedi 08 Juillet 2006, 19:56
Localisation: Saint Bonnet Elvert
Statut actuel: Actif et salarié

Messagepar P.Fradin » Mercredi 10 Janvier 2007, 22:38

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.
P.Fradin
 

Messagepar Ph. Ivaldi » Samedi 13 Janvier 2007, 00:17

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

[center]Image[/center]
Ph. Ivaldi
Méga-utilisateur
 
Messages: 267
Inscription: Vendredi 12 Janvier 2007, 23:27
Statut actuel: Actif et salarié

Messagepar P.Fradin » Samedi 13 Janvier 2007, 09:28

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:
Fichiers joints
roues.png
(29.09 Kio) Téléchargé 2593 fois
P.Fradin
 

Messagepar MB » Samedi 13 Janvier 2007, 11:56

@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);
Fichiers joints
Figure2.png
(21.6 Kio) Téléchargé 2568 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Mardi 16 Janvier 2007, 00:12

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));
Fichiers joints
CFigure2.png
(106.37 Kio) Téléchargé 2507 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Samedi 20 Janvier 2007, 12:26

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));
Fichiers joints
Figure1.png
(90.12 Kio) Téléchargé 2444 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar Tryphon » Samedi 20 Janvier 2007, 12:29

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 !
Tryphon
Péta-utilisateur
 
Messages: 1840
Inscription: Mercredi 01 Juin 2005, 17:39
Localisation: Un peu plus à l'Ouest
Statut actuel: Actif et salarié | Enseignant

Messagepar Arnaud » Samedi 20 Janvier 2007, 12:39

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
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7115
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Samedi 20 Janvier 2007, 13:52

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 (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6890
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Suivante

Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité