Implementação baseada na Web do algoritmo Squiggledraw, originalmente implementado por Gregg Wygonik.
A versão on-line deste projeto tira uma foto da sua webcam e a transforma em um arquivo SVG com enxertamento de plotter e a laser.
Aqui está um exemplo de imagem de saída gerada com esta ferramenta:
E aqui está um vídeo minha plotadora que usa esta ferramenta:
Clone ou faça o download deste repositório e execute este comando para obter todas as dependências instaladas localmente:
npm install
Em seguida, execute este comando para observar alterações e iniciar a página HTML no navegador:
npm run dev
O algoritmo processa a imagem da seguinte maneira:
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
O arquivo SVG de saída gerado com esta ferramenta pode ser carregado no conversor SVG -> GCODE (ou similar) para ser plotado em um plotador de caneta ou gravado em um cortador de laser.
Se você deseja implementar qualquer um desses ou contribuir - crie um problema e sinta -se à vontade para enviar um PR, eu apreciaria isso.
MIT Licença