In this paper, we describe the utilization and genesis of an interactive website you can use to create, display and manipulate Platonic solids and other polyhedra.
“In geometry, a polyhedron is a three-dimensional shape with flat polygonal faces, straight edges and sharp corners or vertices”.
“In three-dimensional space, a Platonic solid is a regular, convex polyhedron”.
The polyhedron is dynamically created by simulating physical masses (vertices) connected by springs and dampers (edges) covered by a convex hull (faces). You can use
the left mouse button to drag single vertices around and watch the “rubber polyhedra” dilate, translate, and rotate, in order to pull the vertex back into its hull. Pressing the
right mouse button, you can orbit the camera around the scenery. With the mouse wheel you can zoom in and out. You can choose different polyhedra via a button list.
The website has been programmed in Unity in C#, compiled for WebGL, and should run in every modern browser.
1 Manual
1.1 Introduction
In this paper, we describe the utilization and genesis of an interactive website 1 you can use to create, display and manipulate Platonic solids and other polyhedra.
“In geometry, a polyhedron [...] is a three-dimensional shape with flat polygonal faces, straight edges and sharp corners or vertices”2.
“In three-dimensional space, a Platonic solid is a regular, convex polyhedron”3.
The polyhedron is dynamically created by simulating physical masses (vertices) connected by springs and dampers (edges) covered by a convex hull (faces).1 You can use the left mouse button to drag single vertices around and watch the “rubber polyhedra” dilate, translate, and rotate, in order to pull the vertex back into its hull. Pressing the right mouse button, you can orbit the camera around the scenery (section 2.4). With the mouse wheel you can zoom in and out.
You can choose different polyhedra via a button list (figure 1.1).
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.1: Choose a polyhedron.
The website has been programmed in Unity 4 in C#, compiled for WebGL, and should run in every2 modern browser.
1.2 Polyhedra
In this chapter we describe the different polyhedra you can choose on the website.
1.2.1 Tetrahedron
The Platonic solid with four vertices is called a regular tetrahedron or triangular pyramid. Obviously, the vertices are forced into a configuration of the four (Greek: tetra-) equivalent equilateral triangular faces depicted in figure 1.2.
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.2: Tetrahedron (nvertices =4)
The colors of the vertex spheres are dynamically chosen depending on the vertex positions in the corresponding RGB color cube (figure 2.6). The colors of the faces are defined by the face normal vectors. Since the center perpendicular of every triangular face pierces the opposite vertex (sphere) both have the same color.
1.2.2 Triangular dipyramid
There is no Platonic solid with five vertices. Nevertheless, the corresponding simulation creates the highly symmetrical polyhedron in figure 1.3. It is called a triangular dipyramid, because it can be ”constructed” by ”gluing” two (Greek: di-) triangular pyramids (tetrahedrons) base-to-base.
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.3: Triangular dipyramid (nvertices =5)
1.2.3 Octahedron
The six vertices of this simulation inflate into a regular octahedron (figure 1.4), which is one of the Platonic solids. The octahedron (Greek for ”eight faces”) is also called a square dipyramid because it can be dissected into two pyramids with square bases. Seen from another angle of view, the octahedron also is a triangular antiprism, because there are (four) pairs of opposing parallel triangles, of which one has its vertices where the other one has its edges.
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.4: Octahedron, square dipyramid, triangular antiprism (nvertices =6)
1.2.4 Square antiprism
Yes - there is a Platonic solid with eight vertices; the regular hexahedron, aka the cube. But no - interestingly, this polyhedron simulation does not create a cube, if you ask it to arrange eight vertices in a minimum energy state. The astonishing result is the square antiprism shown in figure 1.5, which consists of two squares3 (a ”bottom square” and a ”top square”) that have been rotated (45°) into paraphase and eight triangles connecting the edges of the bottom square with the vertices of the top square and vice versa4. Obviously, this ”twisting” of the squares leads to a stable equilibrium of the contradicting forces of the springs, while the cube, where the vertices of the squares would ”face each other directly”, produces an indifferent equilibrium that will never be reached in a simulation with random initial positions.
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.5: Not a cube, but a square antiprism (n vertices =8)
1.2.5 Icosahedron
In a simulation with twelve vertex spheres, all of them find their positions at the vertices of the regular icosahedron (Greek for ”twenty faces”) shown in figure 1.6, which is another one of the Platonic solids.
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.6: Icosahedron (n vertices =12)
1.2.6 Not a dodecahedron
The Platonic solid with 20 vertices and twelve (Greek: dodeca-) faces is called a regular dodecahedron. But again (as with the square antiprism) the 20 vertices minimum energy configuration depicted in figure 1.7 is not a dodecahedron. We have not even found a proper name for that irregular polyhedron. At first glance it seems to consist of triangles and three squares (adjacent triangles of the same color). But if you look more carefully at the ”squares” you can discover that the colors of the adjacent triangles do not have the exact same color. Strange . . . !
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.7: Not a dodecahedron (nvertices =20)
1.2.7 Corona
This program has been written in 2020 (the first year of the corona virus). The polyhedron with 128 vertices in figure 1.8 looks a little bit like the virus.
Abbildung in dieser Leseprobe nicht enthalten
Figure 1.8: Corona (n vertices = 128)
2 Under the hood
2.1 Coordinate system
Unity uses a left-handed coordinate system:
- The thumb of your left hand points to your right (red x-axis in figure 2.1).
- The index finger of your left hand points up (green y-axis in figure 2.1).
- The middle finger of your left hand points away from you (blue z-axis in figure 2.1).
Abbildung in dieser Leseprobe nicht enthalten
Figure 2.1: Coordinate system
2.2 Spheres
We model the vertices of the polyhedron as tiny spheres. Since the user is free to choose any polyhedron we do not know the number of spheres we have to create. Therefore, we generate the spheres programmatically during the initialization of the program.
Unity can create a few 3D primitives by itself:
- Cube
- Sphere
- Capsule
- Cylinder
- Plane
- Quad
Therefore, we can use a standard Sphere object as a prefab (figure 2.2)
Abbildung in dieser Leseprobe nicht enthalten
Figure 2.2: Standard Sphere object as a prefab create a new empty GameObject called Spheres (figure 2.3)
Abbildung in dieser Leseprobe nicht enthalten
Figure 2.3: Empty GameObject (Spheres)
add a Mesh Filter and a Mesh Renderer as Mesh components to the empty Spheres GameObject (figure 2.4)
Abbildung in dieser Leseprobe nicht enthalten
Figure 2.4: Mesh Filter and Mesh Renderer of Spheres and attach a script by the name of Spheres_class (figure 2.5).
Abbildung in dieser Leseprobe nicht enthalten
Figure 2.5: Script(Spheres_class)
In the script (section 2.2.1) we declare a public GameObject array of spheres that will contain the vertex sphere objects to be instantiated (and therefore has an initial size of zero in figure 2.5) and the public GameObject new_sphere that we manually connect to the sphere_prefab in figure 2.5.
2.2.1 Spheres_class
The Spheres_class script is attached to the empty Spheres GameObject. It creates the spheres and the springs connecting the spheres to each other and the origin. In every simulation step, it computes the common center of mass of all spheres and colorizes the spheres according to their position with respect to the common center of mass.
Unity scripts automatically import some standard types from predefined namespaces of which we only use the UnityEngine:
Abbildung in dieser Leseprobe nicht enthalten
Every Unity script derives from the MonoBehaviour base class:
Abbildung in dieser Leseprobe nicht enthalten
Before we define the Start function, we declare some (global) objects and variables as properties. The array of spheres will be populated with the instantiated sphere objects:
Abbildung in dieser Leseprobe nicht enthalten
The new_sphere object has been initialized with the sphere_prefab in figure 2.5 and will serve as an instantiation template for a new sphere:
Abbildung in dieser Leseprobe nicht enthalten
The initial polyhedron is an icosahedron with an initial5 vertex count of twelve:
Abbildung in dieser Leseprobe nicht enthalten
The center is computed in every simulation step as the current center of mass:
Abbildung in dieser Leseprobe nicht enthalten
2.2.1.1 Start
The start function is called before the first simulation step. It creates the spheres and the springs:
Abbildung in dieser Leseprobe nicht enthalten
[...]
1 Additionally, every vertex is connected to the origin via a soft spring (section 2.2.1.1), ensuring that the polyhedron will always finally return to the center of the screen.
2 Except for - who would have guessed - Internet Explorer which does not support WebAssembly.
3 You can easily identify the squares as two adjacent triangles of the same color (same plane normal).
4 You have to try out this simulation! It is really cute to watch the vertices swarm around, until they have come to an agreement on which of them makes up the bottom and top squares.
5 Since we want to access the number of vertices in other classes as well n_spheres has to be a static variable.
- Quote paper
- Prof. Dr.-Ing. Jörg Buchholz (Author), 2020, Platonic solids, Munich, GRIN Verlag, https://www.grin.com/document/958287
-
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X. -
Upload your own papers! Earn money and win an iPhone X.