diff options
Diffstat (limited to 'main.go')
| -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 +} |
