I have just written a small program in C++ and OpenGl to plot implicit surfaces in $\mathbb{R}^3$ for a Graphical Computing class and now I'm in need of more interesting surfaces to implement!

Some that I've implemented are:

  • Basic surfaces like spheres and cylinders;
  • Nordstrand's Weird Surface;
  • Klein Quartic;
  • Goursat's Surface;
  • Heart Surface;

So, my question is, what are other interesting implicit surfaces in $\mathbb{R}^3?$

P.S.: I know this is kind of vague, but anything you find interesting will be of use. (:

P.P.S: Turn this into a community wiki, if need be.

  • 2
    $\begingroup$ There is a wealth of documentation on Wolfram's Mathworld: mathworld.wolfram.com/topics/Surfaces.html $\endgroup$
    – barf
    Jun 19, 2011 at 1:38
  • $\begingroup$ Boy's surface.. $\endgroup$ Jun 19, 2011 at 1:45
  • $\begingroup$ If you type "mathematical surfaces" into Google you get a near endless list, including lots of raytraced models, for example: math.rug.nl/models $\endgroup$ Jun 19, 2011 at 3:13
  • $\begingroup$ math.rug.nl/models/Clebsch.html is beautiful. Now I want one! Actually: can someone give me the equations of the lines in the Clebsh surface? $\endgroup$ Jun 19, 2011 at 3:24
  • $\begingroup$ @Mariano: I can't but Oliver Lab can (in German) see in particular chapter 3, but the general form looks rather messy. He has some cool pictures on his page algebraicsurface.net $\endgroup$
    – t.b.
    Jun 19, 2011 at 15:40

4 Answers 4


A really nice family of implicit surfaces in $\mathbb{R}^3$ are the Banchoff-Chmutov surfaces $$BC_n:=\{(x,y,z)\in\mathbb{R}^3\:;\:\: T_n(x)+T_n(y)+T_n(z)=0\},$$ where $T_n$ denotes the $n$-th Chebishev polynomial of the first kind, i.e. $$T_n(x):=\sum_{k=0}^{\lfloor n/2\rfloor} \binom{n}{2k} (x^2\!-\!1)^k x^{n-2k}.$$

  • a $\leftarrow BC_1\;\;\;$ $BC_2\rightarrow$ b
  • a $\leftarrow BC_3\;\;\;$ $BC_4\rightarrow$ b
  • a $\leftarrow BC_5\;\;\;$ $BC_6\rightarrow$ b
  • a $\leftarrow BC_7\;\;\;$ $BC_8\rightarrow$ b

What is the genus of $\mathbf{BC_{2n+2}}$? Code for plotting surfaces $BC_n$ in Mathematica 7:

BanchoffChmutov[n_] := ContourPlot3D[ChebyshevT[n,x]+ChebyshevT[n,y]+ChebyshevT[n,z], {x,-1.3,1.3}, {y,-1.3,1.3}, {z,-1.3,1.3}, Contours->0.02, AspectRatio->Automatic, Boxed->False, Axes->{False,False,False}, BoxRatios->Automatic, PlotRangePadding->None, PlotPoints->30, ViewPoint->{-2,3,3}]
surfacesBCn = Table[BanchoffChmutov[i], {i, 8}]
Table[ChebyshevT[n,x]+ChebyshevT[n,y]+ChebyshevT[n,z], {n, 8}]

Other miscellaneous increasingly pretty examples, that I managed to construct myself, include:

$$\begin{array}{r l} \small \{(x,y,z)\in\mathbb{R}^3\:;\:\: & \small (x-2)^2(x+2)^2+(y-2)^2(y+2)^2+(z-2)^2(z+2)^2+\\ & \small 3(x^2y^2+x^2z^2+y^2z^2)+6*x*y*z-10(x^2+y^2+z^2)+22=0\} \end{array}$$ enter image description here

$$\begin{array}{r l} \small \{(x,y,z)\in\mathbb{R}^3\:;\: & \small ((x-1)x^2(x+1)+y^2)^2+\\ & \small ((y-1)y^2(y+1)+z^2)^2+\\ & \small 0.1y^2+0.05(y-1)y^2(y+1)=0\} \end{array}$$ enter image description here

$$\begin{array}{r l} \small \{(x,y,z)\in\mathbb{R}^3\:;\: & \small 15((x-1.2)x^2(x+1.2)+y^2)^2+0.8(z-1)z^2(z+1)-0.1z^2+\\ & \small 20((y-0.8)y^2(y+0.8)+z^2)^2+0.8(x-1)z^2(x+1)-0.1x^2=0\} \end{array}$$ enter image description here

$$\begin{array}{r l} \small \{(x,y,z)\in\mathbb{R}^3\:;\: & \small ((x^2+y^2-0.85^2)^2+(z^2-1)^2)*\\ & \small ((y^2+z^2-0.85^2)^2+(x^2-1)^2)*\\ & \small ((z^2+x^2-0.85^2)^2+(y^2-1)^2)-0.001=0\} \end{array}$$ enter image description here

$$\begin{array}{r l} \small \{(x,y,z)\in\mathbb{R}^3\:;\: & \small (3(x-1)x^2(x+1)+2y^2)^2+(z^2-0.85)^2*\\ & \small (3(y-1)y^2(y+1)+2z^2)^2+(x^2-0.85)^2*\\ & \small (3(z-1)z^2(z+1)+2x^2)^2+(y^2-0.85)^2* -0.12=0\} \end{array}$$ enter image description here

$$\begin{array}{r l} \small \{(x,y,z)\in\mathbb{R}^3\:;\: & \small (2.92(x-1)x^2(x+1)+1.7y^2)^2*(y^2-0.88)^2+\\ & \small (2.92(y-1)y^2(y+1)+1.7z^2)^2*(z^2-0.88)^2+\\ & \small (2.92(z-1)z^2(z+1)+1.7x^2)^2*(x^2-0.88)^2 -0.02=0\} \end{array}$$ enter image description here

Hope you enjoy them...

Note also, that all of these examples have the form $\{(x,y,z)\in\mathbb{R}^3;\:P(x,y,z)=0\}=P^{-1}(0)$. They are $2$-manifolds (surfaces). To see this not only with your eyes but also in theory, compute the matrix $$\left[\frac{\partial P}{\partial x},\frac{\partial P}{\partial y},\frac{\partial P}{\partial z}\right]$$ at all the points of $P^{-1}(0)$ and find out (haven't done this myself) that the matrix is non-zero, which by implicit function theorem means that $P^{-1}(0)$ is a $3-1=2$ manifold.

Also, if you change the definition of $\{(x,y,z)\in\mathbb{R}^3;\:P(x,y,z)=0\}=P^{-1}(0)$ to $$\{(x,y,z)\in\mathbb{R}^3;\:P(x,y,z)\leq 0\}$$ or $$\{(x,y,z)\in\mathbb{R}^3;\:P(x,y,z)\geq 0\},$$ you get a $3$-manifold (because $0$ is a regular value of $P$) with the boundary $\{(x,y,z)\in\mathbb{R}^3;\:P(x,y,z)=0\}$, i.e. the surface $P^{-1}(0)$ with either it's interior or exterior "filled".

ADDITION (how to construct such surfaces): @Soarer, You never try to guess such a complicated polynomial. Here's the key to constructing such surfaces: step by step. You discover on the web, that the torus is $$\{P(x,y,z):=(x^2+y^2-0.7^2)^2+ z^2=0\}.$$ Then you learn that $$\{P(x-a,y-b,z-c)=0\}$$ is torus, translated by $(a,b,c)\in\mathbb{R}^3$. Also, you notice, that $$\{P(y,z,x)=0\}\text{ and }\{P(z,x,y)=0\}$$ is a torus with coordinate lines permuted (rotated by 90°) and $$\{P(ax,by,cz)=0\}$$ is a torus, stretched in x-direction by factor $1/a$, etc. Next, you see that $$\{P(x,y,z)\cdot Q(x,y,z)=0\}=\{P(x,y,z)=0\}\cup\{Q(x,y,z)=0\}.$$ Using all these techniques step by step, and being very patient, you manage to discover the following construction

enter image description here

using the code (Mathematica 7):

implicitSurface[p_String, zoom_, quality_Integer, view_List] := 
  ContourPlot3D[ToExpression[p], {x,-zoom,zoom}, {y,-zoom,zoom}, {z,-zoom,
  zoom}, Contours->0.02, Mesh->Automatic, AspectRatio->Automatic, Boxed->
  False, Axes->{False,False,False}, BoxRatios->Automatic, PlotRange->All, 
  PlotRangePadding->None, PlotPoints->quality, ViewPoint->view];
surfaces = {
  implicitSurface["(x^2+y^2-0.7^2)^2+ z^2", 1.2, 10, {0.3, -0.8, 1}],
                   1.2, 10, {1.3, -1.0, 2}],
                   1.5, 10, {1.3, -1.0, 1.5}],
                   1.2, 50, {1.2, -1.0, 1.3}],
  implicitSurface["(3(x-1)x^2(x+1)+y^2)^2+ 2z^2", 
                   1.2, 10, {0.3, -0.8, 1}],
                   1.2, 10, {0.3, -0.8, 1}],
                   (3(z-1)z^2(z+1)+2x^2)^2+(y^2-0.85)^2* -0.12", 
                   2, 80, {1, -1.8, 1.7}],
                   (2.92(z-1)z^2(z+1)+1.7x^2)^2*(x^2-0.88)^2 -0.02", 
                   2, 20, {0.4, -1.8, 1.3}]

