diff options
| author | Brandon C. Irizarry <brandon.irizarry@gmail.com> | 2026-03-05 21:14:47 -0500 |
|---|---|---|
| committer | Brandon C. Irizarry <brandon.irizarry@gmail.com> | 2026-03-05 21:15:13 -0500 |
| commit | 1426e9064a07ec2b779d71bf5f097bd9a655be72 (patch) | |
| tree | f96c40f272571943129b1a40949db1955b31ab21 | |
| parent | a613d1ba9f2897cf98de424d27d1a1355558b337 (diff) | |
refactor: move logic into a helper
| -rw-r--r-- | main.go | 26 |
1 files changed, 15 insertions, 11 deletions
@@ -37,22 +37,26 @@ func lissajous(out io.Writer) { // run of the program. freq := rand.Float64() * 3.0 anim := gif.GIF{LoopCount: nframes} - phase := 0.0 - for range nframes { - rect := image.Rect(0, 0, 2*size+1, 2*size+1) - img := image.NewPaletted(rect, palette) + for i := range nframes { + img := newImage(size, cycles, float64(i)/10, res, freq) - for t := 0.0; t < cycles*2*math.Pi; t += res { - x := math.Sin(t) - y := math.Sin(t*freq + phase) - img.SetColorIndex(size+int(x*size+0.5), size+int(y*size+0.5), blackIndex) - } - - phase += 0.1 anim.Delay = append(anim.Delay, delay) anim.Image = append(anim.Image, img) } gif.EncodeAll(out, &anim) } + +func newImage(size, cycles int, phase, res, freq float64) *image.Paletted { + rect := image.Rect(0, 0, 2*size+1, 2*size+1) + img := image.NewPaletted(rect, palette) + + for t := 0.0; t < float64(cycles)*2*math.Pi; t += res { + x := math.Sin(t) + y := math.Sin(t*freq + phase) + img.SetColorIndex(size+int(x*float64(size)+0.5), size+int(y*float64(size)+0.5), blackIndex) + } + + return img +} |
