Source
28.45 setxunit
-1 4 setxrange
-1 4 setyrange
/titrait {%le point à marquer puis un point de la droite
4 dict begin 


/b defpoint
/a defpoint
/d {a a b vecteur arg 90 add dir 0.1 mulv translatepoint} def
/e {a a b vecteur arg -90 add dir 0.1 mulv translatepoint} def
[d e] ligne
end
} def

/a {1.2} def

/A {1 3} def
/B {3 2} def
/C {2 0} def
/D {0 1} def
/M {0 3} def
/N {3 3} def
/P {3 0} def
/Q {0 0} def

[M N P Q M] ligne
(A) A [a dup] uctext
(B) B [a dup] crtext
(C) C [a dup] dctext
(D) D [a dup] cltext
(M) M [a dup] ultext
(N) N [a dup] urtext
(P) P [a dup] drtext
(Q) Q [a dup] dltext

[A B C D 1 0 3 1 2 3 0 2 M N P Q] points
/ahlength {10} def
%/ahangle {40} def
[A B] (->) ligne
[A D] (->) ligne