ParametricPlot3D of Boy's surface
z := u + v I
g1 := -(3/2) Im[(z (1 - z^4))/(z^6 + z^3 Sqrt[5] - 1)]
g2 := -(3/2) Re[(z (1 + z^4))/(z^6 + z^3 Sqrt[5] - 1)]
g3 := Im[(1 + z^6)/(z^6 + z^3 Sqrt[5] - 1)] - 1/2
g = g1^2 + g2^2 + g3^2;
You could use Piecewise
here.
When Abs[z] > 1
, the function is undefined and plots nothing.
ParametricPlot3D[Piecewise[{{{g1/g, g2/g, g3/g}, Abs[z] <= 1}}, Undefined],
{u, -1, 1}, {v, -1, 1}]
I'm not an expert on Graphics
, but I hope that helps.
Altho traditionally one should use polar coordinates as I suggested in a comment above, I found it amusing that ParametricPlot3D[]
can actually support a region specification for specifying the domain of the parameters. Thus here is a way to plot the Bryant-Kusner parametrization of the Boy surface:
ParametricPlot3D[With[{z = u + I v}, (#/(#.#)) &[Re[{0, 0, 1/2} +
{I z (1 - z^4), z (z^4 + 1), -(2 I/3) (z^6 + 1)}/
(z^6 + Sqrt[5] z^3 - 1)]]], {u, v} ∈ Disk[],
Axes -> None, Boxed -> False, Mesh -> True,
PlotPoints -> {20, 30}, PlotStyle -> Opacity[2/3]]
where I made the surface translucent to display the inner structure. Mathematically, the construction is an inversion of a certain minimal surface that is topologically equivalent to the projective plane, thrice-punctured. See the linked paper for more background.