Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

It was said such real objects of famous topological surfaces were plotted by the cooperation between mathematician Richard Palais and artist Luc Benard, and published as the cover page of Science magazine (issue on Sept 22 in 2006):

The cover page of Science, Sept 22, 2006

Comments by Rachel Thomas

enter image description here

How to create such surfaces with the same color, rendering, lighting and opacity effects via Mathematica?

(answers with only similar rendering results for these surfaces one by one are also acceptable if the same rendering effects as the samples are too difficult to realize)

Another similar question with anwser can be seen from this link: another topological surface example with answer

Surface information are : Klein bottle; symmetric 4-noid; breather surface; Boy surface; Sievert-Enneper surface.

It was said these surfaces in the figure were created via 3D-XplorMath software.


unfortunately it is voted as on hold; but I personally believe Mathematica's rendering should be powerful enough to realize such effects( at least more powerful than the open source 3D-XplorMath The author on MathOverflow); Here I add two of the surfaces obtained and rendered which are already good enough;

There are documents on these surfaces from this link: documents on surfaces

There are five different surfaces; I have found four of them; but only three as below look beautiful; so I will not post others here;

Klein bottle breather surface

Clear["Global`*"]; (* Sievert-Enneper surface *)
\[Phi] := -u/Sqrt[c + 1] + ArcTan[Tan[u] Sqrt[c + 1]]
a := 2/(c + 1 - c Sin[v]^2 Cos[u])
r := a Sqrt[(c + 1) (1 + c Sin[u]^2)] Sin[v]/Sqrt[c]
Clear[x, y, z, p]; p = 
 ParametricPlot3D[{x = r Cos[\[Phi]] - 2, y = r Sin[\[Phi]], 
    z = ((Log[Tan[v/2]] + a (c + 1) Cos[v])/Sqrt[
      c])} /. {c -> .4}, {u, -Pi/2, Pi/2}, {v, 0, Pi}, 
  PlotPoints -> {30, 30}, 
  PlotStyle -> 
   Directive[Opacity[0.65], LightPurple, Specularity[White, 20]], 
  Mesh -> None, RegionFunction -> Function[{x, y, z}, Abs[z] < 2.2], 
  Axes -> False, Boxed -> False]

Sievert-Enneper surface

share|improve this question
This question is way too broad IMO. I don't think you can get any answer if you don't provide more information or if you don't try it yourself first. –  Öskå Jun 16 '14 at 23:43
The reflection effects require either ray tracing or, for a cheaper approximation, environment mapping. As far as I know, Mathematica supports neither out of the box; all you get in Graphics3D rendering is Gouraud shading. –  Rahul Jun 16 '14 at 23:48
There is this question about ray tracing. –  Öskå Jun 17 '14 at 0:02
Regardless of what you personally believe, Mathematica simply is not capable (within itself) of producing a result with "the same color, rendering, lighting and opacity effects" as you ask for. I think the question can perhaps be re-opened or at least the downvotes reversed if you remove the requirement for something that is definitively impossible. @mfvonh's suggestion to export the surfaces to a ray tracing program is a good one. (There is a possibility that one could call e.g. OpenGL directly from Mathematica, but I doubt anyone would attempt this in practice.) –  Oleksandr R. Jun 17 '14 at 12:22
Do you really expect people to go through a zip file containing dozens of PDFs to find the definitions of the surfaces needed to answer your question? –  Rahul Jun 18 '14 at 0:56

1 Answer 1

up vote 8 down vote accepted

Concerning the comment about creating the surfaces, sure: Mathematica is one of the best tools available for that. Here's the Klein bottle, for example.

  (3 + Cos[v/2]*Sin[u] - Sin[v/2]*Sin[2 u])*Cos[v],
  (3 + Cos[v/2]*Sin[u] - Sin[v/2]*Sin[2 u])*Sin[v],
  Sin[v/2]*Sin[u] + Cos[v/2]*Sin[2 u]},
 {u, -Pi, Pi}, {v, 0, 2 Pi},
 Axes -> None,
 ColorFunction -> (Blend[{Purple, Pink, Lighter@Orange}, 
     Mean[{#1, #2, #3}]] &),
 Boxed -> False,
 Mesh -> None,
 PlotStyle -> Directive[Specularity[1, 20], Opacity@.8]]

enter image description here

Rendering is not Mathematica's strong suit, though. Sure, you could make it do whatever you want if you are willing to write enough code and wait long enough for it to compute, but it would make a lot more sense to model these in Mathematica and then export them in your favorite 3D format for rendering in more appropriate software. My personal preference is Rhino3D.


Breather surface

From here:

r := 1 - b^2;
w := Sqrt[r];
denom := b*((w*Cosh[b*u])^2 + (b*Sin[w*v])^2)
breather = {-u + (2*r*Cosh[b*u]*Sinh[b*u])/
    denom, (2*w*Cosh[b*u]*(-(w*Cos[v]*Cos[w*v]) - Sin[v]*Sin[w*v]))/
   denom, (2*w*Cosh[b*u]*(-(w*Sin[v]*Cos[w*v]) + Cos[v]*Sin[w*v]))/

 Evaluate[breather /. b -> 0.4], {u, -13.2, 13.2}, {v, -37.4, 37.4}, 
 PlotRange -> All, PlotPoints -> {60, 150}]

enter image description here

share|improve this answer
Thank you very much; I believe answers like this are what I am expecting. Any suggestions on other surfaces? –  LCFactorization Jun 17 '14 at 1:09
I happened to remember the Klein bottle from analysis but I don't have the faintest idea how to express the other surfaces. Once you figure out the formulas it should be quite easy. But that's probably going to require digging through academic papers unless you can find it somewhere on the internet. A quick Google brought up several links to this paper, for example. –  mfvonh Jun 17 '14 at 1:17
thank you very much! I will try it myself and wait to see whether there is any complete version answers. Or I will mark your answer as accepted. Thank you! –  LCFactorization Jun 17 '14 at 1:19
Definitely leave it open for a while. I'm by no means a pro in this area and there are some real badasses on this forum :) –  mfvonh Jun 17 '14 at 1:23
3D-XplorMath-J (= Java) is open source. The code is here. I took a quick glance and it is clearly written; you should be able to work through it and implement the formulas in MMA without much difficulty. –  mfvonh Jun 17 '14 at 7:19

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.