Re: question du forum asy
Posté : mar. 17 avr. 2012, 19:17
Je crois que je vais revoir complètement la fonction... car je viens de voir une autre chose qui ne me convient pas.
dédié à Asymptote, puissant langage de graphisme vectoriel.
http://asy.marris.fr/forum/
OG a écrit :je ne pense qu'il soit nécessaire de l'effacer.
OG a écrit :Au niveau des labels je pense qu'il vaut mieux les placer pres du milieu de l'accolade, au niveau de la «déformation en pic», non ?
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- void cotationaccolade(picture pic=currentpicture,
- pair pA, pair pB,
- Label L = "", bool Lrot=false,
- real decalage=3mm,
- pen p=currentpen)
- {
- real a = 9mm, b=2a, h = 3mm;
- pic.add(new void(frame f, transform t)
- {
- picture pic2;
- real x=abs(t*pB-t*pA)/2;
- if(2a>x) { a=x/2; h=a/2;}
- path brace1 = (0,0).. controls (3a/10,h) and (a/2,h) ..(a,h),
- brace2 = (b-a,h).. controls (b-a/2,h) and (b-a/5,h) ..(b,3h/2),
- brace;
- x-=b;
- brace = brace1--shift(x)*(brace2);
- brace=brace--reverse(reflect((max(brace).x,0),(max(brace).x,1))*brace);
- brace=shift(t*pA)*rotate(degrees(pB-pA))*brace;
- transform T = Lrot ? rotate(degrees(pB - pA)) : identity();
- draw(pic2,Label(format("$a=%.2f$",a/mm),align=rotate(90)*dir(pB-pA)),brace,p);
- for(int k=1; k<size(brace)-1; ++k) dot(pic2,point(brace,k),2bp+purple);
- add(f, pic2.fit());
- },true);
- }
- ///////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////
-
- size(10cm);
- pair z1=(-1,0), z2=(4,0), z3=(4,-2), z4=(3.5,-2), z5=(2,-2);
- dot(z1^^z2^^z3^^z4^^z5,3bp+blue);
- cotationaccolade(z1,z2,.2bp+red);
- cotationaccolade(z3,z2,.2bp+red);
- cotationaccolade(z3,z4,.2bp+red);
- cotationaccolade(z4,z5,.2bp+green);
- cotationaccolade(z5,z1,.2bp+green);
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***
- import geometry;
- size(200);
- draw((10,.5)--(0,0));
- distance(scale(6)*"Test",(0,0),(10,.5),offset=15mm);
- dot("nw",point(NW),SE,red);
- dot("se",point(SE),NW,red);
- dot("NW",truepoint(NW),SE,blue);
- dot("SE",truepoint(SE),NW,blue);