Page 1 sur 1

Flèches dans asymptote

MessagePosté: Lundi 29 Août 2011, 15:03
par Coyote
Bonjour,

je suis en train d'essayer de transformer mes flêches dans asymptote .. j'ai lu pas mal de chose, j'ai vu que P. Ivaldi avait fait une customsation (merci à lui pour tout le travail fait sur Asymptote), mais dans un soucis de comprendre et de faire mon truc, je voulais savoir quels étaient les arguments disponible pour Arrow ?
Pour l'instant, je tape ça, ça marche et ça compile :

Code: Tout sélectionner
Arrow(HookHead, size=10, angle=20)


A partir de .. mais certaines options (notamment les booléens) ne marchent pas chez moi et du coup je voulais savoir si il y avait d'autres options et/ou paramétrisations !

Bien cordialement
Thomas

Re: Fleches dans asymptote ...

MessagePosté: Lundi 29 Août 2011, 15:38
par chellier
Bonjour,

La définition de Arrow est la suivante (il y a aussi None, Blank, BeginArrow, MidArrow et Arrows, pour Blank, je n'ai pas compris à quoi ça servait :shock: ) :
Code: Tout sélectionner
arrowbar Arrow(arrowhead arrowhead=DefaultHead,
               real size=0, real angle=arrowangle,
               filltype filltype=null, position position=EndPoint)

Tu peux déjà modifier ces paramètres.

Les styles de tête sont : DefaultHead, SimpleHead, HookHead, TeXHead.
Pour filltype, il y a : FillDraw, Fill, NoFill, UnFill, Draw. (avec des variantes : Fill(blue) par exemple)
La position peut être précisée par EndPoint, BeginPoint, ou Relative(0.2) par exemple.

On peut aussi créer un nouveau type de tête. Pour ça, voir comment sont définis les autres types de tête dans le fichier plain_arrows.asy

Après qu'est-ce qui ne fonctionne pas exactement ?
Essayes-tu de modifier Arrow ou arrow ? (ce n'est pas la même chose...)

Christophe

Re: Fleches dans asymptote ...

MessagePosté: Lundi 29 Août 2011, 16:14
par Coyote
Ah voilà déjà un point obscur d'écarté ... Arrow n'est pas arrow, d'où mes soucis je crois !
Du coup quelle est la différence entre arrow et Arrow ?

J'ai regarder dans plain_arrows.asy .. j'ai pas compris grand chose donc pas touché !

En tout cas merci pour la réponse !

Re: Fleches dans asymptote ...

MessagePosté: Lundi 29 Août 2011, 18:39
par chellier
Coyote a écrit:Du coup quelle est la différence entre arrow et Arrow ?

arrow est une image (picture) définie par certains paramètres que Arrow (ou BeginArrow, Arrows, ...) va ajouter à la figure en lui passant les principaux paramètres. Je ne sais pas si je suis clair :?

Ensuite, tout dépend de ce que tu veux faire. As-tu un exemple ?

Christophe

Re: Flèches dans asymptote

MessagePosté: Lundi 29 Août 2011, 19:46
par Coyote
Coyote a écrit:Je ne sais pas si je suis clair :?

Euuuuh, si j'ai bien compris, on définit arrow comme étant notre flêche de base puis on se sert de Arrow qui appelle arrow ? :shock:

Je brule ou je suis complétement à côté de la plaque ?

Sinon voici ce que je veux faire, c'est une flèche dans un repère (bon je sais, il y en a plein qui sont déjà définies), voici le code :
Code: Tout sélectionner
draw(Label("$\overrightarrow{\imath}$", fontsize(12pt)), (0,0)--(1,0), S, Arrow(HookHead, size=10, angle=20));

par exemple ...
Et je voudrais bien personaliser ma flêche ....

En tout cas merci de ton aide :wink:
Thomas

Re: Flèches dans asymptote

MessagePosté: Lundi 29 Août 2011, 20:47
par OG
Coyote a écrit:Et je voudrais bien personaliser ma flêche ....
Thomas


Quel genre de personnalisation ?

O.G.

Re: Flèches dans asymptote

MessagePosté: Lundi 29 Août 2011, 21:51
par Coyote
OG a écrit:Quel genre de personnalisation ?


Bonne question. L'idée serait en fait de jouer sur la taille : longueur, hauteur totale, etc .. un peu comme dans pstrick me semble-t-il ...
Dans la tête HookHead, il ya un retour à la base, peut-on jouer la-dessus, par exemple ?

Mais peut-être suis-je trop gourmand :lol:

Thomas

Re: Flèches dans asymptote

MessagePosté: Mardi 30 Août 2011, 10:09
par chellier
Coyote a écrit:Euuuuh, si j'ai bien compris, on définit arrow comme étant notre flêche de base puis on se sert de Arrow qui appelle arrow ? :shock:

Je brule ou je suis complétement à côté de la plaque ?

C'est ça :)

Mais ici, je pense que tu veux plutôt modifier la tête non ?
Si en changeant les paramètres size et angle de Arrow tu n'obtiens pas ce que tu veux, Il va falloir modifier HookHead

Code: Tout sélectionner
arrowhead HookHead(real dir=arrowdir, real barb=arrowbarb)
{
  arrowhead a;
  a.head=new path(path g, position position=EndPoint, pen p=currentpen,
                  real size=0, real angle=arrowangle)
    {
      if(size == 0) size=a.size(p);
      angle=min(angle*arrowhookfactor,45);
      bool relative=position.relative;
      real position=position.position.x;
      if(relative) position=reltime(g,position);
      path r=subpath(g,position,0);
      pair x=point(r,0);
      real t=arctime(r,size);
      pair y=point(r,t);
      path base=arrowbase(r,y,t,size);
      path left=rotate(-angle,x)*r;
      path right=rotate(angle,x)*r;
      real[] T=arrowbasepoints(base,left,right);
      pair denom=point(right,T[1])-y;
      real factor=denom != 0 ? length((point(left,T[0])-y)/denom) : 1;
      path left=rotate(-angle,x)*r;
      path right=rotate(angle*factor,x)*r;
      real[] T=arrowbasepoints(base,left,right);
      left=subpath(left,0,T[0]);
      right=subpath(right,T[1],0);
      pair pl0=point(left,0), pl1=relpoint(left,1);
      pair pr0=relpoint(right,0), pr1=relpoint(right,1);
      pair M=(pl1+pr0)/2;
      pair v=barb*unit(M-pl0);
      pl1=pl1+v; pr0=pr0+v;
      left=pl0{dir(-dir+degrees(M-pl0,false))}..pl1--M;
      right=M--pr0..pr1{dir(dir+degrees(pr1-M,false))};
      return left--right&cycle;
    };
  return a;
}
arrowhead HookHead=HookHead();

mais ça m'a pas l'air d'une partie de plaisir :wink:

Christophe

Re: Flèches dans asymptote

MessagePosté: Mardi 30 Août 2011, 13:28
par Coyote
Coyote a écrit:mais ça m'a pas l'air d'une partie de plaisir :wink:


oui, j'avais vu cette partie de code, et rien compris du tout .. et surtout là, j'ai pas du tout le temps de m'y mettre !!
Je crois que les paramètres "size et angle" suffiront :wink:

En tout cas merci et bonne rentrée !
Thomas

Re: Flèches dans asymptote

MessagePosté: Mercredi 31 Août 2011, 21:08
par GMaths
Ne pas oublier les paramètres dir et barb.

7fead8ac2de8058bbbc1edd6226318f6.png

Code: Tout sélectionner
size(7cm);

real a=0;
draw((0,a)--(1,a+1),2bp+black,Arrow);
draw((1,a)--(2,a+1),2bp+black,Arrow(SimpleHead));
draw((2,a)--(3,a+1),2bp+black,Arrow(HookHead));
draw((3,a)--(4,a+1),2bp+black,Arrow(TeXHead));

a=-2;
draw((0,a)--(1,a+1),2bp+black,Arrow(NoFill));
draw((1,a)--(2,a+1),2bp+black,Arrow(SimpleHead,NoFill));
draw((2,a)--(3,a+1),2bp+black,Arrow(HookHead,NoFill));
draw((3,a)--(4,a+1),2bp+black,Arrow(TeXHead,NoFill));

a=-4;
draw((0,a)--(1,a+1),2bp+black,Arrow(HookHead(dir=10)));
draw((1,a)--(2,a+1),2bp+black,Arrow(HookHead(dir=20)));
draw((2,a)--(3,a+1),2bp+black,Arrow(HookHead(dir=30)));
draw((3,a)--(4,a+1),2bp+black,Arrow(HookHead(dir=40)));

a=-6;
draw((0,a)--(1,a+1),2bp+black,Arrow(HookHead(barb=-2)));
draw((1,a)--(2,a+1),2bp+black,Arrow(HookHead(barb=0)));
draw((2,a)--(3,a+1),2bp+black,Arrow(HookHead(barb=4)));
draw((3,a)--(4,a+1),2bp+black,Arrow(HookHead(barb=8)));

shipout(bbox(5mm,white));

Re: Flèches dans asymptote

MessagePosté: Jeudi 01 Septembre 2011, 07:45
par Coyote
Avec ça, c'est sur je vais trouver mon bonheur ..... :P

Un grand merci.
Thomas

Re: Flèches dans asymptote

MessagePosté: Samedi 03 Septembre 2011, 17:02
par GMaths
Précisons que tu peux écrire ce genre de chose, pour t'éviter de l'écrire à chaque flèche :
Code: Tout sélectionner
DefaultHead=HookHead(dir=20,barb=5);


Attention, alors... à la différence entre :
Code: Tout sélectionner
draw((0,0)--(10,5),Arrow());

et
Code: Tout sélectionner
draw((0,0)--(10,5),Arrow);

Je dis cela de mémoire : à vérifier.

Re: Flèches dans asymptote

MessagePosté: Mardi 13 Septembre 2011, 21:12
par Fabrice Couvreur
Bonsoir,
Une petite question : quel type de flèche utilise PSTricks par défaut ?
J'ai pensé à :
Code: Tout sélectionner
draw((3,a)--(4,a+1),2bp+black,Arrow(HookHead(barb=8)));

Merci.