commit bcfdeaeceb94ce4cfc191c6a9df27ceb51819ef0
Author: zerous Naveen Narayanan <zerous@nocebo.space>
Date: Fri, 1 Mar 2019 00:52:22 +0100
Initial commit
Diffstat:
1 file changed, 52 insertions(+), 0 deletions(-)
diff --git a/exercise-1-5.go b/exercise-1-5.go
@@ -0,0 +1,52 @@
+package main
+
+import (
+ "image"
+ "image/color"
+ "image/gif"
+ "io"
+ "math"
+ "math/rand"
+ "os"
+)
+
+var palette = []color.Color{color.RGBA{0x25, 0x5C, 0x1c, 0xff},
+ color.RGBA{0x00, 0x00, 0x00, 0xff},
+ color.RGBA{0x3B, 0x3B, 0x71, 0xff}}
+
+const (
+ whiteIndex = 0
+ blackIndex = 1
+)
+
+func main() {
+ lissajous(os.Stdout)
+}
+
+func lissajous(out io.Writer) {
+ const (
+ cycles = 5
+ res = 0.001
+ size = 100
+ nframes = 64
+ delay = 8
+ )
+ freq := rand.Float64() * 3.0
+ anim := gif.GIF{LoopCount: nframes}
+ phase := 0.0
+ for i := 0; i < nframes; i++ {
+ rect := image.Rect(0, 0, 2*size+1, 2*size+1)
+ img := image.NewPaletted(rect, palette)
+ 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)
+}