[Un peu résolu] Entourer un texte avec une double ellipse

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.

[Un peu résolu] Entourer un texte avec une double ellipse

Messagepar cerise » Mercredi 21 Septembre 2011, 16:57

Bonjour,

Je découvre la commande object qui permet de mettre un texte dans une boîte, par exemple :
Code: Tout sélectionner
unitsize(1cm);

object B = object("B",ellipse);
add(B);

qui donne un B entouré d'une ellipse.
J'ai vu que les formes de boîte prédéfinis étaient box, roundbox et ellipse. Y a-t-il un moyen d'avoir une double ellipse autour de mon texte ?

Cerise
Dernière édition par cerise le Jeudi 29 Septembre 2011, 16:47, édité 1 fois.
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Publicité

Re: Entourer un texte avec une double ellipse

Messagepar cerise » Jeudi 22 Septembre 2011, 08:35

Bon désolée du double post, mais je complète un peu ce que je disais.
Finalement, j'utilise plutôt la commande draw, comme ci-dessous :
Code: Tout sélectionner
unitsize(1cm);

pair zB = (0,0);
object B = draw("B",ellipse,zB);

Je n'ai toujours pas trouvé comment faire une double ellipse. Peut-on définir d'autres types d'"enveloppe" que les trois prédéfinis ? Y a-t-il une documentation plus détaillée de ces fonctions que la doc officielle ?

EDIT : Pour relier plusieurs objets définis comme ça, j'ai trouvé dans un exemple sur le site de Gaëtan, ainsi que dans un exemple sur le site officiel, une syntaxe du genre :
Code: Tout sélectionner
add(new void(picture pic, transform t) {
    draw(pic,point(B,SE,t)--point(A,NW,t));
}); 

J'ai aussi essayé d'écrire simplement une syntaxe du genre
Code: Tout sélectionner
draw(point(B,SE)--point(A,NW));

et j'ai constaté que dans le deuxième cas, cela traçait tout une droite, alors que dans le premier cas, cela traçait un segment qui s'arrête bien où on veut. Et j'avoue ne pas comprendre pourquoi ça marche. Si quelqu'un pouvait m'expliquer cette syntaxe...

