Suite à une demande sur la liste AmiTeX, voici la réponse en Metapost.
aldebert.mp [ source brut ]
vardef Label(expr TeXt,PoInT,AnGlE)= label(TeXt,point(arctime((AnGlE/360)*arclength (fullcircle scaled (5*labeloffset) shifted PoInT)) of (fullcircle scaled (5*labeloffset) shifted PoInT)) of (fullcircle scaled (5*labeloffset) shifted PoInT)) enddef; %d'après plain.mp vardef DotLabel(expr TeXt,PoInT,AnGlE)= Label(TeXt,PoInT,AnGlE); draw PoInT withpen pencircle scaled dotlabeldiam; enddef;

beginfig(1); pair A,B,C,D; A=(1cm,1cm); B=(3cm,1cm); C=(2cm,4cm); D-C=B-A; drawoptions(withcolor 0.9*white); draw (fullcircle scaled (5*labeloffset) shifted A); draw (fullcircle scaled (5*labeloffset) shifted B); draw (fullcircle scaled (5*labeloffset) shifted C); draw (fullcircle scaled (5*labeloffset) shifted D); drawoptions(); draw A--B; drawarrow C--D; Label(btex A etex,A,60); Label(btex B etex,B,125); DotLabel(btex C etex,C,210); DotLabel(btex D etex,D,300); endfig; end