Coord  Value  Slider  Text Input 

for integers n:
y = r \cos{(n \theta)}
x = r \sin{(n \theta)}
z = n \cdot d

Parameters (unit object axis length)

Platonic Parameters (unit edge length)

Action  Row Num  Num in Solid  Platonic S.  Analogs  Face  Twist (\tau)  Radius (r)  Theta (\theta)  Travel (d)  Helix Angle (\phi)  Class 

This is a test page in order to a math principle that came out of the Mathathon where we publicly developed a a lot of "generators".
We observed that every regular generator created a helix (though sometimes a a degenerate helix.) In fact, we now know every repeated transformation involving a translation and a similar change in angle produces a discrete helix. As far as I have been able to find, this has been articulated only by Eric Lord in a paper from 2002.
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 fundamental goal of this page is to be able to relate the intrinsic properties of the structural subunits and the rule for their placement to the radius, travel, and pitch of the resulting segmented helix. In the virtual world rendered above, the "structural subunit" is rendered as a prism with a triangular crosssection. The "rule" for the adjoining is facetoface so that the normals of these faces are aligned in opposite directions through the centroid of the face of the prism. It is important to understand that the same math applies to molecules, which do not have flat faces, but where bonding forces constuct the relationship which generates the segmented helix.
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 wayas a helix. The prism placement is NOT done this wayit is an iteration of laying the prisms facetoface according to a fixed rule.
The "radius" of a segmented helix is the distance from a segment joint to the axis. "Theta" is the rotation about the axis between the two joints on one segment. "Travel" is the distance along the axis between two joints. "Phi" is the angle that a segment makes with axis.
Although a workinprogress, at this repo you will find a technical paper describing the math in greater detail, and giving the Mathematica code that implements it. (The same math is implemented in JavaScript on this page.)
I have developed an algorithmit is actually a closedform expression, but too complex to be treated as suchwhich computes the intrinsic properties of the discrete helix from the intrinsic properties of a stacked object. This is closely related to an algorithm published by Peter Kahn in 1989.
I have extended Kahn's work by developing the math to apply his algorithm from the facenormals. The insight to do this is that the object can always be positioned in space so that the joints on either side are symmetrically arranged about an axis.
This page is my attempt to demonstrate this mathematics, and turn it into a tool that can be used by anyone withough Mathematica.
This interactive tool makes clear that it is possible to use a single object with oblique faces and to wildly vary the coiling by changing only the "twist" tau.
This suggests that it may be possible to build an interesting tentacle that using only rotary servos at each joint. This would be very inexepensive to prototype on a small scale. Each segment would be a prism. The faces would be, for example, made out aluminum and lubricated with oil. The system would be controled only by N1 servo positions. Obviously, lengthening and shortening the mast or tentacle would be easy by chaing all servos at the same time. However, it would also be easy to compute the Jacobian and use standard optimization techniques to position the tentacle in space.
Although mechanically this is not likely to be as stong as a tetrahedron based tentacle, it would be much cheaper to build, which is a tremendous advantage.
All of the code on this site is released under the GNU General Public License, and I hope you will reuse it.
This project is part of Public Invention. To assist on this project, contact Robert L. Read < read.robert@gmail.com >