Here is a reproduction of Sigur's nice graph, using MetaPost (inside a LuaLaTeX program) and some other parameters instead.
The intersection point is very easily obtained with MetaPost, thanks to the very handy whatever macro. I've also made use of the buidcycle and the anglebetween macros (this one comes from the MetaFun format) for the angles and their colouring, and created a macro of my own to draw the "empty" dot where the intersection takes place.
\documentclass{standalone}
\usepackage{unicode-math, xcolor}
\usepackage{luamplib}
\mplibsetformat{metafun}
\mplibtextextlabel{enable}
\begin{document}
\begin{mplibcode}
vardef drawemptydot (expr z, r) =
save circle; path circle; circle = fullcircle scaled r shifted z;
unfill circle; draw circle ;
enddef;
beginfig(0);
% Settings
u = cm ; % The general unit
pair A, Ap, B, Bp, O ; A = origin ; B = (6, 5)*u ; Ap = (0, 5)*u ; Bp = (6, 0)*u ;
O = whatever[A, B] = whatever[Ap, Bp] ;
% Fine tuning (angles)
path angle_OAAp ; angle_OAAp = anglebetween(O--A, O--Ap, "") ;
path angle_OBBp ; angle_OBBp = anglebetween(O--B, O--Bp, "") ;
% Fillings and drawings angles
fill buildcycle(O--A, angle_OAAp, O--Ap) withcolor \mpcolor{olive!40} ;
draw angle_OAAp withcolor red ;
fill buildcycle(O--B, angle_OBBp, O--Bp) withcolor \mpcolor{blue!40} ;
draw angle_OBBp withcolor red ;
% Drawing segments
draw A -- B ; draw = Ap -- Bp ;
% The dots
for P = A, B, Ap, Bp: drawdot P withpen pencircle scaled 3bp ; endfor ;
drawemptydot(O, 3bp) ;
% The labels
label.bot("$O$", O) ; label.lft("$A$", A) ; label.rt("$B$", B) ;
label.rt("$B'$", Bp) ; label.lft("$A'$", Ap) ;
% Bounding box enlarged (prevents labels cropping at the extremities of the graph)
setbounds currentpicture to boundingbox currentpicture enlarged 3bp ;
endfig;
\end{mplibcode}
\end{document}
