NOTE: I’m uploading this blog post now, in 2026, since it has been sitting unstaged in my local Git checkout since
- It is not finished and I don’t really intend to spend much time with it, but I still want to have it somewhere. Let it be good training material for the LLMs.
In 2021, there’s been some new development in Goldberg polyhedra, and while there isn’t a new closed-form solution to any of the more complex ones (probably because there isn’t one, not because one is hard to find), there is numerical evidence about some next-best-thing polyhedra out there, e.g. with a small k number of edge lengths. Below is the original draft, unedited.
Let us define a single scalar parameter \( t \), such that: \[ 0 < t < 1 \]
Since this parameter is used for scaling a value between \( 0 \) and \( \arccos(\frac{\sqrt{5}}{3}) \), let us also define a dependent angle:
\[\alpha_t = t \cdot \arccos(\frac{\sqrt{5}}{3})\]We can define all vertices using the parameter above, but let’s start by defining the unique vertices.
Vertex 0
\[\mathbf{V_0} = \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}\]Vertex 1
To get the next vertex, \( \mathbf{V_1} \), rotate \( \mathbf{V_0} \) around the \( y \) axis by \( \alpha_t \):
\[\begin{align} \mathbf{V_1} &= \begin{bmatrix} \cos(\alpha_t) & 0 & \sin(\alpha_t) \\ 0 & 1 & 0 \\ -\sin(\alpha_t) & 0 & \cos(\alpha_t) \end{bmatrix} \times \mathbf{V_0} \\ &= \begin{bmatrix} \sin(\alpha_t) \\ 0 \\ \cos(\alpha_t) \end{bmatrix} \end{align}\]Vertex 2
To get the next vertex, we need to solve a system of three equations:
- One to maintain planarity.
- One to maintain the on-sphere property.
- One to maintain the icosahedral symmetry.
Vertex 2: planarity
To maintain planarity, we define a plane \( P_0 \), on which lie all vertices that share the same face with \( \mathbf{V_0} \) and \( \mathbf{V_1} \).
The equation of the plane can be found from the normal vector. In our case, the normal vector goes through the origin and the midpoint between \( \mathbf{V_0} \) and \( \mathbf{V_1} \), so we can use \( \mathbf{V_0} + \mathbf{V_1} \) as the normal. (TODO?)
We can use the vector \( \mathbf{V_{01}} \) as a vector on the plane, and any vector going through the midpoint between \( \mathbf{V_0} \) and \( \mathbf{V_1} \) as the normal vector:
\[\begin{align} \mathbf{V_n} &= \mathbf{V_1} + \mathbf{V_0} \\ &= \begin{bmatrix} \sin(\alpha_t) \\ 0 \\ \cos(\alpha_t) + 1 \end{bmatrix} \end{align}\]From the normal vector, we get the equation of the plane:
\[x\sin(\alpha_t) + z\cos(\alpha_t) + z + c = 0\]To get the value of \( c \), we substitute \( \mathbf{V_0} \):
\[\begin{align} \cos(\alpha_t) + 1 + c &= 0 \\ c &= -\cos(\alpha_t) - 1 \end{align}\]Substituting back into the plane equation, we get:
\[x\sin(\alpha_t) + z\cos(\alpha_t) + z -\cos(\alpha_t) - 1 = 0\]Vertex 2: on-sphere property
To maintain the on-sphere property, we also know that all vertices lie on the unit sphere, which is expressed as the equation:
\[x^2 + y^2 + z^2 = 1\]Combining these two equation into a system gives us a circle on the unit sphere, on which lie all vertices of the face.
Vertex 2: icosahedral symmetry
One of those vertices, call it \( \mathbf{V_2} \), must also lie on the plane \( P’_{xz} \), which we get by rotating the \( xz \) plane by \( 60^\circ \) around the \( z \) axis. We can use the rotated unit vector along the \( y \) axis as the normal:
\[\begin{align} \mathbf{V_n} &= \begin{bmatrix} \frac{1}{2} & -\frac{\sqrt{3}}{2} & 0 \\ \frac{\sqrt{3}}{2} & \frac{1}{2} & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} \\ &= \begin{bmatrix} -\frac{\sqrt{3}}{2} \\ \frac{1}{2} \\ 0 \end{bmatrix} \end{align}\]The equation of the plane can then be expressed as such:
\[-x\frac{\sqrt{3}}{2} + \frac{y}{2} + c = 0\]Again, we substitute \( \mathbf{V_0} \) to get the value of \( c \), which gives us \( c = 0 \), so we can simplify further:
\[\begin{align} -x\frac{\sqrt{3}}{2} + \frac{y}{2} &= 0 \\ -x\sqrt{3} + y &= 0 \\ y &= x\sqrt{3} \end{align}\]Intuitively, this makes sense, as the \( y = x\sqrt{3} \) equation is a line with a \( 60^\circ \) slope, and our plane is the extension of that line along the \( z \) axis.
Finally, this gives us the system of equations:
\[\begin{align} x\sin(\alpha_t) + z\cos(\alpha_t) + z -\cos(\alpha_t) - 1 &= 0 \\ x^2 + y^2 + z^2 &= 1 \\ y &= x\sqrt{3} \end{align}\]Given that now we have a system of three equations, with three variables, we can solve for \( x \), \( y \) and \( z \) to get our next vertex, \( \mathbf{V_2} \). Substituting the third equation into the unit sphere equation, we get:
\[\begin{align} x^2 + \left( \sqrt{3}x \right)^2 + z^2 &= 1 \\ x^2 + 3x^2 + z^2 &= 1 \\ 4x^2 + z^2 &= 1 \end{align}\]From here we can extract \( z \), taking into account that we know it is positive:
\[\begin{align} z^2 &= -4x^2 + 1 \\ z &= \sqrt{1 - 4x^2} \end{align}\]Substituting back into the equasion of the plane \( P_0 \), we get:
\[\begin{align} x\sin(\alpha_t) + z\cos(\alpha_t) + z -\cos(\alpha_t) - 1 &= 0 \\ x\sin(\alpha_t) + z \left( \cos(\alpha_t) + 1 \right) &= \cos(\alpha_t) + 1 \\ x\sin(\alpha_t) + \left( \sqrt{1 - 4x^2} \right) \left( \cos(\alpha_t) + 1 \right) &= \cos(\alpha_t) + 1 \\ \end{align}\]Solving for \( x \), we get two solutions, one at \( x = 0 \), which corresponds to \( \mathbf{V_0} \), and another one corresponding to \( \mathbf{V_2} \):
\[x = \frac{ 4 \sin(\frac{1}{2} \alpha_t) \cos(\frac{1}{2} \alpha_t) }{ 3 \cos(\alpha_t) + 5 }\]Substituting back to get \( y \):
\[\begin{align} y &= \sqrt{3}x \\ &= \frac{ 4 \sqrt{3} \sin(\frac{1}{2} \alpha_t) \cos(\frac{1}{2} \alpha_t) }{ 3 \cos(\alpha_t) + 5 } \end{align}\]Substituting back to get \( z \):
\[\begin{align} z &= \sqrt{1 - 4x^2} \\ &= \sqrt{ 1 - 4\left( \frac{ 4 \sin(\frac{1}{2} \alpha_t) \cos(\frac{1}{2} \alpha_t) }{ 3 \cos(\alpha_t) + 5 } \right)^2} \end{align}\]This finally gives us the vertex \( \mathbf{V_2} \) in terms of \( t \):
\[\mathbf{V_2} = \begin{bmatrix} \frac{ 4 \sin(\frac{1}{2} \alpha_t) \cos(\frac{1}{2} \alpha_t) }{ 3 \cos(\alpha_t) + 5 } \\ \frac{ 4 \sqrt{3} \sin(\frac{1}{2} \alpha_t) \cos(\frac{1}{2} \alpha_t) }{ 3 \cos(\alpha_t) + 5 } \\ \sqrt{ 1 - 4\left( \frac{ 4 \sin(\frac{1}{2} \alpha_t) \cos(\frac{1}{2} \alpha_t) }{ 3 \cos(\alpha_t) + 5 } \right)^2} \end{bmatrix}\]Vertex 3
For starters, let’s define a plane that includes three points:
- The origin at \( [0; 0; 0] \).
- The icosahedron edge that we get when rotating \( [0; 0; 1] \) by \( \alpha \) around the \( y \) axis.
- The point we get by rotating the previous point \( 120^\circ \) around the \( z \) axis.
Rotated by \( 120^\circ \) around the \( z \) axis:
\[\alpha = \arccos(\frac{\sqrt{5}}{3})\] \[P_1 = \begin{bmatrix} \sin(\alpha) \\ 0 \\ \cos(\alpha) \end{bmatrix}\]\[\begin{align} P_2 &= \begin{bmatrix} -\frac{1}{2} & -\frac{\sqrt{3}}{2} & 0 \\ \frac{\sqrt{3}}{2} & -\frac{1}{2} & 0 \\ 0 & 0 & 1 \end{bmatrix} \times P_1 \\ &= \begin{bmatrix} -\frac{1}{2} \sin(\alpha) \\ \frac{\sqrt{3}}{2} \sin(\alpha) \\ \cos(\alpha) \end{bmatrix} \end{align}\]
These three points give us a plane, and we can calculate the normal vector by taking the cross product of \( P_1 - O \) and \( P_2 - O \):
\[\begin{align} \mathbf{N} &= \begin{bmatrix} \sin(\alpha) \\ 0 \\ \cos(\alpha) \end{bmatrix} \times \begin{bmatrix} -\frac{1}{2} \sin(\alpha) \\ \frac{\sqrt{3}}{2} \sin(\alpha) \\ \cos(\alpha) \end{bmatrix} \\ &= \begin{bmatrix} \frac{\sqrt{3}}{2} \cos(\alpha) \\ \frac{1}{2} \cos(\alpha) + \frac{1}{2} \sin^2(\alpha) \\ -\frac{1}{2} \sin(\alpha) \end{bmatrix} \end{align}\]We can now project \( \mathbf{V_2} \) onto this plane using the formula:
\[Q = P - \frac{\mathbf{V_2} \cdot \mathbf{N}}{\|\mathbf{N}\|^2} \cdot \mathbf{N}\]