
Respuesta1
A continuación se muestra una forma de utilizar la 3dtools
biblioteca desdeaquí. Tal vez algún buen día, cuando GitHub se vuelva más accesible para los usuarios con cierta experiencia en matemáticas, esta biblioteca se convertirá en parte de CTAN... Esta biblioteca nos permite acceder a las coordenadas y calcular analíticamente la intersección con el plano.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{intersections,perspective,3d,3dtools}
\begin{document}
\begin{tikzpicture}[3d view={30}{15}]
\path (0,0,0) coordinate (O)
foreach \X[count=\Y] in {(3,0,0),(2,1,1),(2,0,3),(1,1,3),(0,0,3)}
{(O) -- \X coordinate (p\Y) coordinate[pos=-0.3] (p-\Y)};
\path[canvas is xy plane at z=2,fill=blue!30] (
(-4,-4) coordinate (r1) -- (4,-4) coordinate
(r2) -- (4,4) coordinate
(r3) -- (-4,4) -- cycle;
\path[name path=edge] (r1) -- (r2) -- (r3);
\foreach \Y in {1,...,5}
{\path[name path=ray] (p-\Y) -- (p\Y);
\path[name intersections={of=edge and ray,total=\t},draw,thick]
\ifnum\t=1
(p-\Y) -- (intersection-1) coordinate (i-\Y)
\else
(p-\Y) -- (p\Y)
\fi;
\pgfmathsetmacro{\itest}{TD("(p\Y)o(0,0,1)")}
\ifdim\itest pt>0pt
\pgfmathsetmacro{\tt}{2/TD("(p\Y)o(0,0,1)")}
\ifdim\tt pt<1pt
\pgfmathsetmacro{\myint}{TD("\tt*(p\Y)")}
\draw[thick,dashed] (\myint) -- (i-\Y);
\draw[thick] (\myint) node[circle,inner sep=1pt,fill]{} -- (p\Y);
\fi
\fi
}
\end{tikzpicture}
\end{document}