Many of one thing

Many loops, one freedom

A scissor lift, a folded sheet and a deployable ring are one small unit repeated thirty times, and three things change at once: the count of bodies becomes a parameter, mobility becomes the rank of a matrix, and a unit that moves can be rigid the moment it is joined to another of itself.

Assumes What decides whether it moves and Counting and measuring mobility.

Every mechanism this site has drawn is a chain. A four-bar has one loop and four links. A Gough platform closes six times and has fourteen bodies. A Sarrus linkage closes twice. In each case the loops are few enough to be written out by hand, the mobility is a number somebody can check on the back of an envelope, and the interesting question is where each particular link goes.

A scissor lift is not like that, and neither is a folded sheet of paper, a deployable ring, a braced frame or a lattice. Each of those is one small unit repeated — thirty of it, or three hundred — and three things change at once.

The count of bodies is a parameter. Every quantity in this field is a function of nn, and the interesting ones do not scale the way the count does.

Mobility stops being a count and becomes the nullity of a matrix. Grübler’s formula is arithmetic on the numbers of bodies and joints; the rank of the constraint Jacobian is a measurement on where those joints actually are. On a four-bar the two agree, and where they do not, the disagreement is one mechanism’s worth. On a network the gap is large and structural.

And a unit’s freedom and the assembly’s freedom are different objects. Two units that each move perfectly well can be rigid the moment they are joined, and the condition that stops that happening is a property of the tiling rather than of anything in it.

Six assemblies, one routine

Everything in this field is the same three steps. Write down the constraint Jacobian. Take its rank. Subtract it from the number of unknowns.

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. 1 Six assemblies, three representations, one routine. The counted column is arithmetic on the numbers of bodies and joints; the measured column is the nullity of a matrix.

What differs between the rows is only what fills the Jacobian’s rows.

A framework is points joined by bars: one row per bar, dim columns per point, and the entry is the direction of the bar. It is the smallest representation there is, and it is where the two null spaces are easiest to see.

A body network is planar rigid bodies joined by pins: three columns per body, two rows per pin. This is what a scissor assembly is, and it is the representation Grübler’s count is written against, so it is where the count and the rank can be put side by side.

A fold network is panels joined along creases. Here the loops are the interior vertices of the crease pattern, the unknowns are the fold angles, and a crease running between two interior vertices appears in two closures at once. That is the loop machinery this site has had since the spatial field with the loops overlapping, and the overlapping is the whole of what is new.

What the four disagreements look like

The lazy tong agrees. Sixteen bodies, twenty-two pins, and Grübler’s 3(n1)2j3(n-1) - 2j gives 4 — three rigid motions of the whole assembly and one internal freedom — against a measured nullity of 4 and no redundant constraints at all. That holds at one unit and at thirty-two.

The tong is in this field to make the point in the direction nobody expects it. A network is not a place where counting fails; it is a place where counting stops being checkable by hand, and one of the six rows on the ledger is counted perfectly at every size.

The deployable ring is the sharpest disagreement. Sixteen elements and twenty-four pins gives Grübler’s count of nought: a structure, with no freedom at all. The rank of its Jacobian is 44 of 48, which leaves four — the three rigid motions and one deployment — and four constraints that repeat what the others have already said.

The mechanism is sold as a thing that opens. The count says it cannot.

The Miura sheet disagrees in the other direction and by more. Thirty-six panels give sixty creases and twenty-five interior vertices, so sixty unknowns against seventy-five equations: the count is minus fifteen. The mechanism has one freedom, at that size and at every other.

One freedom, whatever the sizeA Miura sheet of 4×4 panels, folded. There are 24 creases, so 24 unknown fold angles; 9 interior vertices, so 27 closure equations. Subtracting gives -3, and the mechanism has **one** freedom — the rank of the constraint Jacobian is 23, leaving 4 constraints that repeat what the others have already said. Every panel here is a rigid body and every crease a hinge; the sheet is not bending anywhere and no material is being stretched. The check that says so is on the page: each vertex is computed independently from every panel that meets it, and the 25 readings agree to 7.3e-14 of a panel's length. positioned by solving, not by drawing.24 creases · 27 constraints · rank 23mobility 1 · 4 redundant
Fig. 2 A Miura sheet of sixteen panels, folded. Every panel is a rigid body and every crease a hinge; the arithmetic says the sheet cannot move.

And the Bricard octahedron disagrees where nobody would look for it. Six joints and twelve bars in space is 3v6=b3v - 6 = b exactly, which is the definition of an isostatic framework: no mechanism, no redundancy, every bar carrying its own share and nothing spare. Its rank is 11, not 12. There is one dependency among the bars and one freedom left over, and the freedom is a genuine finite motion.

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. 3 Maxwell’s count calls this a structure. It moves, with every bar held to within a ten-billionth of its own length.

What the count is actually right about

It would be easy to read the ledger as saying the count is a bad instrument. It is not; it is a good instrument being read as though it answered a different question.

Write mm for the freedoms — the nullity of the Jacobian — and ss for the dependencies among its rows. Both are non-negative. The count is unknowns minus constraints. Then

