資源描述:
《OpenGL時(shí)鐘,右鍵變顏色》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:《計(jì)算機(jī)圖形學(xué)》課程設(shè)計(jì)報(bào)告題目名稱(chēng):編程實(shí)現(xiàn)時(shí)鐘運(yùn)動(dòng)專(zhuān)業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級(jí)13-04學(xué)號(hào)姓名指導(dǎo)教師2016年1月13日-20-課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:目錄一、設(shè)計(jì)內(nèi)容與要求11.1設(shè)計(jì)題目11.2設(shè)計(jì)內(nèi)容11.3設(shè)計(jì)目標(biāo)1二、方案設(shè)計(jì)12.1總體方案設(shè)計(jì)12.2過(guò)程流程圖2三、詳細(xì)設(shè)計(jì)33.1程序設(shè)計(jì)原理及說(shuō)明33.1.1表盤(pán)圓利用Bresenham算法33.1.2時(shí)針、分針和秒針的直線(xiàn)畫(huà)法33.1.3顏色的添加33.1.4獲取系統(tǒng)時(shí)間33.1.5小刻度及整點(diǎn)時(shí)間數(shù)字添加43.1.6改變顏色及恢復(fù)顏色43.2程序主要源代
2、碼5四、程序運(yùn)行說(shuō)明184.1程序運(yùn)行結(jié)果分析184.2程序運(yùn)行結(jié)果圖例18五、總結(jié)195.1程序結(jié)構(gòu)優(yōu)缺分析195.2程序改進(jìn)方案與展望195.3心得體會(huì)20六、參考資料:20-20-課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:一、設(shè)計(jì)內(nèi)容與要求1.1設(shè)計(jì)題目編程實(shí)現(xiàn)時(shí)鐘運(yùn)動(dòng)1.2設(shè)計(jì)內(nèi)容設(shè)計(jì)一個(gè)可以獲取系統(tǒng)時(shí)間的簡(jiǎn)易時(shí)鐘,通過(guò)程序編寫(xiě)時(shí)鐘的表盤(pán)、時(shí)針、分針、秒針和整點(diǎn)數(shù)字。鐘表的樣式根據(jù)自己的喜好設(shè)計(jì),看起來(lái)簡(jiǎn)潔大方,還應(yīng)該美觀(guān)。時(shí)鐘設(shè)計(jì)的重點(diǎn)在于如何獲取系統(tǒng)的時(shí)間,表針之間的邏輯關(guān)系,時(shí)鐘的模擬運(yùn)行以及顏色的改變與恢復(fù)。1.3設(shè)計(jì)目標(biāo)時(shí)鐘幾乎是每個(gè)人生活中必備的生活用品。時(shí)鐘雖
3、小確非常重要。一款良好的時(shí)鐘可以給人們帶來(lái)極大的便利。這次設(shè)計(jì)的目標(biāo)是能夠獲取系統(tǒng)時(shí)間,簡(jiǎn)潔美觀(guān),能夠清楚地實(shí)現(xiàn)時(shí)針,分針,以及秒針的辨識(shí)和運(yùn)轉(zhuǎn)。并且能夠通過(guò)右鍵改變時(shí)針以及表盤(pán)的顏色。二、方案設(shè)計(jì)2.1總體方案設(shè)計(jì)編程實(shí)現(xiàn)時(shí)鐘運(yùn)動(dòng),通過(guò)使用OpenGL以及圖形學(xué)Bresenham的算法畫(huà)出表針和表盤(pán),并添加刻度。使用OpenGL顏色模型中的RGBA模式來(lái)給表盤(pán)等添加顏色來(lái)達(dá)到美觀(guān)并用于區(qū)分表針,來(lái)完成表針的運(yùn)動(dòng)。然后通過(guò)添加函數(shù)來(lái)獲取系統(tǒng)時(shí)間。并通過(guò)點(diǎn)擊右鍵菜單實(shí)現(xiàn)時(shí)鐘背景與時(shí)針顏色的轉(zhuǎn)換。-20-課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:2.2過(guò)程流程圖開(kāi)始制定方案右鍵改變顏色
4、時(shí)針?lè)轴樏脶槺肀P(pán)設(shè)計(jì)獲取系統(tǒng)時(shí)間顏色回復(fù)函數(shù)顏色改變函數(shù)定義顏色變量表針位置關(guān)系表針邏輯關(guān)系表針的顏色整點(diǎn)添加數(shù)字制定表盤(pán)形狀添加表盤(pán)刻度獲取最新時(shí)間時(shí)鐘整體效果動(dòng)畫(huà)結(jié)束-20-課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:三、詳細(xì)設(shè)計(jì)3.1程序設(shè)計(jì)原理及說(shuō)明3.1.1表盤(pán)圓利用Bresenham算法Bresenham畫(huà)圓算法適合于生成整圓,它使用8路對(duì)稱(chēng)法,只計(jì)算出90°~45°的點(diǎn),移動(dòng)方向?yàn)?x,-y。設(shè)(Xi,Yi)是掃描到第i步時(shí)選定的坐標(biāo),下個(gè)被選定的可能是T或S。如圖:PTSBresenham畫(huà)法1/8圓弧示例3.1.2時(shí)針、分針和秒針的直線(xiàn)畫(huà)法由于時(shí)針、分針和秒針是隨時(shí)
5、間運(yùn)動(dòng)著的,而且其中一端位于固定點(diǎn)在圓盤(pán)中心,所以,只要確定另一端的移動(dòng)點(diǎn)便可畫(huà)出。3.1.3顏色的添加再根據(jù)OpenGL顏色模型定義當(dāng)前顏色。設(shè)置當(dāng)時(shí)鐘運(yùn)行時(shí)交換的菜單,運(yùn)行程序時(shí)可變換時(shí)鐘背景與時(shí)針的顏色。最后再設(shè)置一個(gè)恢復(fù)菜單恢復(fù)開(kāi)始時(shí)表盤(pán)與指針的顏色。3.1.4獲取系統(tǒng)時(shí)間-20-課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:獲取系統(tǒng)時(shí)間用到函數(shù)_strtime,它的功能為獲取當(dāng)前系統(tǒng)時(shí)間(不包括日期),函數(shù)以字符指針形式為返回。例如:#include#include#includevoidmain(){charNow_tim
6、e[30];printf("%s",_strtime(Now_time));getch();}運(yùn)行結(jié)果將打印出當(dāng)前時(shí)間。3.1.5小刻度及整點(diǎn)時(shí)間數(shù)字添加在表盤(pán)上添加數(shù)字用到函數(shù)glutBitmapCharacter(font,character),它是glut工具函數(shù),用于在glut窗口某位置顯示字符。由于是glut內(nèi)置函數(shù),功能有所限制,只能顯示英文字符,而且字體、大小都不能任意設(shè)置。3.1.6改變顏色及恢復(fù)顏色改變顏色的函數(shù):void?change();?恢復(fù)顏色的函數(shù):void?resume();?3.2程序主要源代碼//用OpenGL繪制的時(shí)鐘#include7、glut.h>-20-課題名稱(chēng):計(jì)算機(jī)圖形學(xué)基礎(chǔ)學(xué)號(hào):姓名:#include#include#include#include#include#include#definechangecolor1#defineresumecolor2#definequit3floatbr=0.0,bg=0.0,bb=0.0;//定義變量用來(lái)改變顏色intwinheight=768,winwidt