The taut path has more than one answer
Assumes Where a strand leaves a body and The wraps add up to a turn.
Everything computed in this field starts from a list: which bodies the strand touches, in what order, and which way round each. Given that list the geometry is decided, and the essays either side of this one are about what follows from it.
The list itself does not follow from anything. It is an input, it is discrete, and there is more than one legitimate value for it — which makes it a different sort of quantity from every other input on this site.
Two paths, both shortest
Put a peg between two anchor points and pull a strand taut between them. The strand can pass on either side of the peg, and both paths are genuinely taut: straight where they can be, on the surface where they must be, leaving at a right angle, and neither with a corner anywhere.
Each of them is the shortest path on its own side. That is not a figure of speech: both were checked against a two-parameter family of paths that leave the anchor for a point on the peg, follow the surface for a while, and go on — with no requirement anywhere that they meet the surface at any particular angle. Both classes’ minima land on the tangent construction, to three parts in ten million.
So there are two answers, neither is an approximation to the other, and they differ by 18.52 mm — nine per cent of the run.
This is not a second assembly branch
This site has met multiple answers many times, and they have all been the same kind of thing until now.
A four-bar has two assembly modes: the coupler triangle can be flipped, and the two configurations are separate roots of the same closure equation. A serial arm has eight inverse solutions. A three-position synthesis produces 1,176 exact linkages of which most have a defect. In every case the multiplicity comes from an equation of degree greater than one, the answers are found by solving, and the mechanism cannot pass from one to another without being taken apart.
The two paths here are not roots of anything. They are two classes of one minimisation, and the minimisation is over paths rather than over configurations. The strand does not choose between them; it is threaded into one of them when the machine is built, and it stays there.
The distinction has a practical edge. A mechanism’s branch can sometimes be identified from a measurement — the coupler is on one side or the other, and a sensor sees it. A strand’s class is invisible to anything measuring lengths: the two paths differ in length, so measuring the strand identifies the class only if the length was known independently, which it usually is not. What identifies a route is looking at it.
As the peg moves through the line
The two lengths are not fixed labels. Slide the peg across the line joining the anchors and they exchange roles:
| peg offset | path on one side | path on the other |
|---|---|---|
| −20 mm | 220.891 mm | 200.362 mm |
| −10 mm | 212.945 mm | 202.580 mm |
| 0 mm | 206.799 mm | 206.799 mm |
| +10 mm | 202.580 mm | 212.945 mm |
| +18 mm | 200.643 mm | 219.165 mm |
| +24 mm | 200.040 mm | 224.537 mm |
With the peg centred on the line the two are exactly equal at 206.799 mm, which is the symmetric case and the only configuration in which a strand is indifferent to its route. Either side of it one class is shorter, and the shorter one is always the side the peg is not on.
Nothing dramatic happens at the crossing. The two paths are both perfectly well defined all the way through it; they simply swap which is longer. A strand threaded on the long side stays on the long side, and moving the peg through the line does not move the strand.
Where the obstacle stops obstructing
Keep pushing the peg away and something does happen, at exactly the configuration where the peg’s surface clears the straight line.
At an offset of 26 mm — the peg’s own radius — the shorter path is 200.0000 mm, the straight line, touched tangentially. Beyond that the peg is out of the way entirely, and the strand’s shortest path from anchor to anchor no longer involves the peg at all.
The other class does not disappear. It is still a perfectly good route — round the far side of the peg — and it is still taut, and it is now 226.454 mm. What has changed is that the class containing the straight line has stopped being a wrap: the strand runs straight past, and to keep it in contact with the peg something would have to hold it there.
That is where the model has to be read carefully, and it is the same reading the tensioner needs. Ask for a route that includes a body the strand does not reach and the geometry answers anyway: at an offset a ten-thousandth of a millimetre past the tangent case, the routine returns a path of 363.363 mm that goes round the peg the long way. It is a legitimate closed-form answer to the question that was asked and it is not a strand.
Why both are minima, and what that means
It is worth being precise about the sense in which both paths are shortest, because “the taut path is the shortest path” is the sentence the whole field rests on and it is not quite true as stated.
The shortest path from anchor to anchor, over all paths avoiding the peg, is one of the two — 200.643 mm in the case drawn here. The other is 18.52 mm longer and is not the shortest anything, globally.
What it is, is a local minimum: perturb it in any way that keeps it on the same side of the peg and it gets longer. That is exactly the property a taut strand has. A strand pulled tight does not search the space of all possible routes and pick the best; it takes up slack along the route it is on, and it comes to rest at the shortest path in that class.
So the sentence to use is: a taut strand is the shortest path in its homotopy class. The unqualified version is right only for a strand with no obstacles or for the one class that happens to contain the global minimum, and the difference between the two versions is the whole content of this essay.
That also settles what the tangency construction computes. It finds a stationary point of the length, and every stationary point of a path length among obstacles is a taut path in some class — so the construction is answering a local question, which is why it needs the route as an input and why it returns a well-behaved answer for routes no strand would take.
How many routes there are
With one obstacle there are two classes. With obstacles in general position the number grows exponentially — every additional peg can be passed on either side, and the strand can also go round more than once — so a run over half a dozen pulleys has thousands of legitimate routings, of which a designer intends one.
The field’s own vocabulary for a route is the senses list: which side of each body the strand runs on. That list is exactly the discrete label, and it is why the routines here take it as an argument rather than computing it. A belt over four pulleys with all senses positive is a loop round their hull; change one sense and the belt crosses itself between two of them; add a body outside the hull with a negative sense and it is a tensioner.
That is why “route the belt” is a design decision in a way that “position the linkage” is not. A linkage’s designer chooses lengths and the configurations follow; a strand’s designer chooses lengths and a route, and the route is not a number that can be optimised over.
The class is a state, and it can change
A route is stable until something makes it not.
A belt that jumps off a pulley has changed class, and the machine that results is a legitimate mechanism with a different length requirement — usually a shorter one, since the belt has stopped wrapping something. A chain that comes off its sprocket, a cable that jumps its sheave groove, a tendon that unwraps its idler when the joint over-travels: all of them are the same event, and all of them leave a mechanism whose arithmetic is now the arithmetic of a different senses list.
The tendon case is the one where the boundary can be computed exactly. Each idler’s wrap is its own joint’s angle plus a constant, so the wrap reaches zero at a specific joint angle, and past that angle the strand runs straight by. On the arm measured there, that limit is 202.8° of travel at the first joint and 355.8° at the second, and those numbers are the mechanism’s actual range regardless of what the links would allow.
That gives the design rule this essay ends on: a strand’s route has a working range, and it is the range over which every wrap in it stays strictly positive. It is not the same as the range over which the mechanism can be assembled, and it is usually smaller.
The route a belt is threaded on, in practice
Three ordinary machines make the same point without any geometry at all.
A serpentine drive is routed with some accessories driven off the flat of the belt and some off its back, which is a sense per pulley written down as a diagram on the underside of a bonnet. Threading it wrong gives a belt that fits — sometimes exactly, since the wraps trade off against one another — and drives an accessory backwards.
A bicycle’s chain passes through the rear derailleur’s cage between two jockey wheels, one wrapped each way. Rethreading it on the wrong side of the tab is a route change; the chain is the same length and the drive does not work.
A sailing block can be rove to advantage or to disadvantage with the same two blocks and the same rope, and the difference is a whole part of line — which is the parity fact from the tackle essay seen as a routing decision rather than as an arithmetic one.
In every case the wrong route produces a working, taut, correctly tensioned mechanism that does the wrong thing. That is the signature of a discrete input: the failure is not a tolerance or a degradation, it is a different machine.
What is shared with the configuration space
There is one place on this site where discrete structure of this kind has already been measured, and it is worth pointing at because the objects are close relatives.
A mechanism’s configuration space can have several connected components, and a mechanism cannot move between them. That is the assembly-branch phenomenon in its proper form: the set of configurations is disconnected, and continuity does the rest.
Here the configuration space is connected — the peg can be anywhere, the anchors can move, everything varies smoothly — and it is the space of paths that is disconnected. Two strands in different classes with the same endpoints and the same obstacles are in the same mechanism configuration and are different mechanisms.
What a designer actually chooses
Collecting the discrete choices in one place makes the shape of the design problem clear, and it is unlike any other mechanism on this site.
Which bodies the strand touches. Not all of them, necessarily: a body inside the hull of the others is present and untouched, and whether a given pulley is on the run is decided by the geometry rather than by the intention.
Which side of each. The senses list. Two values per body, and the choice is made when the machine is threaded.
How many times round. A capstan takes several turns of one body; a winch takes seventy-two. This field’s arithmetic assumes one, and says so.
The length. Which is continuous, and is the only one of the four that an optimiser can move.
Three of those four are integers and one is a length, and the three integers between them decide which continuous problem is being solved. A designer who has fixed the route has a one-equation problem with a smooth answer; a designer who has not has a combinatorial one, and there is no gradient anywhere in it.
That is the honest reason this field takes the route as an input. Computing it would mean searching, searching means a discrete space, and the boundary this site drew when it took the configuration space sends search elsewhere. What is claimed here is what follows from a route, and that a route is a thing that has to be given.
Two, and then infinitely many
Two paths past one peg is the answer to a question narrower than the one the essay asks, and the wider answer is worth having because it changes what a route is.
A taut strand is the shortest path in its homotopy class, and the homotopy classes of paths between two fixed points in a plane with one peg removed are indexed by an integer: how many times the path winds around the peg, and in which direction. Not two, then, but infinitely many — and every one of them contains a shortest member, taut, in equilibrium, and physically threadable.
The physical version is unremarkable once said. A rope from one anchor to another may pass the post on the left, or on the right, or round it once and then on to the anchor, or round it twice. Each of those is a different length, each is taut, and none can be deformed into another without cutting the rope or passing it through the post. The two paths this essay measures are the two shortest of an infinite family.
So a route is not a choice among finitely many sides. It is an element of a group — the free group on as many generators as there are bodies — and the senses list is a truncation of it to the cases where the strand passes each body at most once. That truncation is the right one for a belt drive, where a strand wrapping a pulley twice is a fault, and it is the wrong one for a capstan, where the whole mechanism is several turns of one body and the number of turns is the design parameter.
That gives the field’s own list of mechanisms a structure it did not obviously have. A belt, a tendon and a serpentine drive are reduced words: each body appears once, and the discrete choice is a sign per body. A capstan and a winch are powers of a single generator, and the exponent is the turn count. A tackle is a reduced word over several sheaves. The field’s mechanisms are exactly the short elements of that group, and the two that are not short are the two whose behaviour this field has the most trouble with.
It also says something about how a route can change. Moving between homotopy classes requires the strand to pass through a body, which is why a route is stable — but the classes are not equally far apart. Passing from left to right past one peg is one crossing; passing from once round to twice round is also one crossing, and it is the failure a rope on a capstan actually has. So the stability of a route is not a property of the route but of how close it is to the boundary of its class, and the boundary is a surface in the space of body positions.
Which is the honest general form of the design rule the essay reaches. A route has a working range, the range is the interior of its homotopy class, and the class is one of infinitely many — of which a designer normally intends one of the two or three shortest.
What is not modelled
The strand is a line in a plane, so “which side” is a two-valued question; in space it is not, and a strand past a post in three dimensions has a continuum of routes and a genuinely different problem. Nothing here computes the classes automatically — the senses list is given, and there is no routine in this field that enumerates the routes a set of bodies admits or picks the shortest among them, which would be a search rather than a solve. A strand cannot be shown changing class: the model has no way to represent the moment a belt leaves a pulley, because the strand would be slack while it happened and a slack strand has no shape here.
About the same objects
Not linked from either essay — found by the objects both name.
- Where a strand stops touching design rule · idler · strand · taut
- The drum that is not round design rule · strand · tangency
- The strand that is slack configuration space · strand · taut
- A chain is not a strand design rule · strand
- A tooth flank is an unwound strand strand · tangency
- Six things a strand is not design rule · strand
What links here
Essays that link to this one from their own argument.
- The wraps add up to a turn Members that pull
- A member with no length of its own Members that pull
- A strand in a tube Members that pull
- The wrap that walks along the axis Members that pull
- Which walls a strand is held by Members that pull
- Where the jaws put it Contacts that only push
The objects this essay names
Each one links to every other essay that touches it.
BranchConfiguration spaceDesign ruleHomotopy classIdlerShortest pathStrandTangencyTautTurning number