diff options
| author | Lex Neva <github.com@lexneva.name> | 2018-07-27 20:26:18 -0400 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2018-07-27 20:26:18 -0400 |
| commit | cdb8fdb1339476e36ad2e294283eec33d13b2d3d (patch) | |
| tree | 62a8296f7200484dd54ed301edc05f6a124f72bc /lib/stitches/running_stitch.py | |
| parent | d14880db5820ce2175bda7bbe761c21fd6c454d0 (diff) | |
add bean stitch option
Diffstat (limited to 'lib/stitches/running_stitch.py')
| -rw-r--r-- | lib/stitches/running_stitch.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/stitches/running_stitch.py b/lib/stitches/running_stitch.py index 96075e7a..5f8ed21e 100644 --- a/lib/stitches/running_stitch.py +++ b/lib/stitches/running_stitch.py @@ -1,3 +1,6 @@ +from copy import copy + + """ Utility functions to produce running stitches. """ @@ -64,3 +67,29 @@ def running_stitch(points, stitch_length): output.append(segment_start) return output + + +def bean_stitch(stitches, repeats): + """Generate bean stitch from a set of stitches. + + "Bean" stitch is made by backtracking each stitch to make it heaver. A + simple bean stitch would be two stitches forward, one stitch back, two + stitches forward, etc. This would result in each stitch being tripled. + + We'll say that the above counts as 1 repeat. Backtracking each stitch + repeatedly will result in a heavier bean stitch. There will always be + an odd number of threads piled up for each stitch. + """ + + if len(stitches) < 2: + return stitches + + new_stitches = [stitches[0]] + + for stitch in stitches: + new_stitches.append(stitch) + + for i in xrange(repeats): + new_stitches.extend(copy(new_stitches[-2:])) + + return new_stitches |
