Exemples de figures

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.

Messagepar MB » Samedi 10 Mars 2007, 19:51

Une chose intéressante dans cette figure : la fonction format.

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

real a=5;
real b=7;
real c=28;
real d=7.5;

pair pO=(0,0);

path d1=pO--(d,0);
path d2=pO--(d,d*tan(c*pi/180));

pair pA=(a,0);
pair pC=(b,0);
pair pB=intersectionpoint(pA--(a,d),d2);
pair pD=intersectionpoint(pC--(b,d),d2);

draw(pA--pB^^pC--pD);
draw(d1^^d2);

perpendicular(pA,NW,blue);
perpendicular(pC,NW,blue);

draw(format("$%.0f^\circ$",c),arc(pA,pO,pB,1.2),blue);

label("$O$",pO,SW);
label("$A$",pA,S);
label("$C$",pC,S);
label("$B$",pB,N);
label("$D$",pD,N);

shipout(bbox(xmargin=2mm,invisible));
Fichiers joints
Figure3.png
(38.92 Kio) Téléchargé 2413 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Publicité

Messagepar MB » Mardi 17 Avril 2007, 19:53

Nouvelle figure : pattern et boucle for.

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

add("crosshatch",crosshatch(2mm,red));

real n=5;

fill((0,0)--(n,0)--(n,1)--(0,1)--cycle,pattern("crosshatch"));
fill((0,n-1)--(n,n-1)--(n,n)--(0,n)--cycle,pattern("crosshatch"));
fill((0,1)--(1,1)--(1,n-1)--(0,n-1)--cycle,pattern("crosshatch"));
fill((n-1,1)--(n,1)--(n,n-1)--(n-1,n-1)--cycle,pattern("crosshatch"));

for (int i=0; i <= n; ++i)
  {
     draw((0,i)--(n,i),gray);
     draw((i,0)--(i,n),gray);
  }

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
Figure1.jpg
(61.81 Kio) Téléchargé 2296 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Jeudi 26 Avril 2007, 16:23

Nouvelle figure :

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

usepackage("mathrsfs");

real R1=7.5;
real R2=2.5;

pair pO=(0,0);
pair pA=(-R1,0);
pair pB=(R1,0);

dot(pO);
dot(pA);
dot(pB);

draw(pA--pB);

label("$A$",pA,W);
label("$B$",pB,E);
label("$O$",pO,SW);

pair pE=(R1-R2,0);
pair pN=(R1-2*R2,0);

dot(pE);
dot(pN);

label("$E$",pE,S);
label("$N$",pN,SW);

path C1=circle(pO,R1);
path C2=circle(pE,R2);

draw(Label("$\mathscr{C}_1$",Relative(.6)),C1,gray);
draw(Label("$\mathscr{C}_2$",Relative(.6)),C2,gray);

path C3=circle(pB,4);

pair pM=intersectionpoint(C2,C3);
pair pP=intersectionpoint(C1,pM--interp(pB,pM,5));

dot(pM);
dot(pP);

label("$M$",pM,NE+N);
label("$P$",pP,NE+N);

draw(pB--pP);
draw(pN--pM^^pA--pP);

pair pK=interp(pO,pP,-1);

dot(pK);

label("$K$",pK,SE+S);

draw(pP--pK);
draw(pA--pK^^pB--pK);

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
CFigure1.png
(130.5 Kio) Téléchargé 2254 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Lundi 21 Mai 2007, 00:41

Suite à l'intégration du package markers (dû à Ph. Ivaldi d'ailleurs) dans les dernières version d'Asymptote, l'utilisation des marqueurs est bien plus simple (par rapport à cet exemple de figure par exemple). Le code est ainsi grandement simplifié.

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

pair pA=(0,0);
pair pB=(3,0);
pair pC=(3,-3);
pair pD=(0,-3);
pair pE=(-4,-3);
pair pF=(0,5);
pair pG=(3+5,-3);
pair pH=(0,-3-4);

label("$A$",pA,NW);
label("$B$",pB,NE);
label("$C$",pC,SE);
label("$D$",pD,SW);
label("$E$",pE,W);
label("$F$",pF,N);
label("$G$",pG,E);
label("$H$",pH,S);

perpendicular(pA,NE,blue);
perpendicular(pC,NE,blue);
perpendicular(pD,SE,blue);
perpendicular(pD,NW,blue);

draw(pA--pB--pC--pD--cycle);

