\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
 pair P, A, B, C, A', B', C', R, S, T;
 P = 200 dir 102;
 A = 100 dir 159; B = origin; C = 90 dir 42;

 A' = 3/8[P, A];  % the factors should not
 B' = 1/2[P, B];  % be the same!
 C' = 5/8[P, C];

 R = whatever [A, B] = whatever [A', B'];
 S = whatever [B, C] = whatever [B', C'];
 T = whatever [C, A] = whatever [C', A'];

 path t[];
 t1 = A -- B -- C -- cycle;
 t2 = A' -- B' -- C' -- cycle;
 fill t1 withcolor 7/8[red, white];
 fill t2 withcolor 7/8[blue, white];
 draw t1 withcolor 1/2 white;
 draw t2 withcolor 1/2 white;

 drawoptions(dashed withdots scaled 1/2);
 draw P--A;
 draw P--B;
 draw P--C;

 drawoptions(dashed evenly scaled 1/2);
 draw B--R--B';
 draw C--S--C';
 undraw subpath (1/4, 3/4) of (C'--T) withpen
     pencircle scaled 5;
 draw C--T--C';

 drawoptions(withcolor 2/3 red);
   draw 9/8[S,R] -- 9/8[R,S];
   draw thelabel.bot("perspectrix", origin)
     rotated angle (T-R) shifted 1/2[T, R];
   dotlabel.urt("perspector", P);
 drawoptions();

 dotlabel.lft ("$A$ ", A);
 dotlabel.llft("$B$ ", B);
 dotlabel.lrt ("$C$ ", C);
 dotlabel.lft ("$A'$ ", A');
 dotlabel.llft("$B'$ ", B');
 dotlabel.bot ("$C'$ ", C');
 label.rt("\textsc{Desargues' Theorem}", 1/2[P, C'] shifted 10 right);
endfig;
\end{mplibcode}
\end{document}