Skip to content
A Catalogue Of Spoke Patterns
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
img
src
tests
.gitignore
LICENSE
Makefile.am
README.md
build.local
configure.ac
group-c.md
table-ab.py
table-c.py
tables.local

README.md

A Catalogue Of Spoke Patterns

This is a complete catalogue of valid spoke patterns to length 6 with offsets of 3 or less. There is no guarantee of safety or practicality - in fact, some patterns are unsafe or impractical.

Contents

Catalogue

Groups A And B

For each pattern, the name is top left and the number of spokes in the pattern top right. An example wheel (of 20, 32 or 36 spokes, depending on the pattern size) is shown, with the pattern highlighted in red.

0A 1 2,0A 3 2,0A1 4 2,0A2 5
2,0A3 6 3,0A 3 1,3,0A 5 1,3,0A1 6
1,-1,0A 5 1,-1,0A1 6 1,-2,0A 5 3,3,0A 5
3,3,0A1 6 3,-1,0A 5 3,-1,0A1 6 3,-2,0A 5
1B 2 1B1 3 1B2 4 1B3 5
1B4 6 2B 2 3B 2 3B1 3
1,2B 4 1,2B1 5 1,2B2 6 1,3B 4
1,-2B 4 2,2B 4 2,2B1 5 2,2B2 6
2,3B 4 3,0B 4 3,0B1 5 3,0B2 6
3,1B 4 3,1B1 5 3,1B2 6 1,1,3B 6
1,1,-2B 6 1,1,-3B 6 1,2,3B 6 1,2,-2B 6
1,2,-3B 6 1,-1,0B 6 1,-2,0B 6 1,-2,1B 6
2,0,3B 6 2,0,-3B 6 2,3,3B 6 2,3,-2B 6
2,3,-3B 6 2,-1,2B 6 2,-3,3B 6 2,-3,-3B 6
3,0,3B 6 3,3,3B 6 3,3,-3B 6 3,-1,2B 6
3,-2,2B 6

Group C

There were so many results for group C that I have placed them on a separate page.

Common Names

Pattern Name Common Name
0A Radial
2,0A Crow's Foot
2,0A1 Extended Crow's Foot
1B 1 Cross
2B 2 Cross
3B 3 Cross
2,2B 2 Leading 2 Trailing
3B1 Crow's Foot
3,3,3B 3 Leading 3 Trailing

(Looking at images on the 'net, it might be better to say that Crow's Foot is a whole family of patterns with a certain style - more could be added above).

Notes

Pattern Names

The patterns above have names like 2,0A1. Below I describe these in detail, but all you really need to know is:

  • The numbers are spoke offsets.

  • For A patterns, reflect the spokes described by the offsets around the trailing 0 offset (radial) spoke.

  • For B patterns, reflect all the spokes.

  • C patterns are written out completely.

  • Any trailing digit gives the number of additional radial spokes.

So 2,0A1 consists of

  • an offset 2 spoke (the "2"),

  • a radial spoke (the "0"),

  • an offset -2 spoke (the first spoke, reflected, because of "A"),

  • a single "extra" radial spoke (the trailing "1"),

and so is better known as the Extended (or Adapted) Crow's Foot.

To write this software and organise the results into the catalogue above I have had to invent some terms. My apologies if these are confusing, or replace / conflict with existing usage.

Spoke Offsets

We can describe spokes as being offset by some number of holes relative to where a radial spoke would connect to the rim. A spoke of "offset 1" is shifted one place to the right (in practice, that is two rim holes, because the intermediate hole is used to connected to the other side of the hub). A negative offset is the same number of holes in the opposite direction.

So a traditional 3 Cross pattern has spokes with offset 3 and -3, while a radially spoked wheel has spokes of offset 0.

Pattern Length

Practical spoke patterns repeat around the wheel, so instead of describing the whole wheel we can describe just a single occurrence of the pattern - a single "slice of the pie".

The number of spokes in the slice is called the length of the pattern (see rim compatability).

Sometimes I use the word "pattern" to refer to an entire wheel, and sometimes to just the "pie slice". Hopefully this will be clear from the context.

Pattern Groups

In practice, common spoke patterns are symmetric - the "slice of pie" can be divided in two and the spokes on the left are a mirror reflection of those on the right.

For example, the Crow's Feet pattern consists of three spokes, with offsets 2, 0 and -2. Spokes with negative offsets are reflections of their positive value, so we can describe Crow's Feet as a spoke of offset 2 reflected around a radial spoke (of offset 0).

Thinking about symmetry in this way lets us divide spoke patterns into three groups:

  • A: Patterns like Crow's Foot, which are symmetric around a central radial spoke (offset 0).

    I write these patterns omitting the the reflected spokes (but including the middle spoke). So Crow's Foot can be written as 2,0A.

  • B: Patterns which are symmetric with an even number of spokes (so without a central radial spoke). A very common example is 3 Cross, which is simply a 3 offset spoke and a reflected -3 offset spoke, repeated around the wheel.

    I write these patterns omitting the reflected spokes. So 3 Cross is simply 3B.

  • C: Everything else. In other words, patterns that are not symmetric as described above.

    I write these patterns out completely. For example 2,2,-1,-3C has spokes of offset 2, 2, -1 and -3 (ie the 1 and 3 are in the opposite direction to the 2s).

