Exercise 1-6
authorwatkinsr <ryanwatkins54@gmail.com>
Sun, 31 May 2020 19:26:22 +0000 (20:26 +0100)
committerwatkinsr <ryanwatkins54@gmail.com>
Sun, 31 May 2020 19:26:22 +0000 (20:26 +0100)
lissajous/lissajous.go

index 97ed49e1cd68e6c26d1f565a6ae31f2333bf74e2..8e3e5c9f2799dbe84e5cbe33fd213b01b1c2ca9f 100644 (file)
@@ -1,6 +1,7 @@
 package main
 
 import (
+  // "fmt"
   "image"
   "image/color"
   "image/gif"
@@ -8,18 +9,23 @@ import (
   "math"
   "math/rand"
   "os"
+  "time"
 )
 
-var palette = []color.Color{color.RGBA{0x00,0x16,0x00,0xff}, color.Black}
+var palette = []color.Color{color.RGBA{0x00,0x16,0x00,0xff}, color.Black, color.White}
 
 const (
-  whiteIndex = 0
+  whiteIndex = 2
   blackIndex = 1
+  greenIndex = 0
 )
 func main() {
-  lissajous(os.Stdout)
+  rand.Seed(time.Now().UnixNano())
+  paletteIndex := uint8 (rand.Intn(2))
+  // fmt.Println("paletteIndex: ", paletteIndex)
+  lissajous(os.Stdout, paletteIndex)
 }
-func lissajous(out io.Writer) {
+func lissajous(out io.Writer, paletteIndex uint8) {
   const (
     cycles = 5
     res = 0.001
@@ -34,10 +40,9 @@ func lissajous(out io.Writer) {
     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)
+      x := math.Sin(t)
+      y := math.Sin(t*freq + phase)
+      img.SetColorIndex(size+int(x*size+0.5), size+int(y*size+0.5), paletteIndex)
     }
     phase += 1
     anim.Delay = append(anim.Delay, delay)
@@ -45,3 +50,8 @@ func lissajous(out io.Writer) {
   }
   gif.EncodeAll(out, &anim)
 }
+
+/* Exercise 1.6: Modify the Lissajous program to produce images in multiple colors by adding
+   more values to palette and then displaying them by changing the third argument of SetColorindex 
+   in some interesting way
+*/