The smallest screw system has a shape
Assumes Every motion is a screw and What a mechanism cannot do.
Two essays ago a mechanism’s freedoms became a subspace of screw space, and its constraints became the orthogonal complement of that subspace under the reciprocal product. Everything since has treated those subspaces as things with a dimension — order three, order five, six minus the rank.
A subspace has more than a dimension. It has a shape, in a sense that is not metaphorical: every screw in it has an axis, and those axes are lines in ordinary space, and the collection of them is a set that can be drawn.
For the smallest interesting case — a two-dimensional system, spanned by two screws — the collection is a ruled surface, and it is the same surface every time up to scale. It is called the cylindroid, and it is the first result in this subject that could not be guessed.
Where a two-system comes from
Two joints in series between two bodies, and nothing else.
If body B is connected to body A through exactly two revolute joints, then the instantaneous motions B can have relative to A are the linear combinations of the two joint screws. That is a two-system, and every screw in it is a motion the pair of joints permits.
This is not a contrived object. It is what each leg of a four-bar is — cut a loop into two legs and each leg with two joints spans a two-system, whose reciprocal is the four-system of constraints that leg imposes. Every redundancy count on this site was computed by intersecting complements of two-systems.
So the question “what does the span of two screws look like” is not an aside. It is the question of what two joints leave free, and the answer turns out to be a surface rather than a list.
What the surface is
Write the two screws as and and form for every pair of coefficients. Each result is a screw with an axis and a pitch, from the decomposition. Two facts follow that neither the coefficients nor the algebra advertise.
The pitch varies. Two zero-pitch screws — two rotations — add to give a screw whose pitch is generally not zero. Two rotations about skew axes compose into something that advances along a line, which is a fact about rigid motion that is worth sitting with: a body turned about one line and simultaneously about another translates as well.
The axes sweep a surface. They do not fill space and they do not lie in a plane. They lie on the cylindroid.
Both extremes of the pitch are attained, at two particular screws called the principal screws, and those two are perpendicular to one another and their axes cross. At angle φ from the low-pitch principal screw, the pitch is
and the axis sits at
along the common perpendicular, measured from the point where the principal axes cross.
Both are closed forms, and on this site a closed form’s job is to be disagreed with. The screws are built by adding basis vectors and their axes are read off with screwAxis; the two expressions above are then compared against what came out. Over a range of offsets and twists they agree to between 2.4 × 10⁻¹⁶ and 6.7 × 10⁻¹⁶ relative — arithmetic noise.
Finding the principal screws, which is a quadratic
The pitch of a screw is , and both halves of that are quadratic forms in the six numbers. The numerator is with the swap; the denominator is with picking out the angular part.
So on a two-dimensional subspace with basis , the stationary values of the pitch solve
— a two-by-two generalised eigenproblem, which is the quadratic formula. Two roots, two pitches, two eigenvectors, two principal screws.
That is the whole computation and it is fifteen lines. What took longer was getting the normalisation right, and the mistake is worth recording because it produced a figure that was correct in one place and wrong everywhere else.
The normalisation that decides whether the formula holds
The principal screws come out of the eigenproblem as directions in the two-dimensional coefficient space. They have to be scaled before they are useful, and the obvious scaling is to unit six-norm.
That is wrong, and it is wrong in a way that passes a test.
The closed form gives the pitch at angle φ where φ is the angle between the screw’s axis direction and the first principal axis. Building a screw as with unit six-norm makes φ the angle in coefficient space, and the two agree only when the two principal screws happen to have angular parts of the same length.
They do at a twist of 90 degrees. The first version of this was checked at 90 degrees, agreed to 6.7 × 10⁻¹⁶, and was wrong by 21 per cent at 45 degrees.
The fix is to normalise so the angular part is a unit vector. Then the combination has , which is a unit vector at angle φ from because the two principal axes are perpendicular, and the cross term in vanishes because the two principal screws are reciprocal to each other. The formula then holds identically, and it now holds at every offset and twist the check runs.
The general shape of that failure is the one this fleet keeps meeting: a check run at one point in an argument space is a check of that point. The parameter that made it visible — the twist between the two axes — was already an argument to the generator and was simply never varied.
The half-width, which is the shape claim
The pitch law says what each generator does. The other half of the classical result says what the surface is, and it is the part a figure can get wrong while every number in the caption stays right.
The generators run from to along the nodal line. So the surface’s length is the spread of its pitches, exactly:
- at 90 degrees and unit offset, pitches −0.500 to 0.500, half-width 0.500;
- at 45 degrees, pitches −0.207 to 1.207, half-width 0.707;
- at 60 degrees, pitches −0.289 to 0.866, half-width 0.577;
- at 70 degrees and half the offset, pitches −0.175 to 0.357, half-width 0.266.
assertCylindroidMatchesItsClosedForm checks both halves — the pitch at each generator and the position of each generator — because checking only the pitch would leave the drawn surface unverified. A figure whose pitches were right and whose generators were in the wrong places would carry a correct caption over a wrong picture, which is a shape of defect this fleet has recorded more than once.
One consequence of that identity is worth drawing out, because it is the sentence that makes the surface memorable. A cylindroid whose two pitches are equal has no length at all, and a cylindroid whose pitches are far apart is long. The surface is not an independent piece of geometry that happens to carry pitches; it is the pitch variation, made into a shape.
Two ways for the surface not to exist, and both are refused
A cylindroid needs two different principal pitches. Where they coincide the surface collapses, and there are two ways for that to happen.
The two-system contains a pure translation. Then one principal pitch is infinite, the axes stay parallel instead of sweeping anything, and there is no surface. Numerically the determinant of the angular Gram matrix vanishes. The first version of principalScrews returned a one-element list in this case, and the caller destructured [s1, s2] off it and multiplied undefined — a crash, which is the good outcome, because a crash gets fixed.
The two axes intersect. Then every screw in their span is a zero-pitch rotation about a line through the intersection point, the system is a plane pencil of lines rather than a ruled surface, and both principal pitches are zero. This one is worse, because it does not crash. The matrix comes out identically zero, the null-vector extraction returns , and the caller gets a list of screws whose pitches are all NaN and whose axes are all at the origin.
The second was found by writing a test whose generic example happened to be two intersecting axes. The refusal check reported that the degenerate case was refused and the generic case drawn — with pitches “0.000 to 0.000” and an agreement of “NaN relative”, which the assertion dutifully failed on. Had the comparison been written slightly differently it would have passed, because NaN < 1e-9 is false and so is NaN > 1e-9.
Both are now named rather than merely refused: the thrown error carries degenerate: "translation" or degenerate: "pencil", and assertCylindroidRefusesADegenerateTwoSystem requires each case to produce its own name and a genuinely skew pair to be drawn. A refusal test that only tests refusals passes on a function that refuses everything, which is why the accepting case is attached to it.
What the perpendicularity claim needed
Two more statements sit in the classical result and are about the picture rather than the algebra: the two principal axes meet, and they meet at a right angle.
Both are exactly the kind of thing a figure would draw wrongly with nothing noticing. Two lines that nearly meet look exactly like two lines that meet; two lines at 89 degrees look exactly like two at 90. Neither would produce a wrong number anywhere else in the figure.
So they are measured. assertPrincipalAxesMeetAtRightAngles computes the closest points on the two principal axes and the distance between them — between 0 and 3.9 × 10⁻¹⁶ across the offsets and twists checked — and the angle between their directions, which comes out at 90.000000 degrees in every case.
The residual distance is the interesting one. It is not zero by construction: the two axes are computed independently from two eigenvectors, and nothing in the arithmetic forces them to intersect. That they do, to the last bit, is a theorem being confirmed rather than a data structure being read back.
An infinite family on a bounded piece of a line
One property of the surface is easy to state and worth stating separately, because it is what makes the object drawable and it is not obvious from the algebra.
A two-system contains infinitely many screws — one for every direction in the coefficient plane — and their axes do not run off anywhere. Every generator crosses the nodal line, and the crossings run from to and no further. So an infinite family of screws has its axes confined to a bounded segment, of length exactly the difference between the two principal pitches, and the whole surface fits in a box.
That is unusual enough to be worth dwelling on. A two-dimensional subspace of any other vector space sweeps out something unbounded; here the subspace is unbounded and its geometric shadow — the set of axes — is not, because scaling a screw does not move its axis. The surface is the picture of the subspace with the scaling quotiented away, and the quotient is what makes it compact.
It also puts a number on the design reading. A body connected through two revolute joints is meant, usually, to be free to rotate and not to translate; the two-system says it is free to screw, and the largest pitch anywhere in the system is the larger of the two principal pitches. That is the translation-per-radian the connection leaks in its worst direction, and it is a quantity a designer can compute from the two joint axes alone — before any load, any tolerance or any deflection is considered, and entirely from geometry.
The two degeneracies are the two ends of that reading, which is why refusing them is right and naming them is better. A two-system containing a pure translation has an infinite principal pitch, so the leak is unbounded and the surface is not a surface; a two-system whose axes intersect has both pitches zero, so the leak is nothing and every screw in it is a rotation about a line through the crossing point. Between those, the surface exists and the half-width measures how far the two joints are from being either.
Which is the useful way to remember the object. The cylindroid’s size is the disagreement between its two principal pitches, in both senses at once: it is the length of the segment the axes occupy and it is the range of pitch they carry. Two joints that nearly intersect give a small surface and a connection that nearly only rotates; two joints far from intersecting give a large one and a connection that screws substantially whatever it is asked to do.
Reading a two-system as a constraint
Everything above treats the two screws as motions. Read them as wrenches instead and the same surface says something else, and the something else is what a constraint analysis actually uses.
A leg that transmits two independent forces to a platform imposes a two-system of wrenches. Every combination of those two forces is also a wrench the leg transmits, and those combinations sweep the same cylindroid — with pitch now meaning the ratio of couple to force rather than of advance to turn.
So the two-system’s shape answers a design question directly. A leg whose two constraint wrenches are two forces along skew lines does not merely constrain in those two directions: it constrains along every generator of the cylindroid they span, and the generators at the ends of that surface are screws, which means the leg resists a combination of force and couple that neither of its two members resists alone.
That is the reason a constraint system has to be treated as a subspace rather than as a list of the wrenches it happened to be written down with. Two different pairs of wrenches spanning the same two-system constrain identically, and a list would suggest otherwise. It is also why the drift measurement compares subspaces by principal angle rather than by comparing bases: the basis is the arbitrary part, and the cylindroid is what is left when the arbitrariness is removed.
What this is the beginning of
Screw systems are classified by their order, and the classification is finite and classical: one-systems, two-systems, three-systems, and so on to the six-system that is everything. Hunt’s enumeration of the three-systems is the substantial part of it, and this site has not built it.
What it has built is the two-system, drawn, with its closed forms checked and its degeneracies named — which is the entrance to the classification and is where the intuition that a screw system has a shape comes from. Reading the constraint tables in this ladder as lists of dimensions is possible and impoverished; every one of those subspaces is a set of lines in space with a geometry of its own.
The one that matters most is the three-system, because a leg of three joints spans one and almost every parallel mechanism in the next field has legs of three or more. What a three-system’s screws sweep is a quadric rather than a cylindroid, and the classification of which quadric is what tells a designer what a leg leaves free. This site computes the order of those systems and their reciprocals, and draws neither. Saying which of the classical results are here and which are named-but-not-built is the honest form of a ladder that is five rungs up a subject with nine.
There is a small practical consequence of the boundedness worth recording, since it decides how these figures are framed. A drawing of a cylindroid needs no arbitrary clipping plane: the surface ends where the generators end, and the extent is a computed quantity rather than a choice made to fit the box. That is rare on this site, where most spatial figures show a piece of something unbounded and the piece has to be chosen. Here the object supplies its own frame, and a figure that showed generators outside the segment would be showing screws that are not in the system — which is a specific and checkable way for a picture to be wrong.
What this makes readable
Essays that name this one as a prerequisite.
- What a leg of three joints leaves free Out of the plane
About the same objects
Not linked from either essay — found by the objects both name.
- Why the platform stays flat constraint · couple · pitch · screw · twist
- A joint is a surface that slides on itself constraint · pitch · screw · twist
- Bennett, and the condition that moves it constraint · screw · screw system · twist
- Almost nothing is a group constraint · screw system · twist
- Six freedoms, not three constraint · screw · screw system
- Six legs and a square root constraint · screw · screw system
What links here
Essays that link to this one from their own argument.
- Every motion is a screw Out of the plane
- The lines a leg turns about and the lines it is pushed along Out of the plane
- What a leg of three joints leaves free Out of the plane
- The count cannot tell a pin from a slide What a joint is
- The circle a point stays on longest The motion, not the mechanism
The objects this essay names
Each one links to every other essay that touches it.
ConstraintCoupleCylindroidPitchPrincipal screwScrewScrew axisScrew systemTwistTwo-system