linetype

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
zariski
Messages : 141
Enregistré le : dim. 30 sept. 2012, 18:50

linetype

Message non lu par zariski » dim. 11 nov. 2012, 19:58

Bonsoir !
Qui pourrait me dire la signification des chiffres entre guillemets (et des options true ou false) et notamment comment dois je faire pour avoir des longueurs en mm (ou cm) qui ressortent bien dans l'unité voulue ?

draw( (0,2)--(5,2) , linetype ("24 8 8 8" , false , true ) + 2mm); par exemple ...

Merci
Windows 11- Ubuntu 20.10 - WinEdit - TexStudio - TeXMaker - TeXLive2022

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: linetype

Message non lu par GM » dim. 11 nov. 2012, 21:52

zariski a écrit :Qui pourrait me dire la signification des chiffres entre guillemets (et des options true ou false) et notamment comment dois je faire pour avoir des longueurs en mm (ou cm) qui ressortent bien dans l'unité voulue ?

draw( (0,2)--(5,2) , linetype ("24 8 8 8" , false , true ) + 2mm); par exemple ...


Question pas simple du tout (sache que cela dépend déjà si tu vas utiliser unitsize ou size pour ta figure ; si tu sais l'effet que size a sur une figure, tu imagines bien que souhaiter des traits d'une longueur précise peut sembler un peu contradictoire avec l'utilisation d'un size)...

... à laquelle je ne répondrai pas vraiment ce soir.

Je vais me contenter de deux exemples pour montrer que ce n'est pas si simple d'avoir un nombre précis de points pour un quadrillage, avec de simples commandes :

Figure asymptote 0a91e32e336bc55eea53628e658a136b
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import math;
  2. unitsize(2cm);
  3. add(grid(4,1,dotted+1bp));


Figure asymptote 34a51f52d7c0042f7eac949e033307e5
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import math;
  2. unitsize(2cm);
  3. add(grid(4,1,dashed+1bp));


Les bonnes façons sont un peu compliquées :

Figure asymptote fd42ea2720308610bc5455d924f8a8aa
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import math;
  2. unitsize(2cm);
  3. pen p=linetype("0 " + string(2mm), offset=0, scale=false, adjust=false);
  4. add(grid(4,1,p+1bp));

Figure asymptote 4b1353deb4ae74409f50bda091adaea9
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import math;
  2. unitsize(2cm);
  3. pen p=linetype(string(2mm)+ " " + string(2mm), offset=0, scale=false, adjust=false);
  4. add(grid(4,1,p+1bp));

Figure asymptote de4fcd2a1df7e7d1b5635b7de9b34050
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import math;
  2. unitsize(2cm);
  3. pen p=linetype(string(1mm)+ " " + string(1mm), offset=0, scale=false, adjust=false);
  4. add(grid(4,1,p+1bp));
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

zariski
Messages : 141
Enregistré le : dim. 30 sept. 2012, 18:50

Re: linetype

Message non lu par zariski » dim. 11 nov. 2012, 22:34

Cela me convient en partie.
Une chose par contre, ce n'est pas le nombre de tirets qui m'importe mais plutôt leur longueur et épaisseur.
Ceci dit merci encore une fois pour la réponse.
Bonne soirée et bonne semaine.
Windows 11- Ubuntu 20.10 - WinEdit - TexStudio - TeXMaker - TeXLive2022

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: linetype

Message non lu par GM » dim. 11 nov. 2012, 22:54

zariski a écrit :Cela me convient en partie.
Une chose par contre, ce n'est pas le nombre de tirets qui m'importe mais plutôt leur longueur et épaisseur.

Je veux bien affiner la réponse... si tu donnes un exemple précis à réaliser.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

zariski
Messages : 141
Enregistré le : dim. 30 sept. 2012, 18:50

Re: linetype

Message non lu par zariski » lun. 12 nov. 2012, 07:07

Finalement c'est Asymptote qui ajuste les tirets selon l'échelle size donnée.
Donc quel est l'intérêt de donner "24 8 8" par exemple ?
Au passage, ces 3 chiffres sont bien en unité bp, n'est ce pas !
Enfin j'avoue être perplexe ...
Windows 11- Ubuntu 20.10 - WinEdit - TexStudio - TeXMaker - TeXLive2022

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: linetype

Message non lu par GM » lun. 12 nov. 2012, 07:57

As-tu regardé la doc Asymptote ?

Les exemples donnés semblent assez clairs, je trouve :

Image

pour longdashdotted : {24,8,0,8} (avant dernière ligne)

{longueur de trait - longueur de l'espace sans trait - 1 point - longueur de l'espace sans trait}
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: linetype

Message non lu par GM » lun. 12 nov. 2012, 17:41

