Page 1 sur 2

thin() et Arrow

Posté : mer. 12 sept. 2012, 10:06
par YoungFrog
Bonjour,

J'ai vu dans la doc que thin() (qui renvoie essentiellement linewidth(0)) permet d'avoir un trait d'un pixel de large à toutes les résolutions. J'ai donc voulu tenter le (naïf ?)

Figure asymptote 545f36a102307af3fcc06fb8875ddf01
*** 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 graph;
  2. size(5cm);
  3. draw((0,0)--(1,1)); // juste pour donner du volume.
  4. xaxis("$x$", thin(), Arrow);

mais ça donne une flèche énorme. Je postais donc sur le forum pour demander comment contourner ce souci, puis à force de farfouiller dans le code j'ai fini par trouver une solution, donc je vous la poste tant que j'y suis : le problème est probablement lié à la manière bizarre dont Arrow prend sa taille par défaut (size = 0 par défaut, et ce 0 est transformé plus tard en arrowhead.size(p), ce qui foire pour je ne sais quelle raison dans ce cas-ci) ; donc la solution est de donner à Arrow la taille qu'elle est censée avoir : Arrow(arrowsize()) par exemple.

Figure asymptote 81a2677e82a695638c1ba0649a132982
*** 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 graph;
  2. size(5cm);
  3. draw((0,0)--(1,1)); // juste pour donner du volume.
  4. xaxis("$x$", thin(), Arrow(arrowsize()));


Je laisse à de plus vifs que moi le soin de comprendre pourquoi le mécanisme par défaut ne fonctionne pas ici.

--
Nico.

Re: thin() et Arrow

Posté : mer. 12 sept. 2012, 11:51
par GM
Bonjour,
je me suis permis d'ajouter ci-dessus l'image correspondante à la solution proposée pour le problème, pour pouvoir mieux attirer l'attention de JCBowman en donnant un lien vers ce sujet... car je n'ai personnellement aucune idée sur le pourquoi de la chose.

Re: thin() et Arrow

Posté : mer. 12 sept. 2012, 12:04
par GM
Un sujet vient d'être ouvert sur le forum officiel à ce propos : https://sourceforge.net/projects/asympt ... ic/5655583

Re: thin() et Arrow

Posté : mer. 12 sept. 2012, 20:06
par GM
Mise à jour de la version d'asymptote du serveur et nouveau test :

Figure asymptote 8c17ef25f4d87878203c99b4bce9d92e
*** 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 graph;
  2. size(5cm);
  3. draw((0,0)--(1,1),red);
  4. xaxis("$x$", thin(), Arrow);
  5. label("Asy "+version.VERSION,point(N),S);

Re: thin() et Arrow

Posté : jeu. 13 sept. 2012, 06:20
par GM
Si vous avez suivi le lien sur le site officiel, vous avez pu lire que JCBowman a testé le code sur la version 2.16 et sur la version SVN et il n'a pas constaté le problème soulevé par YoungFrog.

Alors que moi je le constate aussi bien sur Windows7+Asymptote2.16 que sur le serveur Ubuntu+Asymptote2.17SVN.

Etonnant...

Et les autres ? Problème ou pas chez vous ?

Re: thin() et Arrow

Posté : jeu. 13 sept. 2012, 10:22
par OG
Pas de pb
Siduction (Debian Sid), 64 bits, version svn du jour, texlive 2011

O.G.

Re: thin() et Arrow

Posté : jeu. 13 sept. 2012, 10:49
par GM
OG a écrit :Pas de pb
Siduction (Debian Sid), 64 bits, version svn du jour, texlive 2011


C'est dingue cette histoire : je ne comprends pas ce qu'il se passe.

Re: thin() et Arrow

Posté : jeu. 13 sept. 2012, 11:04
par YoungFrog
Je suis assez heureux que GM et son site observent le même problème, sinon je serais passé pour fou :) Je propose de comparer nos -vvvvv sur l'exemple suivant, qui est un peu plus simple :

Figure asymptote 1914524a76f1b7f9a5b55c6f3e814831
*** 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. size(5cm);
  2. draw((0,0)--(1,1),thin(),Arrow());
  3. draw((0,0)--(1,0),thin(),Arrow());

et qui montre à quel point il y a une bizarrerie.
J'ai lancé

Code : Tout sélectionner

asy -vvvvv test.asy &> logging
là dessus, et ça donne un fichier logging que j'ai mis ici : http://bpaste.net/show/45247/
Malheureusement la lecture de ce fichier ne me parle pas vraiment directement, c'est pourquoi je propose que quelqu'un chez qui le problème n'apparait pas fasse la même chose (je propose de penser à enlever le fichier config.asy personnel, pour éviter que ça ne perturbe la chose ; c'est ce que j'ai fait), et qu'on passe un petit coup de diff pour tenter d'y voir clair.

--
Nico.

Re: thin() et Arrow

Posté : jeu. 13 sept. 2012, 12:59
par OG
Comme j'ai une texlive2011 et donc des chemins différents, le diff est un peu long.
Voici ce que je peux extraire (hormis les chemins)
< c'est chez moi

