Page 1 sur 2

Bizarrerie à la sortie de l'impression.

Posté : mer. 9 mai 2012, 16:22
par Fabrice
Bonsoir,
Je ne pense pas que le problème est lié à Asymptote, mais comme la figure a été construite avec, je pose ma question sur ce forum.
Le code est le suivant :

Figure asymptote 85f7f18e64f6e07e81cc6f0c25a2e2d9
*** 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. usepackage("mathrsfs,esvect,fourier");
  3. arrowhead guillaumetellHead=HookHead(dir=10);
  4. guillaumetellHead.size=new real(pen p)
  5. {
  6. static real hcoef=5;
  7. return hcoef*arrowtexfactor*linewidth(p);
  8. };
  9. arrowbar guillaumetell=Arrow(guillaumetellHead);
  10. unitsize(1cm,1cm);
  11. real f (real x){return exp(x);}
  12. draw(graph(f,-4,5),0.8bp+black);
  13. xlimits(-5,5,Crop);
  14. ylimits(-1,4,Crop);
  15. pen ptick=gray(0.9);
  16. pen pTick=gray(0.7);
  17. pen p=fontsize(9pt);
  18. xequals(0,-1,4,0.8bp+black);
  19. yequals(0,-5,5,0.8bp+black);
  20. draw((0,0)--(1,0),linewidth(1.1bp),guillaumetell);
  21. draw((0,0)--(0,1),linewidth(1.1bp),guillaumetell);
  22. labelx("$O$",-0.2);
  23. label("$y=e^{x}$",(-2.5,f(-2.5)),2N);
  24. label("$\vv{i}$",(0.5,0),1.1*S);
  25. label("$\vv{j}$",(0,0.5),1.1*W);

Si j'imprime le document,j'obtiens une figure qui ressemble à peu de chose près à la suivante

Figure asymptote d07bab5625449dd8e52afedec6a9d500
*** 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. usepackage("mathrsfs,esvect,fourier");
  3. arrowhead guillaumetellHead=HookHead(dir=10);
  4. guillaumetellHead.size=new real(pen p)
  5. {
  6. static real hcoef=5;
  7. return hcoef*arrowtexfactor*linewidth(p);
  8. };
  9. arrowbar guillaumetell=Arrow(guillaumetellHead);
  10. unitsize(1cm,1cm);
  11. real f (real x){return exp(x);}
  12. draw(graph(f,-4,5),0.8bp+black);
  13.  
  14. draw((-4,f(-4))--(-4,f(log(4)))--(log(4),f(log(4)))); // Ligne ajoutée pour simuler le problème rencontré
  15.  
  16. xlimits(-5,5,Crop);
  17. ylimits(-1,4,Crop);
  18. pen ptick=gray(0.9);
  19. pen pTick=gray(0.7);
  20. pen p=fontsize(9pt);
  21. xequals(0,-1,4,0.8bp+black);
  22. yequals(0,-5,5,0.8bp+black);
  23. draw((0,0)--(1,0),linewidth(1.1bp),guillaumetell);
  24. draw((0,0)--(0,1),linewidth(1.1bp),guillaumetell);
  25. labelx("$O$",-0.2);
  26. label("$y=e^{x}$",(-2.5,f(-2.5)),2N);
  27. label("$\vv{i}$",(0.5,0),1.1*S);
  28. label("$\vv{j}$",(0,0.5),1.1*W);

Merci.

Re: Bizarrerie à la sortie de l'impression.

Posté : mer. 9 mai 2012, 17:43
par GM
Fabrice a écrit :Si j'imprime le document,j'obtiens une figure qui ressemble à peu de chose près à la suivante

J'ai déjà eu le problème aussi avec une figure l'année dernière... et je suis resté aussi perplexe que toi. Et j'ai zappé....

Re: Bizarrerie à la sortie de l'impression.

Posté : mer. 9 mai 2012, 17:54
par chellier
Bonsoir,

J'ai aussi eu le problème. Je l'ai résolu en changeant de lecteur pdf... mais je suis sous linux, à voir sous windows.

Christophe

Re: Bizarrerie à la sortie de l'impression.

