Tracer une courbe

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.

Re: tracer courbe

Messagepar GMaths » Mercredi 16 Mai 2012, 13:39

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

Publicité

Re: tracer courbe

Messagepar OG » Mercredi 16 Mai 2012, 14:35

GMaths a écrit:
OG a écrit:
GMaths a écrit:J'ai oublié de dire que je suis tenté de déconseiller, pour l'instant, graph_pi pour ce genre de chose, tant que Philippe ne trouvera pas le temps de jeter un oeil au problème des repères particuliers pour lesquels xmin>0 et/ou ymin>0.


Quels sont les pbs ?


1. Teste ce que donne ceci avec la dernière version de graph_pi de la semaine dernière : tu verras qu'il y a des lignes en trop.

06614122757e9191b630ad21c7320c33.png

Code: Tout sélectionner
import graph_pi;
real xmin=2, xmax=3,
ymin=-1.5, ymax=1.5,
margeX=.1, margeY=margeX;
graphicrules(xunit=5cm, yunit=.5cm,
xmin=xmin-margeX, xmax=xmax+margeX,
ymin=ymin-margeY, ymax=ymax+margeY,
xcrop=true);
add(millimeterpaper(xmin=xmin, xmax=xmax,
ymin=ymin, ymax=ymax,
p=1bp+orange),
(0,0));
cartesianaxis(Lx=Label("$x$",align=2N),
xmin=xmin-margeX, xmax=xmax+margeX,
extrawidth=0,
xticks=Ticks(Step=.5, step=.1),
viewyaxis=false );

2. L'exemple demandé par fadila... avec un démarrage à 1000 de l'axe des ordonnées... me semble poser problème pour graph_pi. Mais il est vrai que je l'ai vite zappé... dès que j'ai eu l'impression que j'allais retomber dans une galère rencontrée pour la fonction millimeterpaper dans l'exemple précédent.



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.
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: tracer courbe

Messagepar fadila » Mercredi 16 Mai 2012, 14:49

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
fadila
Kilo-utilisateur
 
Messages: 213
Inscription: Samedi 12 Août 2006, 09:02
Localisation: Nantes

Re: tracer courbe

Messagepar GMaths » Mercredi 16 Mai 2012, 16:04

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

Re: tracer courbe

Messagepar OG » Mercredi 16 Mai 2012, 20:45

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.
OG
Modérateur
 
Messages: 2279
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Précédente

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é