En feuilletant mes vieux livres de géométrie, je me suis rendu compte que c'était une forme courante de cotation. Alors, hop, c'était parti pour une petite macro Metapost.
cotationarccercle.mp [ source brut ]
input geometriesyr16; vardef cotationarc(expr aaa,bbb,decal,ecart,sens,texte)=%pour le texte sens=1 ou -1 save ty; picture ty; pair mnp,ctr; mnp=iso(aaa,bbb)+decal*unitvector(rotation(bbb,iso(aaa,bbb),90)-iso(aaa,bbb)); ctr=CentreCercleC(aaa,bbb,mnp); path cts[]; cts0=arccercle(bbb,aaa,ctr); cts1=arccercle(bbb,cts0 intersectionpoint perpendiculaire(aaa,bbb,iso(aaa,bbb)),ctr); cts2=arccercle(cts0 intersectionpoint perpendiculaire(aaa,bbb,iso(aaa,bbb)),aaa,ctr); ty=image( trace subpath(0,arctime(arclength cts1*(1-(ecart/10))) of cts1) of cts1 dashed evenly; trace subpath(0,arctime(arclength cts2*(1-(ecart/10))) of reverse(cts2)) of reverse(cts2) dashed evenly; if sens=1: label(texte rotated (angle(bbb-aaa)),mnp); else: label(texte rotated (angle(bbb-aaa)+180),mnp); fi; ); ty enddef;

figure(0,0,10u,10u); pair A,B,C,D; A=u*(1,6); B-A=u*(3,-5); C=u*(7,7); D-C=u*(-1,-6); trace cotationarc(A,B,5mm,1.5,1,btex 2~cm etex); trace cotationarc(D,C,5mm,1.5,1,btex 3~cm etex); trace segment(A,B); trace marquesegment(A,B); trace segment(C,D); trace marquesegment(C,D); nomme.ulft(A); nomme.lrt(B); nomme.urt(C); nomme.llft(D); fin;

figure(0,0,10u,10u); pair A,B,C; trace triangleqcq(A,B,C); trace cotationarc(B,A,6mm,2.25,-1,btex $a$ etex); trace cotationarc(C,B,6mm,2.25,1,btex $b$ etex); trace cotationarc(A,C,6mm,2.25,1,btex $c$ etex); nomme.llft(A); nomme.lrt(B); nomme.top(C); fin; end