Of course, some of the examples were obtained just with a lot of trying and intelligent guessing.

It is apparent that one can construct surfaces, as complicated as one wishes, via these steps, but each time a new component is added ($P^{-1}(0) \mapsto (P\cdot Q)^{-1}(0)$), the degree of the polynomial increases, which presents considerable numerical problems when plotting the surface.

P.S. I hope I haven't made any mistakes when I copied the code. If so, please inform me, to check with my original Mathematica file.

P.P.S The above surfaces were included, as examples, in my diploma.

  • 10
    $\begingroup$ These are incredibly cool. $\endgroup$ Jun 19, 2011 at 3:45
  • 2
    $\begingroup$ How did you write down the equations? Take your "first miscellaneous example" as an example, it's natural to imagine a surface like that, but I have no idea how to write down the equations.. $\endgroup$
    – user325
    Jun 19, 2011 at 4:52
  • 1
    $\begingroup$ @Soarer: I've added a fairly general "recipe" for construction. $\endgroup$
    – Leo
    Jun 19, 2011 at 6:49
  • 2
    $\begingroup$ beautiful pictures! $\endgroup$
    – Otis
    Aug 28, 2012 at 6:53
  • 2
    $\begingroup$ I can reproduce your last example but only by increasing the isolevel (e.g. 0.04 instead of 0.02). With 0.02, the result I get is not connex. $\endgroup$ Nov 23, 2018 at 8:01