Posté : jeu. 10 mai 2012, 04:01
par maurice
Bonsoir, j'ai eu quelquefois des soucis d'impression de ce type mais jamais avec l'imprimante installée par défaut sur mon ordi personnel.
Souvent au lycée avec des pdf à imprimer qui se trouvaient sur clé usb.
Autre problème récurrent (toujours au lycée), les grilles ne sont pas imprimées.
J'en avais conclu que les ordinateurs utilisés n'avait pas tous les drivers installés ou des choses dans ce style ...?
Du coup, j'imprime chez moi ou j'emmène mon portable au lycée (ça marche dans ce cas).

Maurice

Re: Bizarrerie à la sortie de l'impression.

Posté : jeu. 10 mai 2012, 11:25
par Fabrice
Bonjour,
J'ai zappé également !

Re: Bizarrerie à la sortie de l'impression.

Posté : jeu. 10 mai 2012, 12:42
par GM
GM a écrit :
Fabrice a écrit :Si j'imprime le document,j'obtiens une figure qui ressemble à peu de chose près à la suivante

J'ai déjà eu le problème aussi avec une figure l'année dernière... et je suis resté aussi perplexe que toi. Et j'ai zappé....

L'exemple donné par Fabrice a ce problème chez moi (sous W7) avec AdobeReaderX mais pas avec Sumatra.

Il est vrai qu'il faudrait peut-être remonter l'information... pour avoir une petite chance qu'il se règle... sous réserve que le problème soit effectivement du côté d'Asymptote, et que JCBowman retrouve un peu de disponibilité pour répondre à nos difficultés. :?

Re: Bizarrerie à la sortie de l'impression.

Posté : sam. 2 juin 2012, 17:11
par GM
GM a écrit :Il est vrai qu'il faudrait peut-être remonter l'information... pour avoir une petite chance qu'il se règle... sous réserve que le problème soit effectivement du côté d'Asymptote, et que JCBowman retrouve un peu de disponibilité pour répondre à nos difficultés. :?


En attendant, une solution :

Code : Tout sélectionner

import graph;
usepackage("mathrsfs,esvect,fourier");
arrowhead guillaumetellHead=HookHead(dir=10);
guillaumetellHead.size=new real(pen p)
{
  static real hcoef=5;
  return hcoef*arrowtexfactor*linewidth(p);
};
arrowbar guillaumetell=Arrow(guillaumetellHead);
unitsize(1cm,1cm);
real f (real x){return exp(x);}

real xmin=-4, xmax=5, ymin= -1, ymax=4;
bool3 cond(real x) { return ((f(x)>ymin)&&(f(x)<ymax)) ? true : false; }
draw(graph(f,xmin,xmax,cond),0.8bp+black);
pen ptick=gray(0.9);
pen pTick=gray(0.7);
pen p=fontsize(9pt);
xequals(0,-1,4,0.8bp+black);
yequals(0,-5,5,0.8bp+black);
draw((0,0)--(1,0),linewidth(1.1bp),guillaumetell);
draw((0,0)--(0,1),linewidth(1.1bp),guillaumetell);
labelx("$O$",-0.2);
label("$y=e^{x}$",(-2.5,f(-2.5)),2N);
label("$\vv{i}$",(0.5,0),1.1*S);
label("$\vv{j}$",(0,0.5),1.1*W);

Re: Bizarrerie à la sortie de l'impression.

Posté : sam. 2 juin 2012, 22:27
par maurice
Bonsoir,

du coup j'ai regardé la définition de graph :

Code : Tout sélectionner

guide[] graph(picture pic=currentpicture, real f(real), real a, real b,
int n=ngraph, real T(real)=identity, bool3 cond(real),
interpolate join=operator --);


La doc dit :

Returns a graph using the scaling information for picture pic of the function f on the interval [T(a),T(b)], sampling at n points evenly
spaced in [a,b], optionally restricted by the bool3 function cond on [a,b]. If cond is:
• true, the point is added to the existing guide;
• default, the point is added to a new guide;
• false, the point is omitted and a new guide is begun.



Si j'ai bien compris, la valeur de cond passe de default à true si ymin < f(x) < ymax et de default à false sinon et cela résoud le problème ... ?

Peux tu éclairer ma lanterne sur les différentes options "added to the existing guide", "added to a new guide" et " a new guide is begun".