ms=(unknowns)(constraints)m - s = (\text{unknowns}) - (\text{constraints})

exactly, always, on every mechanism there is. The rank is a number no larger than either the row count or the column count, and the two nullities are what each of them has left over; subtracting one from the other cancels the rank and leaves the count. Nothing about geometry enters.

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. 4 Freedoms minus dependencies, against the count, on seven assemblies from three representations. Exact on every row.

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. On a four-bar that reading is safe because ss is nought and the difference is the answer. On four of these six rows both terms are large and the difference is nearly meaningless: the Miura sheet at thirty-six panels has one freedom and sixteen dependencies, and 116=151 - 16 = -15 is a perfectly true sentence about a mechanism that folds.

This is the same fact the constraint field’s count that counts the wrong thing is about, at a scale where it stops being an exception.

The unit and the assembly are different mechanisms

The third change is the one with no analogue anywhere else on this site, and the cleanest demonstration of it costs nothing.

Take the Miura pattern and move every interior vertex by about a tenth of a panel. The result is still a grid of quadrilateral panels; every interior vertex still has four creases; and every one of those vertices is still developable — its sector angles come to a full turn to within 10910^{-9} radians, because a vertex drawn on a flat sheet has sectors that come to a full turn and there is no way for it not to.

Each of those vertices, taken on its own, is a spherical four-bar and folds perfectly well. The assembly of four of them does not fold at all — not to half a radian, not to a fiftieth of one.

The Miura’s residual sits at 101610^{-16} at every fold. The moved grid’s best is 5.9×1065.9 \times 10^{-6} at a fold of 0.02 radians and 1.6×1031.6 \times 10^{-3} at half a radian, and no seed and no number of iterations moves it. Whatever makes a pattern fold, it is not a property any vertex has.

What this field will not do

Two boundaries, and both of them are the ones this site has kept since its transmission field.

Force, in every form. That needs stating twice over here, because this field’s second null space is the one an engineer calls a state of self-stress, and it is the natural home of a force argument. What is computed here is a dependency among the constraints: a combination of the rows of the Jacobian that comes to nothing. That is a statement about a matrix. It needs no material, no stiffness and no load, and every number in the field survives with every force in the mechanism unknown. That the same subspace also happens to be the set of bar tensions a structure can carry with nothing applied to it is a reading this site names twice and develops nowhere.

The crease pattern as a subject. What a sheet of paper can be made to do — flat-foldability, the conditions at a vertex, tessellation design, and every count made on a drawing — is somebody else’s. What is owned here is the mobility of the assembly: how many freedoms a folded pattern has, what the rank of its constraint system is, and what its configuration space looks like where branches meet. Every number below is a rank, a nullity or a residual, and none of them survives the mechanism being deleted.

The instrument had a floor, and nobody had written it down

One thing had to be fixed before any of the above could be measured, and it is worth putting on the first page of the field rather than in a footnote.

The usual way to get a null space out of a small matrix on this site is to accumulate ΣvvT\Sigma vv^{T} and take its symmetric eigenbasis. That is exactly right for a six-by-six screw system, which is what it was written for, and it has a property nobody had recorded: forming ATAA^{T}A squares the condition number, so the smallest singular value it can distinguish from nought is ε\sqrt{\varepsilon} — about 1.5×1081.5 \times 10^{-8} of the largest — whatever tolerance the caller passes.

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. 5 Four constraint matrices, ranked two ways. Asked at a tolerance below its own floor, the squaring route over-states every one of them.

Asked at 101010^{-10}, that route over-states the rank of every constraint matrix in this field. A triangle’s three bars come back as five independent constraints. The Bricard octahedron’s twelve come back as fifteen. The deployable ring’s forty-four come back as forty-five — which reports the ring as a rigid body with three freedoms, all of them rigid motions, and no deployment at all, on a mechanism whose entire purpose is to deploy.

Nothing says so. The null vector is simply returned as part of the row space and the nullity comes back smaller. At 10710^{-7}, which is what every existing caller passes, the same route is right every time, which is exactly why the floor had never been reached on any figure this site had drawn. The rank column in the field’s own routine is one-sided Jacobi applied to the matrix itself, which resolves a ratio of 101410^{-14} and reports the gap it decided on.

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. 6 Every singular value of the ring’s constraint matrix, as a share of the largest. The rank decision is made across a gap of 101510^{15}, and the squaring route would put the line through the middle of it.

The gap is reported on every measurement in this field for that reason. On the small assemblies it is effectively infinite; on the twelve-by-twelve Miura sheet, which is the largest thing here, it is 4.8×10124.8 \times 10^{12}. A rank decision backed by twelve orders of magnitude is a fact. One backed by three would be an opinion, and the field would have to say so.

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. 7 The floor the instrument had: following a first-order freedom to see whether it goes anywhere. A rank alone cannot tell a motion from a flex, and on an assembly of many loops that distinction is most of what the count is being asked for.

Size, which is now a quantity

There is one more thing a network has that a chain does not, and it is easy to miss because it looks like a detail of presentation: the number of units is an input, so every statement in the field is a statement about a family rather than about a mechanism.

