verbatimtex
%&latex
\documentclass{article}
\usepackage[frenchb]{babel}
\begin{document}
etex

input geometriesyr16;
figureespace(-10u,-10u,10u,10u);
Initialisation(5,-15,25,500);
color O,N,X,Y,B,L,O';
O=(0,0,0);
N=(0,0,1);
X=(0,-1,0);
Y=symetrie(X,O);
color P,Q,R,Q';
P=(cosd(-70),sind(-70),0);
Q=(1,0,0);
Q'=(cosd(60),0,sind(60));
R=(cosd(30),sind(30),0);
B=(cosd(-70)*cosd(60),sind(-70)*cosd(60),sind(60));
L=(cosd(30)*cosd(60),sind(30)*cosd(60),sind(60));
O'=(0,0,sind(60));
path ch,cv,mg,mb,ml,mbl,gcbl;
ch=cercles(O,X,O,X,(1,0,0));
cv=cercles(O,Y,O,Y,N);
mg=cercles(O,(1,0,0),O,(1,0,0),N);
mb=cercles(O,P,O,P,N);
ml=cercles(O,R,O,R,N);
mbl=cercles(O',B,O',B,(cosd(20)*cosd(60),sind(20)*cosd(60)%
    ,sind(60)));
color Nr,Nrr;
Nr=Normal(O,B,L);
Nrr=Normal(O,B,Nr);
trace subpath(0,length ch/2) of ch;
trace subpath(length ch/2,length ch) of ch dashed evenly;
trace subpath(0,length cv/2) of cv;
trace subpath(0,length mg/4) of mg withcolor vert;
trace subpath(0,length mb/4) of mb withcolor violet;
trace subpath(0,length ml/4) of ml withcolor orange;
trace subpath(0,5*length mbl/18) of mbl withcolor rouge;
marque_p:="croix";
pointe(P,R);
nomme.top(N);
nomme.bot(B);
nomme.llft(L);
label.llft(btex 70\degres\ Ouest etex,Projette(P));
label.lrt(btex 30\degres\ Est etex,Projette(R));
label.bot(btex 0\degres\ (Greenwich) etex,Projette(Q));
trace chemin(P,O,N);
trace segment(O,Q);
trace segment(O,R) cutbefore mg;
trace segment(O,R) cutafter mg dashed evenly;
trace segment(O,B) dashed dashpattern(on12bp off6bp on3bp%
  off6bp);
trace chemin(B,O',Q');
trace segment(O',L) cutafter mg dashed evenly;
trace segment(O',L) cutbefore mg;
path cod;
cod=cercles(O,1/3[O,N],O,1/3[O,N],P);
cod:=cod cutbefore demidroite(O,B) cutafter demidroite(O,P);
trace cod;
label.lft(btex 60\degres etex,point(length cod/2) of cod);
%pour la correction
gcbl=cercles(O,B,O,B,Nrr);
trace gcbl cutbefore (subpath(0*length cv/4,length cv/4)%
  of cv) dashed evenly withcolor bleu;
trace gcbl cutafter (subpath(3*length cv/8,3.5*length cv/8)%
  of cv) dashed evenly withcolor bleu;
trace gcbl cutbefore demidroite(R,L) withcolor bleu;
finespace;
end