Out of the plane

Twelve bars and a symmetry

Six joints and twelve bars in space is Maxwell's count exactly: no mechanism, no redundancy, nothing spare. Place three pairs of the joints so that a half turn about one line exchanges them and it moves — a finite motion, walked with every bar held to five ten-thousand-billionths of its own length, on a framework the arithmetic calls a structure.

Assumes Two ways to be overconstrained and The formula is repaired by the thing it replaced.

The spatial field has met counts that were wrong before. Kutzbach is wrong about four spatial loops in five, and the one it is right about is the generic seven-joint case. Bennett’s four-bar moves only for one particular combination of lengths and twists, and the count cannot see the combination.

Those are all loops of revolute joints. Here is the same failure in the other representation the mechanism world uses, and it is worse, because the count is not merely wrong — it is exactly, precisely, satisfyingly right, and the mechanism moves anyway.

The count

Six joints in space have eighteen coordinates. Six rigid motions come off. Twelve bars is twelve constraints. So Maxwell’s count is 1812=618 - 12 = 6 against six rigid motions: nothing left over in either direction.

That state has a name. A framework with no mechanism and no redundancy is isostatic: every bar is carrying its own share of the job, none is spare, and removing any one of them makes a mechanism while adding any one makes a redundancy. It is the ideal a structure is usually designed towards.

The framework Maxwell's count calls a structureSix joints and twelve bars in space. Three coordinates each gives eighteen unknowns, six rigid motions come off, and twelve bars is exactly twelve constraints — Maxwell's count is 6 against six rigid motions, which is the definition of isostatic: no mechanism, no redundancy, every bar carrying its own share and nothing spare. The rank is 11, not twelve. There is one dependency among the bars and one freedom left over, and the freedom is a genuine finite motion: walked here with every bar held to 4.4e-16 of its own length. The reason is a symmetry — three pairs of joints exchanged by a half turn about one line — and it is built into the coordinates rather than asserted about the result. positioned by solving, not by drawing.Maxwell 6 · rank 11 · one freedom, one dependencybars held to 4.4e-16
Fig. 1 Six joints, twelve bars, drawn with the unmoved framework in outline behind. Maxwell’s count is six against six rigid motions.

The graph is the octahedron: six vertices, every pair joined except the three diagonals. That is fixed, so the count is fixed, and it comes out isostatic wherever the six joints are put — which is the whole trouble with it, in the way a mobility count that contains no geometry always is.

Where the joints are put

Now the construction. Take three points, and take the images of all three under a half turn about one line — here the vertical axis, so that (x,y,z)(x,y,z)(x, y, z) \mapsto (-x, -y, z). That gives six joints in three symmetric pairs, and the three pairs are exactly the octahedron’s three diagonals, which carry no bar.

Nothing else is chosen. The three original points are otherwise arbitrary, and three different sets of them are used below to show that the result is not about the numbers.

The rank of the rigidity matrix at that placement is 11, not 12.

So there is one dependency among the bars and one freedom left over — and the count, which said six against six, said nothing about either, because it cannot: it is a statement about the difference msm - s, and 71=67 - 1 = 6 is as true as 60=66 - 0 = 6.

The dependency, and where it is not

One dependency among twelve bars invites the question of which bar is spare, and the answer is that the question has no answer.

The dependencies are the left null space of the rigidity matrix: combinations of the twelve bars’ rows that come to nothing. Here that space is one-dimensional, so there is a single such combination up to scale, and it involves every one of the twelve bars with a non-zero coefficient. No bar is spare. What is true is that the twelve rows span an eleven-dimensional space, and there is no distinguished subset of eleven of them that does.

Where a network's rank decision actually is. Every singular value of the deployable ring's constraint matrix, as a fraction of the largest, on a logarithmic scale. There are 48 of them and the first 44 are ordinary numbers; the last 4 are at the arithmetic's own floor. The decision is not close — the smallest kept value is 1.1e+15 times the largest discarded one — and that is what makes a mobility computed this way a measurement rather than an opinion. It is also why the routine that takes the rank matters: the usual way to get a null space out of a small matrix squares it first, which puts the floor at 10⁻⁸ instead of 10⁻¹⁶ and would put the line through the middle of the gap.
Fig. 2 What a rank decision of this kind looks like on a larger assembly: the singular values, and the gap the decision is made across.

The rank decision itself is not marginal. The gap between the smallest retained singular value and the largest discarded one is 1.3×10151.3 \times 10^{15} on the first placement, 3.4×10153.4 \times 10^{15} on the second and 1.9×10151.9 \times 10^{15} on the third. A decision backed by fifteen orders of magnitude is a fact about the geometry rather than a threshold effect.

