Tracer une courbe

Tout ce qui concerne le langage Asymptote. Ce langage est utilisable sur le forum via les balises asy.
[participation réservée aux membres inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: tracer courbe

Message non lu par GMaths »

fadila a écrit :J'ai téléchargé le version 2.15 et ça a l'air de marcher.
Tant mieux, tant mieux... même si notre curiosité de savoir "pourquoi" ne sera pas satisfaite (car le code proposé n'a rien d'extravagant donc cela aurait dû fonctionner avec la 2.02).
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: tracer courbe

Message non lu par OG »

J'ai jeté un oeil au code de graph_pi. Il y a au moins deux pbs

1) xmin=infinity n'a pas de sens. Plutôt xmin=-infinity
2) au niveau de la boucle en j puis i qui trace, on part systématiquement de l'origine. D'où le pb
si le crop ne correspond pas à xmin, xmax, ymin, ymax

Rapidos un code qui ne marche certainement pas dans tous les cas.

Code : Tout sélectionner

picture millimeterpaper(picture pic=currentpicture, pair O=(0,0),
                        real xmin=-infinity, real xmax=infinity,
                        real ymin=-infinity, real ymax=infinity,
                        pen p=.5bp+orange)
{
  picture opic;
  real
    cofx = pic.xunitsize/cm,
    cofy = pic.yunitsize/cm;
  real
    xmin = (xmin == -infinity) ? pic.userMin().x*cofx : xmin*cofx,
    xmax = (xmax == infinity) ? pic.userMax().x*cofx : xmax*cofx,
    ymin = (ymin == -infinity) ? pic.userMin().y*cofy : ymin*cofy,
    ymax = (ymax == infinity) ? pic.userMax().y*cofy : ymax*cofy;
  path
    ph = (xmin*cm, 0)--(xmax*cm, 0),
    pv = (0, ymin*cm)--(0, ymax*cm);
  real [] step={5, 1, .5, .1};
  pen [] p_={ p, scale(.7)*p, scale(.4)*p, scale(.2)*p};
  //  dot(opic,O,4bp+red);
  pair Oog=(floor(xmin+(xmax-xmin)/2),floor(ymin+(ymax-ymin)/2));
 //  write(Oog);
  // write(xmin);write(xmax);
  for (int j=0; j<4; ++j)
    {
      for (real i=Oog.y; i <= ymax; i += step[j]) {
        draw(opic, shift(0, i*cm) * ph, p_[j]);
          }
      for (real i=Oog.y; i >= ymin ; i -= step[j]) {
        draw(opic, shift(0, i*cm) * ph, p_[j]);
       }
      for (real i=Oog.x; i <= xmax; i += step[j]) {
        draw(opic, shift(i*cm, 0) * pv, p_[j]);
      }
      for (real i=Oog.x; i >= xmin; i -= step[j]) {
        draw(opic, shift(i*cm, 0) * pv, p_[j]);
       }
    }

  return opic;
}
Il faudrait tester sur plusieurs (>> 1) exemples et voir avec Philippe.

O.G.
fadila

Re: tracer courbe

Message non lu par fadila »

Rebonjour
Je suis moi aussi à moitié satisfait n'ayant pu déterminer l'origine du problème. Cependant comme ces jours prochains j'ai beaucoup de travail, je me contente provisoirement de cette solution. Cependant comme j'ai toujours la version 2.02 je referai les tests ultérieurement et ne manquerai pas de vous tenir au courant (Je me suis contenté de télécharger 2.15 dans un répertoire et je travaille dans ce même répertoire).
A plus tard et merci encore
P.S Merci Guiguiche de ton autorisation pour les pièces jointes
GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2042
Inscription : lundi 01 octobre 2007, 10:20

Re: tracer courbe

Message non lu par GMaths »

OG a écrit :2) au niveau de la boucle en j puis i qui trace, on part systématiquement de l'origine. D'où le pb
Je sais : j'en étais arrivé à la même conclusion que toi.
Et comme, il faut au moins revoir toute cette partie... je me suis contenté d'attirer l'attention de Philippe sur le malaise
(pour ceux qui aimeraient utiliser graph_pi), comme il avait demandé de le faire.
OG
Modérateur spécialisé
Modérateur spécialisé
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: tracer courbe

Message non lu par OG »

GMaths a écrit :
OG a écrit :2) au niveau de la boucle en j puis i qui trace, on part systématiquement de l'origine. D'où le pb
Je sais : j'en étais arrivé à la même conclusion que toi.
Et comme, il faut au moins revoir toute cette partie... je me suis contenté d'attirer l'attention de Philippe sur le malaise
(pour ceux qui aimeraient utiliser graph_pi), comme il avait demandé de le faire.
ok, c'est normal.
Comme Philippe est certainement très très occupé si en plus on fournit une solution c'est encore mieux non ?
Faire une boucle de xmin à xmax ne fonctionne pas dans tous les cas (il faut partir d'un trait épais).

à tester donc.

O.G.