Satin Studio Manual

Glossary and notation

20.1 Notation quick reference

SymbolMeaning
\(D\)high-level design and intent
\(B\)material and process setup
\(M\)target machine profile
\(P\)stitch or command program
\(\mathcal{E}\)physical execution or forward-fabrication model
\(\Omega\)a planar sew region
\(\partial\Omega\)boundary of a region
\(\Gamma\)a continuous thread path or set of paths
\(p_i\)the \(i\)th discrete needle position
\(d(x)\)local preferred stitch direction
\(h(x)\)local row spacing
\(\varphi(x)\)scalar potential used to generate level-curve paths
\(u(x)\)material displacement field
\(G=(V,E)\)a graph with vertices \(V\) and edges \(E\)
\(\chi\)Euler characteristic
\(b_0,b_1\)numbers of connected components and holes in a planar region
\(L(P)\)a loss or cost assigned to program \(P\)
\(\rho(x)\)local penetration or thread-density estimate

20.2 Terms

TermMeaning in a stitch compiler
AnisotropyDirection-dependent behavior. Fabric may stretch differently along warp, weft, and bias; thread reflectance and stitched stiffness are directional too.
AppliquéA staged process that places and secures another material, often with placement stitches, tack-down, an operator stop, cutting, and a finishing border.
Attachment stateWhether the top thread is considered secured to the work at the current point. It affects jumps, trims, tack stitches, and valid transitions.
Bean stitchA repeated running-stitch pattern that traverses short segments multiple times to form a heavier line.
Betti numbersTopological counts. For planar embroidery regions, \(b_0\) counts connected components and \(b_1\) counts holes.
Boustrophedon routeAn alternating back-and-forth traversal, like mowing a field. Common for neighboring fill rows.
Boundary compensationA geometric adjustment intended to counter expected pull, push, or registration error at a region boundary.
Color blockA consecutive group of commands sewn without a color or needle change.
Command IRA machine-neutral representation of stitch, jump, trim, stop, color, needle, and end commands.
CompensationDeliberate modification of geometry or stitch placement to offset expected physical deformation.
Connected componentA maximal region or graph substructure in which every part is reachable from every other part.
Contour fillA fill made from paths that follow repeated offsets or distance contours of a boundary.
CoverageHow completely thread visually or structurally occupies a target region. Coverage depends on thread width, loft, substrate, spacing, direction, and layering.
Cross fieldA four-way direction field whose orientations are equivalent under \(90^\circ\) rotation. Useful in meshing and some lattice constructions; most ordinary stitch direction is a two-way line field.
DensityInformally, how much thread is placed in an area. A compiler should distinguish row spacing, along-row sampling, layer count, and physical thread coverage.
Direction fieldA direction assigned continuously or discretely over a region. It guides local stitch orientation.
Directed acyclic graph (DAG)A graph with directed edges and no directed cycles. Used to represent sew-before and cover-before constraints.
Euler characteristicA topological invariant. For a planar region, \(\chi=b_0-b_1\).
Euler trailA graph walk that uses every required edge exactly once. It exists in a connected undirected graph when zero or two vertices have odd degree.
Fill / tatami stitchA family of closely spaced rows used to cover an area. “Tatami” commonly describes a regular back-and-forth fill.
Hoop / work envelopeThe physical fixture and the region the machine can safely reach for a given setup.
Intermediate representation (IR)A data model between source artwork and target bytes. Different IRs preserve geometry, semantics, paths, stitches, or machine commands.
JumpA non-sewing movement between positions. Whether the thread remains attached, is trimmed, or leaves a visible float depends on surrounding commands and machine behavior.
LayerA semantic and temporal unit whose order affects coverage, structure, registration, and appearance.
Line fieldAn orientation field in which \(d\) and \(-d\) are equivalent. Stitch angle is normally a line field because \(30^\circ\) and \(210^\circ\) describe the same local axis.
Lock stitch / tack stitchSmall securing sequences at an end or beginning. Exact terminology varies; the compiler should model their purpose and provenance explicitly.
Machine profileCapabilities, limits, coordinate rules, command mappings, and process assumptions for a target machine and format.
Medial axisThe locus of centers of maximal inscribed disks. It captures the branching “skeleton” of a shape and is useful for width estimation and path planning.
Motif fillA repeated decorative pattern clipped or deformed into a region.
OffsetA curve or region displaced by a specified distance. Offsets are used for inset, expansion, contour fill, overlap, and compensation.
Pareto-optimalA solution for which no objective can improve without worsening at least one other objective.
PathAn ordered continuous curve or discrete polyline. A path does not by itself specify whether movements are stitches, jumps, or hidden travel.
PenetrationA needle-down location in the fabric. Repeated or tightly clustered penetrations can damage or stiffen the substrate.
Pull compensationExtension intended to counter the tendency of stitching to draw a region inward, commonly along stitch direction.
Push compensationAdjustment intended to counter outward displacement or bulging caused by thread placement and material response.
QuantizationMapping continuous coordinates or parameters to a finite target resolution.
RegionA bounded planar domain with semantic identity, boundaries, components, holes, and intended stitch treatment.
RoutingChoosing traversal order, direction, entry/exit states, travel paths, jumps, trims, and sometimes color-block order.
Running stitchA sequence of stitches sampled along a path, usually used for outlines, details, underlay, or travel.
Satin columnA narrow region sewn with alternating stitches between two rails, often controlled by rungs or paired cross-sections.
Scalar fieldA numeric value at each point, such as distance, spacing, density, confidence, or a potential whose level sets form stitch rows.
Signed distance fieldA scalar field giving distance to a boundary with one sign inside and the other outside. Useful for offsets, masks, and geometric queries.
SingularityA point or small region where a direction field is undefined or cannot remain smooth. It may be required by topology rather than caused by numerical failure.
StabilizerSupporting material used to control deformation and provide a substrate for stitching. It is part of the material stack.
Stitch lengthDistance between consecutive needle penetrations along a sewn path. It is distinct from row spacing.
Stitch primitiveA semantic generator such as running stitch, satin, fill, motif, underlay, or appliqué step.
Stitch programThe ordered commands executed by the embroidery machine.
StreamlineA curve everywhere tangent to a vector or direction field, obtained by integrating the field.
Thread pathThe geometric route taken by top or bobbin thread. It may include sewn segments, floats, tie-ins, and structural underpaths.
Topological eventA split, merge, birth, or death of path components as an offset, contour, or threshold changes.
Travel stitchA sewn movement used to get from one working location to another, ideally hidden under existing or future stitching.
TrimA command or machine action that cuts thread, changing attachment and startup requirements.
UnderlayOne or more preliminary stitch layers used to stabilize, support, shape, or lift later stitching.
Winding numberA measure of how a closed path wraps around a point, used to determine inside and outside robustly.

