分享
  1. 首页
  2. 文章

golang 实现clock

ronghantao · · 5611 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在网上看到某人实现了一个简单的clock,发现代码编译不过,略作修改:

 1 package main
 2 
 3 import (
 4 "bufio"
 5 "image"
 6 "image/color"
 7 "image/png"
 8 "math"
 9 "os"
10 "time"
11 )
12 
13 const clock_size = 200 
14 const radius = clock_size / 3 
15 
16 var colour color.RGBA
17 
18 func circle(clock *image.RGBA) {
19 for angle := float64(0); angle < 360; angle++ {
20 radian_angle := math.Pi * 2 * angle / 360 
21 x := radius*math.Sin(radian_angle) + clock_size/2
22 y := radius*math.Cos(radian_angle) + clock_size/2
23 clock.Set(int(x), int(y), colour)
24  } 
25 }
26 func hand(clock *image.RGBA, angle float64, length float64) {
27 radian_angle := math.Pi * 2 * angle
28 x_inc := math.Sin(radian_angle)
29 y_inc := -math.Cos(radian_angle)
30 for i := float64(0); i < length; i++ {
31 x := i*x_inc + clock_size/2
32 y := i*y_inc + clock_size/2
33 clock.Set(int(x), int(y), colour)
34  } 
35 }
36 func main() {
37 clock := image.NewRGBA(image.Rect(0,0,clock_size, clock_size))
38 colour.A = 255 
39  circle(clock)
40 colour.R, colour.G, colour.B = 255,0,0
41 time := time.Now()
42 hand(clock, (float64(time.Hour())+float64(time.Minute())/60)/12, radius*0.5) // hour hand
43 colour.R, colour.G, colour.B = 0,255,0
44 hand(clock, (float64(time.Minute())+float64(time.Second())/60)/60, radius*0.6) // minute hand
45 colour.R, colour.G, colour.B = 0,0,255
46 hand(clock, float64(time.Second())/60, radius*0.8) // Second hand
47 out := bufio.NewWriter(os.Stdout)
48 defer out.Flush()
49 png.Encode(out, clock)
50 }

执行时,将结果重定向到.png文件中就会生成png文件


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:ronghantao

查看原文:golang 实现clock

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
5611 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