% 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);