draw(pD--pE,StickIntervalMarker(1,1,size=6,angle=-45,red));
draw(pD--pH,StickIntervalMarker(1,1,size=6,angle=-45,red));
draw(pA--pE,StickIntervalMarker(1,2,size=6,angle=-45,red));
draw(pA--pF,StickIntervalMarker(1,2,size=6,angle=-45,red));
draw(pC--pH,StickIntervalMarker(1,2,size=6,angle=-45,red));
draw(pC--pG,StickIntervalMarker(1,2,size=6,angle=-45,red));
draw(pB--pF,StickIntervalMarker(1,3,size=6,angle=-45,red));
draw(pB--pG,StickIntervalMarker(1,3,size=6,angle=-45,red));

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
Figure3.png
(51.79 Kio) Téléchargé 2174 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar Nico » Lundi 21 Mai 2007, 06:11

Pas mal du tout....
Les label avec N, S, E, W, c'est bien trouvé....
Nico
Tarz at benec, kervorn denn Poulawenn!
Pas d'aide par MP.
Nico
Giga-utilisateur
 
Messages: 616
Inscription: Vendredi 24 Juin 2005, 10:10
Localisation: Narbonne
Statut actuel: Actif et salarié | Enseignant

Messagepar rebouxo » Lundi 21 Mai 2007, 09:13

Il n'y a pas la possibilité de passer des options à plusieurs commandes ?
L'équivalent de \psset ?

Olivier
rebouxo
Modérateur
 
Messages: 6917
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Lundi 21 Mai 2007, 16:57

rebouxo a écrit:Il n'y a pas la possibilité de passer des options à plusieurs commandes ?
L'équivalent de \psset ?


Si, ça doit être possible.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar OG » Mardi 22 Mai 2007, 08:30

Bonjour

il y a peut-être d'autres solutions, on peut au moins faire cela

Code: Tout sélectionner
marker mark1=StickIntervalMarker(1,1,size=6,angle=-45,red);
marker mark2=StickIntervalMarker(1,2,size=6,angle=-45,red);
marker mark3=StickIntervalMarker(1,3,size=6,angle=-45,red);
draw(pD--pE,mark1);
draw(pD--pH,mark1);
draw(pA--pE,mark2);
draw(pA--pF,mark2);
draw(pC--pH,mark2);
draw(pC--pG,mark2);
draw(pB--pF,mark3);
draw(pB--pG,mark3);


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

Messagepar MB » Mardi 22 Mai 2007, 22:57

Merci OG, c'est parfait non ? (pas besoin de chercher à faire autrement je pense) :D
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar rebouxo » Mercredi 23 Mai 2007, 08:00

Je vais finir par être conquis.

Olivier
rebouxo
Modérateur
 
Messages: 6917
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Jeudi 24 Mai 2007, 19:00

Nouvelle figure :

Code: Tout sélectionner
unitsize(0.75cm);
import markers;

int xmax=7;
int xmin=-5;
int ymax=7;
int ymin=-4;

for (int i=1; i <= xmax; ++i)
  {
     draw((i,ymin)--(i,ymax),mediumgray);
  }
 
for (int i=xmin; i <= -1; ++i)
  {
     draw((i,ymin)--(i,ymax),mediumgray);
  } 

for (int j=1; j <= ymax; ++j)
  {
     draw((xmin,j)--(xmax,j),mediumgray);
  }
 
for (int j=ymin; j <= -1; ++j)
  {
     draw((xmin,j)--(xmax,j),mediumgray);
  }

draw((xmin,0)--(xmax,0),black,Arrow);
draw((0,ymin)--(0,ymax),black,Arrow);

dot(Label("$O$",align=SW),(0,0));
dot(Label("$I$",align=SE),(2,0));
dot(Label("$J$",align=NW),(0,2));

pair pA=(1,2)*2;
pair pB=(2.5,1)*2;
pair pC=(1.5,-1.5)*2;
pair pD=(0,-0.5)*2;
pair pE=(-1.5,1.5)*2;
pair pF=(-2,-1)*2;
pair pG=(-0.5,3)*2;
pair pH=(3,-1)*2;
pair pM=(-0.5,0.5)*2;

dot(Label("$A$",align=NE),pA);
dot(Label("$B$",align=NE),pB);
dot(Label("$C$",align=SE),pC);
dot(Label("$D$",align=SW),pD);
dot(Label("$E$",align=NW),pE);
dot(Label("$F$",align=SW),pF);
dot(Label("$G$",align=NW),pG);
dot(Label("$H$",align=SE),pH);
dot(Label("$M$",align=NW),pM);

