[Résolu] Récupérer les arguments de size

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.

[Résolu] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 10:06

Bonjour,
Voila mon problème, je voudrais tracer un segment de taille invariable, c'est à dire qui ne dépende pas des arguments de size, à la manière des graduations des axes.
J'ai bien trouvé une variable Ticksize, mais en dehors de certaines fonctions, ça ne va pas...
J'ai aussi essayé des choses comme pic.trucbidule (mais surement pas avec le bon trucbidule) pour essayer de récupérer les arguments de size.
Mais sans succès non plus....

Christophe
Dernière édition par chellier le Mardi 16 Février 2010, 15:17, édité 1 fois.
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 12:07

Ne te suffit-il pas d'utiliser unitsize au lieu de size ? :roll:
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 12:35

GMaths a écrit:Ne te suffit-il pas d'utiliser unitsize au lieu de size ? :roll:

Je pensais à "travailler" avec un unitsize pour toute la figure...

... mais sinon, je te propose cela aussi :

Code: Tout sélectionner
size(6cm);
draw(unitsquare);

picture pic; unitsize(pic,1cm);
draw(pic,(0,1)--(5,1),red);
add(pic.fit());

Tu peux changer le size(6cm); en size(10cm); et tu devrais constater que le trait rouge va garder sa longueur de 5x1cm.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 12:55

Avec unitsize(1cm), j'obtiens par exemple ce type de figure :
Image

je réduis les borne et utilise size(6cm) :
Image

j'applique un coef et j'obtiens ce que je veux :
Image

Si je réduis les bornes avec unitsize, je ne vois rien.
Avec le coef, je m'en sort, c'était juste pour savoir si je pouvais faire autrement...

Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 13:00

Oups, pas vu ton message GMaths, je teste dès que je peux
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 13:13

chellier a écrit:Si je réduis les bornes avec unitsize, je ne vois rien.
Avec le coef, je m'en sors, c'était juste pour savoir si je pouvais faire autrement...


Dans ta définition de sol2onaxis, tu as :
Code: Tout sélectionner
real xMin=min(sol1,sol2)-2.5, real xMax=max(sol1,sol2)+2.5,

avec tes 2.5 qui ne tiennent pas compte de la différence (sol2-sol1), tu auras forcément des problèmes si sol1 et sol2 sont proches et d'autant plus si tu utilises size.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 13:21

Peut-être une source d'inspiration pour tes problèmes de taille : tu pourras constater que tu peux changer la ligne

Code: Tout sélectionner
point A=(8,37),B=(10,57.5);

par la ligne
Code: Tout sélectionner
point A=(8,37),B=(8.2,57.5);

et la figure va garder sa lisibilité.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar OG » Lundi 15 Février 2010, 14:03

Bonjour

Intéressant tout cela. Dans un fil Asymptote qui n'a rien à voir (pour ne pas proposer une solution asymptote
dans un fil Tikz), j'avais copié arrow pour faire une délimitation d'intervalle.
Je n'ai pas vérifié mais cela doit se comporter comme la graduation des axes.
C'était ici
latex-f6/lien-coord-image-et-coord-script-t10046.html#p97605

Cela pourra peut-être t'inspirer ?

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 14:21