Code : Tout sélectionner

2782c2788
< (1.11022e-16,0)
---
> (0,5.55112e-17)
2787c2793
< 1.11022e-16
---
> 5.55112e-17


2847c2853
< {curl 1}..{curl 1}(0,0)--(1,0)--(1,0)--(1,-5.55112e-17)--(0,0)
---
> {curl 1}..{curl 1}(0,0)--(1,0)--(1,0)--(1,4.80844e-17)--(0,0)
2850c2856
< {curl 1}..{curl 1}(0,0)--(-1,0)--(-1,0)--(-1,5.55112e-17)--(0,0)
---
> {curl 1}..{curl 1}(0,0)--(-1,0)--(-1,0)--(-1,-4.80844e-17)--(0,0)
2861,2862c2867,2868
< {curl 1} (0,0) {control (0.333333,2.77556e-17)}
< {control (0.666667,0)} (1,0) {control (1,0)}
---
> {curl 1} (0,0) {control (0.333333,2.48011e-18)}
> {control (0.666667,-2.49366e-18)} (1,0) {control (1,0)}
2864,2865c2870,2871
< {control (1,-5.55112e-17)} (1,-5.55112e-17) {control (0.666667,-5.55112e-17)}
< {control (0.333333,0)} (0,0) {curl 1}
---
> {control (1,4.80844e-17)} (1,4.80844e-17) {control (0.666667,4.55907e-17)}
> {control (0.333333,2.65087e-17)} (0,0) {curl 1}
2876,2877c2882,2883
< {curl 1} (0,0) {control (-0.333333,-2.77556e-17)}
< {control (-0.666667,0)} (-1,0) {control (-1,0)}
---
> {curl 1} (0,0) {control (-0.333333,-2.48011e-18)}
> {control (-0.666667,2.49366e-18)} (-1,0) {control (-1,0)}
2879,2880c2885,2886
< {control (-1,5.55112e-17)} (-1,5.55112e-17) {control (-0.666667,5.55112e-17)}
< {control (-0.333333,0)} (0,0) {curl 1}
---
> {control (-1,-4.80844e-17)} (-1,-4.80844e-17) {control (-0.666667,-4.55907e-17)}
> {control (-0.333333,-2.65087e-17)} (0,0) {curl 1}
2895,2896c2901,2902
< {control (0,0)} (0,0) {control (0.333333,2.77556e-17)}
< {control (0.666667,0)} (1,0) {control (1,0)}
---
> {control (0,0)} (0,0) {control (0.333333,2.48011e-18)}
> {control (0.666667,-2.49366e-18)} (1,0) {control (1,0)}
2898,2899c2904,2905
< {control (1,-5.55112e-17)} (1,-5.55112e-17) {control (0.666667,-5.55112e-17)}
< {control (0.333333,0)} (0,0) {control (0,0)}
---
> {control (1,4.80844e-17)} (1,4.80844e-17) {control (0.666667,4.55907e-17)}
> {control (0.333333,2.65087e-17)} (0,0) {control (0,0)}
2910,2911c2916,2917
< {control (0,0)} (0,0) {control (-0.333333,-2.77556e-17)}
< {control (-0.666667,0)} (-1,0) {control (-1,0)}
---
> {control (0,0)} (0,0) {control (-0.333333,-2.48011e-18)}
> {control (-0.666667,2.49366e-18)} (-1,0) {control (-1,0)}
2913,2914c2919,2920
< {control (-1,5.55112e-17)} (-1,5.55112e-17) {control (-0.666667,5.55112e-17)}
< {control (-0.333333,0)} (0,0) {control (0,0)}
---
> {control (-1,-4.80844e-17)} (-1,-4.80844e-17) {control (-0.666667,-4.55907e-17)}
> {control (-0.333333,-2.65087e-17)} (0,0) {control (0,0)}
2923c2929

< (0,0)--(0.5,-0.866025)--(0.5,-0.866025)--(0.5,-0.866025)--(0,0)--(0,0)--(1,0)--(1,0)--(1,-5.55112e-17)--(0,0)--(0,0)--(0.5,0.866025)--(0.5,0.866025)--(0.5,0.86
6025)--(0,0)--(0,0)--(-0.5,0.866025)--(-0.5,0.866025)--(-0.5,0.866025)--(0,0)--(0,0)--(-1,0)--(-1,0)--(-1,5.55112e-17)--(0,0)--(0,0)--(-0.5,-0.866025)--(-0.5,-0.
866025)--(-0.5,-0.866025)--(0,0)--cycle
---
> (0,0)--(0.5,-0.866025)--(0.5,-0.866025)--(0.5,-0.866025)--(0,0)--(0,0)--(1,0)--(1,0)--(1,4.80844e-17)--(0,0)--(0,0)--(0.5,0.866025)--(0.5,0.866025)--(0.5,0.866
025)--(0,0)--(0,0)--(-0.5,0.866025)--(-0.5,0.866025)--(-0.5,0.866025)--(0,0)--(0,0)--(-1,0)--(-1,0)--(-1,-4.80844e-17)--(0,0)--(0,0)--(-0.5,-0.866025)--(-0.5,-0.
866025)--(-0.5,-0.866025)--(0,0)--cycle

