Commande dot (FillDraw) et épaisseur de trait

Tout ce qui concerne le langage Asymptote. Ce langage est supporté sur le forum via les balises asy.

Modérateur : gdm_asy

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.
cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03

Commande dot (FillDraw) et épaisseur de trait

Message par cerise »

Bonjour,

Dans un document, je marque des points à l'aide d'un petit cercle blanc entouré d'un trait noir. J'utilise pour cela la commande :

Code : Tout sélectionner

dot((0,0),filltype=FillDraw(white,black));
J'obtiens quelque chose de bien, mais j'aimerais que l'épaisseur du trait noir autour du point soit un peu plus fine. J'ai essayé des commandes du style :

Code : Tout sélectionner

dot((0,0),filltype=FillDraw(white,black+0.1bp));
en essayant également d'autres valeurs à la place de 0.1bp, ça compile mais ça ne modifie absolument pas la taille du trait. J'ai également essayé des choses du genre

Code : Tout sélectionner

dot((0,0),filltype=FillDraw(white+2bp,black));
sans plus de succès.

Quelqu'un sait-il comment faire ?

EDIT : je me rends compte qu'en réalité, je n'arrive pas non plus à changer la couleur : si je mets

Code : Tout sélectionner

dot((0,0),filltype=FillDraw(white,blue));
ou même

Code : Tout sélectionner

dot((0,0),filltype=FillDraw(white,drawpen=blue));
le point est toujours cerclé de noir...
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry

GMaths
Utilisateur chevronné
Utilisateur chevronné
Messages : 2031
Inscription : lundi 01 octobre 2007, 10:20

Re: dot "FillDraw" et épaisseur de trait

Message par GMaths »

Bonjour,
cerise a écrit :je marque des points à l'aide d'un petit cercle blanc entouré d'un trait noir.
Je ne suis pas chez moi, pour tester...

... mais je suggère une autre piste, qui peut être permettre la même chose : la définition d'un "marker".

Une autre utilisation de "marker".

maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: dot "FillDraw" et épaisseur de trait

Message par maurice »

Bonjour, quelques exemples :

Code : Tout sélectionner

unitsize(0.5cm);

dot((0,0));
dot((0,-1), NoFill);
dot((1,0), UnFill);
dot((1,-1), red, UnFill);
dot((2,0), Fill(blue));
dot((2,-1), red, Fill(blue));
dot((3,0), FillDraw(blue, 0.75bp+red));
dot((3,-1),blue, FillDraw(red));
Capture.png
Quant à l'épaisseur des traits ?...

Maurice
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf

maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: dot "FillDraw" et épaisseur de trait

Message par maurice »

Dans l'idée de Gaétan, il a peut être un exemple qui peut intéresser sur le site de Philippe Ivaldi :

Code : Tout sélectionner

import graph_pi;
unitsize(x=3cm,y=3cm);
// All marks will have this size. Default=sqrt(2)*dotsize(currentpen);
graphmarksize=4mm;

real f(real x){return sin(x);};
path Cf=graph(f, .5, 2);
transform T=shift((0,-.5));
// ---------------------------------
// * definition of ArcMarkerExtrem *
// marker ArcMarkerExtrem(real radius=graphmarksize(), real angle=180,
//                        bool begin=true, bool end=true,
//                        pen p=currentpen, bool put=Above)

draw(Cf, ArcMarkerExtrem());
draw(T*Cf, red, ArcMarkerExtrem(angle=270, begin=false));
draw(T^2*Cf, blue, ArcMarkerExtrem(radius=-graphmarksize, blue));

// ----------------------------------
// * Definition of Hookmarkerextrem *
// marker HookMarkerExtrem(real height=graphmarksize(), real width=height/2,
//                         bool begin=true, bool end=true,
//                         pen p=currentpen, bool put=Above)

