% define the end points of the three rays z1 = right scaled 200 rotated 10; z2 = right scaled 100 rotated 135; z3 = right scaled 225 rotated -17.5; % define the other points, relative to Q pair A, B, P, Q, R; Q = 0.8125 z3; A = whatever[origin, z1]; A-Q = whatever * z1 rotated 90; P = whatever[origin, z2]; P-Q = whatever * z2 rotated 90; B = whatever[origin, z1]; B-P = whatever * z1 rotated 90; R = whatever[A,Q]; R-P = whatever * (B-P) rotated 90; % mark the angles drawoptions(withcolor .67 blue); path c; c = fullcircle scaled 30; draw c rotated angle (Q-P) shifted P cutafter (P--B); draw c rotated angle (P-Q) shifted Q cutafter (Q--R); draw c rotated angle P cutafter (origin--z1); drawoptions(); % draw the rays and A--Q drawarrow origin -- z1; label(btex $r_1$ etex, z1 scaled 1.05); drawarrow origin -- z2; label(btex $r_2$ etex, z2 scaled 1.08); drawarrow origin -- z3; label(btex $r_3$ etex, z3 scaled 1.05); draw A--Q; % draw the dashed lines drawoptions(dashed evenly); draw B--P--R--Q--P; drawarrow origin -- P scaled 4/3; drawoptions(); % label the points dotlabel.urt(btex $Q$ etex, Q); dotlabel.top(btex $A$ etex, A); dotlabel.lrt(btex $R$ etex, R) withcolor .67 blue; label.top (btex $B$ etex, B); label.llft(btex $P$ etex, P); label.llft(btex $O$ etex, origin);