• GO制作利萨如图形


    GO制作利萨如图形

    package main
    
    import (
    	"image"
    	"image/color"
    	"image/gif"
    	"io"
    	"log"
    	"math"
    	"math/rand"
    	"net/http"
    	"os"
    	"time"
    )
    
    var palette = []color.Color{color.White, color.Black}
    
    const (
    	whiteIndex = 0
    	blackIndex = 1
    )
    
    func main() {
    	rand.Seed(time.Now().UTC().UnixNano())
    	if len(os.Args) > 1 && os.Args[1] == "web" {
    		handler := func(w http.ResponseWriter, r *http.Request) {
    			lissajous(w)
    		}
    		http.HandleFunc("/", handler)
    		log.Fatal(http.ListenAndServe("localhost:8000", nil))
    		return
    	}
    	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)
    }
    
  • 相关阅读:
    [Linux]-配置多台机器的SSH相互信任
    [Linux]-常用代码块
    [Linux]-Shell编程与规范
    [Sqoop]-任务
    [Sqoop]-导入导出
    [Sqoop]-认识&部署
    [Hive]-函数篇
    Tomcat catalina.out日志使用log4j按天分割
    技术站点
    Linux监控命令
  • 原文地址:https://www.cnblogs.com/yanyanqaq/p/12850128.html
Copyright © 2020-2023  润新知