-
PDF
- Split View
-
Views
-
Cite
Cite
Anooshe Rezaee Javan, Ting-Uei Lee, Yi Min Xie, Dividing a sphere into equal-area and/or equilateral spherical polygons, Journal of Computational Design and Engineering, Volume 9, Issue 2, April 2022, Pages 826–836, https://doi.org/10.1093/jcde/qwac031
- Share Icon Share
Abstract
Dividing a sphere uniformly into equal-area or equilateral spherical polygons is useful for a wide variety of practical applications. However, achieving such a uniform subdivision of a sphere is a challenging task. This study investigates two classes of sphere subdivisions through numerical approximation: (i) dividing a sphere into spherical polygons of equal area; and (ii) dividing a sphere into spherical polygons with a single length for all edges. A computational workflow is developed that proved to be efficient on the selected case studies. First, the subdivisions are obtained based on spheres initially composed of spherical quadrangles. New vertices are allowed to be created within the initial segments to generate subcomponents. This approach offers new opportunities to control the area and edge length of generated subdivided spherical polygons through the free movement of distributed points within the initial segments without restricting the boundary points. A series of examples are presented in this work to demonstrate that the proposed approach can effectively obtain a range of equal-area or equilateral spherical quadrilateral subdivisions. It is found that creating gaps between initial subdivided segments enables the generation of equilateral spherical quadrangles. Secondly, this study examines spherical pentagonal and Goldberg polyhedral subdivisions for equal area and/or equal edge length. In the spherical pentagonal subdivision, gaps on the sphere are not required to achieve equal edge length. Besides, there is much flexibility in obtaining either the equal area or equilateral geometry in the spherical Goldberg polyhedral subdivisions. Thirdly, this study has discovered two novel Goldberg spherical subdivisions that simultaneously exhibit equal area and equal edge length.

New ways to achieve equal-area and/or equilateral spherical polygons have been developed.
Spherical equilateral quadrangles are reachable by creating some gaps between the initial modules.
We have found new solutions for equal-area or equilateral spherical pentagons.
Two novel Goldberg polyhedra with equal area and equal length simultaneously have been discovered.
1. Introduction
The problem of uniformly distributingN points on the unit sphere has been studied for many decades (Robinson, 1961; Berman & Hanes, 1977; Mortari et al., 2011). This problem, known as Smale’s 7th problem (Smale, 1998), is one of the most challenging mathematical problems of the century and is significant because of its implications for mathematics and its immediate practical applications in many areas. Hence, it has inspired researchers in various fields such as engineering, biology, chemistry, and physics (Klug, 1983; Tobler & Chen, 1986; Tarnai et al., 1995; Saff & Kuijlaars, 1997; White, 2000; Praun & Hoppe, 2003; Hardin & Saff, 2004; Mortari et al., 2011; Popko, 2012). Many different criteria have been used to distribute points on the sphere, including minimum energy, packing, Voronoi cells, covering, maximum determinant, volume of the convex hull, cubature weights, and norms of the Lagrange polynomials [a comprehensive overview of the methods can be found in Popko (2012) and Womersley (2014)]. In this study, the technique of minimizing the total energy (Saff & Kuijlaars, 1997; Womersley & Sloan, 2001; Hardin & Saff, 2004; Leopardi, 2007) is used to obtain equal area or equilateral solutions for spherical subdivisions. Using this technique, point sets that minimize the discrete Riesz energy on the sphere surface in the hypersingular case are asymptotically uniformly distributed (Hardin & Saff, 2004).
From another point of view, today, creating elegant surfaces by repeating a few different elements is of great importance in many novel architectural applications (Grünbaum & Shephard, 1987; Pottmann et al., 2015; Javan et al., 2021). Many studies have investigated the spherical subdivisions from the perspectives of the spherical polygons’ shape, area, or edge length (Kitrick, 1990, 2015; Snyder, 1992; Teanby, 2006; Harrison, 2012; Massey, 2012; Popko, 2012; Lee & Mortari, 2017; Gáspár, 2021; Lee et al., 2022). Spherical polygons are created on the surface of a sphere from several great circle arcs. Such polygons may have any number of sides, even two sides (Popko, 2012). Dividing the sphere into an equal area or equilateral segments is desirable due to their significant applications in different fields. For instance, equal-area spherical subdivisions are of great importance to geography sampling (Snyder, 1992; Harrison, 2012; Lee & Mortari, 2017). On the other hand, spherical subdivisions with identical edge lengths provide cost-effective construction through the mass production of repeating components (Kitrick, 1990, 2015).
This study investigates spherical subdivisions into quadrangles, pentagons, and combinations of pentagons and hexagons (Goldberg polyhedra), to achieve equal area or equal edge length or both. Sections 2–4 introduce the subdivision method to subdivide a sphere into equal-area or equilateral spherical quadrangles based on three different initial subdivided modules. Section 5 examines the presented method for creating equal-area or equilateral spherical pentagonal subdivisions. The results for two novel spherical Goldberg polyhedral subdivisions of equal length and equal area simultaneously are shown in Section 6, followed by a conclusion in Section 7. The results presented in this study on the equal-area and/or equilateral spherical subdivisions will have potential applications in geoscience, architecture, and engineering. Dividing the sphere with uniform meshing and equilateral edges is of great importance in architectural designs and cost-efficient constructions, whereas equal-area spherical subdivisions are suitable for applications such as geographical data collection and processing.
2. Spherical Quadrilateral Subdivisions
In this study, ‘diamonds’ refers to the equilateral spherical quadrangle. It has various options to subdivide a sphere uniformly and create elegant subdivisions for architectural applications, such as façades. Figure 1 shows three members of an infinite family of diamond tiling sets (Crider, 2007). The spheres shown in Fig. 1 are achieved using a 3D radial projection technique, which projects edges of a given polyhedron from the centre to a prescribed sphere, thereby creating great arcs. In this family, the key vertices are in the north and south poles. Any number of diamonds can be constructed from one pole, resulting in two modular units jointed with a zig-zag boundary. The valence number at each pole can be significantly increased to create a high frequency subdivision. Three tiles in Fig. 1a touch the north pole, and the other three touch the south pole. Figure 1b and c indicate that four and five diamonds touch the north and south poles.

