标题:做时钟时为什么这样算?解释一下吧
只看楼主
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
结帖率:94.74%
已结贴  问题点数:20 回复次数:13 
做时钟时为什么这样算?解释一下吧
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;
#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;
#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) /*定义……*/
搜索更多相关主题的帖子: 时钟 
2011-06-20 21:27
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
估计是要计算时钟时针分针秒针  的偏转角度

定义一些红  减少代码量

                                         
===========深入<----------------->浅出============
2011-06-20 21:57
a9580643
Rank: 2
来 自:江西九江
等 级:论坛游民
帖 子:60
专家分:59
注 册:2011-4-21
得分:0 
虽然不懂,境界还没到。。。。也冒个泡。

花有重开日,人无在少年。
2011-06-21 02:00
kelas
Rank: 6Rank: 6
等 级:侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
得分:1 
明显是时针分针的角度计算
具体应该分析一下代码
2011-06-21 09:04
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
得分:0 
#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300; //比如这个,是画哪根针啊?
x=a*cos(b*c*pi/180-pi/2)+300   这个运算怎么就能正确表示钟表转速啊???
2011-06-21 13:47
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
得分:0 
#include<graphics.h>
#include<math.h>
#include<dos.h>
#define PI 3.1415926
#define mid_x 320    /*定义钟表中心坐标*/
#define mid_y 240
 
int main()
{
    int graphdriver=0,graphmode;
    int end_x,end_y;
     struct time curtime;
     float th_hour,th_min,th_sec;
     initgraph(&graphdriver,&graphmode,"e:\\TC");
     setbkcolor(0);
     while(! kbhit())/*有键盘输入时退出*/
     {      
         /*画表盘*/
         setcolor(14);
          circle(mid_x,mid_y,150);
          circle(mid_x,mid_y,2);
         gettime(&curtime);   /*得到当前系统时间*/
            /*以下三行计算表针转动角度,以竖直向上为起点,顺时针为正*/
           th_sec=(float)curtime.ti_sec*0.1047197551;                 /*2π/60=0.1047197551*/
           th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;
           th_hour=(float)curtime.ti_hour*0.523598775+th_min/12.0;    /*2π/12=0.5235987755*/
           /*画时针*/
           end_x=mid_x+70*sin(th_hour);
          end_y=mid_y-70*cos(th_hour);
          setcolor(5);
          line(mid_x,mid_y,end_x,end_y);   
           /*画分针*/
           end_x=mid_x+110*sin(th_min);
          end_y=mid_y-110*cos(th_min);
         setcolor(5);
          line(mid_x,mid_y,end_x,end_y);  
           /*画秒针*/
           end_x=mid_x+140*sin(th_sec);
          end_y=mid_y-140*cos(th_sec);
          setcolor(5);
          line(mid_x,mid_y,end_x,end_y);
           sleep(1);      /*延时一秒后刷新*/
           cleardevice();
       }
     closegraph();
     return 0;
}
这个是全部……
2011-06-21 15:57
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
得分:0 
以下是引用多布斯的喵喵在2011-6-21 15:57:45的发言:

#include
#include
#include
#define PI 3.1415926
#define mid_x 320    /*定义钟表中心坐标*/
#define mid_y 240
 
int main()
{
    int graphdriver=0,graphmode;
    int end_x,end_y;
     struct time curtime;
     float th_hour,th_min,th_sec;
     initgraph(&graphdriver,&graphmode,"e:\\TC");
     setbkcolor(0);
     while(! kbhit())/*有键盘输入时退出*/
     {      
         /*画表盘*/
         setcolor(14);
          circle(mid_x,mid_y,150);
          circle(mid_x,mid_y,2);
         gettime(&curtime);   /*得到当前系统时间*/
            /*以下三行计算表针转动角度,以竖直向上为起点,顺时针为正*/
           th_sec=(float)curtime.ti_sec*0.1047197551;                 /*2π/60=0.1047197551*/
           th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;
           th_hour=(float)curtime.ti_hour*0.523598775+th_min/12.0;    /*2π/12=0.5235987755*/
           /*画时针*/
           end_x=mid_x+70*sin(th_hour);
          end_y=mid_y-70*cos(th_hour);
          setcolor(5);
          line(mid_x,mid_y,end_x,end_y);   
           /*画分针*/
           end_x=mid_x+110*sin(th_min);
          end_y=mid_y-110*cos(th_min);
         setcolor(5);
          line(mid_x,mid_y,end_x,end_y);  
           /*画秒针*/
           end_x=mid_x+140*sin(th_sec);
          end_y=mid_y-140*cos(th_sec);
          setcolor(5);
          line(mid_x,mid_y,end_x,end_y);
           sleep(1);      /*延时一秒后刷新*/
           cleardevice();
       }
     closegraph();
     return 0;
}
这个是全部……
啊……把另外一个钟表发出来了……
2011-06-21 16:04
多布斯的喵喵
Rank: 2
等 级:论坛游民
帖 子:133
专家分:24
注 册:2011-3-29
得分:0 
回复 4楼 kelas
怎么算的啊,能解释具体点吗
2011-06-21 16:08
kelas
Rank: 6Rank: 6
等 级:侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
得分:0 
你代码中又没用到定义的宏,计算角度的你自己不是已经注释的挺好的吗
2011-06-21 16:41
kelas
Rank: 6Rank: 6
等 级:侠之大者
帖 子:176
专家分:434
注 册:2010-5-28
得分:8 
根据你的代码应该是这样计算的吧

/*画时针*/
#define X(a,b) 300-(a)*sin(b);//x轴终点坐标
#define Y(a,b) 240-(a)*cos(b);//y轴终点坐标

line(mid_x,mid_y,X(70,th_hour),Y(70,th_hour));   
2011-06-21 16:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-343500-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.289356 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved