Implementación basada en la web del algoritmo Squiggledraw, implementada originalmente por Gregg Wygonik.
La versión en línea de este proyecto toma una foto de su cámara web y la convierte en un archivo SVG que se puede hacer que se puede hacer un plotter.
Aquí hay un ejemplo de imagen de salida generada con esta herramienta:
Y aquí hay un video mi placentero que usa esta herramienta:
Clon o descargue este repositorio, luego ejecute este comando para instalar todas las dependencias localmente:
npm install
Luego, ejecute este comando para observar los cambios y iniciar la página HTML en el navegador:
npm run dev
El algoritmo procesa la imagen de la siguiente manera:
Retrieve photo as an array of pixels IMAGE
Set desired number of horizontal lines as LINE_COUNT
Set desired number of vertical spacing as SPACING
Set desired line amplitude as AMPLITUDE
Set desired line rotation frequency as FREQUENCY
For y :=0 to image height step image height / LINE_COUNT do
Set startx := 0
Set starty := y
Create a set of coordinates as [startx, starty]
For x := 1 to image width step SPACING do
Get brightness br of the current pixel as average of r,g,b values
Set r := (255 - br) / LINE_COUNT * AMPLITUDE
Set a := (255 - br) / FREQUENCY
Create a set of coordinates as [x, y + Math.sin(a) * r]
Pass the resulting array of coordinates to rendering application
El archivo SVG de salida generado con esta herramienta se puede cargar en convertidor SVG -> GcODE (o similar) para ser trazado en un plotter de lápiz o grabado en un cortador láser.
Si desea implementar alguno de estos o contribuir, cree un problema y no dude en enviar un PR, lo agradecería.
Licencia de MIT