很多人都说编程是枯燥的,但是我们可以做一些有趣的事情使它变得有趣。下面就让我们来用 Go 画一个正弦函数的图像。

首先先利用 image 包的 NewGray()函数创建一个图片对象。

func main() {
    const size = 300
    pic := image.NewGray(image.Rect(0,0,size,size))

    for x := 0; x<size; x++{
        for y := 0;y < size; y++{
            pic.SetGray(x,y,color.Gray{255})
        }
    }

image.Rect() 描述方形的两个定点(x1,y1),(x2,y2)。image.Rect(0,0,size,size) 表示的是一个长 300,宽 300的灰度图片。用一个两层 for 循环,遍历图片中的所有像素,并填充为白色。

for x := 0; x < size; x++{
        s := float64(x) * 2 * math.Pi /size
        y := size/2 -math.Sin(s)*size/2

        pic.SetGray(x,int(y),color.Gray{0})
    }

现在图片创建好了,我们可以开始画图了。函数都有定义域,所以画图的时候我们也要设定好,我们假定图像是从 0 到 2π,于是就可以声明一个变量 s ,因为 x 是属于 0 到 size 的,所以 x 除以 size 就属于 0 到 1 ,再乘以2*π,范围就是 0 到 2π 了。

file, err := os.Create("sin.png")

if err != nil{
    log.Fatal(err)
}

png.Encode(file,pic)

file.Close()

最后输出文件


image