From a Plane to Stella Octangula
MuPAD is a Computer Algebra System with thousands of interesting functions and features. One of the most interesting options is its 3D graphics. In a similar way like we produce graphs of functions y = f(x), we can produce graphs of functions of two variables z = f(x,y).
Let us start with a simple function, the one that we know as linear function. However, this time we will use two variables x and y. So, let us take the function and use MuPAD to produce graph of it. This will look like here.
plotfunc3d((x+y), x=-5..5, y=-5..5)
![]() |
This is what we can get when we plot a linear function in 3D space. The obtained surface we call a plane. Now, let us see what will happen if we add absolute value to our function like here z = |x+y| . In MuPAD we shall use abs(x+y). Here is the plot.
plotfunc3d(abs(x+y), x=-5..5, y=-5..5)
![]() |
Again, we got something that looks similar to plots of absolute value function in 2D. Now, we can wonder what will happen if we plot a similar function. Are we going to get a similar plot? Here it is.
plotfunc3d(abs(x-y), x=-5..5, y=-5..5)
![]() |
It looks that we got the same plot like in previously only rotated about vertical axis 0Z. Now, we can try to glue objects from both plots and examine the construction that we get this time. In order to do this we will have to use the same plotting procedure but with two functions, just like here.
plotfunc3d(abs(x+y), abs(x-y), x=-5..5, y=-5..5)
![]() |
Now, let us think a while what kind of surface we may get if one of the graphs will be placed upside down? This means instead of z = |x+y| we shall use z = -|x+y|. Here is the plotting command and produced graph.
plotfunc3d(-abs(x+y), abs(x-y),x=-5..5, y=-5..5)
![]() |
Does it remind you something? Perhaps you can think that this is Japanese pagoda? Well, this is also OK. However, do you see here anything similar from mathematics course? Not yet. Observe, each object occupies half of the height of the cube. The most important is to see that the distance of respective vertices of both objects is exactly 10 units. We can move the top object down 5 units and bottom object 5 units up. This way the respective corners of both objects will be in the same points.
plotfunc3d(-abs(x+y)+5, abs(x-y)-5, x=-5..5, y=-5..5)
![]() |
Now, there is no doubt, we got a solid known as a tetrahedron. Just looking on the graph we can discover some of the properties of this solid. For example, we easily see that vertices of the tetrahedron are also vertices of the cube, in our case this is the cube 10x10x10. Do you see it? You can easily see also that edges of our tetrahedron are diagonals of the cube.
Now, let us think a while if we can fit another tetrahedron in the same cube? We still have four vertices of the cube free. So, if we make a copy of our tetrahedron and rotate it 90 degrees about the axis 0Z, we may get two different tetrahedrons in the same cube. Just like here:
plotfunc3d( (-abs(x+y)+5), (abs(x-y)-5), (abs(x+y)-5), -(abs(x-y)-5), x=-5..5, y=-5..5)
![]() |
What we got? Do you know the name of this solid? It is a very famous solid known in mathematics as Stella Octangula. We consider it as compound polyhedron as it is composed of a tetrahedron and its reciprocal (a second Tetrahedron rotated 180° with respect to the first). The stella octangula is also called a stellated tetrahedron. Stella octangula is a well known in mathematics polyhedron and it was discovered in 1609 by famous German astronomer and mathematician Johannes Kepler.
Now, is your turn. Can you produce something interesting in 3D using planes and of course MuPAD?