summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-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
+}