That changes what a measurement has to be. Saying that a Miura sheet has one freedom is not worth much on its own, because a particular sheet is a particular mechanism and one measurement of it proves nothing about the next size up. What is worth having is the pair of columns as they run down the sizes.

Six sizes, one freedom, and a count going the other way. Creases and constraints both grow as the square of the sheet's side, and they grow at different rates: two per panel against three per interior vertex. So the counted column runs (n − 1)(3 − n) and is positive at two, nought at three and increasingly negative after that, while the measured mobility is one on every row. The redundant column is the difference and it is exactly (n − 2)² — one at three, four at four, nine at five, thirty-six at eight. A twelve-by-twelve sheet of a hundred and forty-four panels is counted at minus ninety-nine and has a hundred repeated constraints, and it is the same mechanism as the smallest one on this table.
Fig. 8 Six sizes. Creases and constraints both grow as the square of the side and at different rates; the measured mobility does not move.

Creases go as 2n(n1)2n(n-1) and constraints as 3(n1)23(n-1)^2, so the counted column runs (n1)(3n)(n-1)(3-n) — positive at two, nought at three, and increasingly negative after that — while the measured mobility is one on every row. The difference between them is the redundant column, and it is exactly (n2)2(n-2)^2: one at three, four at four, nine at five, thirty-six at eight, a hundred at twelve. A twelve-by-twelve sheet of a hundred and forty-four panels is counted at minus ninety-nine and has a hundred repeated constraints, and it is the same mechanism as the four-panel one at the top of the table.

None of those three columns could be established by looking at one sheet. The scaling is the result, and it is the shape most results in this field take.

It also decides what a figure in this field can be. A picture of sixty panels with every pin labelled is a diagram of nothing: no individual body matters, and the reader who counts them has learned nothing that the ledger does not say better. So the family splits in two and says which half it is in every time. The pictures of assemblies are drawn so that the repetition is visible, with one unit marked so a reader can find the unit inside the assembly, and they are deliberately plain. The pictures of the arithmetic carry the numbers, and where a count and a rank disagree they are drawn on the same axis, because the disagreement is the subject.

Both nullities are measured, and the identity is the check

The relation msm - s = the count is exact and always true, and there is a temptation in it worth heading off, because taking it is how a check becomes a tautology.

The temptation is arithmetic. The count is free, so measuring the mobility and deriving the dependency count from the identity would give both numbers for the price of one. It is the obvious economy and it is exactly wrong: a quantity derived from an identity cannot check the identity. Every row of every table in this field would then agree by construction, and no computation anywhere could disagree with anything.

So both are measured, from the same decomposition and by the same routine, and the identity is a check rather than a definition. The mobility is the nullity of JJ and the dependency count is the nullity of JTJ^{\mathsf T}; the decomposition produces both, so the second is free in the only sense that matters — free of the first.

That the check is cheap does not make it weak. It fires on the failure this field is most exposed to, which is a rank taken at the wrong tolerance: a threshold that over-states the rank reduces both nullities, but not by the same amount, so the identity breaks and says so. The floor the routine had and nobody had written down would have shown up here as an identity that stopped holding, rather than as a silently wrong number.

It is also the reason the tables in this field carry three columns where two would do. Count, mobility, dependencies — with the third apparently redundant. It is redundant in value and not in provenance, and the distinction is the whole of why it is printed: two numbers from a decomposition and one from arithmetic, checked against each other, is a different object from two numbers of which one was computed from the other.

That habit is not this field’s invention and it is worth naming where it came from. The site has computed a count against a rank since its first field for exactly this reason, and every time the two have disagreed the disagreement has been the finding. What the network field adds is a third quantity in the same relation, and therefore a triangle of agreements rather than a pair — which is one more place for a wrong tolerance to announce itself.

Where this goes

The rest of the field is that routine pointed at particular things.

The loops are in the graph before they are in the mechanism, and the count is that graph’s arithmetic. Each unit moves and together they do not is the compatibility question the moved grid raises. The freedom that survives repetition takes the Miura sheet to a hundred and forty-four panels and finds the same one freedom. Every vertex is a spherical linkage connects the fold pattern back to the object the spatial field built. And a constraint that has been said already is about the second null space, which is where the count’s error goes and which turns out to be the number of conditions a pattern’s shape has to satisfy before it folds at all.

Two of the twelve rungs are about the difference between a nullity and a motion, which is a distinction this site has been able to avoid until now: a flex the rank leaves may not be a motion, and the flat state is where the branches meet and shows every branch’s tangent at once. Both of them say the same thing in the end, which is that a rank is a necessary condition and never a sufficient one, and that what a solve does when it is followed is the only thing that settles the matter.

What this makes readable

Essays that name this one as a prerequisite.

About the same objects

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

What links here

The 8 of 11 essays linking to this one that name the most of the same objects.

The objects this essay names

Each one links to every other essay that touches it.

Constraint jacobianDeployableGrübler's criterionMobilityNetworkNull spaceRankRedundant constraintRigid origami