Ajouter un espace entre le remplissage et le bord

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.

Ajouter un espace entre le remplissage et le bord

Messagepar sarmin » Vendredi 01 Juillet 2011, 14:53

Hello :)

Voilà je viens (ce matin !) de me lancer dans la découverte d'asymptote : ca semble vraiment puissant.

Néanmoins je cherche à faire quelque chose de précis et j'ai pas trouvé d'aide dans la doc (enfin je l'ai surement loupé, c'est qu'elle est un peu ... hardcore à lire cette doc. ET Dieu ne m'a pas aidé :'( ) : je cherche à ajouter un petit espace entre le bord (le contour) d'un rectangle et le remplissage (des hachures) afin de distinguer les différents bord. Une image valant mieux qu'un long discours : j'ai ceci

Image

dont le code est
Code: Tout sélectionner
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage{asymptote}
\begin{document}
\begin{figure}[h]
 \begin{asy}
 // Variables
 import patterns;
 unitsize(1inch);
 pair A=(0,0),B=(2,0),C=(2,1),D=(0,1);
 path rect=A--B--C--D--cycle;
 // Dessin
 draw(A--B);
 draw(C--D);
 draw(B--C,dashed);
 draw(D--A,dashed);
 add("hachure",hatch(1.2mm,NE,.3mm+black));
 fill(rect,pattern("hachure"));
\end{asy}
\end{figure}
\end{document}


Je veux donc simplement ajouter du blanc entre les hachures et le bord noir plein/pointillé ; une idée ?

Merci d'avance !
sarmin
Kilo-utilisateur
 
Messages: 153
Inscription: Mercredi 17 Mars 2010, 14:43
Localisation: Bruxelles, Belgique
Statut actuel: Post-bac | Ecole d'ingénieur

Publicité

Re: Ajouter un espace entre le remplissage et le bord

Messagepar maurice » Vendredi 01 Juillet 2011, 16:10

Bonjour, je ne suis pas sur d'avoir bien compris :

0ed12cc53fdcddac4ef9fd6ba16d74b6.png

Code: Tout sélectionner
// Variables
import patterns;
unitsize(1inch);
pair A=(0,0),B=(2,0),C=(2,1),D=(0,1);
path rect=A--B--C--D--cycle;
// Dessin
draw(A--B);
draw(C--D);
draw(B--C,dashed);
draw(D--A,dashed);
add("hachure",hatch(1.2mm,NE,.3mm+black));
fill(rect,pattern("hachure"));
shipout(bbox(5mm));


ou

8ba2b7938377c8a8ad1fc06e7e513417.png

Code: Tout sélectionner
// Variables
import patterns;
unitsize(1inch);
pair A=(-1,-0.5),B=(1,-0.5),C=(1,0.5),D=(-1,0.5);
path rect=A--B--C--D--cycle;
// Dessin
draw(A--B);
draw(C--D);
draw(B--C,dashed);
draw(D--A,dashed);
add("hachure",hatch(1.2mm,NE,.3mm+black));
fill(scale(0.95)*rect,pattern("hachure"));


Pour des documents plus abordables, pour commencer le démarrage rapide de Christophe (voir lien en dessous) ou les sites de Gaétan Marris et de Philippe Ivaldi sont très bien.

maurice
Dernière édition par maurice le Vendredi 01 Juillet 2011, 17:10, édité 1 fois.
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
Méga-utilisateur
 
Messages: 399
Inscription: Jeudi 25 Mars 2010, 13:49
Statut actuel: Actif et salarié | Enseignant

Re: Ajouter un espace entre le remplissage et le bord

Messagepar chellier » Vendredi 01 Juillet 2011, 16:50

Pour compléter la réponse de maurice sur bbox, on peut préciser plusieurs arguments :
Code: Tout sélectionner
frame bbox(picture pic=currentpicture,
           real xmargin=0, real ymargin=xmargin,
           pen p=currentpen, filltype filltype=NoFill)


8b6861dcb8ab54bd378af36d2ccc3bd7.png

Code: Tout sélectionner
import patterns;
unitsize(1inch);
pair A=(0,0),B=(2,0),C=(2,1),D=(0,1);
path rect=A--B--C--D--cycle;
// Dessin
draw(A--B);
draw(C--D);
draw(B--C,dashed);
draw(D--A,dashed);
add("hachure",hatch(1.2mm,NE,.3mm+black));
fill(rect,pattern("hachure"));
shipout(bbox(1cm,5mm,invisible,Fill(yellow))); //invisible pour ne pas avoir de cadre


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

Re: Ajouter un espace entre le remplissage et le bord

Messagepar sarmin » Vendredi 01 Juillet 2011, 17:45

Merci beaucoup à vous deux. Le second résultat de maurice est parfait :D Et merci pour les liens ca me semble fort interessant (j'avais déjà remarqué la doc 3D :wink: )
sarmin
Kilo-utilisateur
 
Messages: 153
Inscription: Mercredi 17 Mars 2010, 14:43
Localisation: Bruxelles, Belgique
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Ajouter un espace entre le remplissage et le bord

Messagepar sarmin » Vendredi 01 Juillet 2011, 21:22

Je me permet un petit up sur le même sujet : ca va peut être vous sembler "futile" comme détail, mais bon : pourquoi sur le second résultat de maurice le blanc est plus fin en haut que sur les côtés ?

Le code est donc

fa6b8e7a523ad1ad1f51178273bb345c.png

Code: Tout sélectionner
// Variables
import patterns;
unitsize(1inch);
pair A=(-1,-0.5),B=(1,-0.5),C=(1,0.5),D=(-1,0.5);
path rect=A--B--C--D--cycle;
// Dessin
draw(A--B);
draw(C--D);
draw(B--C,dashed);
draw(D--A,dashed);
add("hachure",hatch(1.2mm,NE,.3mm+black));
fill(scale(0.95)*rect,pattern("hachure"));
sarmin
Kilo-utilisateur
 
Messages: 153
Inscription: Mercredi 17 Mars 2010, 14:43
Localisation: Bruxelles, Belgique
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Ajouter un espace entre le remplissage et le bord

Messagepar chellier » Vendredi 01 Juillet 2011, 21:29

Je tente. Le coefficient de réduction est 0,95, la largeur est plus petite que la longueur (oui, je sais :roll: ), donc l'espace en haut et en bas est plus petit.

C'est pas plus simple avec shipout(bbox(...)) ?

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

Re: Ajouter un espace entre le remplissage et le bord

Messagepar sarmin » Vendredi 01 Juillet 2011, 21:42

Bien vu pour le coef ca doit venir de là. On ne sais pas par hasard donner des longeurs absolues en moins ou un truc du style ?

Sinon pour shippout je ne vois pas bien comment l'utiliser ; on sait faire des bordures de styles différents ?

Enfin je pense qu'il y a moyen de contourner le problème en faisant un autre rectangle par dessus (et en virant les bordures du premier).

EDIT : bon bha j'ai essayé, mais j'ai l'impression que l'espace est pas égal en haut/bas et sur les côtés. Pourtant là ce sont des longueurs absolues. Me trompe-je ?

9978df2f07d02585e6e2de30803b5001.png

Code: Tout sélectionner
// Variables
import patterns;
unitsize(1inch);
pair A=(-1,-0.5),B=(1,-0.5),C=(1,0.5),D=(-1,0.5),E=(1.3,-0.25),F=(1.3,0.25);
path rect=A--B--C--D--cycle;
// Le rectangle
add("hachure",hatch(1.2mm,NE,.3mm+black));
fill(scale(0.95)*rect,pattern("hachure"));
// La bordure
draw(A+(-0.01,-0.01)--B+(0.01,-0.01));
draw(D+(-0.01,+0.01)--C+(0.01,0.01));
draw(A+(-0.01,-0.01)--D+(-0.01,+0.01),dashed);
draw(B+(0.01,-0.01)--C+(0.01,0.01),dashed);
// Points isolés
draw(E);
draw(F);


PS : les deux points sur les côtés on s'en fiche x)
sarmin
Kilo-utilisateur
 
Messages: 153
Inscription: Mercredi 17 Mars 2010, 14:43
Localisation: Bruxelles, Belgique
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Ajouter un espace entre le remplissage et le bord

Messagepar chellier » Vendredi 01 Juillet 2011, 21:54

Personnellement, je ne comprend pas bien la méthode avec le coef de réduction...

Pour bbox, regarde un de mes messages précédents, pour bbox, xmargin, la marge à gauche et à droite et ymargin, la marge en haut et en bas.
p, le trait de contour, et le filltype si tu veux remplir.

14c0304fcd303e8fce8ac412b6570f41.png

Code: Tout sélectionner
import patterns;
unitsize(1inch);
pair A=(0,0),B=(2,0),C=(2,1),D=(0,1);
path rect=A--B--C--D--cycle;
// Dessin
draw(A--B);
draw(C--D);
draw(B--C,dashed);
draw(D--A,dashed);
add("hachure",hatch(1.2mm,NE,.3mm+black));
fill(rect,pattern("hachure"));

shipout(bbox(.5mm,.5mm,invisible)); //invisible pour ne pas avoir de cadre


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

Re: Ajouter un espace entre le remplissage et le bord

Messagepar sarmin » Vendredi 01 Juillet 2011, 22:01

Hum oui je comprend bien le bout de code mais ce que je recherche c'est bien un blanc entre la cadre extérieur (composé de segment pleins et de pointillés) et les hachures (comme sur mon exemple), pas autour de la figure.

Sinon ton exemple semble bon s'il y a moyen de définir un cadre de type différent (pointillés sur les côtés, plein en haut) pour la "bbox". Mais c'est cela que je ne vois pas comment faire.
sarmin
Kilo-utilisateur
 
Messages: 153
Inscription: Mercredi 17 Mars 2010, 14:43
Localisation: Bruxelles, Belgique
Statut actuel: Post-bac | Ecole d'ingénieur

Re: Ajouter un espace entre le remplissage et le bord

Messagepar chellier » Vendredi 01 Juillet 2011, 22:20

Ok :idea: J'avais rien compris :wink: Désolé.

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

Re: Ajouter un espace entre le remplissage et le bord

Messagepar GMaths » Samedi 02 Juillet 2011, 01:56

Une solution pour des contours fermés de forme quelconque.

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

Re: Ajouter un espace entre le remplissage et le bord

Messagepar sarmin » Samedi 02 Juillet 2011, 10:19

GMaths a écrit:Une solution pour des contours fermés de forme quelconque.

Image


Waw merci je vais regarder ca de près :)
sarmin
Kilo-utilisateur
 
Messages: 153
Inscription: Mercredi 17 Mars 2010, 14:43
Localisation: Bruxelles, Belgique
Statut actuel: Post-bac | Ecole d'ingénieur


Retourner vers Asymptote

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités