From 82dbad9313b67f29b3279392f2737abd7bee47dc Mon Sep 17 00:00:00 2001 From: "Brandon C. Irizarry" Date: Sat, 7 Mar 2026 16:19:49 -0500 Subject: feat: try renaming the file --- lissajous.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ main.go | 61 ------------------------------------------------------------ 2 files changed, 61 insertions(+), 61 deletions(-) create mode 100644 lissajous.go delete mode 100644 main.go diff --git a/lissajous.go b/lissajous.go new file mode 100644 index 0000000..1d1ad70 --- /dev/null +++ b/lissajous.go @@ -0,0 +1,61 @@ +package lissajous + +import ( + "image" + "image/color" + "image/gif" + "io" + "math" + "math/rand/v2" +) + +var palette = []color.Color{ + color.Black, + color.RGBA{0x00, 0xff, 0x00, 0xff}, + color.RGBA{0xff, 0x00, 0x00, 0xff}, + color.RGBA{0x00, 0x00, 0xff, 0xff}, +} + +const ( + backgroundIndex = iota + foregroundIndex +) + +func Lissajous(out io.Writer) { + const ( + cycles = 5 + res = 0.001 + size = 100 + nframes = 64 + delay = 8 + ) + + // Note that this generates the exact same random number per + // run of the program. + freq := rand.Float64() * 3.0 + anim := gif.GIF{LoopCount: nframes} + + for i := range nframes { + img := newImage(size, cycles, float64(i)/10, res, freq) + + 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) + + randIndex := 1 + uint8(rand.IntN(len(palette)-1)) + + 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), randIndex) + } + + return img +} diff --git a/main.go b/main.go deleted file mode 100644 index 1d1ad70..0000000 --- a/main.go +++ /dev/null @@ -1,61 +0,0 @@ -package lissajous - -import ( - "image" - "image/color" - "image/gif" - "io" - "math" - "math/rand/v2" -) - -var palette = []color.Color{ - color.Black, - color.RGBA{0x00, 0xff, 0x00, 0xff}, - color.RGBA{0xff, 0x00, 0x00, 0xff}, - color.RGBA{0x00, 0x00, 0xff, 0xff}, -} - -const ( - backgroundIndex = iota - foregroundIndex -) - -func Lissajous(out io.Writer) { - const ( - cycles = 5 - res = 0.001 - size = 100 - nframes = 64 - delay = 8 - ) - - // Note that this generates the exact same random number per - // run of the program. - freq := rand.Float64() * 3.0 - anim := gif.GIF{LoopCount: nframes} - - for i := range nframes { - img := newImage(size, cycles, float64(i)/10, res, freq) - - 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) - - randIndex := 1 + uint8(rand.IntN(len(palette)-1)) - - 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), randIndex) - } - - return img -} -- cgit v1.2.3