Merci

Bruno

Re: Bizarrerie à la sortie de l'impression.

Posté : dim. 3 juin 2012, 02:18
par GM
Quand le booléen trois-état renvoie false le pair n'est pas ajouté au guide courant, ni à un nouveau guide !
Et le pair suivant, sous réserve qu'il satisfasse la condition du booléen, sera le premier pair d'un nouveau guide.

Un exemple : ceci est le tracé des courbes représentatives des fonctions f: x\mapsto x^{2} et g: x\mapsto 100-x^{2} sur l'intervalle [-15; 15],
limitées à la bande de plan d'inéquations -50<y<50 par un appel spécial de la fonction graph, avec un paramètre de type bool3.

Le nombre de points définissant les path/guide a été choisis pour n'avoir que des pairs d'abscisse entière et faciliter la compréhension de ce qui s'affiche en console.

Figure asymptote 023abd17b89b0594cf580d771e1c8f3f
*** 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(300,IgnoreAspect);
  2. import graph;
  3. real f (real x){return x^2;}
  4. real g (real x){return 100-x^2;}
  5. int xmin=-15, xmax=15, ymin= -50, ymax=50;
  6. bool3 condf(real x) { return ((f(x)>ymin)&&(f(x)<ymax)) ? true : false; }
  7. bool3 condg(real x) { return ((g(x)>ymin)&&(g(x)<ymax)) ? true : false; }
  8. guide[] Cf=graph(f,xmin,xmax,n=xmax-xmin,condf),
  9. Cg=graph(g,xmin,xmax,n=xmax-xmin,condg);
  10. draw(Cf,blue,dot());
  11. draw(Cg,red,dot());
  12. xaxis(xmin=xmin,xmax=xmax,Ticks(Step=5));
  13. yaxis(ymin=ymin,ymax=ymax,Ticks(Step=10));
  14. write("Cf=",Cf);
  15. write('\n'+"Cg=",Cg);


Cela donne cela en console :

Cf=(-7,49)
{curl 1}..{curl 1}(-6,36)
{curl 1}..{curl 1}(-5,25)
{curl 1}..{curl 1}(-4,16)
{curl 1}..{curl 1}(-3,9)
{curl 1}..{curl 1}(-2,4)
{curl 1}..{curl 1}(-1,1)
{curl 1}..{curl 1}(0,0)
{curl 1}..{curl 1}(1,1)
{curl 1}..{curl 1}(2,4)
{curl 1}..{curl 1}(3,9)
{curl 1}..{curl 1}(4,16)
{curl 1}..{curl 1}(5,25)
{curl 1}..{curl 1}(6,36)
{curl 1}..{curl 1}(7,49)

Cg=(-12,-44)
{curl 1}..{curl 1}(-11,-21)
{curl 1}..{curl 1}(-10,0)
{curl 1}..{curl 1}(-9,19)
{curl 1}..{curl 1}(-8,36)
^^(8,36)
{curl 1}..{curl 1}(9,19)
{curl 1}..{curl 1}(10,0)
{curl 1}..{curl 1}(11,-21)
{curl 1}..{curl 1}(12,-44)


Dans le premier cas, on a un guide[] de longueur 1.
Dans le second cas, on a un guide[] de longueur 2.

Re: Bizarrerie à la sortie de l'impression.

Posté : dim. 3 juin 2012, 09:25
par GM
J'ai oublié de dire que :

  • les fonctions choisies ci-dessus n'ont pas de valeurs interdites, donc il suffirait de deux états pour le booléen : un pair qui ne satisfait pas la condition n'est simplement pas tracé... et le premier pair qui suit et qui satisfait la condition débute nécessairement un nouveau guide ;
  • l'intérêt d'un booléen trois états est pour moi dans le tracé de la courbe d'une fonction ayant une valeur interdite, car il faut alors pouvoir écrire une condition de test fonctionnant ainsi :
    • si l'état est true, le pair testé est ajouté au guide courant ;
    • si l'état est default, le pair testé est le premier pair d'un nouveau guide qui devient le guide courant ;
    • si l'état est false, le pair testé n'est à ajouter à aucun guide et le prochain pair qui vérifiera la condition débutera un nouveau guide.

J'espère que j'ai été clair. :)