summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon C. Irizarry <brandon.irizarry@gmail.com>2026-03-05 21:14:47 -0500
committerBrandon C. Irizarry <brandon.irizarry@gmail.com>2026-03-05 21:15:13 -0500
commit1426e9064a07ec2b779d71bf5f097bd9a655be72 (patch)
treef96c40f272571943129b1a40949db1955b31ab21
parenta613d1ba9f2897cf98de424d27d1a1355558b337 (diff)
refactor: move logic into a helper
-rw-r--r--main.go26
1 files 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
+}