Flèches dans asymptote

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.

Flèches dans asymptote

Messagepar Coyote » Lundi 29 Août 2011, 15:03

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
Coyote
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 06 Mai 2007, 08:23
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: Fleches dans asymptote ...

Messagepar chellier » Lundi 29 Août 2011, 15:38

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
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Fleches dans asymptote ...

Messagepar Coyote » Lundi 29 Août 2011, 16:14

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 !
Coyote
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 06 Mai 2007, 08:23
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Fleches dans asymptote ...

Messagepar chellier » Lundi 29 Août 2011, 18:39

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
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar Coyote » Lundi 29 Août 2011, 19:46

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
Coyote
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 06 Mai 2007, 08:23
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar OG » Lundi 29 Août 2011, 20:47

Coyote a écrit:Et je voudrais bien personaliser ma flêche ....
Thomas


Quel genre de personnalisation ?

O.G.
OG
Modérateur
 
Messages: 2279
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Flèches dans asymptote

Messagepar Coyote » Lundi 29 Août 2011, 21:51

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
Coyote
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 06 Mai 2007, 08:23
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar chellier » Mardi 30 Août 2011, 10:09

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
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar Coyote » Mardi 30 Août 2011, 13:28

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
Coyote
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 06 Mai 2007, 08:23
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar GMaths » Mercredi 31 Août 2011, 21:08

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));
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar Coyote » Jeudi 01 Septembre 2011, 07:45

Avec ça, c'est sur je vais trouver mon bonheur ..... :P

Un grand merci.
Thomas
Coyote
Kilo-utilisateur
 
Messages: 117
Inscription: Dimanche 06 Mai 2007, 08:23
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar GMaths » Samedi 03 Septembre 2011, 17:02

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.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Flèches dans asymptote

Messagepar Fabrice Couvreur » Mardi 13 Septembre 2011, 21:12

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.
Fabrice Couvreur
Giga-utilisateur
 
Messages: 601
Inscription: Samedi 18 Août 2007, 00:55


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é