That last point needed the instrument to be right, and it is worth naming because the site had to change one to get here. The routine this site used everywhere until now takes a null space by accumulating the Gram matrix, which squares the condition number and cannot resolve a singular value below about 1.5×1081.5 \times 10^{-8} of the largest. Asked at the tolerance this measurement wants, it reports the octahedron’s twelve constraints as fifteen independent ones — a rank larger than the number of rows, which is impossible, and which comes back without complaint.

The instrument, and the floor nobody had written down. The usual way to get a null space out of a small matrix in this fleet is to accumulate Σvvᵀ and take its eigenbasis. That squares the condition number, so the smallest singular value it can distinguish from nought is √ε — about 1.5 × 10⁻⁸ of the largest — whatever tolerance it is handed. Asked at 10⁻¹⁰ it over-states the rank of every constraint matrix in this field: a triangle's three bars come back as five independent constraints, and the deployable ring's forty-four as forty-five, which reports the ring as a rigid body with no deployment. At 10⁻⁷, which is what its own callers pass and what a six-by-six screw system wants, it is right every time — which is exactly why the floor had never been reached. The rank column is one-sided Jacobi on the matrix itself, which resolves a ratio of 10⁻¹⁴.
Fig. 3 Four constraint matrices ranked two ways. The octahedron is the second row.

Is the freedom a motion?

That is the question this field learned to ask. A rank leaves a candidate, not a mechanism, and the smallest framework on the site shows a freedom that goes nowhere.

The way to settle it is to walk. Step along the flex, then pull every bar back to its own length with Newton, and repeat.

Following a freedom, and finding out whether it was one. Step along the flex the rank leaves, then pull every bar back to its own length with Newton, and repeat. A framework with a genuine motion walks as far as it is asked to, with the bar lengths held to 10⁻¹³ the whole way. A framework whose flex is blocked walks nowhere: every step converges, because the projection simply undoes the step and puts the mechanism back where it started, and the distance travelled is 6.1e-7 of the 0.40 it was asked for. That ratio is the measurement, and it separates the two cases by six orders of magnitude. It also has to be the distance from the start and not the number of steps that converged — counted the second way, the blocked framework reports a successful walk.
Fig. 4 Three frameworks walked forty steps each along the flex their rank leaves. One goes nowhere; two travel.

The octahedron, asked to travel 0.160, travels 0.159982 — 99.99% of what it was asked for — with the worst bar-length error along the whole path being 4.6×10134.6 \times 10^{-13}. The two other placements give 0.159948 and 0.159950, at 7.9×10137.9 \times 10^{-13} and 1.5×10131.5 \times 10^{-13}.

The two bars in line, for comparison, asked to travel 0.6, travel 6.1×1076.1 \times 10^{-7}.

The motion is real. It is finite, it is not a numerical artefact, and every bar in the framework keeps its length to the last few bits of the arithmetic all the way along it.

Three placements, one answer

The construction takes three arbitrary points and reflects them, so it is worth running it more than once — a result that depended on the particular numbers would be a coincidence rather than a theorem.

Three sets of starting points were used, chosen to be unlike one another: joints at heights of +0.7+0.7 and 0.4-0.4 in the first, +0.5+0.5 and +0.6+0.6 in the second, 0.6-0.6 and +0.3+0.3 in the third. All three give a rank of 11, one dependency, one freedom past the six rigid motions, and a walk that travels between 99.97% and 99.99% of what it is asked for.

That is the difference between a measurement and an anecdote. Any one of the three could have been a placement that happened to be degenerate for some other reason; three unrelated ones giving the same rank, the same dependency count and the same walk is a statement about the construction.

What would have refuted it is easy to say and was tried: move one of the six joints off its symmetric position and the rank goes to 12, the dependency disappears, the framework has exactly the six rigid motions the count promises, and the walk goes nowhere. The symmetry is doing the work, and removing it removes the mechanism.

What the symmetry does

The reason is the symmetry, and it is worth being precise about what kind of reason that is.

The three pairs of joints are exchanged by a half turn about one line. So for any configuration of the framework, applying that half turn gives another configuration with the same bar lengths — trivially, because a rigid motion preserves lengths — and the same labelling, because the half turn maps each joint to the one it is paired with and each bar to another bar.

That makes the symmetric configurations a subfamily of the framework’s configuration space, and the subfamily has one more dimension than the generic count allows. Counting inside it: three independent points is nine coordinates, the symmetry axis’s own position and direction account for some of them, and the twelve bars reduce to six distinct conditions because each is paired with another that says the same thing about the mirrored half.

Six conditions on the symmetric family instead of twelve. That is where the dependency comes from, and it is why it is exactly one rather than some other number.

This is the same shape of argument as Bennett’s, where a relation between lengths and twists makes a four-bar loop’s constraints overlap, and as Sarrus’s, where two perpendicular planar sub-loops each remove the same freedoms. In every case the mechanism moves because constraints repeat one another, and in every case the repetition is arranged rather than accidental. What is new here is that it is arranged by a symmetry of the whole assembly rather than by a relation between four numbers.

