找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3721|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

有關(guān)指針式時鐘--求幫忙分析一下···

[復(fù)制鏈接]
回帖獎勵 70 黑幣 回復(fù)本帖可獲得 10 黑幣獎勵! 每人限 2 次(中獎概率 70%)
跳轉(zhuǎn)到指定樓層
樓主
ID:86791 發(fā)表于 2016-1-2 21:48 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
21:45:03
依然呆 2016/1/2 21:45:03

/**************************************************************************
指針式時鐘
說明:
入口:
                x0 = 表盤圓心X坐標(biāo)
                y0 = 表盤圓心Y坐標(biāo)
                r=表盤半徑
                ClkCor = 表盤顏色
                SecPotCor = 秒針顏色
                MinPotCor= 分鐘顏色
                HourPotCor= 時針顏色
                *Clocker = 當(dāng)前時間結(jié)構(gòu)體
返回:無
**************************************************************************/
void ClockDial(uchar x0,y0,r,ClkCor,SecPotCor,MinPotCor,HourPotCor,Clock *Clocker)                  
{                 
         //角度轉(zhuǎn)弧度公式         2*PI/360*角度
         #define  PI 3.1415926
         float i;
         static float idata RadSecondx,RadSecondy,RadMinutex,RadMinutey,RadHourx,RadHoury;
         for(i=0;i<=2*PI;i+=PI/6)                //畫表盤12等分:2*PI/12
          {
               PrintDot( x0+r*sin(i),y0+r*cos(i),0,ClkCor);
               PrintDot( x0+(r-1)*sin(i),y0+(r-1)*cos(i),0,ClkCor) ;
          }
         
         Linexy(x0,y0,x0+(r-3)*RadSecondx,y0-(r-3)*RadSecondy,0,Black) ;     //清除上一秒針軌跡
         RadSecondx=sin(PI/180*6*BCDtoHEX(Clocker->Second));                        //計(jì)算秒針當(dāng)前弧度正余弦
         RadSecondy=cos(PI/180*6*BCDtoHEX(Clocker->Second));
         Linexy(x0,y0,x0+(r-3)*RadSecondx,y0-(r-3)*RadSecondy,0,SecPotCor) ;//畫出當(dāng)前秒針

        Linexy(x0,y0,x0+(r-5)*RadMinutex,y0-(r-5)*RadMinutey,0,Black) ;         //清除上一分針軌跡
        RadMinutex=sin(PI/180*6*BCDtoHEX(Clocker->Minute));                        //計(jì)算分針當(dāng)前弧度正余弦
        RadMinutey=cos(PI/180*6*BCDtoHEX(Clocker->Minute));
         Linexy(x0,y0,x0+(r-5)*RadMinutex,y0-(r-5)*RadMinutey,0,MinPotCor) ;  //畫出當(dāng)前分針
               
         Linexy(x0,y0,x0+(r-9)*RadHourx,y0-(r-9)*RadHoury,0,Black) ;             //清除上一時針軌跡
        RadHourx=sin(PI/180*(30*(BCDtoHEX(Clocker->Hour)%12)+BCDtoHEX(Clocker->Minute)/12*6)); //計(jì)算時針針當(dāng)前弧度正余弦
        RadHoury=cos(PI/180*(30*(BCDtoHEX(Clocker->Hour)%12)+BCDtoHEX(Clocker->Minute)/12*6));
         Linexy(x0,y0,x0+(r-9)*RadHourx,y0-(r-9)*RadHoury,0,HourPotCor) ;                                           //畫出當(dāng)前時針
}

Linexy為任意角度畫線函數(shù),PrintDot為畫點(diǎn)函數(shù),可以在任意位置顯示r>10的指針時鐘,r<10太小沒有意義了,時分秒針可以定義顏色。



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:86791 發(fā)表于 2016-1-2 21:49 | 只看該作者
求幫助····
回復(fù)

使用道具 舉報(bào)

板凳
ID:86791 發(fā)表于 2016-1-2 21:49 | 只看該作者
求幫助啊··
回復(fù)

使用道具 舉報(bào)

地板
ID:101702 發(fā)表于 2016-1-4 09:26 | 只看該作者

回帖獎勵 +10 黑幣

這是POV還是點(diǎn)陣 阿
回復(fù)

使用道具 舉報(bào)

5#
ID:44267 發(fā)表于 2016-1-11 08:45 | 只看該作者

回帖獎勵 +10 黑幣

這是POV還是點(diǎn)陣
回復(fù)

使用道具 舉報(bào)

6#
ID:102754 發(fā)表于 2016-1-11 13:56 | 只看該作者
沒弄過
回復(fù)

使用道具 舉報(bào)

7#
ID:102767 發(fā)表于 2016-1-11 15:07 | 只看該作者

回帖獎勵 +10 黑幣

沒明白你想問什么。
回復(fù)

使用道具 舉報(bào)

8#
ID:149451 發(fā)表于 2020-1-3 14:34 | 只看該作者
這不是51能干的事吧?
回復(fù)

使用道具 舉報(bào)

9#
ID:680594 發(fā)表于 2020-1-3 17:17 | 只看該作者
不懂,好復(fù)雜
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表