draw(pA--pC,StickIntervalMarker(2,1,size=6,angle=-45,red));
draw(pD--pB,StickIntervalMarker(2,1,size=6,angle=-45,red));
draw(pE--pF,StickIntervalMarker(1,2,size=6,angle=-45,red));
draw(pE--pA,StickIntervalMarker(1,2,size=6,angle=-45,red));
draw(pA--pF,StickIntervalMarker(2,3,size=6,angle=-45,red));
draw(pA--pB--pC--pD--cycle);

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
CFigure1.png
(135.76 Kio) Téléchargé 2071 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Jeudi 24 Mai 2007, 22:36

Un cône :

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

currentprojection=orthographic(0,100,25);

real r=4, h=7, hprime=4, rprime=r*hprime/h;

triple pO=(0,0,0);
triple pOprime=(0,0,3);
triple pS=(0,0,h);

triple pA=(r,0,0);
triple pAprime=(rprime,0,h-hprime);

revolution rC=cone(pO,r,h,Z);
revolution rCprime=cone(pOprime,rprime,hprime,Z);

label("$S$",pS,N);
dot(Label("$O$",align=SE),pO);
dot(Label("$O'$",align=SE),pOprime);
dot(Label("$A$",align=W),pA);
dot(Label("$A'$",align=W),pAprime);

rC.draw();
rCprime.draw();

draw(pS--pO^^pO--pA^^pOprime--pAprime,dashed);

shipout(bbox(xmargin=1mm,invisible));


Par ailleurs, quelqu'un saurait comment hachurer (avec un fill et un pattern par exemple) la section de centre $O'$ assez simplement ?
Fichiers joints
Figure3.png
(100.47 Kio) Téléchargé 2062 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar OG » Vendredi 25 Mai 2007, 08:20

Bonjour

Jolies figures et merci pour tes commentaires sur mathematex et f.c.t.t.
As-tu regardé sur le site d'asymptote

http://asymptote.sourceforge.net/gallery/workcone.asy

et son pdf ?

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

Messagepar MB » Vendredi 25 Mai 2007, 19:35

OG a écrit:merci pour tes commentaires sur mathematex et f.c.t.t.


C'est normal.

OG a écrit:As-tu regardé sur le site d'asymptote

http://asymptote.sourceforge.net/gallery/workcone.asy

et son pdf ?


Oui, je viens de regarder, mais ça ne me donne pas la réponse à ma question. Il n'y a pas de remplissage d'une section de cône en fait.
On peut tracer un cercle et le remplir, mais je n'arrive pas à faire apparaitre les pointillés pour la section cachée.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Vendredi 25 Mai 2007, 21:35

J'ai trouvé une méthode permettant de hachurer cette fameuse section.
De plus, je n'utilise plus 2 cône pour tracer le contour de la section mais j'utilise la fonction transverse et un skeleton (ce qui me permet d'obtenir les pointillés alors qu'avec un simple cercle ça ne fonctionnait pas). J'utilise par contre un cercle et un simple fill (non draw) pour hachurer la section.

Code: Tout sélectionner
unitsize(1cm);
import solids;
import math;
import patterns;

add("crosshatch",crosshatch(2mm,red));

currentprojection=orthographic(0,100,25);

real r=4, h=7, hprime=4, rprime=r*hprime/h;

triple pO=(0,0,0);
triple pOprime=(0,0,3);
triple pS=(0,0,h);

triple pA=(r,0,0);
triple pAprime=(rprime,0,h-hprime);

revolution rC=cone(pO,r,h,Z);

skeleton s;
rC.transverse(s,reltime(rC.g,1-hprime/h));
rC.longitudinal(s);
draw(s.back,dashed);
draw(s.front);

fill(circle(pOprime,rprime),pattern("crosshatch"));

rC.draw();

label("$S$",pS,N);
dot(Label("$O$",align=SE),pO);
dot(Label("$O'$",align=SE),pOprime);
dot(Label("$A$",align=W),pA);
dot(Label("$A'$",align=W),pAprime);

draw(pS--pO^^pO--pA^^pOprime--pAprime,dashed);

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
Figure3.png
(38.32 Kio) Téléchargé 2018 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar rebouxo » Samedi 26 Mai 2007, 23:39

B'soir.