Three members of an infinite family of diamond tiling sets; (a) three, (b) four, and (c) five faces connected to the north and south poles.
In addition to the family of diamond tiling sets mentioned earlier, there are various spherical quadrilateral subdividing methods (Beckers & Beckers, 2012; Yan et al., 2016). The rhombic triacontahedron, a Catalan solid (Catalan, 1865), is one example of spherical quadrilateral subdivision. The rhombic triacontahedron is a convex polyhedron with 30 rhombic faces and has icosahedral symmetry.
In this study, three samples of quadrilateral subdivisions are chosen as case studies to investigate the effect of the initial modules’ pattern. Figure 2a shows three considered case studies that possess two members of an infinite family of diamond tiling sets with three and five faces and spherical rhombic triacontahedron as initially examined modules from left to right, respectively. For the higher subdividing levels, a simple quadrilateral subdivision is performed hierarchically on the initial module. The level number, i, is defined as the number of times the subdivision performs on the initial module’s edges. In level i, the edges of the initial module are uniformly divided into i segments. In this study, i = 1 (level 1) corresponds to the initial spherical subdivision shown in Fig. 2a. Level 2 refers to the assembly after the first subdivision in which all edges are divided into two new ones, and so on. Figure 2b shows subdivision levels i = 9, 7, and 4 with 486, 490, and 480 faces made using three different initial modules displayed in Fig. 2a from left to right, respectively. It can be seen that the use of different initial modules leads to significant variations of the final quadrilateral subdivisions regarding their shapes. Nevertheless, it should be noted that initial rhombic triacontahedron modules may create spherical quadrangles that look uniform, almost like diamonds, compared to two others in Fig. 2b.

Three different quadrilateral patterns; (a) three different initial modules (level 1) and (b) a high-level spherical quadrilateral subdivision using various initial modules. n is the number of faces. i is the number of subdivision levels.
To measure the generated subdivisions, such as the examples shown in Fig. 2, a radius |$r\ = {\rm{\ }}100{\rm{\ }}\mathrm{ mm}$| sphere has been created in the Rhino-Grasshopper parametric CAD software. Hence, it allows direct measurement of the generated curved surface areas and the length of curved edges. In this study, the calculations precision of |$0.01{\rm{\% }}r\ = {\rm{\ }}0.01{\rm{\ }}\mathrm{ mm}$| and |${10^{ - 4}}{\rm{\% \ }}{r^2} = {\rm{\ }}0.01{\rm{\ }}\mathrm{ m}{\mathrm{ m}^2}$| are considered for determining curved length size and spherical area, respectively.
3. Dividing a Sphere Hierarchically into Equal-Area Spherical Quadrangles
The area of a selected spherical polygon on a subdivided sphere can be calculated by |$S\ = [ {\sum {\theta _i} - ( {n - 2} )\pi } ]\ {R^2}$| (Zwillinger, 2018), in which |$\sum {\theta _i}$| is the sum of the radian angles of a spherical polygon on a sphere of radius R and n is the total number of edges of spherical polygon. Figure 3a shows a spherical quadrangle formed on the sphere surface by four great circular arcs intersecting pairwise in four vertices A, B, C, and D. |${A_f}$| in Fig. 4 shows the area of each of the spherical quadrilateral faces for five levels of sphere subdivisions.

Subdividing equal-area spherical quadrangle; (a) primary distribution of points on the initial rhombic triacontahedron module and (b) results for equal-area spherical quadrilateral subdivision using the Kangaroo 2 solver.

