Page 3 sur 3

Re: question du forum asy

Posté : mar. 17 avr. 2012, 19:17
par GM
Je crois que je vais revoir complètement la fonction... car je viens de voir une autre chose qui ne me convient pas.

Re: question du forum asy

Posté : mar. 17 avr. 2012, 20:01
par OG
Hello
J'ai mis le code rapidos avant d'aller à une réunion sans te prévenir. Prévenir du bogue pA ok avec un diff, et
que tu travailles dessus ok mais je ne pense qu'il soit nécessaire de l'effacer.
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 ?

O.G.

Re: question du forum asy

Posté : mar. 17 avr. 2012, 20:26
par GM
OG a écrit :je ne pense qu'il soit nécessaire de l'effacer.

Rectifie au moins, s'il te plait, l'exemple en :
  • ajoutant le "shift(pA)*" ;
  • remplaçant "align=N" par align=LeftSide ;
  • supprimant les dernières lignes inutiles, relatives à trupoint.

Il y a tellement de conneries sur net, comme celle là : http://www.youtube.com/watch?v=ImMGuXiVM2I
(je vous préviens : cela dure 12mn48 et c'est insupportable à regarder)
que je me sens obligé de ne pas laisser d'erreur quand je peux.

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 ?

Oui bien sûr. Ils ne sont décalés que si on le spécifie avec un Relative(...). C'était pour rappeler que c'est possible.

Re: question du forum asy

Posté : mar. 17 avr. 2012, 21:27
par OG
Bonsoir

Ok, c'est fait. Je te laisse éditer ton message et éventuellement y mettre
les nouvelles versions ou un lien.

A+
O.G.

Re: question du forum asy

Posté : mer. 18 avr. 2012, 14:27
par GM
Un message pour dire que je suis reparti d'une feuille blanche...
... pour que les parties courbes restent de même taille sur toutes les accolades suffisamment grandes pour le permettre.

Aucun label pour l'instant, aucun décalage possible, etc...
mais tout sera ajouté prochainement.

On pourra jouer aussi sur au moins deux paramètres... pour décider de la forme d'accolade que l'on veut.

Donc je montre cet exemple uniquement pour dire où j'en suis.
Je m'arrête là (le travail scolaire l'oblige) et finirai cela le weekend qui vient.

Figure asymptote 7780048f766398d7f9a54024d596605e
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. void cotationaccolade(picture pic=currentpicture,
  2. pair pA, pair pB,
  3. Label L = "", bool Lrot=false,
  4. real decalage=3mm,
  5. pen p=currentpen)
  6. {
  7. real a = 9mm, b=2a, h = 3mm;
  8. pic.add(new void(frame f, transform t)
  9. {
  10. picture pic2;
  11. real x=abs(t*pB-t*pA)/2;
  12. if(2a>x) { a=x/2; h=a/2;}
  13. path brace1 = (0,0).. controls (3a/10,h) and (a/2,h) ..(a,h),
  14. brace2 = (b-a,h).. controls (b-a/2,h) and (b-a/5,h) ..(b,3h/2),
  15. brace;
  16. x-=b;
  17. brace = brace1--shift(x)*(brace2);
  18. brace=brace--reverse(reflect((max(brace).x,0),(max(brace).x,1))*brace);
  19. brace=shift(t*pA)*rotate(degrees(pB-pA))*brace;
  20. transform T = Lrot ? rotate(degrees(pB - pA)) : identity();
  21. draw(pic2,Label(format("$a=%.2f$",a/mm),align=rotate(90)*dir(pB-pA)),brace,p);
  22. for(int k=1; k<size(brace)-1; ++k) dot(pic2,point(brace,k),2bp+purple);
  23. add(f, pic2.fit());
  24. },true);
  25. }
  26. ///////////////////////////////////////////////////////////
  27. ///////////////////////////////////////////////////////////
  28.  
  29. size(10cm);
  30. pair z1=(-1,0), z2=(4,0), z3=(4,-2), z4=(3.5,-2), z5=(2,-2);
  31. dot(z1^^z2^^z3^^z4^^z5,3bp+blue);
  32. cotationaccolade(z1,z2,.2bp+red);
  33. cotationaccolade(z3,z2,.2bp+red);
  34. cotationaccolade(z3,z4,.2bp+red);
  35. cotationaccolade(z4,z5,.2bp+green);
  36. cotationaccolade(z5,z1,.2bp+green);


Quand la valeur de a, n'est pas le 9mm par défaut, l'accolade a dû être modifiée sans pouvoir maintenir la forme des parties courbes communes aux autres accolades.

Merci de ne pas diffuser cet exemple... qui est très incomplet... et probablement encore bogué.
Je n'en parle que pour dire que je cherche dans une autre direction.

Re: question du forum asy

Posté : mer. 18 avr. 2012, 19:28
par GM
Précision supplémentaire : un tel exemple m'a convaincu que je ne pourrais arriver à faire en sorte que truepoint(SE) renvoie le point en bas à droite de l'image.

Figure asymptote e1345419d0c7ea927b9ce23112b3dee5
*** Pour masquer/découvrir le code Asymptote qui a permis de créer la figure, il faut cliquer dessus. ;-) ***

CODE ASYMPTOTE de la figure ci-dessus : Tout sélectionner
  1. import geometry;
  2. size(200);
  3. draw((10,.5)--(0,0));
  4. distance(scale(6)*"Test",(0,0),(10,.5),offset=15mm);
  5. dot("nw",point(NW),SE,red);
  6. dot("se",point(SE),NW,red);
  7. dot("NW",truepoint(NW),SE,blue);
  8. dot("SE",truepoint(SE),NW,blue);