J'ai passé ma journée sur la doc pourrie d'Asymptote. Manque d'exemple dans la doc et manque de commentaire dans les exemples. :x

Bon, voici mon code
Code: Tout sélectionner
import solids;

unitsize(1cm);

currentprojection=orthographic(0,100,25);

real r=2, R=2.5, h=0.5, H=1;

triple CB=(0,0,0);
triple CM=(0,0,H);
triple CH=(0,0,H+h);

revolution C=cylinder(CB,R,H,Z);
revolution c=cylinder(CM,r,h,Z);

C.filldraw(white,solid);
filldraw(circle(CM,R),white,black);
c.filldraw(white,solid,false);
filldraw(circle(CH,r),white,black);

triple D=(r,0,h+H);
triple G=(-r,0,h+H);

triple d=(r,0,h+H+1);
triple g=(-r,0,h+H+1);

draw(d--D);
draw(g--G);
draw(d--g,Arrows,Label("$d$",N));

shipout(bbox(xmargin=1mm,invisible));

Et voici l'image que j'ai.

Or je voudrais, un label entre au dessus des flèches, et que les parties latérales des cylindres soient blanches et non transparent.

Savez-vous comment faire ?

Olivier
Fichiers joints
cylindres.png
(3.83 Kio) Téléchargé 2001 fois
rebouxo
Modérateur
 
Messages: 6917
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Dimanche 27 Mai 2007, 00:22

Pour le label déjà :

Tu peux remplacer :

Code: Tout sélectionner
draw(d--g,Arrows,Label("$d$",N));


par :

Code: Tout sélectionner
draw("$d$",d--g,N,Arrows);


Sinon, c'est vrai que la documentation est un peu creuse.
J'ai pas encore bien compris l'usage du Label.
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar rebouxo » Dimanche 27 Mai 2007, 08:05

Merci MB.

Et pour le côté plein du cylindre, as-tu une idée ?


Olivier
rebouxo
Modérateur
 
Messages: 6917
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Messagepar MB » Dimanche 27 Mai 2007, 09:58

rebouxo a écrit:Et pour le côté plein du cylindre, as-tu une idée ?


Pour ça j'ai moins bien compris ce que tu souhaites faire.
De plus, les fill de solides sont un peu pénibles à maitriser au niveau des couleurs à cause des effets de lumière (qui me semblent imposés).

Je te propose le code suivant qui donne un résultat proche de celui que tu souhaitais (d'après ce que j'ai compris). Il n'y a pas de fill dans les cylindres en fait et j'utilise aussi un disque blanc au dessus pour cacher les parties non visibles.

Il reste encore deux petites parties qui ne sont pas cachées du fait que je ne fill pas la surface latérale du cylindre (à cause de ces problèmes de lumière). Je vais continuer à regarder, mais tu peux déjà me dire si c'est bien ce que tu veux.

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

currentprojection=orthographic(0,100,25);

real r=2, R=2.5, h=0.5, H=1;

triple CB=(0,0,0);
triple CM=(0,0,H);
triple CH=(0,0,H+h);

revolution C=cylinder(CB,R,H,Z);
revolution c=cylinder(CM,r,h,Z);

C.draw(backpen=white);
c.draw(backpen=white);
filldraw(circle(CH,r),white,black);

triple D=(r,0,h+H);
triple G=(-r,0,h+H);

triple d=(r,0,h+H+1);
triple g=(-r,0,h+H+1);

draw(d--D,dotted);
draw(g--G,dotted);
draw("$d$",d--g,N,Arrows);

shipout(bbox(xmargin=1mm,invisible));
Fichiers joints
rebouxo_1.png
(23.89 Kio) Téléchargé 1965 fois
MB (Pas d'aide en Message Privé)
Merci d'utiliser $\LaTeX$ (voir ici) et d'éviter le style SMS pour la lisibilité des messages.
MB
Administrateur
 
Messages: 6885
Inscription: Samedi 28 Mai 2005, 13:23
Localisation: Créteil
Statut actuel: Actif et salarié | Enseignant

Messagepar rebouxo » Dimanche 27 Mai 2007, 10:10

Nickel. Je me suis bien exprimé alors :D .
Il y a juste un tout p'tit truc qui me chiffonne, on voit le cylindre du dessous, en bas du cylindre du haut (heu, là c'est pas clair).
Olivier
rebouxo
Modérateur
 
Messages: 6917
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

PrécédenteSuivante

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é