Source
56.90 setxunit
-1 5 setxrange
-1 2.2 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


/H {0 0} def
/A {0 1} def
/B {4 0} def
/t {1.5} def
/C {t 0} def

/a {1.8} def
1 setlinecap
0 setlinejoin


1 setlinewidth
(H) H down .1 mulv translatepoint [a dup] dctext
(A) A up .1 mulv translatepoint [a dup] uctext
(B) B  down .1 mulv translatepoint [a dup] dctext
(C) C down .1 mulv translatepoint [a dup] dctext
<latex>
$d$
</latex>
A C milieu [a dup] urtexlabel
[xmin 0 xmax 0] ligne
/r {1.7} def
[xmin r xmax r] ligne
[A H] ligne
[A C] ligne
A H B angledroit
B H titrait

1 setlinewidth
[-0.5 0 -0.5 1] (<->) ligne
[0 -0.5 4 -0.5 ] (<->) ligne
<latex>
$1$
</latex>
 -0.5 0.5 [a dup] cltexlabel
<latex>
$4$
</latex>
 2 -0.5 [a dup] dctexlabel

(Rivière) 3.5 0.5  [2 dup] {30} crtext
(Terre) 4 -0.8  [2 dup] {30} crtext
<latex>
$x$
</latex>
H C milieu down 0.0 mulv translatepoint [a dup] dctexlabel


2 setlinewidth
[A C] ligne
[C B] ligne