I would like to present Möbius transformations on the Riemann sphere. Having found the masterpiece answers to Mapping StreamPlot onto spherical surfaces, I am trying to adapt it to my case (those ones are about something slightly different - when the vector field is periodic to begin with).
This almost works, except I cannot regulate the density; it is either concentrated at the north pole, or features a bald spot around it:
Graphics3D[{StreamPlot[
ReIm[(1 + I) (x + I y)], {x, -3, 3}, {y, -3, 3}][[1]] /.
Arrow[z_] :>
Arrow[z /. {x_Real, y_Real} :> {2 x, 2 y, x^2 + y^2 - 1}/(x^2 + y^2 + 1)],
Opacity[.5], Sphere[]}, ImageSize -> 400, Boxed -> False]
results in
while
Graphics3D[{StreamPlot[
ReIm[(1 + I) (x + I y)], {x, -100, 100}, {y, -100, 100}][[1]] /.
Arrow[z_] :>
Arrow[z /. {x_Real, y_Real} :> {2 x, 2 y, x^2 + y^2 - 1}/(x^2 + y^2 + 1)],
Opacity[.5], Sphere[]}, ImageSize -> 400, Boxed -> False]
(i. e. changing 3 to 100) leaves me with
What would be the correct way to do it?
Later
Have tried to force stream points uniformly along several small concentric circles around origin. It is better but still messy, don't even know why...
Graphics3D[{StreamPlot[
ReIm[(1 + 2 I) (x + I y)], {x, -100, 100}, {y, -100, 100},
StreamPoints -> {
Flatten[Table[2^-c {Cos[a], Sin[a]}, {a, 0, 2 \[Pi], \[Pi]/3}, {c, .2, .8, .2}], 1],
500, 200}][[1]] /.
Arrow[z_] :> Arrow[z /. {x_Real, y_Real} :> {2 x, 2 y, x^2 + y^2 - 1}/(x^2 + y^2 + 1)],
Opacity[.5], Sphere[]}, ImageSize -> 400, Boxed -> False]




StreamPlot[]is over a small domain (e.g.{x, -3, 3}, {y, -3, 3}in the first example), then it's no surprise you don't have much arrows near the point at infinity. – J. M.'s missing motivation Mar 29 '18 at 05:39StreamPlot[ReIm[(1 + I) (Cot[ϕ/2] Exp[I θ])], {θ, 0, 2 π}, {ϕ, 0, π}]– J. M.'s missing motivation Mar 29 '18 at 05:44