This is an orthographic projection of a stereographic projection. That is, 3d coordinate with an actual stereographic projection are used and projected on the screen via an orthographic projection. The dashed lines are achieved with an orgy of clips and reverse clips.
\documentclass{article}
\usepackage{tikz}
% based on
% https://tex.stackexchange.com/a/38995/121799
% https://tex.stackexchange.com/a/76216
% https://tex.stackexchange.com/a/59168/194703
% https://tex.stackexchange.com/q/448920/194703
\makeatletter
\tikzset{
reuse path/.code={\pgfsyssoftpath@setcurrentpath{#1}}
}
\tikzset{even odd clip/.code={\pgfseteorule},
protect/.code={
\clip[overlay,even odd clip,reuse path=#1]
(current bounding box.south west) rectangle (current bounding box.north east)
%(-16383.99999pt,-16383.99999pt) rectangle (16383.99999pt,16383.99999pt)
;
}}
\makeatother
\usetikzlibrary{3d,perspective}
\begin{document}
\pgfmathsetmacro{\myaz}{10}
\begin{tikzpicture}[declare function={%
stereox(\x,\y)=2*\x/(1+\x*\x+\y*\y);%
stereoy(\x,\y)=2*\y/(1+\x*\x+\y*\y);%
stereoz(\x,\y)=(-1+\x*\x+\y*\y)/(1+\x*\x+\y*\y);},scale=2.5,
line join=round,line cap=round,
dot/.style={circle,fill,inner sep=1pt}]
\path[save path=\pathSphere] (0,0) circle[radius=1];
\begin{scope}[3d view={\myaz}{15}]
\draw (-2,2) -- (-2,-2) coordinate (bl) -- (2,-2) coordinate (br)-- (2,2)
node[above left]{$z=0$};
\begin{scope}
\tikzset{protect=\pathSphere}
\draw (-2,2) -- (2,2);
\end{scope}
\begin{scope}
\clip[reuse path=\pathSphere];
\draw[dashed] (-2,2) -- (2,2);
\end{scope}
\begin{scope}[canvas is xy plane at z=0]
\draw[dashed] (\myaz:1) arc[start angle=\myaz,end angle=\myaz+180,radius=1];
\draw (\myaz:1) arc[start angle=\myaz,end angle=\myaz-180,radius=1];
\path[save path=\pathPlane] (\myaz:2) -- (\myaz+180:2) --(bl) -- (br) -- cycle;
\begin{scope}
\clip[use path=\pathPlane];
\draw[dashed,use path=\pathSphere];
\end{scope}
\begin{scope}
\tikzset{protect=\pathPlane}
\draw[use path=\pathSphere];
\end{scope}
\end{scope}
\draw (1.5,-1,0) node[dot,label=below:{$P(x,y,0)$}]{}
-- ({stereox(1.5,-1)},{stereoy(1.5,-1)},{stereoz(1.5,-1)})
node[dot,label=below left:{$(\xi,\eta,\zeta)$}](I){};
\draw[dashed] (I) -- (0,0,1) node[dot,label=above:{$(0,0,1)$}]{};
\end{scope}
\end{tikzpicture}
\end{document}

One can vary the view parameters and coordinates of the point on the plane. (This is all packed in one animation but the parameters can be varied separately.)
\documentclass[tikz,border=3mm]{standalone}
% based on
% https://tex.stackexchange.com/a/38995/121799
% https://tex.stackexchange.com/a/76216
% https://tex.stackexchange.com/a/59168/194703
% https://tex.stackexchange.com/q/448920/194703
\makeatletter
\tikzset{
reuse path/.code={\pgfsyssoftpath@setcurrentpath{#1}}
}
\tikzset{even odd clip/.code={\pgfseteorule},
protect/.code={
\clip[overlay,even odd clip,reuse path=#1]
(current bounding box.south west) rectangle (current bounding box.north east)
;
}}
\makeatother
\usetikzlibrary{3d,perspective}
\begin{document}
\foreach \X in {5,15,...,355}
{\pgfmathsetmacro{\myaz}{10+10*sin(\X)}
\begin{tikzpicture}[declare function={%
stereox(\x,\y)=2*\x/(1+\x*\x+\y*\y);%
stereoy(\x,\y)=2*\y/(1+\x*\x+\y*\y);%
stereoz(\x,\y)=(-1+\x*\x+\y*\y)/(1+\x*\x+\y*\y);
Px=1.75+0.5*sin(2*\X);Py=-1.5+0.5*cos(2*\X);amax=2.5;},scale=2.5,
line join=round,line cap=round,
dot/.style={circle,fill,inner sep=1pt}]
\pgfdeclarelayer{background}
\pgfdeclarelayer{foreground}
\pgfsetlayers{background,main,foreground}
\path[use as bounding box] (-3.5,-2) rectangle (3.5,2);
\path[save path=\pathSphere,ball color=gray,fill opacity=0.6]
(0,0) circle[radius=1];
\begin{scope}[3d view={\myaz}{15}]
\draw (-amax,amax) -- (-amax,-amax) coordinate (bl) -- (amax,-amax)
coordinate (br)-- (amax,amax)
node[above left]{$z=0$};
\begin{scope}
\tikzset{protect=\pathSphere}
\draw (-amax,amax) -- (amax,amax);
\end{scope}
\begin{scope}
\clip[reuse path=\pathSphere];
\draw[dashed] (-amax,amax) -- (amax,amax);
\end{scope}
\begin{scope}[canvas is xy plane at z=0]
\draw[dashed] (\myaz:1) arc[start angle=\myaz,end angle=\myaz+180,radius=1];
\draw (\myaz:1) arc[start angle=\myaz,end angle=\myaz-180,radius=1];
\path[save path=\pathPlane] (\myaz:amax) -- (\myaz+180:amax) --(bl) -- (br) -- cycle;
\begin{scope}
%\begin{pgfonlayer}{background}
\clip[use path=\pathPlane];
\draw[dashed,use path=\pathSphere];
%\end{pgfonlayer}
\end{scope}
\begin{scope}
\tikzset{protect=\pathPlane}
\draw[use path=\pathSphere];
\end{scope}
\begin{pgfonlayer}{background}
\fill[blue!30,fill opacity=0.6]
(\myaz:1) arc[start angle=\myaz,end angle=\myaz-180,radius=1]
-- (-amax,0) -- (-amax,amax) -- (amax,amax) -- (amax,0) -- cycle;
\end{pgfonlayer}
\fill[blue!30,fill opacity=0.6]
(\myaz:1) arc[start angle=\myaz,end angle=\myaz-180,radius=1]
-- (-amax,0) -- (-amax,-amax) -- (amax,-amax) -- (amax,0) -- cycle;
\end{scope}
\draw (Px,Py,0) node[dot,label=below:{$P(x,y,0)$}]{}
-- ({stereox(Px,Py)},{stereoy(Px,-1)},{stereoz(Px,Py)})
node[dot,label=below left:{$(\xi,\eta,\zeta)$}](I){};
\begin{pgfonlayer}{background}
\draw[dashed] (I) -- (0,0,1) node[dot,label=above:{$(0,0,1)$}]{};
\end{pgfonlayer}
\end{scope}
\end{tikzpicture}}
\end{document}