Algorithmic reference and implementation checklist

21.1 Representative complexity

Complexity notation is useful for architecture, but constants and output size matter enormously in geometry. A robust library call can beat an elegant custom algorithm by a wide margin.

Let \(n\) be input curve or segment count, \(k\) the number of intersections, \(|V|\) and \(|E|\) graph size, \(m\) field degrees of freedom, and \(N\) generated stitches.

OperationRepresentative complexityNotes
Curve flattening or resampling\(O(n+N)\)Output-sensitive; adaptive error tests add work near curvature
Sweep-line segment intersections\(O((n+k)\log n)\)Arrangement construction also pays for output topology
Connected components\(O(|V|+|E|)\)DFS or union–find variants
Topological sort of layer DAG\(O(|V|+|E|)\)A remaining edge after the sort indicates a cycle
Euler trail construction\(O(|E|)\)After graph preparation, Hierholzer’s algorithm is linear
Dijkstra shortest paths\(O(|E|\log|V|)\)With a binary heap; alternatives vary by edge weights
Undirected Chinese PostmanPolynomialDominated by shortest paths and minimum-weight matching of odd vertices
TSP, GTSP, many sequencing variantsNP-hardUse heuristics, branch-and-bound, or mixed-integer models at appropriate scales
Sparse field smoothingRoughly \(O(m)\) per iterative stepDirect factorizations can be faster for repeated right-hand sides but use more memory
Streamline integration\(O(N)\) samples plus field lookupSeeding, collision, and spacing checks can dominate
Nearest-neighbor checksExpected \(O(\log N)\) per querySpatial hashing may be simpler and faster for uniform stitch scales
Raster coverage or heatmap\(O(R+N)\) with indexing\(R\) is raster size; naïve segment–pixel work can be much larger
Mixed-integer global solveExponential worst caseOften effective on reduced candidate sets with good bounds and time limits