Built in, not asserted

There is a discipline about symmetric mechanisms this site adopted when it built the line-symmetric Bricard 6R loop, and it applies here for the same reason.

The symmetry is put into the construction: three points are chosen, three more are computed as their images, and the framework is assembled from the six. It is not imposed on a result and it is not checked for afterwards.

The alternative — build a general octahedron, then verify that it happens to be symmetric — would be a check that passes because the numbers were arranged to make it pass, which is a check that tests nothing. A construction that cannot produce an asymmetric framework is the honest form.

What is checked afterwards is the thing the construction does not determine: the rank, the dependency count, and whether the flex is a motion. Those are the outputs.

The Sarrus linkage at 0°Two three-joint chains in perpendicular planes, joining a fixed plate to a moving one. The left chain's three axes are all parallel, so it allows the plate to move in its plane; the right chain's are parallel to a perpendicular direction and allow the plate to move in that one. What both permit is a straight line, and only a straight line. Six revolute joints in a single loop: Kutzbach says 0 degrees of freedom, the screw system has rank 5 and says 1, and the plate rises. Measured over 24 positions, its tilt never exceeds 2.5e-14 radians and it never leaves the axis by more than 6.8e-14 — exact, from pin joints, with no approximation anywhere in it.tilt 2.5e-14 rad over the travelpositioned by solving, not by drawing
Fig. 5 A loop of six revolutes that the count calls immobile and that translates in a straight line, built with its two planar sub-loops perpendicular.

Bars and pins are the same question

It is worth one section on why the same mechanism deserves an essay in two representations, because the site has been analysing spatial loops for a long time and this is the first framework among them.

A loop of revolute joints is what the spatial field has been solving: bodies joined in a cycle, a closure equation in the joint angles, and a mobility that is the nullity of the loop’s screw system. A framework is points joined by bars: no bodies at all, no joint angles, and a mobility that is the nullity of a matrix whose rows are bar directions.

The two are not translations of each other. A bar between two points is a distance constraint, which leaves the two points free to rotate about each other in every way; a revolute joint between two bodies is five constraints. So a framework’s octahedron is not the octahedral linkage that goes by the same name, and a reader who has met one should not assume they have met the other.

What is the same is the question and the instrument. Both are constraint systems; both have a Jacobian; both have two null spaces and a count that is the difference between their dimensions; and in both the count is right about the difference and can be arbitrarily wrong about either term. That is why the network field’s routine works on a framework, a body-and-pin assembly and a crease pattern without changing, and why an isostatic framework that moves sits comfortably next to a folded sheet with a hundred repeated constraints.

The corresponding fact for a spatial loop is that its screw system can be smaller than the joint count suggests, which is what an overconstrained loop is and what Sarrus and Bennett both are. The same sentence, in the algebra the loop representation offers.

What Maxwell’s count is for

It would be easy to take this as a case against counting, and it is not.

The identity is exact:

ms=dimvb(rigid motions),m - s = \mathrm{dim}\cdot v - b - (\text{rigid motions}),

on this framework and on every other. The count of six is a completely correct statement about msm - s. It becomes a statement about mm only under the assumption s=0s = 0, and that assumption is unstated, is usually true, and is false here.

What the count is right about. Freedoms minus dependencies, against what the count predicts, on seven assemblies from three different representations. The difference is exact every time and it is exact for a reason that has nothing to do with mechanisms: the count is unknowns minus constraints, the rank is a number no larger than either, and the two nullities are what each of them has left over. So a count is not wrong in the way a mismeasurement is wrong. It is a statement about a difference being read as a statement about one of the terms — and on four of these seven rows both terms are large and the difference is nearly meaningless.
Fig. 6 The identity across seven assemblies from three representations, with the octahedron among them.

The practical form of that is worth keeping. A count is trustworthy exactly when the framework has no redundancy, and the only way to find out whether it has any is to take a rank. Which means the count cannot certify itself, and a designer who needs to know whether an assembly moves has to do the more expensive thing.

What the motion looks like

Worth a paragraph, because it is not obvious from the count and it is the part a reader can check by eye.

The three pairs of joints stay exchanged by the half turn throughout the motion — that is what makes it a motion of the symmetric family — so the framework flexes without ever losing its symmetry. Watching one pair, the two joints move as mirror images about the axis; watching the whole thing, the octahedron changes shape while staying an octahedron with the same axis.

