A generative art tool to compute Doyle spirals and export patterns as SVGs for fabrication with a fiber laser. The software animates geometric textures on a rotating disk, then translates the animations into physical pieces through engraving angled line patterns. The surface reflection sequences can be changed based on the angle of the engraved line pattern, similar to a zoetrope.
Read the full project write-up
- 3D visualization: Interactive Three.js view to inspect the animation path before etching
- Parameter controls: Tweak spiral parameters (p, q, arc modes, gaps, fill spacing, offsets, outlines) with immediate SVG preview
- High-resolution SVG export: Generate production-ready files for laser engraving
- Animated preview: See how the pattern will appear when the disk rotates
Open javascript/index.html directly in a modern browser or serve the javascript/ folder with any static file server. No bundling is required; all dependencies are pulled from CDNs.
- Bounding box: The spiral is scaled so the outermost petal tips align with the viewport boundary, using outer circle centers to define the bounding diameter
- SVG export: Exported SVGs contain fully expanded elements for maximum compatibility with laser software
- Tested both steel etching and wood lasering; steel is more promising for crisp contrast and durability
- Ongoing tuning of fabrication settings to make animated motion clearly visible in etched results
- Planned animation UI driven by cellular automata rules to vary parameters over time
javascript/— Standalone Three.js UI for designing, tuning, and previewing the reflective spiral animationtemplates/— Flask-rendered HTML that parallels the static JavaScript experiencepython/andsrc/— Supporting Python utilities for spiral math and optional server renderingapp.py— Minimal Flask app for API-driven workflows
Thanks to Arram Sabeti for coming up with the idea originally. I encountered his art on Twitter.