zoukankan      html  css  js  c++  java
  • 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)
    }
    
  • 相关阅读:
    Google Chrome 自定义协议(PROTOCOL)问题的处理
    C# 6.0/7.0 的新特性
    MySQL 5.7.18 压缩包版配置记录
    nginx.conf文件内容详解
    博客添加动态动漫妹子
    TypeScript 3.8beta版
    微信浏览器H5开发常见的坑
    Babel7知识梳理
    雅虎前端优化35条规则
    webpack
  • 原文地址:https://www.cnblogs.com/yanyanqaq/p/12850128.html
Copyright © 2011-2022 走看看