The most important scaling decision is often not the solver. It is the representation. Routing 100 semantic objects with a few entry/exit candidates is far easier than routing 50,000 individual stitches as unrelated points.

21.2 A minimum viable stitch compiler

A minimum viable compiler should be able to:

This already qualifies as a compiler. It need not solve inverse textile mechanics on day one.

21.3 A production-quality compiler

A more mature implementation adds:

Geometry and topology

Stitch planning

Scheduling and optimization

Mechanics and calibration

Backends

Product infrastructure

21.4 A useful test corpus

Include deliberately hostile cases, not just attractive demo art:

For each case, store expected diagnostics as well as expected output. A compiler that rejects a bad design with an excellent explanation is behaving correctly.

21.5 A maturity ladder

It is helpful to think in layers rather than in a binary “auto-digitizing works” claim.

LevelCapability
1. EncodingWrites syntactically valid machine files
2. GeometryGenerates usable stitches from clean vector shapes
3. SemanticsUnderstands primitives, layers, underlay, and entry/exit intent
4. OptimizationRoutes and schedules globally under constraints
5. Material awarenessPredicts risk and compensates using measured profiles
6. Closed loopLearns from registered stitch-outs and production outcomes
7. Inverse designJointly optimizes appearance, mechanics, topology, and machine execution

Each level is useful. The architecture should allow growth without forcing high-level design intent through a low-level point-list interface.

References

References and further reading

The following sources are a practical starting point rather than an exhaustive bibliography. The embroidery-specific literature is relatively small, so adjacent work in computational fabrication, direction-field design, cloth mechanics, and graph routing is essential.

For the central embroidery-path problem, begin with Liu et al. on direction-aware streamlines and Tian et al. on spiral paths. For the mathematical machinery behind fields, continue with direction-field and vector-field processing references. For the material side, the cloth-modeling and computational-embroidery papers show why geometry alone is not enough. For real implementation semantics, inspect the official Ink/Stitch documentation and pyembroidery source.

1

Margaret Ellen Seehorn, Gene S.-H. Kim, Aashaka Desai, Megan Hofmann, and Jennifer Mankoff, “Enhancing Access to High Quality Tangible Information through Machine Embroidered Tactile Graphics,” Proceedings of the ACM Symposium on Computational Fabrication (SCF ’22), Article 23, 2022. https://doi.org/10.1145/3559400.3565586

2

Gabriel Cirio, Jorge López-Moreno, David Miraut, and Miguel A. Otaduy, “Yarn-Level Simulation of Woven Cloth,” ACM Transactions on Graphics 33, no. 6, Article 207, 2014. https://doi.org/10.1145/2661229.2661279

3

Georg Sperl, Rosa M. Sánchez-Banderas, Manwen Li, Chris Wojtan, and Miguel A. Otaduy, “Estimation of Yarn-Level Simulation Models for Production Fabrics,” ACM Transactions on Graphics 41, no. 4, Article 65, 2022. https://doi.org/10.1145/3528223.3530167

4

Qiming Tian, Yupin Luo, and Dongcheng Hu, “Spiral-Fashion Embroidery Path Generation in Embroidery CAD Systems,” Computer-Aided Design 38, no. 2, pp. 125–133, 2006. https://doi.org/10.1016/j.cad.2005.08.004

5

