C 语言绘制指针式时钟

使用C语言绘图模拟指针式时钟的运转,实现效果如下(gif):

 程序的核心部分在于指针末端位置的定位:
\small x = x0 + r* sin(rad); y = y0 - r* cos(rad);

 其中 x、y为指针的末端横纵坐标值,x0、y0为指针的首端横纵坐标值,r 为指针的长度,rad 为指针转过的弧度。

核心代码:

void Draw(int hour, int minute, int second)
{
    double a_hour, a_min, a_sec;      // 时、分、秒针的弧度值
    int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的末端位置
    // 计算时、分、秒针的弧度值
    a_sec = second * 2 * PI / 60;
    a_min = minute * 2 * PI / 60 + a_sec / 60;
    a_hour= hour * 2 * PI / 12 + a_min / 12;
    // 计算时、分、秒针的末端位置
    x_sec = 320 + (int)(120 * sin(a_sec));
    y_sec = 240 - (int)(120 * cos(a_sec));
    x_min = 320 + (int)(100 * sin(a_min));
    y_min = 240 - (int)(100 * cos(a_min));
    x_hour= 320 + (int)(70 * sin(a_hour));
    y_hour= 240 - (int)(70 * cos(a_hour));
    // 画时针
    setlinestyle(PS_SOLID, 10);
    setcolor(WHITE);
    line(320, 240, x_hour, y_hour);
    // 画分针
    setlinestyle(PS_SOLID, 6);
    setcolor(LIGHTGRAY);
    line(320, 240, x_min, y_min);
    // 画秒针
    setlinestyle(PS_SOLID, 2);
    setcolor(RED);
    line(320, 240, x_sec, y_sec);

}

 

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值