Radial Padding

When you have a symmetric pattern (groups A and B)that defines a "slice of pie" you can often make a new pattern by adding another radial spoke to one side.

Patterns like this, with "extra" radial spokes, do not have the same symmetry as the original, but they are closely related and they "look symmetric". Because of this, it is useful for them to be grouped with the "parent" pattern.

For example, the Extended Crow's Foot pattern has an extra radial spoke, making its length 4 (ordinary Crow's Foot has 3 spokes in a "slice of pie").

So I name these patterns by adding the number of radial spokes after the group letter. For example, ordinary Crow's Foot is 2,0A and Extended Crow's Foot, with one extra radial spoke, is 2,0A1.

Group C patterns are not treated in this way because the "parent" pattern has no symmetry anyway - they are the extra "messy" patterns without interesting structure.

Preferred Names

Many patterns can have more than one name. For example, you could describe a traditional 3 Cross pattern as "3B", "3B0", "3,-3C" or even "3,-3,3,-3C" etc.

To avoid duplication I use the following rules:

  • Always prefer group A over B, and B over C.

  • Don't write the radial padding if it's zero (so write 3B, not 3B0).

  • Except for the 0A Radial pattern, omit leading radial (0 offset) spokes.

  • For groups A and B, replace trailing radial spokes with radial padding.

  • Always start with a positive offset (any pattern can be "reversed" by changing the sign of all offsets - this is equivalent to lacing the pattern anti-clockwise instead of clockwise).

  • The above still does not exclude all duplications. So I also check for rotations and reflections of patterns and discard anything that can be expressed as an "earlier" name1.

Validity

Not every pattern described by a name can be built in practice. When generating the catalogue I discard:

  • Patterns with multiple spokes at a single spoke hole (or, equivalently, patterns where not all spoke holes are filled).

  • Patterns with "unbalanced rotation". For example, a radially spoked wheel is "the same" as one where all the spokes are offset by one hole - when you actually build the wheel with offset spokes (ignoring problems with spoke length) the spokes would tighten until they were radial.

    So patterns which have spokes offset in one direction must also have at least one spoke offset in the opposite direction. This excludes the most obvious problems but still allows patterns where rotational forces in the two directions are carried by different numbers of spokes (because these patterns are not symmetric they are all group C).

Rim Compatability

A pattern of length N can be used in any wheel with a multiple2 of 2N spoke holes, providing the crosses are possible without spokes overlapping heads. So a pattern of length 3 (like Crow's Foot) can be used with 36 hole rims, and a pattern of length 2 (like 3 Cross) can be used with pretty much any rim as long as the hub can accommodate the spoke angles.

The illustrations show 20, 32 and 36 hole rims, depending on the length of the particular pattern.

Safety And Practicality

The patterns shown here are generated by a computer program that considers every possible combination without considering how safe or practical the design may be.

Safe, practical spoke designs distribute forces (from tension, acceleration, braking and collisions) evenly around the rim. The appropriate choice of pattern for a wheel will depend on many different factors and should be made by an expert wheel-builder.

Completeness

This catalogue is restricted to:

  • A single wheel side. The illustrations show spokes at both sides of the wheel, but I do not consider different relative offsets of the two sides, or even using a different pattern on each side.

  • Straight spokes. I have not included "snowflake" patterns and other, similar designs where spokes are wrapped around each other.

  • Completely spoked wheels. I have not considered gaps / missing spokes.

  • Patterns where, going round the rim, spokes alternate from one side of the hub to the other (many rims are drilled to reflect this practice). See spoke offsets.

  • Valid patterns.

  • Spoke offsets of 3 (or less).

  • Repeated patterns of length 6 (or less).

Apart from these limitations, the catalogue should be complete as it is generated by a computer program that searches for all possibilities. If you find a pattern that is missing please contact me as it may mean I have a bug in my program!

Footnotes

1 - More exactly, I check against a lexical sorting based on numerical values, but where negative values come later. More exactly still, please see the code.

2 - I think this can be shown using modular arithmetic.

Running The Code

The code requires the Cairo graphics library and my liblu. It's an autotools project, written in C99 (I hope) and developed on Linux. So if you're lucky you can do something like:

git clone ...
cd ...
autoreconf -fi
./configure
make

There are two programs - search and plot. Both give (minimal) help if run with -h as a single argument.

As noted in the code, a more efficient way of removing duplicates (maybe just a list of known patterns) may be all that is needed to exhaustively search for patterns up to the size of the wheel (ie completely aperiodic). However, given how ugly and pointless the group C results are already, I've lost the motivation...

History

  • 2016-09-16 - First complete version.

  • 2016-09-17

    • Rewrite search - changed order and so some names, but not total number of results.

    • Replace trailing 0 with padding for group C - changed order and so some names, but not total number of results.

    • Halved number of group C patterns! - was not accounting for reversed pattern plus negation.

    • Rewrite offset/pattern interpretation so ordering back to lexical.

  • 2016-09-18

    • Remove padding for group C.

    • Align spokes "behind" so that drawings are more realistic.

  • 2016-09-20 - Change alignment to padding.

  • 2016-09-21 - Make wheel geometry in plots more lifelike (smaller hubs).

You can’t perform that action at this time.