Message Boards Message Boards

[GiF] A possible model of an impossible cube of M.C. Escher

enter image description here

Imagine you would like to 3D print an impossible cube of M.C. Escher, how would you do this? Take a look at the image below, but don't scroll down yet to see how it is made. It is real 3D graphics built upon only possible geometries, so there should be a trick to it. Try to notice some details that will give it out. The image is not perfectly constructed, so look for betraying inconsistencies.

enter image description here

The cube was invented by M.C. Escher for Belvedere, a lithograph in which a boy seated at the foot of the building holds an impossible cube (below is a fragment). The impossible cube draws upon the ambiguity present in a Necker cube illustration; an impossible cube is usually rendered as a Necker cube in which the edges are apparently solid beams.

enter image description here

Designing a good optical illusion requires polishing little things. In this particular method of constructing one would need to know a bit about:

  • plane curves in 3D space
  • varying thickness of a spline
  • controlling the reflection of light

There are alternative ways to construct it, for instance, cutting the edges:

enter image description here

but here I will follow a different trick illustrated below, which I saw originally in Pierpaolo Andraghetti's video.

enter image description here

I start from simply drawing a cube from built-in data:

v = PolyhedronData["Cube", "VertexCoordinates"];
i = PolyhedronData["Cube", "EdgeIndices"];
Graphics3D[{Orange, Specularity[White, 20], GraphicsComplex[2 v, Tube[i, .1]]}, Boxed -> False]

enter image description here

We used Tube and Specularity, which greatly increase 3D depth perception, especially for seemingly crossing edges. To replace a cube's edge with a illusion-curve I need an easy way to make it. I suggest making a very simple 2D spline:

pts = {{-1, -1}, {2.5, -2}, {2.5, -1}, {-1, 1}};
  {PointSize[.1], Red, Point[{1, -1}]},
  {BSplineCurve[pts], Green, Line[pts], Red, Point[pts]}}, Frame -> True]

enter image description here

which as you can see "hugs" the red dot, - a mark for $(-1,1)$ coordinate. This visually guarantees the curve extends well enough beyond other perpendicular edge to create an impossible crossover illusion. Next we add an extra coordinate to all points and place this 2D spline into 3D:

pts3D = Transpose[Transpose[pts]~Join~{ConstantArray[-1, 4]}];
 {{BSplineCurve[pts3D], Green, Line[pts3D], Red, Point[pts3D]},
  {Orange, Specularity[White, 20], GraphicsComplex[2 v, Tube[i, .1]]}},
 Boxed -> False, SphericalRegion -> True]

enter image description here

Next I apply rotation around the "illusion" edge:

  {{Thick, Rotate[BSplineCurve[pts3D], a Degree, {0, 1, 0}, {-1, -1, -1}]},
   {Orange, Specularity[White, 20], GraphicsComplex[2 v, Tube[i, .1]]}},
  Boxed -> False, SphericalRegion -> True, PlotRange -> 2]
 , {{a, -65, "angle"}, 0, -90}]

enter image description here

We finally make a first model:

 {{Orange, Specularity[White, 20], 
   Rotate[Tube[BSplineCurve[pts3D], .09], -65 Degree, {0, 1, 0}, {-1, -1, -1}]},
  {Orange, Specularity[White, 20], GraphicsComplex[2 v, Tube[Delete[i, 2], .09]]}},
 Boxed -> False, SphericalRegion -> True]

enter image description here

As you can see it is not good. Too much light reflection pinpoints curvature of the "illusion"-edge. Also it should be slightly less thick because it should be most remote, but in reality it is of course is very close to viewer in the middle. The thickness can be fixed with variable spline thickness. For our example we need a tiny unnoticeable thickness variation, so here is an example for illustration:

Graphics3D[{Red, CapForm["Round"],
  Tube[BSplineCurve[{{0, 0, 0}, {1, 1, 0}, {1.2, 2, 0}, {.6, 1.8, 0}, 
    {0, 1.3, 0}, {-.6, 1.8, 0}, {-1.2, 2, 0}, {-1, 1, 0}, {0, 0,0}}], 
 {.1, .1, .1, .1, .3, .1, .1, .1, .1}]}]

enter image description here

And the light is fixed by removing Specularity and providing a few sources to uniformly illuminate the "illusion"-edge:

{{Rotate[Tube[BSplineCurve[pts3D],{.09,.06,.06,.09}],-65 Degree,{0,1,0},{-1,-1,-1}]},

enter image description here

And this is much better, but once you know the trick you can notice light variations that betray curvature. There is a lot of room for improvement of course, feel free to post your ideas. I would need to take a better care of corner junctions bending the spline as Pierpaolo Andraghetti did. The original by Pierpaolo Andraghetti is exquisitely crafted, a beautiful work, nevertheless you still can see imperfections. For example, his beam, is rectangular as contrasted with mine which is round. If you look carefully along Pierpaolo's "illusion"-edge you can notice that sharp edge is getting vague, relative to other vertical edges. Constructing this in real life perfectly is a challenge, lighting is subtle. I think the best would be to give little lighting to allow the brain to "guess" and imagine the rest. This and other code for making GiFs is in the attached notebook.

enter image description here

POSTED BY: Vitaliy Kaurov
4 Replies

enter image description here -- you have earned Featured Contributor Badge enter image description here Your exceptional post has been selected for our editorial column Staff Picks and Your Profile is now distinguished by a Featured Contributor Badge and is displayed on the Featured Contributor Board. Thank you!

POSTED BY: Moderation Team
Posted 11 months ago

Very interesting! Reminded me of my past contributions on "ambiguous rings etc..." Was rightly coined as "shape shifting" by the Moderation Team. If your Escher-like cube would be 3D printed, you could demonstrate using two perpendicular mirrors as I demonstrated here. This will split the shapes of the cube as seen from two different viewpoints. This way, one mirror will show a the intended Escher-cube while the other mirror will clearly unveil the optical illusion!

enter image description here

POSTED BY: Erik Mahieu

I enjoyed that post of your very much, @Erik (actually I enjoyed all of your post:-) ). Yes, the idea with mirrors is excellent. I, indeed, should try to 3D print and take some photos.

POSTED BY: Vitaliy Kaurov
Posted 10 months ago

I was inspired by the "Impossible Cube" and wanted to apply similar ideas to a chair model I had previously been working on. This resulted in the tentative making of an "Impossible Chair."

POSTED BY: Erik Mahieu
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract