pour ceux qui travaillent en classe de 6e, voici un rapporteur relativement paramétrable.
A noter qu'il nécessite (j'aurais pu faire sans mais bon pourquoi se priver...) l'incontournable geometry_dev de Philippe Ivaldi.
Evidemment il est améliorable/optimisable, n'hésitez pas à proposer des modifications....
Code : Tout sélectionner
import geometry_dev;
void rapporteur(picture pic=currentpicture,
real diametre=8cm, // le diametre du rapporteur
real taille1=1cm, // la taille des "grands" segments
real taille2=.5cm, // la taille des "petits" segments
real base=3mm, // la base du rapporteur
real coeflabels=.5, // pour diminuer la taille des labels
int direction=0, // la direction dans laquelle est posée le rapporteur sur la feuille
int div1=10, // le nombre de degrés séparant les divisions principales
int div2=1, // le nombre de degrés séparant les divisions secondaires
pair pO=(0,0)) // le centre du rapporteur est ici
{
real r1,r2;
r1=(2*taille1)/diametre;
r2=(2*taille2)/diametre;
unitsize(pic,diametre/2,0);
ellipse Ce=circle(pO,1);
arc bord=arc(Ce,direction,direction+180,fromCenter);
draw(pic,bord, black+linewidth(1bp));
draw(pic,pO-dir(direction)--(2*base/diametre*dir(direction-90))+pO-dir(direction)--(2*base/diametre*dir(direction-90))+pO+dir(direction)--dir(direction)+pO,black+linewidth(1bp));
for(int i=direction; i < direction+180; i=i+div1){
draw(pic,pO+dir(i)--pO+(dir(i)*(1-r1)));
draw(pic,scale(coeflabels)*Label((string) (i-direction)),pO+dir(i)*(1-r1),dir(i+180));
for(int j=div2; j < div1; j=j+div2){
draw(pic,pO+dir(i+j)--pO+(dir(i+j)*(1-r2)),red);
}
draw(pic,pO+dir(i+.5*div1)--pO+(dir(i+.5*div1)*(1-.5*(r1+r2))),blue);
}
draw(pic,pO+dir(direction+180)--pO+(dir(direction+180)*(1-r1)));
draw(pic,scale(coeflabels)*Label((string) 180),pO+dir(direction+180)*(1-r1),dir(direction+360));
draw(pic,pO+(r1/2)*dir(direction)--pO+(r1/2)*dir(direction+180));
draw(pic,pO--pO+(r1/2)*dir(direction+90));
}
rapporteur(diametre=5cm,taille1=.8cm,taille2=.4cm,base=3mm,coeflabels=.7,direction=57,div1=20,div2=2,pO=(-2,0));
Africatex