Hierarchically subdividing a sphere into equal-area spherical quadrilateral segments; (a) initial rhombic triacontahedron module and (b), (c), (d), and (e) are four high levels of the subdivided sphere.
3.1. Achieving equal-area spherical quadrangles through energy minimization
This study utilizes two different methods for hierarchical subdividing a sphere into equal-area spherical quadrangles. In the first method, a simple quad mesh is used for creating the primary spherical subdivision, as shown in Fig. 3a. This method utilizes minimizing total energy technique using the Kangaroo 2 solver (Piker, 2011) by iteratively moving the points until the sum of the energies acting on all the points in the system is as low as possible. The various goals define different energies that are zero under certain geometric conditions. A C# code (attached in the appendix section) has been written to achieve the goal of equal spherical area for all spherical quadrilateral segments according to the above formula. The restriction of the distance between distributed points and the sphere centre is defined as another goal to avoid separation from the sphere surface. The vertices of the initial spherical rhombic triacontahedron module are fixed in their positions to keep the symmetry of the final arrangement (points A, B, C, and D in Fig. 3a). Figure 3b indicates the result of the equal-area spherical quadrilateral subdivision with 480 faces.
Figure 4a shows the initial rhombic triacontahedron module with 30 faces circumscribed in a sphere. Figure 4b, c, d, and e show four equal-area spherical quadrilateral subdivision levels with 120, 270, 480, and 3000 equal-area faces, respectively. This figure indicates that the geometric similarity between the quadrangle segments based on subdividing the initial spherical rhombic triacontahedron modules remains almost constant at higher levels. No degenerated (elongated) spherical quadrangles would be created as the levels grow. Such regular and nice-looking shapes would be desirable and widely used in architectural applications.
The other two initial modules shown in Fig. 1a and c have also been subdivided using the same method to obtain equal-area quadrangles, as shown in Fig. 5. Figure 5 illustrates the histograms of sides lengths of the equal-area spherical quadrilateral subdivisions obtained by splitting three different initial modules into an approximately equal number of faces (480–490 faces). The left histogram clearly shows that the lengths of the sides of spherical quadrangles based on the initial rhombic triacontahedron module are bound in a smaller range, and faces look amazingly uniform and regular.

Spherical quadrangle side length histograms for equal-area spherical subdivisions based on three different initial modules.
3.2. Combining neighbouring triangles to achieve equal-area spherical quadrilateral subdivisions
The second method is based on consecutively subdividing a sphere into equal-area spherical triangles based on the original method presented by Lee and Mortari (Lee & Mortari, 2017). In this method, an initial icosahedron is subdivided by equal-area trisection in level 1. Several bisections perform in the higher levels and subdivide spherical triangles into two equal-area spherical triangles by splitting the longest side at the appropriate point (see Lee & Mortari, 2017, for more details). It should be noted that in the method of Lee and Mortari, from level 4 up, the new vertices may not coincide at neighbouring edges, because the original symmetry does not automatically guarantee equal-area triangles with coinciding vertices. In the second method presented in this study, equal-area quadrilateral spherical subdivisions would be created by removing the longest edge shared and pairing two neighbouring equal-area spherical triangles. In the examples shown in Fig. 6b and c, the adjacent vertices that do not coincide at neighbouring edges are merged at midpoints. All spherical faces have approximately but not exactly equal areas in the modified subdivisions. Both of these two methods (see Sections 3.1 and 3.2) lead to almost same results of the quadrilateral subdivision arrangements. As shown in Fig. 6, comparing the effects of spherical triangle and quadrangle shows a more uniform distribution of edge lengths in the quadrilateral subdivision than the triangle subdivision. In the equal-area spherical quadrilateral subdivision, the difference in the lengths of the edges would be reduced to less than 9% (maximum length of 17.37 mm and minimum length of 15.98 mm) from the initial 76% in the triangle subdivision (maximum length of 28.36 mm and minimum length of 16.07 mm).

Sides’ length histograms; (a) equal-area spherical quadrilateral subdivision obtained using the Kangaroo 2 solver, (b) equal-area spherical quadrilateral subdivision obtained by combining neighbouring triangles (modified Lee and Mortari’s method), and (c) equal-area spherical triangle subdivisions (modified Lee and Mortari’s method).
4. Dividing a Sphere Hierarchically into Equilateral Spherical Quadrangles
This section examines dividing a sphere into spherical quadrangles using a single arc length. A similar approach to that presented in Section 3.1 for equal area is considered to achieve equal-length solutions through adding a new goal of equal length (see Fig. 9). As shown in Fig. 7a, a perfect planar diamond whose vertices of the initial diamond (A,B,C, and D) are on the sphere surface has a single length for all parallel lines moving from one edge to the opposite one. Subsequently, a precisely equal length for all mesh edges would be created after dividing the perfect planar diamond into a quad mesh. Fig. 7b shows that straight parallel lines change to circular arcs after mapping a planar diamond through the projection of edges from the centre to the prescribed sphere. Moreover, the length of the arcs from the boundaries towards the centre of the spherical quadrilateral segment grows gradually, causing unequal lengths for mesh edges. So, the length of the internal segments is greater than the length of subdivided segments on the boundary. Therefore, it is expected that single length solutions cannot be found for spherical quadrilateral subdivisions.

