Fabrice Couvreur a écrit :je souhaiterais marquer la longueur AB avec un segment ayant une flèche à chaque extrémité et un label égal à "12 cm".
Peut-on utiliser la routine distance() du module geometry en considérant, par exemple, les projetés des points A et B sur le plan de la feuille ?
Merci.
Bonjour,
Avec distance, je ne pense pas que ce soit faisable, mais je veux bien être contredit :D
Par contre, comme je le dis dans les annexes de ma doc (troisième lien de ma signature), on peut créer une fonction pour le faire. :
Code : Tout sélectionner
import three;
//import geometry;
usepackage("fourier");
settings.outformat="pdf";
settings.prc=false;
settings.render=4;
size(10cm,0);
currentprojection=obliqueX;
currentlight=nolight;
pen p=fontsize(6pt);
//==========================================
void cote3D(picture pic=currentpicture,
Label L="", triple A, triple B,
real d=5mm, triple v, bool cc=true,
pen p=currentpen, pen joinpen=dotted,
arrowbar3 arrow=Arrows3)
{
transform3 T=shift(d*unit(v));
triple A=A, B=B;
pic.add(new void(picture f, transform3 t) {
picture opic;
path3 dist;
triple Ap=t*A, Bp=t*B;
triple a=T*Ap, b=T*Bp;
if (cc) {dist=a--b;}
else {dist=b--a;}
draw(opic,L,dist,p,arrow);
draw(opic,a--Ap^^b--Bp,joinpen);
add(f,opic);
}, true);
}
//==========================================
real a=12;
real b=9;
triple tA=(0,0,0),tB=(0,b,0),tC=(-b,b,0),tD=(-b,0,0),tS=(0,0,a),tE=(0,0,b);
triple tF=shift(0,b/4,0)*tE;
triple tG=shift((tC-tB)/4)*tF;
triple tH=shift((tD-tC)/4)*tG;
draw(surface(tA--tB--tS--cycle),lightred+opacity(0.5),black+0.5bp);
draw(surface(tB--tC--tS--cycle),lightred+opacity(0.5),black+0.5bp);
draw(surface(tD--tC--tS--cycle),lightred+opacity(0.5));
draw(surface(tD--tA--tS--cycle),lightred+opacity(0.5));
draw(tA--tD--tC^^tD--tS,dashed);
draw(tE--tF^^tF--tG,black+0.5bp);
draw(tG--tH--tE,dashed);
label("A",tA,S,p);
label("B",tB,S,p);
label("C",tC,S+E,p);
label("S",tS,N,p);
label("D",tD,S+E,p);
label("E",tE,S+W,p);
label("F",tF,S+3E,p);
label("G",tG,N+E,p);
label("H",tH,N+2W,p);
//label("$9\,\textrm{cm}$",(tA+tB)/2,S,p);
//==========================================
cote3D(Label("$9\,\textrm{cm}$",p),tA,tB,-Z);

- project_1.png (69.7 Kio) Consulté 3334 fois
Dans les annexes de la doc, tu trouveras aussi (entre autres) comment définir une
vraie perspective cavalière :

- project.png (73.09 Kio) Consulté 3334 fois
Christophe
PS : une dernière remarque : plutôt que de définir pen p=fontsize(6pt); et d'être obligé de spécifier "p" dans tous les labels, on peut aussi utiliser defaultpen(fontsize(6pt));