Sphere de Riemann (projection f(z)=1/z or f(z)=z^2
Script Geogebra
# https://www.youtube.com/watch?v=4kLoc8eacro&t=19s at 20 minutes
zeroDistant=Slider(0.01,0.1,0.01)
SetValue(zeroDistant,0.01)
bounds=Slider(zeroDistant,2*pi,0.01)
SetValue(bounds,pi)
granularity=Slider(0.2,1,0.001)
SetValue(granularity,0.5)
Toggle_{z^2,1/z}=Checkbox("Z^2OrZ^-1")
# choose between function z^2 or 1/z
# f(z)=1/z =1/(x+i*y)=(x-i*y)/(x+i*y)*(x-i*y)= (x/(x^2-y^2),-y/(x^2-y^2))
# or
# f(z)=z^2 =(x+i*y)^2=x^2-y^2+2*x*y*i=((x^2-y^2),(2*x*y*i))
#Code line inside the checkbox Ellipse (update script tab)
if(Toggle_{z^2,1/z},execute({"Z_x(x,y)=x/(x^2-y^2)","Z_y(x,y)=-y/(x^2-y^2)"}),execute({"Z_x(x,y)=(x^2-y^2)","Z_y(x,y)=2*x*y"}) )
t(x, y) = 2 / (x^2 + y^2 + 1)
Sphere: x^2 + y^2 + z^2 = 1
ShowLabel(Sphere,false )
SetColor(Sphere, "yellow" )
SetColor(t, "pink" )
# grid of complex H plane points of complex numbers z that will be inversed (f(z)=1/z )
Z_{x,y} = Sequence(Sequence((θ_{x},θ_{y}), θ_{x}, -bounds, bounds, granularity), θ_{y}, 0, bounds, granularity)
SetColor(Z_{x,y}, "black" )
# 1/z points
Z_{1/z} = Sequence(Sequence((Z_x((θ_{x},θ_{y})), Z_y((θ_{x},θ_{y}))), θ_{x}, -bounds, bounds, granularity), θ_{y}, 0, bounds, granularity)
SetColor(Z_{1/z}, "green" )
SetVisibleInView( t, -1, false )
SetVisibleInView( Z_x, -1, false )
SetVisibleInView( Z_y, -1, false )
SetVisibleInView( Z_{1/z}, -1, false )
# Stereographic Projection
ProjectionZ_{1/z} = Sequence(Sequence((x(Element(Z_{1/z}, n_{x},n_{y})) * t(x(Element(Z_{1/z}, n_{x},n_{y})),y(Element(Z_{1/z}, n_{x},n_{y}))),y(Element(Z_{1/z}, n_{x},n_{y})) * t(x(Element(Z_{1/z}, n_{x},n_{y})),y(Element(Z_{1/z}, n_{x},n_{y}))),t(x(Element(Z_{1/z}, n_{x},n_{y})),y(Element(Z_{1/z}, n_{x},n_{y})))-1) , n_{x}, 1, Length(Element(Z_{1/z},1)), n_{y}), n_{y}, 1, Length(Z_{1/z}), 1)
SetColor(ProjectionZ_{1/z}, "blue" )