8002,8003c8008,8009
< (141.732,0)
< {curl 1}..{curl 1}(141.732,0)
---
> (141.732,-2.83454e-15)--(4.82941,36.683)
> {curl 1}..{curl 1}(4.82941,-36.683)--(141.732,2.83454e-15)
8007,8008c8013,8016
< (141.732,0) {curl 1}
< {curl 1} (141.732,0)
---
> (141.732,-2.83454e-15) {control (96.098,12.2277)}
> {control (50.4637,24.4553)} (4.82941,36.683) {curl 1}
> {curl 1} (4.82941,-36.683) {control (50.4637,-24.4553)}
> {control (96.098,-12.2277)} (141.732,2.83454e-15)
8012,8013c8020,8048
< {curl 1} (141.732,0) {control (141.732,0)}
< {control (141.732,0)} (141.732,0) {curl 1}
---
> {curl 1} (141.732,-2.83454e-15) {control (96.098,12.2277)}
> {control (50.4637,24.4553)} (4.82941,36.683) {curl 1}
> {curl 1} (4.82941,-36.683) {control (50.4637,-24.4553)}
> {control (96.098,-12.2277)} (141.732,2.83454e-15) {curl 1}
>
> solving section:
>
> {control (50.4637,24.4553)} (4.82941,36.683) {curl 1}
> {curl 1} (4.82941,-36.683) {control (50.4637,-24.4553)}
>
> dz:
>
> (0,-73.366)
> (0,0)
>
> d:
>
> 73.366
> 0
>
> psi:
>
> 0
> 0
>
> e:
>
> 0 * pre + 3 * piv + 3 * post = -0
> 3 * pre + 3 * piv + 0 * post = 0
8016c8051
< (141.732,0)--(141.732,0)
---
> (141.732,-2.83454e-15)--(4.82941,36.683)--(4.82941,-36.683)--(141.732,2.83454e-15)
8018,8022c8053,8057
< /usr/local/share/asymptote/plain_paths.asy: 242.3:
< /usr/local/share/asymptote/plain_paths.asy: 243.3:
< /usr/local/share/asymptote/plain_paths.asy: 244.3:
< /usr/local/share/asymptote/plain_paths.asy: 245.3:
< /usr/local/share/asymptote/plain_paths.asy: 246.3:
---
> /usr/local/texlive/2012/texmf/asymptote/plain_paths.asy: 262.3:
> /usr/local/texlive/2012/texmf/asymptote/plain_paths.asy: 263.3:
> /usr/local/texlive/2012/texmf/asymptote/plain_paths.asy: 264.3:
> /usr/local/texlive/2012/texmf/asymptote/plain_paths.asy: 265.3:
> /usr/local/texlive/2012/texmf/asymptote/plain_paths.asy: 266.3:
8024c8059
< (141.732,0)
---
> (141.732,-2.83454e-15)--(4.82941,36.683)--(4.82941,-36.683)
8029c8064,8066
< {curl 1} (141.732,0) {curl 1}
---
> {curl 1} (141.732,-2.83454e-15) {control (96.098,12.2277)}
> {control (50.4637,24.4553)} (4.82941,36.683) {control (4.82941,12.2277)}
> {control (4.82941,-12.2277)} (4.82941,-36.683) {curl 1}
8034c8071,8073
< {control (141.732,0)} (141.732,0) {control (141.732,0)}
---
> {curl 1} (141.732,-2.83454e-15) {control (96.098,12.2277)}
> {control (50.4637,24.4553)} (4.82941,36.683) {control (4.82941,12.2277)}
> {control (4.82941,-12.2277)} (4.82941,-36.683) {curl 1}
8036a8076,8100
> solving section:
>
> {control (4.82941,-12.2277)} (4.82941,-36.683) {curl 1}
> {curl 1} (141.732,-2.83454e-15) {control (96.098,12.2277)}
>
> dz:
>
> (136.903,36.683)
> (0,0)
>
> d
>
> 141.732
> 0
>
> psi:
>
> 0
> 0
>
> e:
>
> 0 * pre + 3 * piv + 3 * post = -0
> 3 * pre + 3 * piv + 0 * post = 0
>
8038c8102
< (141.732,0)--cycle
---
> (141.732,-2.83454e-15)--(4.82941,36.683)--(4.82941,-36.683)--cycle


je pense que asy -vvvv donnera tous les calculs intermédiaires mais évitera
tous les détails des fichiers.

O.G.

Re: thin() et Arrow

Posté : jeu. 13 sept. 2012, 15:11
par Fabrice
Bonjour,
Chez moi, le code compile sans problèmes (Debian Sid + Asymptote svn 2.17 + texlive 2012).