Control Mode (Scroll Down for Usage Explanation)

Prisms to Render:
Coord Value Slider Text Input

Intrinsic helix properties:

Positioned helix properties (unit object axis length):

Other computed properties:

Platonic Parameters (unit edge length):

A Zoo of Platonic Helices

The segment helix math allows us to compute a collection, or "zoo" of Platonic helices created by Platonic solids places face-to-face with the vertices touching. Some of these helices are physcially indistinquishable due to symmetry.
Action Nickname Row Num Num in Solid Platonic S. Analogs Face Twist (\tau) Radius (r) Theta (\theta) Travel (d) Helix Angle (\phi) Class

This is an interactive 3D simulation. To change the view, place your mouse in the view area, and hold and "drag" the mouse to rotate the image. The mouse wheel or a drag on your trackpad should zoom you in or out.

Creating a Helix

Welcome. This is a tool for understanding the segmented helices generated by arbitrary repeated subunits. This is not entirely simple, and impossible to make self-explanatoryd. You may also wish to review our technical paper.

This work came out of the 2018 Public Invention Mathathon. About 20 people got together via online chat systems for a weekend to explore chains of tetrahedra and the shapes that can be made with them. These are beautiful, and also very practical or structural engineers and robotocists. When exploring rules for conjoining tetrahedra with repetitive rules, we noticed that they always produced helices, though sometimes degenerate helices such as toruses or shafts.

This was quite surprising to me. After some thought it became clear that ANY repeated shape would make a helix. After a long search I finally found this in writing in a 2002 paper by Eric Lord:

In nature, helical structures arise when identical structural subunits combine sequentially, the orientational and translational relation between each unit and its predecessor remaining constant.

The purpose of this website is to compute the intrinsic properties of a such a a helical structure given only the repeated structure and the rule by which the structures are conjoined. By developing this math, we had a tool for doing something that, as far as I know, had never been done before: we can generate ALL of the Platonic helices. That is, all of the helices generated by any rule for face-to-face joints between any of the Platonic helices. These 28 helices form a "zoo"--I have given each element of the zoo a nickname based on what it looks like to me. You can use the "Draw" buttons in the zoo to render each of these helices.

Howewver, you can also use the sliders above to interactively design helices based on arbitrary shapes. The sliders let you control the face-normal vectors of a triangular prism and the "twist" with which they are stuck together. On a fast computer, this will be almost real-time interactively as you change the sliders above; on a slow computer you may have to wait a few seconds after each change.

In the view above, the segmented helix which matches the joints is drawn as a thin green line. You will note that it always intersects the joints, verifying its correctness, although it is computed in a completely different way---as a segmented helix. The prism placement is NOT done this way---it is an iteration of laying the prisms face-to-face according to a fixed rule.

Without loss of generality, this code places the initial repeated prism onto the axes in a special way. The prism whose joints are labled B and C is aligned withe Z-axis, centered, and of length 1. It is further more raised up two units above the xz-plane. (Following computer graphics convention, Y is considered the vertical axis). The coordinate system is right-handed.

  • "Theta \theta" is the rotation about the axis between the two joints on one segment.
  • "Phi \phi" is the angle that a segment makes with z-axis. This is also what a mechanical engineer would call the "helix angle".
  • "Axis (x,y,z)" is a unit vector pointing in the direction of the helix axis.
  • "Travel (d)" is the distance along the axis between two joints.
  • The "Radius (r)" of a segmented helix is the distance from a segment joint to the axis.
  • "Tightness" is the Travel divided by the radius (d/r). It is measure of how "elongated" the helix is. A tightness of zero corresponds to a torus.
  • "Pitch (p)" is the length of travel needed to acheive one complete revolution around the axis.
  • "Sidedness (s)" is the number of segments needed to acheive one complete revolution. In general this is not rational.

The "Twist" (\tau) is one of the most important parameters. In the amount of "twist" or rotation between one object and the next measured at the face. Changing the twist is one of the most powerful ways to change the shape of the helix. In general, the higher the twist (up to 180 degrees) the higher the tightness or elongation. In general, a twist of zero produces segmented helices similar to toruses. When you choose an element from the zoo, you can change the rule to control which face is joined, and also the twist---but only some twists keep the vertices perfectly aligned. However, you can use the slider to deviate from these fixed twists if you like.

Unit Tests

This code has extensive unit tests which are executed in-browser. Clicking on the button below executes these tests. Refer to the code and the console for details.


All of the code on this site is released under the GNU General Public License Version 3, and I hope you will reuse it. The code, including technical documentation, can be found in the repo.

This project is part of Public Invention. To assist on this project, contact Robert L. Read < >