(a) Perfect planar diamond with an equal length for all edges and (b) projected diamond on a sphere’s surface.
This study proposes a new idea to achieve an equal length for all edges of spherical quadrilateral subdivisions. In the proposed method, the vertices of the initial module (vertices of the left spheres in Fig. 8) are fixed in their positions. Other distributed points in higher levels can move inside the divided portions of the initial module. Various goals like the equal length for all edges, the constant distance of vertices to the sphere’s centre, and the restriction of vertices’ movement inside the boundaries of the initial module are defined in the script (Fig. 9). Figure 8 display the results of equilateral spherical quadrilateral subdivisions based on three different initial modules. The results indicate that some gaps between the initial modules are created to attain a single length for all edges (yellow parts shown in Fig. 8). Tables 1, 2, and 3 show more details of the results of four equilateral spherical quadrangle levels based on three different initial subdivided spherical modules. These four levels are selected to have approximately the same number of faces in the corresponding subdivided levels for each initial module.

Equilateral spherical quadrilateral subdivisions for four levels of subdividing based on three different initial modules 1, 2, and 3 shown in (a), (b), and (c), respectively.

Computational workflow of the proposed sphere subdivision method.
Corresponding results for equilateral spherical quadrilateral subdivisions based on initial module 1 shown in Fig. 8a.
. | Initial module 1 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 2 . | 3 . | 4 . | 7 . | |
Number of faces: | 30 | 120 | 270 | 480 | 1470 |
Number of edges: | 120 | 480 | 1080 | 1920 | 5880 |
Edge length: | 64.09 | 32.51 | 21.74 | 16.32 | 9.33 |
Number of different equal areas: | 1 | 2 | 4 | 6 | 36 |
Number of yellow parts (gaps): | - | 60 | 60 | 60 | 60 |
The density of the gaps (area of gaps/sphere’s area %): | - | 5.28 | 6.20 | 6.52 | 6.79 |
. | Initial module 1 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 2 . | 3 . | 4 . | 7 . | |
Number of faces: | 30 | 120 | 270 | 480 | 1470 |
Number of edges: | 120 | 480 | 1080 | 1920 | 5880 |
Edge length: | 64.09 | 32.51 | 21.74 | 16.32 | 9.33 |
Number of different equal areas: | 1 | 2 | 4 | 6 | 36 |
Number of yellow parts (gaps): | - | 60 | 60 | 60 | 60 |
The density of the gaps (area of gaps/sphere’s area %): | - | 5.28 | 6.20 | 6.52 | 6.79 |
Corresponding results for equilateral spherical quadrilateral subdivisions based on initial module 1 shown in Fig. 8a.
. | Initial module 1 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 2 . | 3 . | 4 . | 7 . | |
Number of faces: | 30 | 120 | 270 | 480 | 1470 |
Number of edges: | 120 | 480 | 1080 | 1920 | 5880 |
Edge length: | 64.09 | 32.51 | 21.74 | 16.32 | 9.33 |
Number of different equal areas: | 1 | 2 | 4 | 6 | 36 |
Number of yellow parts (gaps): | - | 60 | 60 | 60 | 60 |
The density of the gaps (area of gaps/sphere’s area %): | - | 5.28 | 6.20 | 6.52 | 6.79 |
. | Initial module 1 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 2 . | 3 . | 4 . | 7 . | |
Number of faces: | 30 | 120 | 270 | 480 | 1470 |
Number of edges: | 120 | 480 | 1080 | 1920 | 5880 |
Edge length: | 64.09 | 32.51 | 21.74 | 16.32 | 9.33 |
Number of different equal areas: | 1 | 2 | 4 | 6 | 36 |
Number of yellow parts (gaps): | - | 60 | 60 | 60 | 60 |
The density of the gaps (area of gaps/sphere’s area %): | - | 5.28 | 6.20 | 6.52 | 6.79 |
Corresponding results for equilateral spherical quadrilateral subdivisions based on initial module 2 shown in Fig 8b.
. | Initial module 3 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 4 . | 5 . | 7 . | 12 . | |
Number of faces: | 10 | 160 | 250 | 490 | 1440 |
Number of edges: | 40 | 640 | 1000 | 1960 | 5760 |
Edge length: | 105.15 | 27.99 | 22.47 | 16.06 | 9.4 |
Number of different equal areas: | 1 | 10 | 25 | 49 | 139 |
Number of yellow parts (gaps): | - | 20 | 20 | 20 | 20 |
The density of the gaps (area of gaps/sphere’s area %): | - | 18.40 | 18.85 | 19.15 | 19.47 |
. | Initial module 3 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 4 . | 5 . | 7 . | 12 . | |
Number of faces: | 10 | 160 | 250 | 490 | 1440 |
Number of edges: | 40 | 640 | 1000 | 1960 | 5760 |
Edge length: | 105.15 | 27.99 | 22.47 | 16.06 | 9.4 |
Number of different equal areas: | 1 | 10 | 25 | 49 | 139 |
Number of yellow parts (gaps): | - | 20 | 20 | 20 | 20 |
The density of the gaps (area of gaps/sphere’s area %): | - | 18.40 | 18.85 | 19.15 | 19.47 |
Corresponding results for equilateral spherical quadrilateral subdivisions based on initial module 2 shown in Fig 8b.
. | Initial module 3 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 4 . | 5 . | 7 . | 12 . | |
Number of faces: | 10 | 160 | 250 | 490 | 1440 |
Number of edges: | 40 | 640 | 1000 | 1960 | 5760 |
Edge length: | 105.15 | 27.99 | 22.47 | 16.06 | 9.4 |
Number of different equal areas: | 1 | 10 | 25 | 49 | 139 |
Number of yellow parts (gaps): | - | 20 | 20 | 20 | 20 |
The density of the gaps (area of gaps/sphere’s area %): | - | 18.40 | 18.85 | 19.15 | 19.47 |
. | Initial module 3 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 4 . | 5 . | 7 . | 12 . | |
Number of faces: | 10 | 160 | 250 | 490 | 1440 |
Number of edges: | 40 | 640 | 1000 | 1960 | 5760 |
Edge length: | 105.15 | 27.99 | 22.47 | 16.06 | 9.4 |
Number of different equal areas: | 1 | 10 | 25 | 49 | 139 |
Number of yellow parts (gaps): | - | 20 | 20 | 20 | 20 |
The density of the gaps (area of gaps/sphere’s area %): | - | 18.40 | 18.85 | 19.15 | 19.47 |
Corresponding results for equilateral spherical quadrilateral subdivisions based on initial module 3 shown in Fig. 8c.
. | Initial module 2 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 5 . | 7 . | 9 . | 15 . | |
Number of faces: | 6 | 150 | 294 | 486 | 1350 |
Number of edges: | 24 | 600 | 1176 | 1944 | 5400 |
Edge length: | 115.47 | 25.33 | 18.13 | 14.11 | 8.47 |
Number of different equal areas: | 1 | 4 | 7 | 10 | 25 |
Number of yellow parts (gaps): | - | 12 | 12 | 12 | 12 |
The density of the gaps (area of gaps/sphere’s area %): | - | 22.80 | 23.17 | 23.31 | 23.46 |
. | Initial module 2 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 5 . | 7 . | 9 . | 15 . | |
Number of faces: | 6 | 150 | 294 | 486 | 1350 |
Number of edges: | 24 | 600 | 1176 | 1944 | 5400 |
Edge length: | 115.47 | 25.33 | 18.13 | 14.11 | 8.47 |
Number of different equal areas: | 1 | 4 | 7 | 10 | 25 |
Number of yellow parts (gaps): | - | 12 | 12 | 12 | 12 |
The density of the gaps (area of gaps/sphere’s area %): | - | 22.80 | 23.17 | 23.31 | 23.46 |
Corresponding results for equilateral spherical quadrilateral subdivisions based on initial module 3 shown in Fig. 8c.
. | Initial module 2 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 5 . | 7 . | 9 . | 15 . | |
Number of faces: | 6 | 150 | 294 | 486 | 1350 |
Number of edges: | 24 | 600 | 1176 | 1944 | 5400 |
Edge length: | 115.47 | 25.33 | 18.13 | 14.11 | 8.47 |
Number of different equal areas: | 1 | 4 | 7 | 10 | 25 |
Number of yellow parts (gaps): | - | 12 | 12 | 12 | 12 |
The density of the gaps (area of gaps/sphere’s area %): | - | 22.80 | 23.17 | 23.31 | 23.46 |
. | Initial module 2 . | Number of divisions on the initial edge: . | |||
---|---|---|---|---|---|
. | 5 . | 7 . | 9 . | 15 . | |
Number of faces: | 6 | 150 | 294 | 486 | 1350 |
Number of edges: | 24 | 600 | 1176 | 1944 | 5400 |
Edge length: | 115.47 | 25.33 | 18.13 | 14.11 | 8.47 |
Number of different equal areas: | 1 | 4 | 7 | 10 | 25 |
Number of yellow parts (gaps): | - | 12 | 12 | 12 | 12 |
The density of the gaps (area of gaps/sphere’s area %): | - | 22.80 | 23.17 | 23.31 | 23.46 |
Fig. 8 shows that the geometric similarity between the spherical quadrilateral segments based on initial module 1 (Fig. 8a) remains almost constant at higher levels. Growing the levels of this case (Fig. 8a) would not create degenerated spherical quadrangles. In contrast, subdividing the sphere based on initial module 2 (Fig. 8b) results in some degenerated spherical quadrangles, which leads to the desolation and greater separation of the segments in higher subdivision levels. Also, the results show that the coarser the initial equilateral mesh, the more significant gaps are created after subdivision. For instance, modules 1, 2, and 3 have 30, 10, and 6 initial equilateral faces, respectively (Fig. 8a, b, and c). Although the number of gaps decreases in these three examples (60, 20, and 12 mentioned in the fifth row of Tables 1–3, respectively), the larger area of gaps are created after optimization analysis for all equal-length edges at high levels of subdivisions (comparison of the sixth rows in Tables 1–3). Meanwhile, the relative area of the gaps increases slightly with growing the levels of subdivisions in all cases, e.g. from 5.28% to 6.79% of the total area of the sphere for subdivisions based on initial module 1.
4.1. Tolerance
As mentioned in Section 2, equal length and equal area solutions for the |$r\ = {\rm{\ }}100{\rm{\ }}\mathrm{ mm}$| sphere are considered accurate enough when |${\rm{\Delta }}L < 0.01{\rm{\ }}\mathrm{ mm}$| and |${\rm{\Delta }}A < 0.01{\rm{\ }}\mathrm{ m}{\mathrm{ m}^2}$| in this study. Although this tolerance seems appropriate, it should be noted that in the Kangaroo 2 solver, the strengths defined for each goal can be used to prioritize one goal over another to a chosen degree. So, by increasing the strength of each goal, the accuracy of that would increase while the iteration and the effect of other objective functions would change. Table 4 shows the results of equal-area and equilateral spherical quadrangle subdivisions based on initial module 1 for some different strengths for equal-area or equal-length goal objects, separately. By increasing the strength of one goal function, while the accuracy of that goal increases, it is prioritized over the others. As shown in Table 4, the effect of constraining the vertices to remain on the sphere surface decreases when the strength of equal-area or equal-length goal is increased.
Effect of increasing strength of: (a) equal-area goal function and (b) equal-length goal function on calculation accuracy and other objective functions.
![]() |
![]() |
Effect of increasing strength of: (a) equal-area goal function and (b) equal-length goal function on calculation accuracy and other objective functions.
![]() |
![]() |
5. Spherical Pentagonal Subdivisions with Equal-Area or Equal-Length Arcs
To further verify the proposed method in this study, equal-area and equal-length results for the spherical pentagonal and Goldberg polyhedral subdivisions are examined. The general computational workflow of the proposed sphere subdivision method into equal-area and/or equilateral segments is summarized in Fig. 9. To examine each case study, the appropriate goals with the demands are selected.
Recently, Lee et al. (Lee et al., 2022) have presented a new method linked with optimization algorithms to achieve equal area or equal length of only spherical pentagons. They have obtained numerous spherical pentagons by hierarchically subdividing a module of an initial spherical dodecahedron. In this study, a different spherical pentagonal subdivision based on subdividing Goldberg polyhedra as initial modules is generated to investigate equal-area or equilateral spherical pentagons. Figure 10a shows three spherical pentagonal subdivisions, which are generated using three different levels of Goldberg polyhedra G(1, 1), G(2, 0), and G(4, 0) (Hart, 2013), where each hexagon is divided into six pentagons and each pentagon into five ones. These three subdivisions have been examined for equal-area and equilateral spherical pentagons. Figure 10b and c display the results of equal-area and equilateral spherical pentagons at three different levels, including 180, 240, and 960 spherical pentagons’ faces. As shown in Fig. 10b, the equal-area pentagonal shape remains undistorted and almost uniform around the sphere, unlike the equilateral results demonstrated in Fig. 10c. It should be noted that the results shown in Fig. 10b and c are not the only solutions for equal-area and equilateral spherical pentagons.