Des exemples pour aider à comprendre les autres paramètres :

Figure asymptote 7d62851c74f5afaa4c072b32c42b7d14
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. unitsize(1cm);
  2.  
  3. path p=(0,0)--(4,0);
  4. transform t=shift(0,-1);
  5. marker croix= marker(scale(2)*cross(4),blue);
  6.  
  7. pen stylo[]={linetype(string(1cm)+" "+string(1cm)), // 0
  8. linetype(string(1cm)+" "+string(1cm),scale=false,adjust=false), // 1
  9. linetype(string(1cm)+" "+string(1cm),scale=false,adjust=true), // 2
  10. 2bp+linetype(string(1cm)+" "+string(1cm),scale=false,adjust=false), // 3
  11. 2bp+linetype(string(1cm)+" "+string(1cm),scale=false,adjust=true), // 4
  12. 2bp+linetype(string(1/(2bp)*cm)+" "+string(1/(2bp)*cm),adjust=false), // 5
  13. linetype(string(1cm)+" "+string(1cm),offset=-2mm,scale=false,adjust=false) // 6
  14. };
  15. // Par défaut : real offset=0, bool scale=true, bool adjust=true
  16.  
  17. for(int k=0; k<stylo.length; ++k) draw(Label(string(k),EndPoint),t^k*p,stylo[k],croix);
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

zariski
Messages : 141
Enregistré le : dim. 30 sept. 2012, 18:50

Re: linetype

Message non lu par zariski » lun. 12 nov. 2012, 18:31

eh beh quel travail !
Grand merci, je suis en train d'étudier les options ...
Windows 11- Ubuntu 20.10 - WinEdit - TexStudio - TeXMaker - TeXLive2022

zariski
Messages : 141
Enregistré le : dim. 30 sept. 2012, 18:50

Re: linetype

Message non lu par zariski » lun. 12 nov. 2012, 18:55

Ma conclusion :

- adjust à true fait en sorte que le motif occupe toute la largeur

- scale à true ajuste la longueur des tirets si une largeur de trait a été précisée avant linetype

-offset précise à partir de quand doit commencer le motif depuis le point de départ
Windows 11- Ubuntu 20.10 - WinEdit - TexStudio - TeXMaker - TeXLive2022

Avatar du membre
GM
Administrateur du site
Administrateur du site
Messages : 1512
Enregistré le : dim. 7 mars 2010, 14:50

Re: linetype

Message non lu par GM » lun. 12 nov. 2012, 19:32

zariski a écrit :Ma conclusion :

- adjust à true fait en sorte que le motif occupe toute la largeur

- scale à true ajuste la longueur des tirets si une largeur de trait a été précisée avant linetype

-offset précise à partir de quand doit commencer le motif depuis le point de départ


je rectifie la première affirmation, puisque le motif sera évidemment répété un certain nombre de fois : adjust=true fait en sorte que cela ne se se termine pas par un blanc.

Sinon oui, je suis d'accord... en redisant que par défaut adjust et scale sont définis sur true... donc il faut les passer à false pour avoir le contrôle des longueurs... sans que la largeur ait une influence.
Il faudrait refaire des essais avec size (au lieu de unitsize) et adjust=false, scale=false , pour voir si Asymptote fait du "defered drawing" dans ce cas : respecte t-il encore les nombres de cm indiqués avec un 'size' ?

Autres remarques :
  • il est intéressant de comparer les exemples 3 et 5 pour comprendre l'influence d'un scale=true... dans le cas d'une épaisseur demandée qui n'est pas égale à la valeur par défaut.

    Deux exemples pour prolonger cette remarque :
    http://www.marris.org/asymptote/Grilles ... 109_grille
    http://www.marris.org/asymptote/Grilles ... 109_grille



  • on pourra regretter que cela ne soit pas plus simple (pour nous qui utilisons souvent le cm) pour avoir un nombre précis de points ou de traits par cm... mais compte tenu que l'on a finalement le quasi contrôle-total des traits en pointillés, on ne va pas trop se plaindre : il suffit de prédéfinir des styles et de les mettre dans un fichier asy de macros personnelles.
Index des fonctions - Exemple de lien donnant le résultat d'une recherche sur les mots 'arc' et 'triple' : http://asy.marris.fr/indexasy/?filtre=arc triple
Mes configurations (le 24/02/21) :
PC n°1 :Windows 10 - Asymptote(2.82)+MikTeX2.9 - Editeurs : Notepad++, TeXworks, Visual Studio Code.
PC n°2 : Ubuntu 20.04LTS - Asymptote(2.67-?? git) + TexLive2020
Mon serveur : Debian Stretch- Asymptote(2.68-16 git) + TexLive2018
Merci de préciser la votre !

Répondre