draw(T^3*Cf,HookMarkerExtrem);//Without brackets values returns to default
draw(T^4*Cf, green, HookMarkerExtrem(height=2*graphmarksize, width=-graphmarksize*2,green));

// ------------------------------------
// * Definition of CircleMarkerExtrem *
// marker CircleMarkerExtrem(real radius=graphmarksize(), real angle=90,
//                           bool begin=true, bool end=true,
//                           pen p=currentpen, filltype filltype=NoFill,
//                           bool put=Above)

draw(T^5*Cf, green, CircleMarkerExtrem(green));
draw(T^6*Cf, green+blue, CircleMarkerExtrem(radius=graphmarksize,filltype=FillDraw(blue),p=2mm+green+blue));
Maurice
Dernière modification par MB le samedi 30 mai 2020, 11:45, modifié 1 fois.
Raison : Le module graph_pi n'est plus supporté par la nouvelle version du forum.
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf

cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03

Re: dot "FillDraw" et épaisseur de trait

Message par cerise »

Bonjour,

Merci beaucoup pour les exemples qui règlent le problème des couleurs.

Les marqueurs me conviennent moins car mes points sont isolés et ne sont pas des extrémités de segments.
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry

maurice
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 399
Inscription : jeudi 25 mars 2010, 13:49

Re: dot "FillDraw" et épaisseur de trait

Message par maurice »

Bonjour, toujours dans la même idée ...
{}
Tu peux dessiner ton propre point, et le placer où tu veux.

Maurice
Asymptote :
----> Démarrage rapide : http://cgmaths.fr/Atelier/Asymptote/Asymptote.html
----> Documentation 3D : http://www.mathco.tuxfamily.org et si ça ne marche pas, essayez la version pdf

cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03

Re: dot "FillDraw" et épaisseur de trait

Message par cerise »

Bonjour,

Merci pour la proposition. Bien sûr, je sais que je peux dessiner les points moi-même. Mais, ne voulant pas réinventer la roue, je voulais savoir si l'on pouvait changer directement l'épaisseur du trait avec dot.
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry

chellier
Modérateur
Modérateur
Messages : 355
Inscription : samedi 25 juillet 2009, 12:25
Localisation : Le Creusot

Re: dot "FillDraw" et épaisseur de trait

Message par chellier »

Bonsoir,

Une solution (qui ne présente pas que des avantages...) est d'utiliser le stylo "invisible" afin de cacher le tracé du point et de n'utiliser que FillDraw pour le dessiner :

Code : Tout sélectionner

unitsize(0.5cm);

dot((0,0));
dot((1,0), UnFill);
dot((2,0), invisible, FillDraw(white,.1bp+red));
dot((3,0), invisible, FillDraw(fillpen=green,drawpen=.1bp+blue));

shipout(bbox(1mm,invisible));
dots.png
Christophe
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.

cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03

Re: dot "FillDraw" et épaisseur de trait

Message par cerise »

Merci pour cette proposition ! Je teste ça.
chellier a écrit :Une solution (qui ne présente pas que des avantages...)
Quels sont les inconvénients ?
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry

chellier
Modérateur
Modérateur
Messages : 355
Inscription : samedi 25 juillet 2009, 12:25
Localisation : Le Creusot

Re: dot "FillDraw" et épaisseur de trait

Message par chellier »

Il y a des inconvénients pour les labels par exemple qui seront invisibles ($C$), mais ça peut se contourner ($D$) :
{}
Christophe

cerise
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 447
Inscription : mercredi 08 juin 2005, 18:03

Re: dot "FillDraw" et épaisseur de trait

Message par cerise »

D'accord.

Si c'est le seul inconvénient, ça ne me dérange pas pour ce que je suis en train de faire, car je n'ai pas besoin de labels sur mes points. Mais, je retiens ce souci pour une éventuelle prochaine fois.

Encore merci !
Il fallait être Newton pour apercevoir que la Lune tombe quand tout le monde voit bien qu'elle ne tombe pas.
Paul Valéry