(Je crois que je perds beaucoup plus de temps à essayer de faire quelque chose d'élégant et ad hoc qu'il ne m'en faudrait pour simplement faire ce que je veux "à la main", mais bon...)

EDIT 2 : bon, j'ai finalement abandonné l'idée d'utiliser ces fonctions et j'ai plutôt programmé mes propres fonctions pour faire exactement ce que je veux. Cela dit, je reste intéressée par des explications supplémentaires sur la manière dont fonctionnent les "objects" et les enveloppes...
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Re: Entourer un texte avec une double ellipse

Messagepar chellier » Jeudi 22 Septembre 2011, 20:21

Bonsoir,
On peut se référer au fichier plain_boxes.asy.
Par exemple, en modifiant ellipse de plain_boxes, on peut obtenir ceci (j'ai enlevé object pour que ça compile sur le forum) :

e69e656c6eea0dbbf22317d1b02aa1bf.png

Code: Tout sélectionner
unitsize(1cm);

path DBellipse(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
pen p=currentpen, filltype filltype=NoFill, bool above=true)
{
pair m=min(src);
pair M=max(src);
pair D=M-m;
static real factor=0.5*sqrt(2);
int sign=filltype == NoFill ? 1 : -1;
pair h=0.5*sign*(max(p)-min(p));
path g=ellipse(0.5*(M+m),factor*D.x+h.x+xmargin,factor*D.y+h.y+ymargin);
frame F;
if(above == false) {
filltype.fill(F,g,p);
filltype.fill(F,g,white);
prepend(dest,F);
} else {filltype.fill(dest,g,p);
filltype.fill(dest,g,white);}
return g;
}

pair zA=(2,2), zB=(1,1), zO=(0,0);
draw("B",DBellipse,zO,1pt+blue);
draw("DEUX",DBellipse,zB,2pt+blue);
draw("TROIS",DBellipse,zA,3pt+blue);


Pour les autres questions, je n'ai pas regardé, et je n'ai pas trop le temps en ce moment :( Quelqu'un d'autre peut-être ?
Christophe
chellier
Modérateur
 
Messages: 355
Inscription: Samedi 25 Juillet 2009, 11:25
Localisation: Le Creusot
Statut actuel: Actif et salarié | Enseignant

Re: Entourer un texte avec une double ellipse

Messagepar cerise » Vendredi 23 Septembre 2011, 10:29

Merci pour ta réponse !
Je vais regarder ton code en détail et le comparer à celui de ellipse dans le fichier plain_boxes.asy pour comprendre ce qu'il fait.

EDIT : si je comprends bien, tu traces d'abord une ellipse colorée épaisse (enfin, de l'épaisseur spécifiée en argument), par dessus laquelle tu traces une ellipse blanche plus fine (enfin de l'épaisseur par défaut) ?
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Re: Entourer un texte avec une double ellipse

Messagepar chellier » Vendredi 23 Septembre 2011, 12:08

cerise a écrit:si je comprends bien, tu traces d'abord une ellipse colorée épaisse (enfin, de l'épaisseur spécifiée en argument), par dessus laquelle tu traces une ellipse blanche plus fine (enfin de l'épaisseur par défaut) ?

C'est ça. J'ai fais ça vite juste pour montrer que l'on pouvait modifier ellipse. Après il faudrait tester davantage, voire essayer de passer la largeur de l'ellipse blanche en argument (je ne sais pas si c'est faisable facilement). Mais il y a peut-être mieux...

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

Re: Entourer un texte avec une double ellipse

Messagepar GMaths » Dimanche 25 Septembre 2011, 17:26

cerise a écrit:Pour relier plusieurs objets définis comme ça, j'ai trouvé dans un exemple sur le site de Gaëtan, ainsi que dans un exemple sur le site officiel, une syntaxe du genre :
Code: Tout sélectionner
add(new void(picture pic, transform t) {
    draw(pic,point(B,SE,t)--point(A,NW,t));
}); 


Il y a beaucoup d'objets à relier ? Tous de même forme ? Dans quel but ?
Je demande cela... car, par exemple, pour quelque chose qui ressemble à un graphe (qui pourrait ressembler à celui-ci, mais d'autres mises en forme sont possibles), il y aurait éventuellement une autre façon.

2011-09-25_182405.png
2011-09-25_182405.png (24.4 Kio) Vu 913 fois
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Entourer un texte avec une double ellipse

Messagepar cerise » Lundi 26 Septembre 2011, 14:50

Bonjour !

Comme je le disais dans un précédent message, je me suis programmé des petites macros pour faire exactement ce que je voulais. Donc, dans l'immédiat, j'ai résolu mon problème, et les feuilles de TD sont imprimées. (Là c'était pour dessiner des arbres binaires pas trop gros, en l'occurrence.)

Mais à l'avenir, je pourrais avoir besoin de dessiner des graphes ou d'autres arbres, et ta solution m'intéresse !
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Re: Entourer un texte avec une double ellipse

Messagepar cerise » Jeudi 29 Septembre 2011, 16:46

Désolée du double-post, mais je voulais te signaler, Gaëtan, que j'ai justement eu l'occasion d'utiliser ton package pour dessiner des graphes pour faire mon TD suivant, et je voulais te remercier pour ton beau boulot ! Ça m'a été très utile.
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Re: Entourer un texte avec une double ellipse

Messagepar GMaths » Jeudi 29 Septembre 2011, 23:34

cerise a écrit:je voulais te signaler, Gaëtan, que j'ai justement eu l'occasion d'utiliser ton package pour dessiner des graphes pour faire mon TD suivant, et je voulais te remercier pour ton beau boulot ! Ça m'a été très utile.

Il n'y a pas de quoi mais je me pose une question : tu es sûre de parler du mien de package ? :mrgreen:

Je dis cela car j'ai dû mettre à un moment donné un lien vers un début de doc sur le package, avec très peu d'exemples... donc il faut être doué(e) pour l'avoir trouvé et avoir compris son fonctionnement. :mrgreen:
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Un peu résolu] Entourer un texte avec une double ellips

Messagepar cerise » Vendredi 30 Septembre 2011, 13:17

On parle bien de ça ?
asymptote-f34/extension-sur-les-graphes-t12231.html

Si je comprends bien ton message, c'est bien toi qui a écrit ce package ? C'est bien celui-ci que j'ai utilisé, pour produire le dessin ci-dessous, que l'un des premiers exemples de la doc permet de réaliser sans trop de problème.
Fichiers joints
TD4-1.pdf
(6.41 Kio) Téléchargé 81 fois
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié

Re: [Un peu résolu] Entourer un texte avec une double ellips

Messagepar GMaths » Samedi 01 Octobre 2011, 08:32

cerise a écrit:On parle bien de ça ?
asymptote-f34/extension-sur-les-graphes-t12231.html

Si je comprends bien ton message, c'est bien toi qui a écrit ce package ?


oui et oui. :-)

J'avais oublié que j'avais osé créer un sujet à son propos... alors que sa documentation est si pauvre.

cerise a écrit:C'est bien celui-ci que j'ai utilisé, pour produire le dessin ci-dessous, que l'un des premiers exemples de la doc permet de réaliser sans trop de problème.

Alors tant mieux.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: [Un peu résolu] Entourer un texte avec une double ellips

Messagepar cerise » Samedi 01 Octobre 2011, 15:58

GMaths a écrit:J'avais oublié que j'avais osé créer un sujet à son propos... alors que sa documentation est si pauvre.

Eh bien tu as bien fait d'oser ;)
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry
cerise
Méga-utilisateur
 
Messages: 448
Inscription: Mercredi 08 Juin 2005, 17:03
Statut actuel: Actif et salarié


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é