Reposting my comment as requested:

There is a wealth of documentation on Wolfram's Mathworld: http://mathworld.wolfram.com/topics/Surfaces.html

I've also, not too long ago, seen a pdf file that had pictures and Mathematica code for a lot of these surfaces; if I can dig it out of my history I will post it as well.


I like this "tetrahedron":

enter image description here

$$ x^4 + 2x^2y^2 + 2x^2z^2 + y^4 + 2y^2z^2 + z^4 + 8xyz - 10x^2 - 10y^2 - 10z^2 + 20 = 0. $$

The Entzensberger star:

enter image description here

$$ 400(x^2y^2+ y^2z^2+ x^2z^2) = {(1-x^2-y^2-z^2)}^3. $$

On the higher space forum you can find amazing implicit surfaces, especially those of the member ICN5D. These are 3D slices of surfaces in higher dimension. I reproduced some of them with Python, like this one:

Solid Möbius strip, introduced in this paper:


Comlpete minimal surfaces, discovered circa 1985. For example, Meeks' surfaces.

  • $\begingroup$ Those are really nice, but what are the implicit equations? $\endgroup$
    – Leo
    Jun 19, 2011 at 8:17
  • $\begingroup$ Maybe this link will give some more explicit information: indiana.edu/~minimal/research/claynotes.pdf $\endgroup$
    – exchange
    Nov 1, 2017 at 22:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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