The framework Maxwell's count calls a structureSix joints and twelve bars in space. Three coordinates each gives eighteen unknowns, six rigid motions come off, and twelve bars is exactly twelve constraints — Maxwell's count is 6 against six rigid motions, which is the definition of isostatic: no mechanism, no redundancy, every bar carrying its own share and nothing spare. The rank is 11, not twelve. There is one dependency among the bars and one freedom left over, and the freedom is a genuine finite motion: walked here with every bar held to 4.4e-16 of its own length. The reason is a symmetry — three pairs of joints exchanged by a half turn about one line — and it is built into the coordinates rather than asserted about the result. positioned by solving, not by drawing.Maxwell 6 · rank 11 · one freedom, one dependencybars held to 4.4e-16
Fig. 7 Part way along, with the start drawn behind. Every bar the same length; the shape changed.

It is a one-dimensional family, so there is one number’s worth of shape available, and the framework does not pass through anything degenerate over the range walked here. What limits the range is not measured — the walk stops where it is told to — and a framework of this kind generally does have limits, where the flex meets a configuration at which the rank falls further and the motion either stops or branches.

The interesting thing to a reader who has followed the field is that a half turn is doing what a hundred conditions on a crease pattern do. Both are ways of arranging for constraints to repeat one another; the symmetry does it with one statement about the whole assembly, and the tessellation does it with one statement about a unit repeated. Those are the only two ways this field has found, and neither is available by drawing carefully.

What it costs to be wrong about

Two costs, and they point in opposite directions.

A framework believed isostatic and actually a mechanism will move when it is not supposed to. That is the obvious failure and the one the octahedron is famous for.

A framework believed isostatic and actually redundant is the other half of the same coin, and it has a subtler cost: it is sensitive to its own dimensions. A redundant bar is a bar whose length is decided by the others, so cutting it to a different length means the framework cannot be assembled at all rather than assembling into a slightly different shape. That is a different kind of tolerance statement from the ones the practice field usually makes, and it is the one that bites on this framework: its twelve bars have to satisfy one relation exactly, and a real octahedron cut to tolerances would not be Bricard’s — it would be a structure, or would not go together.

Which is a good reason to be careful about what the measurement above claims. It claims that a framework whose joints are placed with an exact symmetry has a finite motion. It does not claim that such a thing can be made.

Where it belongs

The octahedron sits in this field rather than in the network one because it is six bodies and twelve bars — a chain, not an assembly of repeated units — and because it is the same argument the spatial field has been making since the expansion, in the representation the spatial field did not have.

Six assemblies, one routine, three disagreements and one accident. Every row is the same three steps: write down the constraint Jacobian, take its rank, and subtract it from the number of unknowns. The representations differ — bars between points, bodies joined by pins, panels joined by creases, one cell of a pattern that repeats for ever — and the routine does not. The counted column is the arithmetic on the numbers of bodies and joints; the measured column is the nullity of the matrix. They agree on the lazy tong and on the kagome cell and disagree on the other four, most sharply on the deployable ring, which the count declares immobile and which is sold as a mechanism that opens. The right-hand column is the reason: constraints that repeat what another constraint has already said, which the count has no way of seeing and the rank cannot help seeing. The fourth row is worth reading twice: the count says nothing can move and nothing can, so the two agree — and they agree for the wrong reason, because that pattern's flat state shows four freedoms and not one of them is a motion.
Fig. 8 The field’s ledger, with the octahedron between the folded sheet and the pattern that repeats for ever.

It also earns a place because it is the cleanest available answer to a natural objection. A reader looking at a Miura sheet with a hundred redundant constraints, or a deployable ring with four, might reasonably conclude that the count’s failures are a large-assembly problem — something that happens when there are too many parts to keep track of. Six joints and twelve bars is not that. The count is off by one, on the smallest interesting framework in space, for a reason that is entirely geometric and entirely invisible to arithmetic.

One feature of this mechanism separates it from nearly every other coincidence on this site and is worth marking. The site’s overconstrained mechanisms almost all depend on a continuous condition: axes parallel, axes concurrent, planes perpendicular, lengths and twists satisfying a relation. Each of those is a coincidence in the ordinary sense — a real-valued condition that manufacture approaches and never quite hits. Here the condition is a discrete symmetry: a half turn about one line that exchanges three pairs of joints. A finite group acting on the framework, rather than an alignment. That is a different kind of coincidence and it behaves differently under error, because a symmetry is either present in the arrangement or it is not, and a small perturbation of the joint positions destroys it as completely as a large one. So the mechanism has no forgiving direction in the sense the Sarrus measurement found — every departure from the symmetric placement is a departure — and the tolerance question is about how far a nearly-symmetric framework is from moving rather than about which direction the error took.

About the same objects

Not linked from either essay — found by the objects both name.

What links here

Essays that link to this one from their own argument.

The objects this essay names

Each one links to every other essay that touches it.

BricardConstraint jacobianInfinitesimal flexMobilityNetworkOverconstraintRankRedundant constraintSymmetry