@ GMaths : Bon, j'ai essayé tout ça, mais en voulant garder l'option de choisir les abscisses mini et maxi (pour pouvoir rajouter des choses sur l'axe), je n'arrive pas vraiment à ce que je veux.
Je crois que je vais m'en tenir pour l'instant au coefficient, ce qui me paraît le plus souple...

En tous les cas, merci pour l'aide ! :D

Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 14:30

@ OG : J'essaye de comprendre l'exemple, mais va me falloir un peu de temps... :oops:

Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 17:36

chellier a écrit:@ GMaths : Bon, j'ai essayé tout ça, mais en voulant garder l'option de choisir les abscisses mini et maxi (pour pouvoir rajouter des choses sur l'axe), je n'arrive pas vraiment à ce que je veux.

Tu n'as pas dû tout essayer. Tu peux changer la valeur de sol2 dans l'exemple qui suit... et tu verras que la figure est satisfaisante.

Code: Tout sélectionner
size(5cm,3cm,false);

real sol1=0, sol2=2.3;

real dx=1.5*(sol2-sol1);
pair ptX1=(sol1-dx,0),
     ptX2=(sol2+dx,0);

draw(ptX1--ptX2,.7bp+black);
dot("sol1",(sol1,0),S,2bp+red);
dot("sol2",(sol2,0),S,2bp+red);




__________________________

Dans ton code, mets par défaut, si sol1<sol2, quelque chose du genre :
xmin=sol1-1.5*(sol2-sol1)
xmax=sol2+1.5*(sol2-sol1)
... et cela devrait aller.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 19:18

Oui, tant qu'on reste sur l'axe des abscisses... Mon problème est la taille du crochet (en particulier suivant les ordonnées). Je voudrais que cette taille, ne dépende pas d'unitsize ou de size. Et surtout, je veux pouvoir rentrer les abscisses mini et maxi en argument dans la fonction, pour pouvoir, par exemple, avoir un axe plus grand sur lequel placer d'autres choses.

Sinon, j'obtiens ça avec xMin=sol1-1.5*(sol2-sol1) et xMax=sol2+1.5*(sol2-sol1)
Image

Je ne suis peut-être pas très clair sur ce que je veux, je suis désolé, merci en tous cas de te pencher sur mon problème :)
La solution d'OG à l'air de faire ce que je veux, il me reste à comprendre le code...
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 20:17

chellier a écrit:Mon problème est la taille du crochet (en particulier suivant les ordonnées).

Il faut évidemment revoir ta façon de définir la taille des crochets.

Si, par exemple, tu définis :

Code: Tout sélectionner
real d=abs(sol2-sol1);


tes différentes longueurs doivent être proportionnelles à d.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 20:37

Exemple : avec le code suivant :

Code: Tout sélectionner
size(7cm,0);

real sol1=0,
     sol2=3,
     xmi=min(sol1,sol2),
     xma=max(sol1,sol2),
     d=abs(sol2-sol1); // distance entre les deux solutions

real m=1.5d, // distance avant la première solution et après la seconde
     hcro=.4*d, // hauteur crochet / 2
     lcro=.1*d; // largeur crochet
     
draw((xmi-m,0)--(xma+m,0),red);

draw((xmi-lcro,hcro)--(xmi,hcro)--(xmi,-hcro)--(xmi-lcro,-hcro),blue);
draw((xma+lcro,hcro)--(xma,hcro)--(xma,-hcro)--(xma+lcro,-hcro),green);

label(format("%f",xmi),(xmi,hcro),N);
label(format("%f",xma),(xma,hcro),N);

shipout(bbox(1mm,invisible));


tu vas obtenir ceci :

2010-02-15_203503.png
2010-02-15_203503.png (1.51 Kio) Vu 1207 fois


et tu peux changer les valeurs de sol1 et sol2, cela va toujours garder les proportions choisies.

PS : j'ai gardé tes notations sol1, sol2... mais si je devais l'écrire moi-même, je choisirais plutôt : val1 et val2 (val pour valeur qui me semble un mot plus adapté).
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Lundi 15 Février 2010, 21:46

Merci, ces exemples sont très intéressants, mais je suis un pénible :twisted: :
La taille du crochet dépend encore de deux paramètres : sol1 et sol 2. Si je change size(7cm,0) en unitsize(1cm), la taille du crochet change. Or j'aimerais qu'elle ne dépende d'aucun paramètre (notamment pour ma fonction solonaxis() avec un seul crochet, pour ceux qui ne suivent pas c'est ). C'est bien ce qui se passe pour les graduations ou pour les flèches...
Je pensais qu'il y avait une solution "simple", ce n'est apparemment pas le cas :shock:

PS: Dans l'esprit de ce que j'ai fait, l'intervalle [a;b] est l'ensemble des réels x solutions des deux inégalités : x≥a et x≤b.
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Lundi 15 Février 2010, 22:06

J'ai mis un exemple en ligne de ce que propose O.G. : lien mort

Un exemple d'application ici : lien mort

Comme il le disait dans l'autre sujet, il s'agirait d'ajouter la possibilité de tourner les crochets et donc de revoir probablement les appellations.




PS : Olivier, je modifie le fichier OG.asy donné en lien... à ta demande, comme tu voudras.
Dernière édition par GMaths le Jeudi 26 Août 2010, 08:24, édité 1 fois.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar OG » Lundi 15 Février 2010, 22:16

J'étais en train de regarder les codes et j'allais écrire
@Gaëtan : qu'attends-tu pour le deferred drawing ?

Pour le code proposé, pas de pb tu fais ce que tu veux. De toute façon
je m'étais borné à copier les définitions d'Arrow.

O.G.
OG
Modérateur
 
Messages: 2285
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Mardi 16 Février 2010, 07:56

OG a écrit:@Gaëtan : qu'attends-tu pour le deferred drawing ?
D'avoir du temps (une journée à rien faire - car pour l'instant, je me contente de choses qui me prennent 5 minutes pendant mes pauses de bricolage ou de copies) et d'en comprendre toutes les subtilités. :lol:

Et puis, je ne cesse d'en faire... dès lors où je mets une figure avec size(...), il y en a... si j'ai bien compris ! :mrgreen:
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar chellier » Mardi 16 Février 2010, 10:59

Très bien très bien tout ça ! :)
Il y a juste un inconvénient, c'est que le crochet se trouve sur un path.
J'ai essayé de bricoler ça :
Code: Tout sélectionner
void bracket(picture pic, pair a, pair d, real s,pen p=currentpen)
{
  picture opic;
  pair ortd=s*(-d.y,d.x);
  Draw(opic,(ortd-.5d)--(-0.5d)--0.5d--(.5d+ortd),p+solid);
  add(pic,opic,a);
}

arrowbar lBra(real size=0, real ratiob=.3)
{
  return new bool(picture pic, path g, pen p, margin margin) {
    real size=size == 0 ? barsize(p) : size;
    bracket(pic,point(g,0),size*dir(g,0)*I,ratiob,p);
    return true;
  };
}
arrowbar rBra(real size=0, real ratiob=.3)
{
  return new bool(picture pic, path g, pen p, margin margin) {
    real size=size == 0 ? barsize(p) : size;
    bracket(pic,point(g,0),size*dir(g,0)*I,-ratiob,p);
    return true;
  };
}
arrowbar lBra=lBra();
arrowbar rBra=rBra();

import graph;

size(5cm,0);

xlimits(min=-3,max=4);
xaxis(Label("$x$",align=N),Ticks(),Arrow);
draw((0,0)--(.00001,0),bp+blue,lBra);
draw((1,0)--(1.00001,0),bp+darkgreen,rBra);

shipout(bbox(5mm,invisible));


Par contre, j'ai plus les graduations :shock:

Sinon, je suis tombé là-dessus. Mais j'ai mal à la tête... Je crois que je vais profiter un peu de mes vacances maintenant :D

Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: [Asymptote] Récupérer les arguments de size

Messagepar GMaths » Mardi 16 Février 2010, 12:33

chellier a écrit:Il y a juste un inconvénient, c'est que le crochet se trouve sur un path.

:shock: :shock:
C'est justement l'avantage !! tracer des path/segments correspondant aux intervalles de solutions.

Et, puis en revoyant ce que proposait Olivier initialement, on peut gérer la couleur des crochets et tu peux mettre le chemin en couleur "invisible" si tu préfères.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Suivante

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é