Spherical pentagonal subdivisions based on the topology of three levels of Goldberg polyhedra as initial modules; (a) initial Goldberg polyhedra, (b) equal-area spherical pentagons, and (c) equilateral spherical pentagons at three different levels of subdivision.
6. Equal-Area and Equilateral Spherical Tessellations with the Topology of Goldberg Polyhedra
Goldberg polyhedra are convex polyhedra made from combinations of hexagons and pentagons (Goldberg, 1937). Equal-area or equilateral spherical subdivisions of a sphere using the topology of Goldberg polyhedra have been investigated individually in several studies (Snyder, 1992; Clinton, 2006; Schein & Gayed, 2014). This study also examines the proposed method for two examples of spherical Goldberg polyhedron subdivisions to achieve equal-area and equal arc length simultaneously. Figure 11 shows two subdivision examples of Goldberg polyhedra based on the topology of G(1, 1) and G(2, 0), resulting in a group of spherical polygons with equal-area and equilateral spherical faces simultaneously.

New equal-area and equilateral subdivisions of Goldberg polyhedra based on the topology of: (a) G(1, 1) and (b) G(2, 0).
7. Conclusion
This study has presented a new sphere subdivision approach through numerical approximation to hierarchically create spherical polygons of equal area or equal edge length or both. The equal-area spherical quadrilateral subdivisions obtained from the new approach show a more uniform distribution of edge lengths than the equal-area spherical triangle subdivisions. Furthermore, the proposed subdivision method makes it possible to create a large number of spherical equilateral quadrangles by creating some gaps between the initial modules by allowing free movement of distributed points within the initial module boundary. This study has also used the same concept to successfully solve a series of equal-length or equal-area subdivisions for other spherical polygons, e.g. pentagons or a combination of hexagons and pentagons. By extension, two spherical subdivisions with equal area and equal length simultaneously based on the topology of Goldberg polyhedra have been discovered. This study does not examine the planarity of the resulting surfaces, which may be an important aspect of some practical applications; further study is needed to develop this. Nevertheless, the methods and results presented in this study on the equal-area and/or equilateral spherical subdivisions offer new design possibilities for a wide range of geoscience, architecture, and engineering applications.
ACKNOWLEDGEMENTS
The authors gratefully acknowledge the financial support provided by the Australian Research Council (FL190100014 and DP200102190).
Conflict of interest statement
None declared.
References
Appendix 1.
A = new EqualSphArea(P.ToArray(), targetSum, strength); |
public class EqualSphArea : GoalObject |
{ |
double targetSum; |
public EqualSphArea(Point3d[] pts, double targetSum, double strength) |
{ |
PPos = pts; |
Move = new Vector3d[pts.Length]; |
Weighting = new double[pts.Length]; |
for(int i = 0;i < pts.Length;i++) Weighting[i] = strength; |
this.targetSum = targetSum; |
} |
public override void Calculate(List < KangarooSolver.Particle > p) |
{ |
//take sets of spherical polygons' points |
//find angles |
//get total angle and required change |
//for each angle, |
//get bisector of the spherical angle at each points |
//move angle pt along vector to this |
var pts = this.GetCurrentPositions(p); |
for(int i = 0;i < pts.Length;i++)Move[i] = Vector3d.Zero; |
double[] angle = new double[pts.Length]; |
double angleSum = 0; |
Vector3d v1,v2; |
Vector3d[] T1 = new Vector3d[pts.Length]; |
Vector3d[] T2 = new Vector3d[pts.Length]; |
for(int i = 0;i < pts.Length;i++) |
{ |
if(i = = 0) |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[pts.Length - 1] - pts[i]; |
} |
else if(i = = pts.Length - 1) |
{v1 = pts[0] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
else |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
Vector3d vo = pts[i] - Point3d.Origin; |
Vector3d va1 = Vector3d.CrossProduct(v1, vo); |
T1[i] = Vector3d.CrossProduct(vo, va1); |
Vector3d va2 = Vector3d.CrossProduct(v2, vo); |
T2[i] = Vector3d.CrossProduct(vo, va2); |
T1[i].Unitize(); |
T2[i].Unitize(); |
Plane pl1 = new Plane (pts[i], pts[i] - Point3d.Origin); |
angle[i] = Vector3d.VectorAngle(T1[i], T2[i], pl1); |
angleSum + = angle[i]; |
} |
double m = targetSum / angleSum; |
for(int i = 0;i < pts.Length;i++) |
{ |
Vector3d vb = T1[i] + 1.05 * T2[i]; |
vb.Unitize(); |
if(angle[i] > Math.PI) |
{Move[i] + = vb * 0.5 * (m - 1.0); |
} |
else |
{Move[i] + = vb * 0.5 * (1.0 - m); |
} |
} |
} |
public override object Output(List < KangarooSolver.Particle > p) |
{ |
return null; |
A = new EqualSphArea(P.ToArray(), targetSum, strength); |
public class EqualSphArea : GoalObject |
{ |
double targetSum; |
public EqualSphArea(Point3d[] pts, double targetSum, double strength) |
{ |
PPos = pts; |
Move = new Vector3d[pts.Length]; |
Weighting = new double[pts.Length]; |
for(int i = 0;i < pts.Length;i++) Weighting[i] = strength; |
this.targetSum = targetSum; |
} |
public override void Calculate(List < KangarooSolver.Particle > p) |
{ |
//take sets of spherical polygons' points |
//find angles |
//get total angle and required change |
//for each angle, |
//get bisector of the spherical angle at each points |
//move angle pt along vector to this |
var pts = this.GetCurrentPositions(p); |
for(int i = 0;i < pts.Length;i++)Move[i] = Vector3d.Zero; |
double[] angle = new double[pts.Length]; |
double angleSum = 0; |
Vector3d v1,v2; |
Vector3d[] T1 = new Vector3d[pts.Length]; |
Vector3d[] T2 = new Vector3d[pts.Length]; |
for(int i = 0;i < pts.Length;i++) |
{ |
if(i = = 0) |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[pts.Length - 1] - pts[i]; |
} |
else if(i = = pts.Length - 1) |
{v1 = pts[0] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
else |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
Vector3d vo = pts[i] - Point3d.Origin; |
Vector3d va1 = Vector3d.CrossProduct(v1, vo); |
T1[i] = Vector3d.CrossProduct(vo, va1); |
Vector3d va2 = Vector3d.CrossProduct(v2, vo); |
T2[i] = Vector3d.CrossProduct(vo, va2); |
T1[i].Unitize(); |
T2[i].Unitize(); |
Plane pl1 = new Plane (pts[i], pts[i] - Point3d.Origin); |
angle[i] = Vector3d.VectorAngle(T1[i], T2[i], pl1); |
angleSum + = angle[i]; |
} |
double m = targetSum / angleSum; |
for(int i = 0;i < pts.Length;i++) |
{ |
Vector3d vb = T1[i] + 1.05 * T2[i]; |
vb.Unitize(); |
if(angle[i] > Math.PI) |
{Move[i] + = vb * 0.5 * (m - 1.0); |
} |
else |
{Move[i] + = vb * 0.5 * (1.0 - m); |
} |
} |
} |
public override object Output(List < KangarooSolver.Particle > p) |
{ |
return null; |
A = new EqualSphArea(P.ToArray(), targetSum, strength); |
public class EqualSphArea : GoalObject |
{ |
double targetSum; |
public EqualSphArea(Point3d[] pts, double targetSum, double strength) |
{ |
PPos = pts; |
Move = new Vector3d[pts.Length]; |
Weighting = new double[pts.Length]; |
for(int i = 0;i < pts.Length;i++) Weighting[i] = strength; |
this.targetSum = targetSum; |
} |
public override void Calculate(List < KangarooSolver.Particle > p) |
{ |
//take sets of spherical polygons' points |
//find angles |
//get total angle and required change |
//for each angle, |
//get bisector of the spherical angle at each points |
//move angle pt along vector to this |
var pts = this.GetCurrentPositions(p); |
for(int i = 0;i < pts.Length;i++)Move[i] = Vector3d.Zero; |
double[] angle = new double[pts.Length]; |
double angleSum = 0; |
Vector3d v1,v2; |
Vector3d[] T1 = new Vector3d[pts.Length]; |
Vector3d[] T2 = new Vector3d[pts.Length]; |
for(int i = 0;i < pts.Length;i++) |
{ |
if(i = = 0) |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[pts.Length - 1] - pts[i]; |
} |
else if(i = = pts.Length - 1) |
{v1 = pts[0] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
else |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
Vector3d vo = pts[i] - Point3d.Origin; |
Vector3d va1 = Vector3d.CrossProduct(v1, vo); |
T1[i] = Vector3d.CrossProduct(vo, va1); |
Vector3d va2 = Vector3d.CrossProduct(v2, vo); |
T2[i] = Vector3d.CrossProduct(vo, va2); |
T1[i].Unitize(); |
T2[i].Unitize(); |
Plane pl1 = new Plane (pts[i], pts[i] - Point3d.Origin); |
angle[i] = Vector3d.VectorAngle(T1[i], T2[i], pl1); |
angleSum + = angle[i]; |
} |
double m = targetSum / angleSum; |
for(int i = 0;i < pts.Length;i++) |
{ |
Vector3d vb = T1[i] + 1.05 * T2[i]; |
vb.Unitize(); |
if(angle[i] > Math.PI) |
{Move[i] + = vb * 0.5 * (m - 1.0); |
} |
else |
{Move[i] + = vb * 0.5 * (1.0 - m); |
} |
} |
} |
public override object Output(List < KangarooSolver.Particle > p) |
{ |
return null; |
A = new EqualSphArea(P.ToArray(), targetSum, strength); |
public class EqualSphArea : GoalObject |
{ |
double targetSum; |
public EqualSphArea(Point3d[] pts, double targetSum, double strength) |
{ |
PPos = pts; |
Move = new Vector3d[pts.Length]; |
Weighting = new double[pts.Length]; |
for(int i = 0;i < pts.Length;i++) Weighting[i] = strength; |
this.targetSum = targetSum; |
} |
public override void Calculate(List < KangarooSolver.Particle > p) |
{ |
//take sets of spherical polygons' points |
//find angles |
//get total angle and required change |
//for each angle, |
//get bisector of the spherical angle at each points |
//move angle pt along vector to this |
var pts = this.GetCurrentPositions(p); |
for(int i = 0;i < pts.Length;i++)Move[i] = Vector3d.Zero; |
double[] angle = new double[pts.Length]; |
double angleSum = 0; |
Vector3d v1,v2; |
Vector3d[] T1 = new Vector3d[pts.Length]; |
Vector3d[] T2 = new Vector3d[pts.Length]; |
for(int i = 0;i < pts.Length;i++) |
{ |
if(i = = 0) |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[pts.Length - 1] - pts[i]; |
} |
else if(i = = pts.Length - 1) |
{v1 = pts[0] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
else |
{v1 = pts[i + 1] - pts[i]; |
v2 = pts[i - 1] - pts[i]; |
} |
Vector3d vo = pts[i] - Point3d.Origin; |
Vector3d va1 = Vector3d.CrossProduct(v1, vo); |
T1[i] = Vector3d.CrossProduct(vo, va1); |
Vector3d va2 = Vector3d.CrossProduct(v2, vo); |
T2[i] = Vector3d.CrossProduct(vo, va2); |
T1[i].Unitize(); |
T2[i].Unitize(); |
Plane pl1 = new Plane (pts[i], pts[i] - Point3d.Origin); |
angle[i] = Vector3d.VectorAngle(T1[i], T2[i], pl1); |
angleSum + = angle[i]; |
} |
double m = targetSum / angleSum; |
for(int i = 0;i < pts.Length;i++) |
{ |
Vector3d vb = T1[i] + 1.05 * T2[i]; |
vb.Unitize(); |
if(angle[i] > Math.PI) |
{Move[i] + = vb * 0.5 * (m - 1.0); |
} |
else |
{Move[i] + = vb * 0.5 * (1.0 - m); |
} |
} |
} |
public override object Output(List < KangarooSolver.Particle > p) |
{ |
return null; |