Zhenyuan Liu, Michal Piovarči, Christian Hafner, Raphaël Charrondière, and Bernd Bickel, “Directionality-Aware Design of Embroidery Patterns,” Computer Graphics Forum 42, no. 2, pp. 397–409, 2023. https://doi.org/10.1111/cgf.14770

6

Xiangjia Chen, Guoxin Fang, Wei-Hsin Liao, and Charlie C. L. Wang, “Field-Based Toolpath Generation for 3D Printing Continuous Fibre Reinforced Thermoplastic Composites,” Additive Manufacturing 49, Article 102470, 2022. https://doi.org/10.1016/j.addma.2021.102470

7

Kate S. Glazko, Alexandra A. Portnova-Fahreeva, Arun Mankoff-Dey, Afroditi Psarra, and Jennifer Mankoff, “Shaping Lace: Machine Embroidered Metamaterials,” Proceedings of the 9th ACM Symposium on Computational Fabrication (SCF ’24), 2024. https://doi.org/10.1145/3639473.3665792

8

Ink/Stitch, “Tatami Stitch (Fill Stitch),” official documentation. https://inkstitch.org/docs/stitches/fill-stitch/

9

Fernando de Goes, Mathieu Desbrun, and Yiying Tong, “Vector Field Processing on Triangle Meshes,” ACM SIGGRAPH 2016 Course Notes, 2016; and Felix Knöppel, Keenan Crane, Ulrich Pinkall, and Peter Schröder, “Globally Optimal Direction Fields,” ACM Transactions on Graphics 32, no. 4, Article 59, 2013. Course notes; direction-field paper

10

Jack Edmonds and Ellis L. Johnson, “Matching, Euler Tours and the Chinese Postman,” Mathematical Programming 5, pp. 88–124, 1973. https://doi.org/10.1007/BF01580113

11

Ink/Stitch, “Tools: Stroke—Redwork,” official documentation. The tool’s routing goal is to traverse every path exactly twice. https://inkstitch.org/docs/stroke-tools/

12

Ink/Stitch, “Commands,” official documentation. https://inkstitch.org/docs/commands/

13

Huamin Wang, James F. O’Brien, and Ravi Ramamoorthi, “Data-Driven Elastic Models for Cloth: Modeling and Measurement,” ACM Transactions on Graphics 30, no. 4, Article 71, 2011. https://doi.org/10.1145/2010324.1964966

14

Ink/Stitch, “Satin Column,” official documentation. https://inkstitch.org/docs/stitches/satin-column/

15

Abhinit Sati, Ioannis Karamouzas, and Victor B. Zordan, “DIGISEW: Anisotropic Stitching for Variable Stretch in Textiles,” Proceedings of the ACM Symposium on Computational Fabrication (SCF ’21), Article 3, 2021. https://doi.org/10.1145/3485114.3485121

16

Yu Jiang, Narjes Pourjafarian, Alice Haynes, and Jürgen Steimle, “Embrogami: Shape-Changing Textiles with Machine Embroidery,” Proceedings of the 37th Annual ACM Symposium on User Interface Software and Technology (UIST ’24), 2024. https://doi.org/10.1145/3654777.3676431

17

Ayesha Nabila, Hua Ma, and Junichi Yamaoka, “4D Embroidery: Implementing Parametric Structures in Textiles for Sculptural Embroidery,” UbiComp/ISWC ’22 Adjunct, pp. 88–90, 2022. https://doi.org/10.1145/3544793.3560358

18

Xinling Chen, Michael McCool, Asanobu Kitamoto, and Stephen Mann, “Embroidery Modeling and Rendering,” Proceedings of Graphics Interface 2012, pp. 131–139, 2012. https://doi.org/10.5555/2305276.2305299

19

EmbroidePy, “pyembroidery,” an open-source Python library for reading and writing embroidery formats. https://github.com/EmbroidePy/pyembroidery

20

Ink/Stitch, “Tack and Lock Stitches,” official documentation. https://inkstitch.org/docs/stitches/lock-stitches/