Symmetry Mechanical
Generate sets of N points on the unit sphere with different algorithms, watch the search run, and compare the results, now asking for isotropy of the edge, face and solid inertia tensors as well as the vertex one.
Features
Twelve side by side
Closed-form antiprisms, the Fibonacci spiral, orbit searches, gradient descent on two energies, grid searches, isotropic polish, symmetric orbit recipes and the mass-model-aware polish.
Watch the search work
The picture updates as the search improves, with a convergence plot of the residual and a slow-motion switch for the fast algorithms.
Four inertia tensors
Ask for isotropy of the vertex, edge, face and solid models, alone or together: up to 23 equations for N points.
Points, mesh, dual
The points on the sphere, their convex hull, the dual (spherical Voronoi) polyhedron, or all four panes with one camera.
Statistics that mean something
Residual, Thomson energy against the literature minimum, minimum separation, covering radius, Voronoi cell counts and the single-matrix test.
Compare and report
Algorithms against point counts in a table and three charts, exported as CSV or a PDF report; open any set in Symmetry Explorer or Symmetry Domer.
What it is
The Esferator experiments looked for point sets whose inertia tensor is isotropic and whose centre of mass sits at the origin (a spherical 2-design), or that minimise an electrostatic-type energy. Symmetry Mechanical puts those algorithms side by side. Each is run for a chosen number of points, shows its work live, and reports how good the result is.
The window
- Algorithm and Number of points: the two drop-downs. The list of point counts follows the chosen algorithm, so the slow ones cannot be asked for sizes that would never finish.
- View: points, mesh, dual or all four panels.
- Run / Stop: start or interrupt a search; the best set so far is kept.
- Live view while running: update the picture as the search improves. Off shows only the final result.
- Show orbit order: a line through the points in generation order, which exposes the orbit structure of the orbit algorithms.
- Slow motion: pause after every update so the fast algorithms can be followed.
- Wireframe only: draw the mesh and the dual as edges without faces (the dual outlines keep their side-count colours). It is always on in stereo.
- In Explorer: open the current point set in Symmetry Explorer, which finds and animates its symmetry group.
- Save…: write the current point set as CSV (index, x, y, z), as an OBJ of the convex hull, or as an OBJ of the dual polyhedron. The files carry the algorithm and residual in a comment header.
- Compare…: the comparison window (below). ? opens this page.
Drag with the left mouse button to rotate and use the wheel to zoom.
Algorithms
| Algorithm | Idea | Cost | Max N |
|---|---|---|---|
| Closed-form antiprism family | Even N. Two interleaved rings at height ±1/√3 are exactly isotropic; only the twist is chosen. | O(N²) | 4000 |
| Fibonacci spiral | Golden-angle spiral; nearly uniform, no mechanical symmetry. The seed for the gradient methods. | O(N) | 5000 |
| Orbit search, two rotations | Points are the orbit of M = (−R₁)·R₂. A coarse scan whose resolution grows with N (orbit errors build up along the N steps) feeds a zoom refinement of its twelve best separate cells. | S³·N | 120 |
| Orbit annealing | Simulated annealing over the two parameters of M = −R. Even N reaches the closed form; odd N is best effort. | steps·N | 1000 |
| Gradient descent, Thomson | All 3N coordinates, minimising Σ 1/r. | iters·N² | 600 |
| Gradient descent, logarithmic | All 3N coordinates, minimising Σ −ln r. | iters·N² | 600 |
| Isotropic polish (Gauss–Newton) | Seeds a well-spread set (Thomson minimum for N ≤ 400, Fibonacci spiral above), then solves the 8 isotropy and centre-of-mass equations with minimum-norm Newton steps. Falls back to random restarts when it stalls. Solves every N ≥ 6 tried (N = 5 has no solution) and stays near the energy minimum. | O(N) per step | 5000 |
| Symmetric orbit recipes (T, O, I groups) | Builds the set from orbits of a tetrahedral, octahedral or icosahedral group (orbits on the symmetry axes, on mirror planes, general orbits). Every such set is isotropic in all mass models by symmetry (the group acts irreducibly on R³), so the residual is at rounding level; the free orbit positions are tuned for the smallest Thomson energy. Reproduces the known Thomson minima for N = 12, 24, 32, 48, 72 and lands within 0.6 % elsewhere. Supports only N reachable by a combination of orbit sizes (otherwise it returns a Fibonacci spiral and says so). | O(restarts · N²) | 200 |
| Mechanical polish (selected mass models) | Seeds a Thomson minimum (N ≤ 400) and solves the isotropy equations of the ticked models by minimum-norm Gauss–Newton steps on the frozen hull; the Jacobian is built from local finite differences, so a step is cheap. With all four models it finds sets with all four tensors isotropic for N = 6 (octahedron), 8 (cube), 10 (octahedron + tetrahedron), 12 (icosahedron), 13 and every N from 14 up to 100 tested, in a fraction of a second. For N ≥ 13 the solutions generally have no geometric symmetry. N = 7, 9 and 11 are not reached by any start (about 1500 random starts each): there are fewer unknowns (2N−3) than equations (23) and no union of orbits of the tetrahedral, octahedral or icosahedral group has those sizes, so a solution is not expected. Nearly flat faces are snapped to exactly flat so a cube comes out as an exact cube. | O(N²) per step (hull) | 1000 |
| Orbit annealing (selected mass models) | The rotoinversion orbit (as in the orbit annealing above) scored with the residual of the ticked models. Two parameters only, so it solves the extra models only for special N. | steps·N² | 100 |
| Grid search, free points | The original brute force: every point on an angular grid, then zoomed. | S^(2N−3) | 7 |
| Grid search, symmetric latitudes | Poles fixed, equally spaced longitudes, only latitudes searched. | S^(N−2) | 12 |
The orbit algorithms can only produce sets that are a single cyclic orbit, so the cube and the icosahedron are out of their reach by group theory, not for lack of search.
Mass models
Symmetry Explorer reports four inertia tensors for a solid, one for each way of distributing mass on it:
- Vertices: a unit point mass at every vertex.
- Edges: a uniform linear density along every edge (a wireframe).
- Faces: a uniform areal density over every face (a shell).
- Solid: a uniform volumetric density filling the polyhedron.
Each tensor is isotropic when its three eigenvalues are equal, which is five equations (the two differences of the diagonal and the three off-diagonal entries are zero). The centre of mass at the origin adds three. All four models together are 23 equations in the 2N−3 free coordinates of N points, so for N of about 14 and above generic solutions are expected, and they need not have any geometric symmetry at all. For small N only highly symmetric sets can do it: the Platonic solids satisfy all four because any tensor invariant under a group with two axes of order 3 or more is isotropic.
The Mass models box selects which tensors enter the residual that is plotted, reported and used for solved, and which ones the two mechanical algorithms drive to zero. The five anisotropy numbers of a model are (Ixx−Iyy, Iyy−Izz, Ixy, Ixz, Iyz) divided by the trace, so the four models are on a comparable scale.
Triangulation and the edge model
The faces, solid and edges depend on the convex hull of the points, which is a triangulation. The shell and solid tensors are continuous when the triangulation changes (four coplanar points describe the same polyhedron either way). The wireframe is not: a diagonal appears or vanishes. During the search every hull edge is therefore weighted by a smooth function of its dihedral angle, zero for the diagonal of a flat face and one for a real edge, so the objective is continuous and, for exactly flat faces, equals the numbers Symmetry Explorer shows. The tensors reported in the statistics panel use Explorer's own pipeline (coplanar triangles merged into faces).
Views
- Points: the points on a wire sphere, coloured along the generation order; the first point is gold.
- Mesh: the convex hull of the points (a spherical Delaunay triangulation).
- Dual: the conjugate polyhedron. Each point becomes a face whose corners are the circumcentres of the surrounding triangles (the spherical Voronoi vertices). Faces are coloured by number of sides: 3 red, 4 orange, 5 green, 6 blue, 7 violet, 8 teal.
- All views: points, mesh, dual and the convergence plot (log₁₀ residual against time), sharing one camera.
For N above 1500 the mesh is only rebuilt for the final result, and above 5000 it is not built.
The numbers
| Residual, CoM offset, anisotropy | How far the set is from isotropic and balanced (the vertex model). |
| Residual [V+E+…] | The residual of the ticked mass models, the one plotted and used for solved. |
| By mass model | Δ is the relative spread of the inertia eigenvalues (as in Explorer) and aniso the five-component anisotropy, for each of the four models. |
| Inertia eigenvalues, spread | The three principal moments of N unit masses and their relative spread. Equal moments mean no preferred axis. |
| Thomson energy | Σ 1/r over all pairs, shown with the best known (literature) global minimum when it is tabulated: N = 2 to 72 and 100. These values were re-derived here by multi-start minimisation and agree to 2·10⁻⁹. |
| Log energy | Σ −ln r over all pairs. |
| Min separation | The smallest angle between two points. |
| Covering radius | The largest angular distance from any point of the sphere to its nearest point. Exact, from the mesh. |
| Voronoi cells | How many cells have 4, 5, 6… sides. |
| Single matrix | Whether one orthogonal matrix M visits all N points as p, Mp, M²p …, and of which order (N ≤ 200). Closed means M also returns the last point to the first: the set is a regular orbit of a cyclic group of isometries. The cube, the icosahedron and the dodecahedron are not; the tetrahedron (order 4), the octahedron (order 6) and the antiprisms are. |
Stereo (red / cyan anaglyph)
The Stereo group has the same controls as Symmetry Explorer:
- Stereo: switch the anaglyph on. Wear red-over-left-eye glasses.
- Swap red/cyan: exchange the two images if the depth looks inverted.
- Depth: eye separation.
- Red and Blue: the ink level written into the red channel (red eye) and the blue channel (cyan eye). The green channel always stays at the background level, so each eye sees nothing but background where the other eye draws. Lower a slider to balance the two eyes for your glasses and screen; a slider sitting at the background level makes that eye's lines vanish.
- Color…: the background colour. Light backgrounds work too; the lines are drawn dark on them.
Colours are shown as brightness in stereo, because each eye only sees one channel. The settings are remembered between sessions.
Comparison
Compare… runs several algorithms over several point counts and tabulates the outcome.
- Tick the algorithms and type the point counts, for example
4, 6, 8, 12, 20-30, 60, 100. An algorithm is skipped for counts it does not support. - Time limit per run stops a slow run and keeps its best result (status time limit).
- The table shows time, evaluations, residual, whether it is solved, Thomson energy, the reference energy and the excess over it, separation and covering radius. The reference is the literature minimum when tabulated (marked lit), otherwise the lowest energy among the runs at that N (run).
- Three charts plot residual, time and energy excess against N, one line per algorithm.
- Double-click a row to load that result into the main window and inspect it in every view.
- Export CSV saves the table; Save selected set… saves the point set of the selected row.
- Report (PDF)… writes a report of the run: parameters, an automatic summary, a classification map (algorithm × N, coloured solved-fast / solved / approximate / poor), per-algorithm and per-N tables, solve rate by size of N, the three charts and the full data table.
Gamepad
A gamepad works as soon as it is connected; there is nothing to configure. It only responds while the Symmetry Mechanical window is the active window. The four face buttons are called A, B, X and Y after their usual layout (A at the bottom, Y at the top); LB and RB are the shoulder buttons and LT and RT the triggers.
Outline colours: blue = view, red = selection and run, teal = display options.
The D-pad and the face buttons repeat while held where it makes sense (the lists). The stick buttons do nothing.
Notes
- Odd N is handled in the literature by introducing a dislocation in the polyhedron; the orbit algorithms here do not, which is why they fail for odd N while the isotropic polish succeeds.
- Isotropic inertia with zero centre of mass is the condition of a spherical 2-design. No such set exists for N = 5, and odd N is generally hard for the orbit algorithms; the free grid search does solve N = 7.
- The gradient methods minimise an energy, not the residual, so the residual curve can rise while the energy falls.
- Command line (for scripting and screenshots):
--algo 4 --n 60 --view 3 --run --slow --stereo --compare.
Copyright and licence
Symmetry Mechanical © 2026 Joaquín Obregón Cobo. All rights reserved.
Symmetry Mechanical is free to use, for any purpose, but it is not open source: it may not be redistributed or modified without permission, and it is provided as is, without warranty. The full terms are in LICENSE.txt, next to the program.
Third-party software
Symmetry Mechanical uses OpenTK and its GLControl (MIT licence), the GLFW library (zlib licence) and QuestPDF for the PDF reports (QuestPDF Community License; QuestPDF includes Skia, HarfBuzz, FreeType, qpdf and other open-source components). Their copyright notices and licences are on the Licences page and in the Help\licenses folder.