rapporteur

Pour toute demande d'aide sur des exemples non finalisés, c'est ici.
Les exemples aboutis et intéressants seront ajoutés aux sous-forums qui suivent.

Règles du forum
Pour toute demande d'aide pour la conception (ou la confirmation d'un code) d'une figure Asymptote, c'est ici.

J'invite ceux qui ont régulièrement des questions à poser à aller dans leur panneau de l'utilisateur pour indiquer dans la signature de leurs messages :

  1. Nom du système d'exploitation (W7 ou Ubuntu 12.04 ou ...)
  2. Version d'Asymptote et éditeur utilisé pour les figures Asymptote
  3. Distribution LaTeX et éditeur utilisé pour les tex.


On va gagner du temps dans les réponses !
zariski
Messages : 137
Enregistré le : dim. 30 sept. 2012, 18:50

rapporteur

Message non lu par zariski » ven. 22 mai 2020, 17:25

Bonjour !
Bon je me résigne à vous embêter mais là c'est trop dur pour moi et ce d'autant plus que la doc d'Asymptote est relativement peu épaisse.
Bref voici mon problème; en fait je rebondis sur un sujet précédent mais différent.

J'ai un joli code pour construire un rapporteur (pas de moi) et je me demande s'il serait possible de le mettre dans une sorte de "void" ou autre routine adéquate afin de l'utiliser sur une feuille dans des positions choisi par moi. Je voudrais essentiellement le placer à un point précis et lui faire subir évidemment une rotation aussi choisie par moi-même.

Voici ce que j'ai fait. Le problème c'est que je ne sais comment lui appliquer une transformation ...

Figure asymptote 5eddfbc3e6cf34ce01b347712ecf8225
*** 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.  
  2.  
  3. import geometry;
  4.  
  5. usepackage("fourier");
  6. usepackage("amsmath");
  7. usepackage("siunitx", "locale=DE");
  8.  
  9. unitsize(1cm);
  10.  
  11. void grille(int xmin, int xmax, int ymin ,int ymax){
  12. for(int k=ymin; k<=ymax; ++k)
  13. draw((xmin,k)--(xmax,k),.4bp+gray);
  14.  
  15. for(int k=xmin; k<=xmax; ++k)
  16. draw((k,ymin)--(k,ymax),.4bp+gray);
  17.  
  18. draw((xmin,0)--(xmax,0),1pt+black);
  19. draw((0,ymin)--(0,ymax),1pt+black);
  20. }
  21.  
  22.  
  23. void rapporteur(real scale=1){
  24. defaultpen(fontsize(12pt*scale)); // Stylo par défaut
  25. real r=3.5*scale; // rayon du demi-cercle intérieur : r
  26. real l=2.5*scale; // largeur du rapporteur : l
  27. real p=l/10*scale; // largeur des petites graduations
  28. real g=2p; // largeur des grandes graduations
  29.  
  30. point pO=(0,0), pA=(r,0);
  31. line droiteregle=line(0,-l);
  32. circle cercleint=circle(pO,r),
  33. cercleext=circle(pO,r+l);
  34. point[] R=intersectionpoints(droiteregle,cercleext);
  35.  
  36. path chint=arc(cercleint,pA,-pA)--cycle,
  37. chext=arc(cercleext,R[1],R[0])--cycle;
  38.  
  39. filldraw(chint^^chext,paleblue+white+evenodd,0.5bp+black);
  40.  
  41. for(int k=0; k<180; ++k){//graduation au 1/10 des 2 cercles
  42. draw(r*dir(k)--(r+p)*dir(k)^^(r+l-p)*dir(k)--(r+l)*dir(k),0.25bp+black);
  43. }
  44.  
  45. for(int k=0; k<36; ++k){//graduation au 1/5 des 2 cercles
  46. draw(r*dir(5*k)--(r+0.75g)*dir(5*k)^^(r+l-0.75g)*dir(5*k)--(r+l)*dir(5*k),0.4bp+black);
  47. }
  48.  
  49. for(int k=0; k<=18; ++k) {//graduations de 10 en 10 des 2 cercles
  50. draw(r*dir(10k)--(r+g)*dir(10k)^^(r+l-g)*dir(10k)--(r+l)*dir(10k),0.4bp+black);
  51. label(rotate(10k-90)*format("%i",10*k),(r+g)*dir(10k),dir(10k));
  52. label(rotate(90-10k)*format("%i",10*k),(r+l-g)*dir(180-10k),dir(-10k));
  53. }
  54.  
  55. int xmax=floor(R[1].x);
  56. for(int x=0; x<10*xmax; ++x){//graduation au 1/10 de la règle
  57. draw((-x/10,-l)--(-x/10,p-l)^^(x/10,-l)--(x/10,p-l),0.25bp+black);
  58. }
  59.  
  60. for(int x=0; x<=xmax; ++x) {//graduations de la règle
  61. draw((-x,-l)--(-x,g-l)^^(x,-l)--(x,g-l),0.4bp+black);
  62. label(format("%i",x),(x,g-l),N);
  63. label(format("%i",-x),(-x,g-l),N);
  64. }
  65. }
  66.  
  67.  
  68. grille(-8,8,-3,8);
  69.  
  70. rapporteur();
  71.  
Windows 7 - Winedit 7 - TeXLive2012 - Asymptote 2.16

Répondre