From 1426e9064a07ec2b779d71bf5f097bd9a655be72 Mon Sep 17 00:00:00 2001 From: "Brandon C. Irizarry" Date: Thu, 5 Mar 2026 21:14:47 -0500 Subject: refactor: move logic into a helper --- main.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/main.go b/main.go index 7e652eb..7779bf6 100644 --- a/main.go +++ b/main.go @@ -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 +} -- cgit v1.2.3