第一篇:《圖形的分解構(gòu)成》講解稿
《圖形的分解構(gòu)成》講解稿
尊敬的評(píng)委老師:
我今天講課的內(nèi)容是《圖形的分解構(gòu)成》。本課程我將分為教材、授課對(duì)象、教學(xué)過程、教學(xué)反思四個(gè)內(nèi)容進(jìn)行講解。
首先說教材:本課是美術(shù)基礎(chǔ)課程。承接點(diǎn)、線、面內(nèi)容的延伸學(xué)習(xí),如何把幾何形重新排列組合成新的圖案是本節(jié)課的主要內(nèi)容。
在授課對(duì)象上,本課主要面向中職一年級(jí)或二年級(jí)剛開始學(xué)習(xí)構(gòu)成基礎(chǔ)的學(xué)生,這些學(xué)生來自廣西不同的少數(shù)民族地區(qū),有一定的美術(shù)基礎(chǔ),極富創(chuàng)造力、實(shí)踐力和個(gè)性化,喜歡動(dòng)手實(shí)踐,但是這個(gè)階段的學(xué)生比較貪玩,注意力也不夠集中,顯然,傳統(tǒng)的講練課堂不能很好的調(diào)動(dòng)他們積極學(xué)習(xí),教師在授課過程中必須不斷創(chuàng)新與嘗試各種教學(xué)情境,激發(fā)學(xué)生的學(xué)習(xí)積極性。
根據(jù)學(xué)生的特點(diǎn),圍繞本課程的教學(xué)內(nèi)容我們開發(fā)了一套教學(xué)軟件及作業(yè)訓(xùn)練,用于教學(xué)過程的展示及課堂練習(xí)。整個(gè)課程全程動(dòng)畫展示、游戲操作,帶給學(xué)生另一番學(xué)習(xí)情境。
本教學(xué)共分七部分 第一部分
利用計(jì)算機(jī)播放關(guān)于廣西壯錦圖案短片,引發(fā)學(xué)生對(duì)生活中圖形的創(chuàng)意應(yīng)用思考,引出課程內(nèi)容《圖形的分解構(gòu)成》。
第二部分
打開教學(xué)軟件圖形的分解構(gòu)成進(jìn)行教學(xué)。用動(dòng)畫的形式進(jìn)行概念講解。通過播放動(dòng)畫引出“基本形”、“正負(fù)形”概念,展示正方形及圓形的重復(fù)構(gòu)成新圖形;展示圖形與襯底形成新的圖形。
第三部分
進(jìn)入“作品分析”。
案例一:壯錦圖案正方形重復(fù)、疊加組成新的圖形。案例二:壯錦中其他基本圖形的組合、變化動(dòng)畫演示。第四部分
進(jìn)入“作品欣賞”,讓學(xué)生先欣賞解構(gòu)圖形作品與正負(fù)形作品。引導(dǎo)學(xué)生在欣賞、觀察中找出問題的答案,并配以音樂,使學(xué)生在輕松愉悅的氛圍中進(jìn)行學(xué)習(xí)。欣賞完后引導(dǎo)學(xué)生動(dòng)手訓(xùn)練,利用紙、筆進(jìn)行基本形的組合排列。
第五部分
針對(duì)學(xué)生的練習(xí),教師進(jìn)行總結(jié)性講解。點(diǎn)擊進(jìn)入“變化規(guī)律”按鈕,展示作品,了解圖形變化規(guī)律,并通過邊看動(dòng)畫邊問答的形式加深學(xué)生對(duì)知識(shí)點(diǎn)的理解。通過觀看→問答→回顧,加深學(xué)生本本課程知識(shí)點(diǎn)的理解及掌握。
第六部分
學(xué)生按老師要求進(jìn)行課堂練習(xí)。打開作業(yè)訓(xùn)練軟件,讓學(xué)生使用多種幾何形進(jìn)行訓(xùn)練,加深學(xué)生對(duì)本課的知識(shí)點(diǎn)理解。
軟件操作簡(jiǎn)單,學(xué)生可以自行選擇幾何形(方、圓、三角)然后放入方格內(nèi),通過組合排列成新的圖形。
最后利用截圖功能將完成的練習(xí)上傳到教師電腦。第七部分
利用投影將學(xué)生作業(yè)進(jìn)行典型案例分析,與學(xué)生一起進(jìn)行“看誰創(chuàng)意棒”的展示性點(diǎn)評(píng)。
總而言之,本次課程借組動(dòng)畫軟件、MV、游戲軟件等多種手段,結(jié)合本地區(qū)民族文化特點(diǎn)進(jìn)行教學(xué),豐富了課堂情境,激發(fā)了學(xué)生的創(chuàng)作思維。
第二篇:會(huì)議講解稿
工作匯報(bào)講解
尊敬的各位領(lǐng)導(dǎo):
大家好!我叫***,●首先請(qǐng)?jiān)试S我代表臨沂杏壇文化傳播有限公司、費(fèi)縣杏壇職業(yè)培訓(xùn)學(xué)校、杏壇商務(wù)賓館和教師進(jìn)修學(xué)校函授站全體員工對(duì)各位領(lǐng)導(dǎo)的到來表示熱烈的歡迎和衷心的感謝!下面就發(fā)展情況做如下匯報(bào):
1、費(fèi)縣教師進(jìn)修學(xué)校是經(jīng)省教育廳批準(zhǔn)的一所中等師范專科學(xué)校,主要承擔(dān)著教師教干培訓(xùn)、協(xié)助各高校開展學(xué)歷教育等工作。(大門、在會(huì)標(biāo)的培訓(xùn)場(chǎng)景)2、2000年我校與齊魯師范學(xué)院合作辦學(xué)以來,連續(xù)15年每年的招生人數(shù)占到總院校招生人數(shù)的80%以上,得到了院校領(lǐng)導(dǎo)的高度重視與支持。(院長(zhǎng)合照、來訪照片),●歷年來省教育廳、●市教育局、●縣教育局及●●●院校各級(jí)領(lǐng)導(dǎo)蒞臨學(xué)校成人教育工作。
3、●2012年以教師進(jìn)修學(xué)校成人教育為依托在臨沂成立了“臨沂杏壇文化傳播有限公司”,隨后成立杏壇職業(yè)培訓(xùn)學(xué)校和杏壇商務(wù)賓館,2014年煙臺(tái)大學(xué)在杏壇職業(yè)培訓(xùn)學(xué)校設(shè)立臨沂函授站。
●“杏壇”相傳是孔子講學(xué)之處。利用“杏壇”二字主要倡導(dǎo)“杏壇文化教育,桃李齊魯大地”,旨在以中國傳統(tǒng)文化和孔子儒家思想為主體。●以“至善、至仁、至誠、至道、至德、至圣”為主導(dǎo)思想與公司文化銜接而所用,做到“以人為本、誠信為先”的服務(wù)宗旨,利用文化傳播這一平臺(tái),配備成人教育和社會(huì)培訓(xùn)的一流管理服務(wù)團(tuán)隊(duì),(會(huì)議合影照片)以規(guī)范創(chuàng)效益,以規(guī)模求發(fā)展,以信譽(yù)創(chuàng)品牌。
2、●杏壇標(biāo)志外形如同一本打開的書凸顯了行業(yè)的特性。首先,中間部分由三片由小到大的銀杏樹葉組成,形同一棵大樹,象征著企業(yè)培育人才成長(zhǎng)的過程。十年樹木,百年樹人;也寓意企業(yè)枝葉繁茂,碩果累累。其次,中間部分也是三個(gè)“人”字,體現(xiàn)了企業(yè)的生源之多、規(guī)模之大。第三,中間部分也是三個(gè)向上擴(kuò)展的箭頭,代表著企業(yè)教育文化向外傳播,寓意企業(yè)積極、向上快速發(fā)展。
3、●費(fèi)縣“東周街”始建于明代成化年間的青石板路,是費(fèi)縣悠久歷史的珍貴見證。2008年費(fèi)縣人民政府在街口立了一塊“費(fèi)城東周街”石碑,作為縣級(jí)重點(diǎn)文物保護(hù)單位進(jìn)行保護(hù),●現(xiàn)已建設(shè)成仿古建筑群,●賓館東側(cè)原址建設(shè)“費(fèi)縣老縣衙”現(xiàn)已作為費(fèi)縣政府慈善機(jī)構(gòu)基金會(huì)。
4、●這棟樓為我們臨沂杏壇文化傳播有限公司所購置,總投資2千余萬元,位于費(fèi)縣東周街,由同濟(jì)大學(xué)設(shè)計(jì)策劃。
5、●該棟樓總建筑面積2617平米,1至3層為杏壇商務(wù)賓館所用,●現(xiàn)設(shè)有30個(gè)房間,裝修全部使用環(huán)保型材料裝修,風(fēng)格獨(dú)特。●可接待50至60人入住就餐。●四層和五層為杏壇職業(yè)培訓(xùn)學(xué)校所用,是費(fèi)縣人力資源和社會(huì)保障局、費(fèi)縣民政局批準(zhǔn)設(shè)立的一所民辦學(xué)校,是一家專門從事成人職前培訓(xùn)和文化交流傳播的社會(huì)力量辦學(xué)機(jī)構(gòu),學(xué)校大門口設(shè)在樓的南側(cè),●設(shè)有多媒體教室、●計(jì)算機(jī)教室、●會(huì)議室等,●主要承擔(dān)計(jì)算機(jī)、普通話培訓(xùn)考試、● 幼兒教師資格證培訓(xùn),技能培訓(xùn)等,給社會(huì)人員搭建了創(chuàng)業(yè)平臺(tái),得到了社會(huì)和廣大學(xué)員的好評(píng)。
6、●我公司與各院校合作多年,始終堅(jiān)持“以人為本、誠信為先、友好合作”的發(fā)展理念,現(xiàn)與●濟(jì)南大學(xué)● 魯東大學(xué)●煙臺(tái)大學(xué)●濱州醫(yī)學(xué)院●青島農(nóng)業(yè)大學(xué)● 濰坊學(xué)院●齊魯師范學(xué)院等院校合作辦學(xué),●各大院校非常重視與我公司的合作,在各大院校的指導(dǎo)與幫助下,成人教育招生人數(shù)逐年遞增,辦學(xué)規(guī)模逐年擴(kuò)大。現(xiàn)有在讀生已達(dá)到2萬余人,2015年力爭(zhēng)突破3萬人。
7、●2015年公司主要以弘揚(yáng)杏壇文化為主題,著力發(fā)展成人教育、職業(yè)技能培訓(xùn)、社會(huì)培訓(xùn)、社會(huì)服務(wù)等行業(yè)。●打造了一支專業(yè)的管理團(tuán)隊(duì)。●公司配備業(yè)務(wù)專用車15輛。
8、●公司為了擴(kuò)大辦學(xué)規(guī)模,分別在各地成立辦學(xué)機(jī)構(gòu),2012年在臨沂市成立齊魯成教中心和杏壇文化傳播有限公司,投資1000萬購置辦公區(qū),這是公司外貌●辦公區(qū)●學(xué)員休息區(qū)●多媒體教室●接待中心●兩個(gè)計(jì)算機(jī)教室●2013年在棗莊市成立晟程職業(yè)培訓(xùn)學(xué)校,●以服裝制作、●計(jì)算機(jī)操作和電焊操作等專業(yè)為主,●培訓(xùn)專業(yè)技術(shù)人才1500余人,且以該校為平臺(tái)擴(kuò)大棗莊市成人教育發(fā)展。●得到了省市領(lǐng)導(dǎo)的充分肯定。● 2014年在日照市投資500萬元成立日照市東勃職業(yè)培訓(xùn)學(xué)校,主要方便日照市成人教育招生和日常教學(xué)管理、開展各類培訓(xùn)等工作,使辦學(xué)規(guī)模得到提升。●2010年在費(fèi)縣站北路投資1000萬元興建費(fèi)縣唯一一家加盟國際蒙氏教育的高檔幼兒園,●設(shè)備齊全,配備完善,能容納500人學(xué)習(xí)和就餐,●配備高檔校車三輛,●所有在崗教師全部參加國際蒙氏教育專業(yè)培訓(xùn),持證上崗。
9、●2015年1月17日臨沂市、日照市成人教育工作會(huì)議在杏壇商務(wù)賓館隆重召開,●濟(jì)南大學(xué)領(lǐng)導(dǎo)蒞臨會(huì)場(chǎng)指導(dǎo)工作(楊杰照片)。●對(duì)做出優(yōu)異成績(jī)的先進(jìn)工作者進(jìn)行表彰。
10、●山東省教育廳為了規(guī)范辦學(xué),專門抽調(diào)院校領(lǐng)導(dǎo)和專家組對(duì)我站的工作進(jìn)行檢查,這是: 濟(jì)南大學(xué)領(lǐng)導(dǎo)蒞臨我校檢查檔案管理工作。●齊魯師范學(xué)院領(lǐng)導(dǎo)蒞臨齊魯成教中心檢查辦學(xué)情況。●魯東大學(xué)領(lǐng)導(dǎo)蒞臨我校檢查團(tuán)隊(duì)建設(shè)情況,●青島農(nóng)業(yè)大學(xué)領(lǐng)導(dǎo)蒞臨齊魯成教中心檢查指導(dǎo)工作。●省教育廳檢查組來我校檢查督導(dǎo)●山東商業(yè)職業(yè)技術(shù)學(xué)院領(lǐng)導(dǎo)蒞臨我校檢查教學(xué)組織情況。●山東行政學(xué)院領(lǐng)導(dǎo)蒞臨我校洽談網(wǎng)絡(luò)教育合作辦學(xué)●●●臨沂市教育局領(lǐng)導(dǎo)蒞臨杏壇職業(yè)培訓(xùn)學(xué)校檢查指導(dǎo)工作,費(fèi)縣教育局領(lǐng)導(dǎo)陪同檢查,對(duì)我公司函授站的管理提出了更高的標(biāo)準(zhǔn),并給予了高度評(píng)價(jià)。
11、●為了實(shí)現(xiàn)資源共享,拓展培訓(xùn)業(yè)務(wù),我校增加了普通話等級(jí)培訓(xùn)考試和教師資格證的培訓(xùn)業(yè)務(wù)這是我校自編的普通話教材,●這是山東省語委頒發(fā)的普通話等級(jí)證書,全國通用網(wǎng)上可查,并設(shè)有二維碼檢測(cè)。●這是我校自編的教師資格證培訓(xùn)教材。
12、●我站為加大教學(xué)管理隊(duì)伍的建設(shè),經(jīng)常組織召開業(yè)務(wù)人員培訓(xùn)會(huì)議,●提升個(gè)人演講技能,使招生和教學(xué)管理工作責(zé)任到人,落實(shí)到位,●加大隊(duì)伍的建設(shè),有效的提升了辦學(xué)信譽(yù)和社會(huì)影響面。●2014年公司開始為工作業(yè)績(jī)突出的優(yōu)秀工作者全額購買養(yǎng)老保險(xiǎn),使我們的員工老有所依,老有所養(yǎng)。
13、●2015年我們的工作目標(biāo)是:
一:成人教育:以臨沂、日照、棗莊市為中心,拓展成人教育領(lǐng)域,穩(wěn)步增長(zhǎng),逐年擴(kuò)大,使其在讀生達(dá)到3萬人以上。
二:社會(huì)培訓(xùn):開展多元化一站式培訓(xùn),開展普通話等級(jí)證書、教師資格證、會(huì)計(jì)證、家政等培訓(xùn),2015年完成培訓(xùn)5000人指標(biāo)。
三:職業(yè)技能培訓(xùn):以杏壇職業(yè)和晟程職業(yè)培訓(xùn)學(xué)校為依托,分別在日照、泰安、淄博、聊城四地市拓展職業(yè)技能培訓(xùn),2015年培訓(xùn)人數(shù)達(dá)到4000人。
四:社會(huì)服務(wù):以杏壇商務(wù)賓館為起點(diǎn),開始籌建容納100個(gè)房間以上的賓館一處,逐步發(fā)揮連鎖效益。
五:籌建農(nóng)產(chǎn)品開發(fā):計(jì)劃與青島農(nóng)業(yè)大學(xué)聯(lián)合開發(fā)500畝規(guī)模的農(nóng)田蔬菜基地,推廣無公害栽培技術(shù)。
六:學(xué)前教育:以費(fèi)縣跨世紀(jì)幼兒園為基礎(chǔ),逐步面向全市推廣和擴(kuò)建大型規(guī)范化幼兒園三處。
15、●2015年我校高度重視與各大院校的合作,以友好合作、規(guī)范辦學(xué)、實(shí)現(xiàn)共贏為主導(dǎo),根據(jù)市教育局及教育廳的要求,加強(qiáng)工作人員的整體素質(zhì)的提升,(工作人員培訓(xùn)照片、制度照片)規(guī)范檔案管理及教學(xué)等工作,力爭(zhēng)各項(xiàng)工作再創(chuàng)佳績(jī)。
我的講解到此結(jié)束,再次歡迎各位領(lǐng)導(dǎo)下榻杏壇商務(wù)賓館指導(dǎo)工作,感謝多年以來對(duì)我們工作的支持與幫助,謝謝大家!
第三篇:策劃書講解稿
策劃書講解稿
講解人:王杏娣
各位評(píng)委,各位同學(xué),晚上好,我是來自社聯(lián)骨干培訓(xùn)第五組的成員,接下去的4分鐘將由我來為大家講解我們的策劃書!(第一張PPT)
我們的策劃書是在“我與我的社團(tuán)”這個(gè)大主題下于12月中旬舉辦的“12月溫暖季”的主題活動(dòng)
(第二張PPT)我們的策劃書分8
篇,這是我們策劃書的總概。那首先來看看我們的第一篇:活動(dòng)目的(指向第3張PPT)作為一個(gè)策劃書的目的,萬變不離其宗,總會(huì)涵蓋社團(tuán)交流,服務(wù)同學(xué),以及社團(tuán)的后續(xù)發(fā)展,那就如你所見,我們的也是。(回到第二張PPT)
接下來,要給大家介紹的是我們的活動(dòng)背景(指向第四張PPT)從“12月溫暖季”這個(gè)主題我們就能知道,這次的主題活動(dòng)是希望在這個(gè)寒冷的冬天能為大家?guī)ヒ唤z溫暖,與大家共享我們社團(tuán)的文化(回到第二張PPT)
那大家一定也想看看是誰能參與這次主題活動(dòng)了,接下去給大家展示的就是我們的活動(dòng)主體部分(指向第五張PPT)那此次活動(dòng)的舉辦方呢是我們的7個(gè)文娛類社團(tuán),分別是桌游協(xié)會(huì) 相和棋社
酷德調(diào)酒社
零點(diǎn)臺(tái)球協(xié)會(huì)
浮夸映像社 Show蜜格調(diào)甜點(diǎn)社
亮苑影視協(xié)會(huì) 至于參與對(duì)象就是我們計(jì)量的全校師生,我們的活動(dòng)安排在12月中旬(回到第二張PPT)
現(xiàn)在大家將看到的呢,是活動(dòng)宣傳這一篇(指向第6張PPT)那第一部分呢,我們是以各個(gè)社團(tuán)的宣傳部為主體的宣傳活動(dòng),第二部分則
是以外聯(lián)部為主體的對(duì)外的宣傳,由于時(shí)間關(guān)系這一部分的具體方案請(qǐng)?jiān)斠娢覀儾邉潟母戒浺约巴饴?lián)部的策劃書(回到第二張PPT)
那現(xiàn)在呢我來給大家著重介紹一下我們的活動(dòng)流程(指向第七張PPT)這一篇分3個(gè)部分,一個(gè)是活動(dòng)前期的準(zhǔn)備,這一部分主要側(cè)重于宣傳,人員安排,贊助商的聯(lián)系以及場(chǎng)地的租借問題;第二部分是活動(dòng)當(dāng)天的準(zhǔn)備(直接指向第八張PPT)當(dāng)然此時(shí),我們更看重的是活動(dòng)的順利舉辦,因此當(dāng)天我們會(huì)把更多的把精力放在場(chǎng)地,人員安排及到位這一塊,當(dāng)天還有一個(gè)更重要的事(直接到第9張PPT)那就是節(jié)目安排,這次節(jié)目呢不是按順序出場(chǎng)的,而是同時(shí)舉行,持續(xù)時(shí)間將長(zhǎng)達(dá)3個(gè)小時(shí),你可以在PPT上看到,這是我們各個(gè)社團(tuán)準(zhǔn)備的活動(dòng),你們可以選擇感興趣的參加!接下去是我們活動(dòng)流程的最后一部分
(直接到第10張PPT)活動(dòng)后期的整理,那為了紀(jì)念此次活動(dòng),合影是少不了的。當(dāng)然場(chǎng)地的打掃也是必須的(回到第二張PPT)
(指向第11張PPT)現(xiàn)在你看到的是我們的活動(dòng)資源:一部分呢是我們的場(chǎng)地,儀器設(shè)備等,那另一部分(直接到12張PPT)是每個(gè)社團(tuán)根據(jù)自己社團(tuán)的特點(diǎn)及節(jié)目所給出的人員安排!(回到第二張PPT)
(指向第13張PPT)這里給你們展示的是我們七個(gè)社團(tuán)給出的初步的資金預(yù)算,合計(jì)是2690元,其中包括了場(chǎng)地,材料,以及宣傳資金!(回到第二張PPT)
最后我們想給大家介紹的是“我與我的社團(tuán)”(指向第15張PPT)在這里,我們給大家展示的是我們7個(gè)社團(tuán)活動(dòng)的照片,這些是我們與社團(tuán)一起奮斗的證
據(jù),是我們與社團(tuán)一起成長(zhǎng)的印記,曾經(jīng),或許我們跌倒過,失敗過,但我們堅(jiān)持著努力著,相信在不久的未來你們會(huì)看到更強(qiáng)大的我們以及我們的社團(tuán),謝謝評(píng)委,謝謝同學(xué)們!(鞠躬)
第四篇:計(jì)算機(jī)圖形學(xué)課程設(shè)計(jì) 圖形繪制變換分解
計(jì)算機(jī)圖形學(xué) 實(shí)驗(yàn)報(bào)告
課程名稱 : 計(jì)算機(jī)圖形學(xué) 實(shí)驗(yàn)名稱 : 圖形繪制與變換 學(xué) 院 : 電子信息工程學(xué)院 專 業(yè) : 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) : 11計(jì)科本 01班 學(xué) 號(hào) : 111102020103 姓 名 : 張慧 指導(dǎo)教師 : 王征風(fēng)
二零一四年
目錄
一、引言----------------3
二、設(shè)計(jì)需求---------3
2.1 設(shè)計(jì)目標(biāo)--3 2.2 設(shè)計(jì)環(huán)境--3
2.2.1 VC++6.0------------------------3 2.2.2 MFC------------------------------4 2.3 設(shè)計(jì)題目及要求----------------------4 2.4 總體流程圖----------------------------4
三、課程設(shè)計(jì)原理---5
3.1 實(shí)現(xiàn)的算法------------------------------5
3.1.2 Bresenham算法畫直線------5 3.1.3 中心點(diǎn)算法畫圓和橢圓------5 3.2 圖形變換的基本原理------------------7
3.2.1平移變換------------------------7 3.2.2 旋轉(zhuǎn)變換----------------------8 3.2.3 比例變換----------------------8
四、總體設(shè)計(jì)與功能實(shí)現(xiàn)-------------------------8
4.1 主要界面設(shè)計(jì)---------------------------8 4.2 設(shè)置顏色界面---------------------------8
4.2.1 界面設(shè)置代碼------------------8 4.2.2 運(yùn)行結(jié)果------------------------9 4.3 二維線畫圖元實(shí)現(xiàn)---------------------9 4.4 畫多邊形功能的實(shí)現(xiàn)--------------13 4.5 畫Bezier曲線功能的實(shí)現(xiàn)-------14 4.6 二維圖形變換的實(shí)現(xiàn)--------------16 4.7 三維圖形的變換--------------------17
五、實(shí)驗(yàn)心得體會(huì)
一、引言
計(jì)算機(jī)圖形學(xué)(Computer Graphics,簡(jiǎn)稱CG)是一種使用數(shù)學(xué)算法將二維或三維圖形轉(zhuǎn)化為計(jì)算機(jī)顯示器的柵格形式的科學(xué)。簡(jiǎn)單地說,計(jì)算機(jī)圖形學(xué)的主要研究?jī)?nèi)容就是研究如何在計(jì)算機(jī)中表示圖形、以及利用計(jì)算機(jī)進(jìn)行圖形的計(jì)算、處理和顯示的相關(guān)原理與算法。是計(jì)算機(jī)科學(xué)的一個(gè)分支領(lǐng)域,主要關(guān)注數(shù)字合成與操作視覺的圖形內(nèi)容。計(jì)算機(jī)圖形學(xué)研究的是應(yīng)用計(jì)算機(jī)產(chǎn)生圖像的所有工作,不管圖像是靜態(tài)的還是動(dòng)態(tài)的,可交互的還是固定的,等等。圖形API是允許程序員開發(fā)包含交互式計(jì)算機(jī)圖形操作的應(yīng)用而不需要關(guān)注圖形操作細(xì)節(jié)或任務(wù)系統(tǒng)細(xì)節(jié)的工具集。計(jì)算機(jī)圖形學(xué)有著廣泛的應(yīng)用領(lǐng)域,包括物理、航天、電影、電視、游戲、藝術(shù)、廣告、通信、天氣預(yù)報(bào)等幾乎所有領(lǐng)域都用到了計(jì)算機(jī)圖形學(xué)的知識(shí),這些領(lǐng)域通過計(jì)算機(jī)圖形學(xué)將幾何模型生成圖像,將問題可視化從而為各領(lǐng)域更好的服務(wù)。
計(jì)算機(jī)圖形學(xué)利用計(jì)算機(jī)產(chǎn)生讓人賞心悅目的視覺效果,必須建立描述圖形的幾何模型還有光照模型,再加上視角、顏色、紋理等屬性,再經(jīng)過模型變換、視圖變換、投影操作等,這些步驟從而實(shí)現(xiàn)一個(gè)完整的OpenGL程序效果。OpenGL是一個(gè)開放的三維圖形軟件包,它獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便地在各種平臺(tái)間移植。計(jì)算機(jī)圖形學(xué)通過應(yīng)用OpenGL的功能,使得生成的圖形效果具有高度真實(shí)感。學(xué)習(xí)計(jì)算機(jī)圖形學(xué)的重點(diǎn)是掌握OpenGL在圖形學(xué)程序中的使用方法。事實(shí)上,圖形學(xué)也把可以表示幾何場(chǎng)景的曲線曲面造型技術(shù)和實(shí)體造型技術(shù)作為其主要的研究?jī)?nèi)容。同時(shí),真實(shí)感圖形計(jì)算的結(jié)果是以數(shù)字圖像的方式提供的,計(jì)算機(jī)圖形學(xué)也就和圖像處理有著密切的關(guān)系。
通過21世紀(jì)是信息的時(shí)代,在日新月異的科技更新中相信計(jì)算機(jī)會(huì)發(fā)揮越來越重要的作用,計(jì)算機(jī)圖形學(xué)也會(huì)在更多的領(lǐng)域所應(yīng)用,雖然我國在這方面還比較薄弱,但相信會(huì)有越來越好的時(shí)候的。
二、設(shè)計(jì)需求
2.1 設(shè)計(jì)目標(biāo)
以圖形學(xué)算法為目標(biāo),深入研究。繼而策劃、設(shè)計(jì)并實(shí)現(xiàn)一個(gè)能夠表現(xiàn)計(jì)算機(jī)圖形學(xué)算法原理的或完整過程的演示系統(tǒng),并能從某些方面作出評(píng)價(jià)和改進(jìn)意見。通過完成一個(gè)完整程序,經(jīng)歷策劃、設(shè)計(jì)、開發(fā)、測(cè)試、總結(jié)和驗(yàn)收各階段,達(dá)到:鞏固和實(shí)踐計(jì)算機(jī)圖形學(xué)課程中的理論和算法;學(xué)習(xí)表現(xiàn)計(jì)算機(jī)圖形學(xué)算法的技巧;培養(yǎng)認(rèn)真學(xué)習(xí)、積極探索的精神。
2.2 設(shè)計(jì)環(huán)境
2.2.1 VC++6.0 VC++6.0是 Microsoft 公司推出的一個(gè)基于 Windows 系統(tǒng)平臺(tái)、可視化的 集成開發(fā)環(huán)境,它的源程序按 C++語言的要求編寫,并加入了微軟提供的功能 強(qiáng)大的 MFC(Microsoft Foundation Class)類庫。MFC 中封裝了大部分 Windows API 函數(shù)和 Windows 控件,它包含的功能涉及到整個(gè) Windows 操作系統(tǒng)。MFC 不僅給用戶提供了 Windows 圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng) 用程序的組件,這樣,開發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn) Windows 應(yīng) 用程序所需的程序,而是從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間。另 外,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。因此,使用VC++提供的 高度可視化的應(yīng)用程序開發(fā)工具和 MFC 類庫,可使應(yīng)用程序開發(fā)變 得簡(jiǎn)單。2.2.2 MFC MFC(Microsoft Foundation Classes),是 一 個(gè) 微 軟 公 司 提 供 的 類 庫(class libraries)以 C++類的形式封裝了 Windows 的 API,它包含了窗口等許多類的定義。各種類的集合構(gòu)成了一個(gè)應(yīng)運(yùn)程序的框架結(jié)構(gòu),以減少應(yīng)用程序開發(fā)人員的工作 量。其中包含的類包含大量 Windows 句柄封裝類和很多 Windows 的內(nèi)建控件和組 件的封裝類。MFC 6.0 版本封裝了大約 200 個(gè)類,其中的一些可以被用戶直接使用。例如CWnd 類封裝了窗口的功能,包括打印文本、繪制圖形及跟蹤鼠標(biāo)指針的移動(dòng)等;CsplitterWnd 類是從 CWnd 類派生出來的,繼承了基類或稱父類 CWnd 類的所 有特 性,但增加了自己的功能,實(shí)現(xiàn)拆分窗口,使窗口至少可被拆分成兩個(gè)窗口,用戶 可以移動(dòng)兩個(gè)窗口之間的邊框來改變窗口的大小;CtoolBar 類可以定義工具欄等。MFC 命名的慣例是類的名字通常是由“C”打頭;成員變量使用前綴“m_”,接著使用一個(gè)字母來指明數(shù)據(jù)類型,然后是變量的名稱;所有的單詞用大寫字母開頭。
2.3 設(shè)計(jì)題目及要求
(1)題目:實(shí)現(xiàn)多邊形和曲線的繪制和變換
(2)要求:學(xué)會(huì)使用VC++編寫實(shí)現(xiàn)圖形的繪制變換,需包括直線、曲線、多邊形的繪制和變換,及三維立體圖形的相應(yīng)變換.2.4 總體流程圖
三、課程設(shè)計(jì)原理
3.1 實(shí)現(xiàn)的算法
3.1.1 DDA算法畫直線
DDA是數(shù)字微分分析式(Digital Differential Analyzer)的縮寫。
已知直線兩端點(diǎn)(x1,y1)、(x2,y2)則斜率m為:m =(y2-y1)/(x2-x1)= Dx/Dy;直線中的每一點(diǎn)坐標(biāo)都可以由前一點(diǎn)坐標(biāo)變化一個(gè)增量(Dx, Dy)而得到,即表示為遞歸式: xi+1=xi+Dx yi+1=yi+Dy。
遞歸式的初值為直線的起點(diǎn)(x1, y1),這樣,就可以用加法來生成一條直線。具體算法是: 該算法適合所有象限,其中用了用了兩個(gè)函數(shù)如:Integer(-8.5)=-9;Integer(8.5)=8;Sign(i),根據(jù)i的正負(fù),分別得到-1,0,+1; 相應(yīng)代碼:
//DDA DrawLine
{if(abs(x2-x1)> abs(y2-y1))
length = abs(x2-x1);
else
length = abs(y2-y1);
Dx =(x2-x1)/length;
Dy =(y2-y1)/length;
x = x1+0.5*Sign(Dx);
y = x2 + 0.5*Sign(Dy);
i = 1;
while(i <= lenght)
{ setpixel(Integer(x),Integer(y),color);
x= x + Dx;
y= y + Dy;
i+=1;} } 3.1.2 Bresenham算法畫直線
思路如下: // 假設(shè)該線段位于第一象限內(nèi)且斜率大于0小于1,設(shè)起點(diǎn)為(x1,y1),終點(diǎn)為(x2,y2).// 根據(jù)對(duì)稱性,可推導(dǎo)至全象限內(nèi)的線段.1.畫起點(diǎn)(x1,y1).2.準(zhǔn)備畫下個(gè)點(diǎn)。x坐標(biāo)增1,判斷如果達(dá)到終點(diǎn),則完成。否則,由圖中可知,下個(gè)要畫的點(diǎn)要么為當(dāng)前點(diǎn)的右鄰接點(diǎn),要么是當(dāng)前點(diǎn)的右上鄰接點(diǎn).如果線段ax+by+c=0與x=x1+1的交點(diǎn)的y坐標(biāo)大于M點(diǎn)的y坐標(biāo)的話,下個(gè)點(diǎn)為U(x1+1,y1+1),否則,下個(gè)點(diǎn)為B(x1+1,y1),3.畫點(diǎn)(U或者B).4.跳回第2步.5.結(jié)束.3.1.3中心點(diǎn)算法畫圓和橢圓
(1)中心點(diǎn)算法畫圓
在一個(gè)方向上取單位間隔,在另一個(gè)方向的取值由兩種可能取值的中點(diǎn)離圓的遠(yuǎn)近而定。實(shí)際處理中,用決策變量的符號(hào)來確定象素點(diǎn)的選擇,因此算法效率較高。生成圓弧的中點(diǎn)算 法和上面講到的生成直線段的中點(diǎn)算法類似。
考慮第一象限內(nèi)x?[0,R/2]的八分之一圓弧段。經(jīng)過計(jì)算,得出判別式的遞推公式為:
di?1?di?2xi?3???di?2(xi?yi)?5d?0d?0
(xi, M SE yi,r)E 這兩個(gè)遞推公式的初值條件為:
??(x0,y0,r)?(0,R)?d0?5/4?R
編寫成員函數(shù)如下:
void CMy2_9View::MidPointEllipse(CDC *pDC, double a, double b, int color){ double x,y,d,xP,yP,squarea,squareb;
squarea=a*a;
squareb=b*b;
xP=(int)(0.5+(double)squarea/sqrt((double)(squarea+squareb)));
yP=(int)(0.5+(double)squareb/sqrt((double)(squarea+squareb)));
x=0;
y=b;
d=4*(squareb-squarea*b)+squarea;
pDC->SetPixel(x,y,color);
while(x<=xP)
{if(d<=0)d+=4*squareb*(2*x+3);
else
{d+=4*squareb*(2*x+3)-8*squarea*(y-1);
y--;}
x++;
pDC->SetPixel(x,y,color);}
x=a;
y=0;
d=4*(squarea-a*squareb)+squareb;
pDC->SetPixel(x,y,color);
while(y { if(d<=0)d+=4*squarea*(2*y+3); else {d+=4*squarea*(2*y+3)-8*squareb*(x-1); x--;} y++; pDC->SetPixel(x,y,color);}} 編寫OnDraw函數(shù)如下: void CMy2_9View::OnDraw(CDC* pDC){CMy2_9Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);MidPointEllipse(pDC,500,300,RGB(0,0,0));}(2)中心點(diǎn)算法畫橢圓 我們先考慮圓心在原點(diǎn)的橢圓的生成,對(duì)于中心不是原點(diǎn)的橢圓,可以通過坐標(biāo)的平移變換獲得相應(yīng)位置的橢圓。中心在原點(diǎn)。焦點(diǎn)在坐標(biāo)軸上的標(biāo)準(zhǔn)橢圓具有X軸對(duì)稱、Y軸對(duì)稱和原點(diǎn)對(duì)稱特性,已知橢圓上第一象限的P點(diǎn)坐標(biāo)是(x, y),則橢圓在另外三個(gè)象限的對(duì)稱點(diǎn)分別是(x,-y)、(-x, y)和(-x,-y)。因此,只要畫出第一象限的四分之一橢圓,就可以利用這三個(gè)對(duì)稱性得到整個(gè)橢圓。 相應(yīng)代碼: void MP_Ellipse(int xc , int yc , int a, int b){ double sqa = a * a;double sqb = b * b;double d = sqb + sqa *(-b + 0.25);int x = 0;int y = b;EllipsePlot(xc, yc, x, y);while(sqb *(x + 1)< sqa *(y1))* 2-(a * b)* 2;while(y > 0){if(d < 0){ d += sqb *(2 * x + 2)+ sqa *(-2 * y + 3);x++;} else {d += sqa *(-2 * y + 3);} y--;EllipsePlot(xc, yc, x, y);}} 3.2 圖形變換的基本原理 3.2.1平移變換 平移變換函數(shù)如下: void glTranslate{fd}(TYPE x, TYPE y, TYPE z); 三個(gè)函數(shù)參數(shù)就是目標(biāo)分別沿三個(gè)軸向平移的偏移量。這個(gè)函數(shù)表示用于這三個(gè)偏移量生成的矩陣乘以當(dāng)前矩陣。當(dāng)參數(shù)是(0.0,0.0,0.0)時(shí),表示對(duì)函數(shù)glTranslate*()的操作是單位矩陣,也就是對(duì)物體沒有影響。 3.2.2 旋轉(zhuǎn)變換 旋轉(zhuǎn)變換函數(shù)如下: Void glRota{fd}TYPE angle, TYPE x, TYPE y, TYPE z); 函數(shù)中第一個(gè)參數(shù)是表示目標(biāo)沿從點(diǎn)(x,y,z)到原點(diǎn)方向逆時(shí)針旋轉(zhuǎn)的角度,后三個(gè)參數(shù)是旋轉(zhuǎn)的方向點(diǎn)坐標(biāo)。這個(gè)函數(shù)表示用這四個(gè)參數(shù)生成的矩陣乘以當(dāng)前矩陣。當(dāng)角度參數(shù)是0.0時(shí),表示對(duì)物體沒有影響。3.2.3 比例變換 比例變換函數(shù)如下: Void glScale{fd}(TYPE x, TYPE y, TYPE z); 單個(gè)函數(shù)參數(shù)值就是目標(biāo)分別沿三個(gè)軸方向縮放的比例因子。這個(gè)函數(shù)表示用這三個(gè)比例因子生成的矩陣乘以當(dāng)前矩陣。這個(gè)函數(shù)能完成沿相應(yīng)的軸對(duì)目標(biāo)進(jìn)行拉伸、壓縮和反射三項(xiàng)功能。以參數(shù)x為例,若當(dāng)x大于1.0時(shí),表示沿x方向拉伸目標(biāo);若x小于1.0,表示沿x軸方向收縮目標(biāo);若x=-1.0表示沿x軸反射目標(biāo)。其中參數(shù)為負(fù)值時(shí)表示對(duì)目標(biāo)進(jìn)行相應(yīng)軸的反射變換。 四、總體設(shè)計(jì)與功能實(shí)現(xiàn) 4.1 主要界面設(shè)計(jì) 4.2 設(shè)置顏色界面 4.2.1 界面設(shè)置代碼: void CGraphicsView::OnClock(){ WHAT_TO_DO=ID_CLOCK; clean();int xx = 450, yy = 300, r = 150,d = 5;int i, white = RGB(255,255,255);mile(xx, yy, r, COLOR);Matrix m(xx, 240), s(xx, 200);Matrix t1(xx, yy, true), t2(-xx,-yy, true), mr(PI/1800), sr(PI/30);mile(m.getx(), m.gety(), d+1, COLOR);mile(s.getx(), s.gety(), d, COLOR);dne(m.getx(), m.gety(), xx, yy, COLOR);dne(s.getx(), s.gety(), xx, yy, COLOR); for(i=0;i<120;i++){ ::Sleep(80); mile(m.getx(), m.gety(), d+1, white);mile(s.getx(), s.gety(), d, white);dne(m.getx(), m.gety(), xx, yy, white);dne(s.getx(), s.gety(), xx, yy, white);m = t1*mr*t2*m;s = t1*sr*t2*s;mile(m.getx(), m.gety(), d+1, COLOR);mile(s.getx(), s.gety(),d, COLOR);dne(m.getx(), m.gety(), xx, yy, COLOR);dne(s.getx(), s.gety(), xx, yy, COLOR);}} 4.2.2 點(diǎn)擊“設(shè)置--顏色”后,運(yùn)行結(jié)果如下: 4.3 二維線畫圖元實(shí)現(xiàn) 4.3.1 實(shí)現(xiàn)代碼: void CGraphicsView::MidCir(CDC *pdc, int x0, int y0, int x1, int y1, int color){ int r,x,y,deltax,deltay,d;r=sqrt(((double)x1-(double)x0)*((double)x1-(double)x0)+((double)y1-(double)y0)*((double)y1-(double)y0));x=0;y=r;deltax=3;deltay=2-r-r;d=1-r;while(x<=y){ ::Sleep(time); pdc->SetPixel(x+x0,y+y0,color); ::Sleep(time); pdc->SetPixel(-x+x0,y+y0,color); ::Sleep(time); pdc->SetPixel(x+x0,-y+y0,color); ::Sleep(time); pdc->SetPixel(-x+x0,-y+y0,color); ::Sleep(time); pdc->SetPixel(y+x0,x+y0,color); ::Sleep(time); pdc->SetPixel(-y+x0,x+y0,color); ::Sleep(time); pdc->SetPixel(y+x0,-x+y0,color); ::Sleep(time); pdc->SetPixel(-y+x0,-x+y0,color); if(d<0) { d+=deltax; deltax+=2; x++;} else { d+=deltax+deltay; deltax+=2; deltay+=2; x++; y--;}}} void CGraphicsView::midellispse(int xx, int yy, int r1, int r2, int color){ } void CGraphicsView::Ellipse(CDC *pdc, int x1, int y1, int x2, int y2, int color){ xx0=(x2+x1)/2;yy0=(y2+y1)/2;rra=abs(x2-x1)/2;rrb=abs(y2-y1)/2;if(rra==0 && rrb==0)return;Ellipse0(pdc,xx0,yy0,rra,rrb,color);} void CGraphicsView::Ellipse0(CDC *pdc, int x0, int y0, int a, int b, int color){ int i,yy;int x,y,deltax,deltay;int aa,aa2,aa3,bb,bb2,bb3;double d1,d2;aa=a*a;aa2=aa*2;aa3=aa*3;bb=b*b;bb2=bb*2;bb3=bb*3;x=0;y=b;d1=bb+aa*(-b+0.25);deltax=bb3;deltay=-aa2*b+aa2;pdc->SetPixelV(x+x0,y+y0,color);pdc->SetPixelV(x+x0,-y+y0,color);while(bb*(x+1) yy=y; if(d1<0) { d1+=deltax; deltax+=bb2; x++;} else { d1+=deltax+deltay; deltax+=bb2; deltay+=aa2; x++; y--;} ::Sleep(time); pdc->SetPixelV(x+x0,y+y0,color); ::Sleep(time); pdc->SetPixelV(-x+x0,y+y0,color); ::Sleep(time); pdc->SetPixelV(x+x0,-y+y0,color); ::Sleep(time); pdc->SetPixelV(-x+x0,-y+y0,color);} d2=bb*(x+0.5)*(x+0.5)+aa*(y-1)*(y-1)-aa*bb;deltax-=bb;deltay+=aa;while(y>0){ if(d2<0) { d2+=deltax+deltay; deltax+=bb2; deltay+=aa2; x++; y--;} else { d2+=deltay; deltay+=aa2; y--;} ::Sleep(time); pdc->SetPixelV(x+x0,y+y0,color); ::Sleep(time); pdc->SetPixelV(-x+x0,y+y0,color); ::Sleep(time); pdc->SetPixelV(x+x0,-y+y0,color); ::Sleep(time); pdc->SetPixelV(-x+x0,-y+y0,color);}} void CGraphicsView::DDALine(CDC *pdc, int x0, int y0, int x1, int y1, int color){ int xx,yy,s,s1,s2,di;float dx,dy,k,x,y;dx=x1-x0;if(dx>=0) s1=1;else s1=-1;dy=y1-y0;if(dy>=0) s2=1;else s2=-1;dx=abs(dx);dy=abs(dy);if(dx>=dy){ s=0; di=(int)dx; k=dy/dx*s2;} else { s=1; di=(int)dy; k=dx/dy*s1;} x=x0;y=y0;for(int i=0;i<=di;i++){if(s==0) { xx=(int)x; yy=(int)(y+0.5); ::Sleep(time); pdc->SetPixel(xx,yy,color); x+=s1; y+=k;} else{ xx=(int)(x+0.5); yy=(int)y; ::Sleep(time); pdc->SetPixel(xx,yy,color); y+=s2; x+=k;}}} 4.3.2 點(diǎn)擊二維線畫圖元,課相應(yīng)畫出直線、圓和橢圓,結(jié)果如下: 4.4 畫多邊形功能的實(shí)現(xiàn) 4.4.1 部分實(shí)現(xiàn)代碼: void CGraphicsView::OnDrawDuoBX(){ Vertex_Count dlg;if(dlg.DoModal()==IDOK){ if(dlg.m_vertex_count>MAX) { MessageBox(“輸入頂點(diǎn)數(shù)過大”); return;} VertexTotal=dlg.m_vertex_count; CDC *pDC=GetDC(); CPen pen(PS_SOLID,2,RGB(255,255,255)); CPen *pOldpen=pDC->SelectObject(&pen); pDC->MoveTo((int)(inVertexArray[0].x+0.5),(int)(inVertexArray[0].y+0.5)); int i; for(i=1;i pDC->LineTo((int)(inVertexArray[i].x+0.5),(int)(inVertexArray[i].y+0.5)); pDC->LineTo((int)(inVertexArray[0].x+0.5),(int)(inVertexArray[0].y+0.5)); pDC->SelectObject(pOldpen); ReleaseDC(pDC); inLength=0; outLength=0; WHAT_TO_DO=ID_DrawDuoBX;}} 4.4.2 點(diǎn)擊多邊形,輸入定點(diǎn)個(gè)數(shù),可繪制出相應(yīng)的多邊形,結(jié)果如下: 4.5 畫Bezier曲線功能的實(shí)現(xiàn) 4.5.1 部分實(shí)現(xiàn)代碼: void CGraphicsView::OnBezier(){ // TODO: Add your command handler code here WHAT_TO_DO=ID_BEZIER;CDC *p=GetDC(); p->TextOut(10, 20, “PS:鼠標(biāo)左鍵添加曲線,鼠標(biāo)右鍵修改曲線.”); ReleaseDC(p);} void CGraphicsView::OnBezierClear(){ n =-1;RedrawWindow();} void CGraphicsView::DrawBezier(DPOINT *p){ if(n <= 0)return;if((p[n].x < p[0].x+1)&&(p[n].x > p[0].x-1)&&(p[n].y < p[0].y+1)&&(p[n].y > p[0].y-1)){ pDC->SetPixel(p[0].x, p[0].y, COLOR); return;} DPOINT *p1;p1 = new DPOINT[n+1];int i, j;p1[0] = p[0];for(i=1;i<=n;i++){ for(j=0;j<=n-i;j++) { p[j].x =(p[j].x + p[j+1].x)/2; p[j].y =(p[j].y + p[j+1].y)/2;} p1[i] = p[0];} DrawBezier(p);DrawBezier(p1);delete p1;} void CGraphicsView::OnBezierAdd(){ AddorMove = 1;} void CGraphicsView::OnBezierMove(){ AddorMove =-1;} void CGraphicsView::OnMouseMove(UINT nFlags, CPoint point){ switch(WHAT_TO_DO){ case ID_BEZIER: { if(current >= 0){ points[current].x = point.x; points[current].y = point.y; RedrawWindow();} if(current2 >= 0) { points[current2].x = point.x; points[current2].y = point.y; RedrawWindow();} break;} default:break;} CView::OnMouseMove(nFlags, point);} 4.5.2 點(diǎn)擊曲線--Beizer曲線,可實(shí)現(xiàn)Beizer曲線的繪制功能,繪制結(jié)果如下圖: 圖 1 圖 2 4.5.3 點(diǎn)擊曲線--Beizer曲線,可實(shí)現(xiàn)Beizer曲線的移動(dòng),鼠標(biāo)點(diǎn)擊其中的任一點(diǎn),可實(shí)現(xiàn)曲線的移動(dòng),繪制結(jié)果如下圖: 上圖1移動(dòng)后的曲線 上圖2移動(dòng)后的曲線 4.6 二維圖形變換的實(shí)現(xiàn) 可以實(shí)現(xiàn)一橢圓在界面上的隨機(jī)移動(dòng),一圓在界面上饒某一點(diǎn)的旋轉(zhuǎn)和一正方形由大變小在變大的變化,部分實(shí)現(xiàn)代碼如下: void CGraphicsView::OnXuanzhuan(){ WHAT_TO_DO=ID_XUANZHUAN; time=0; OnClear(); CClientDC dc(this);CDC* pDC=&dc; int i, white=RGB(255,255,255), point [2][2]={{300,200},{300,250}}; Matrix a(point[0][0],point[0][1]), b(point[1][0],point[1][1]); int midx=(point[0][0]+point[1][0])/2,midy=(point[0][1]+point[1][1])/2; Matrix t1(midx, midy,true), t2(-midx,-midy,true); Matrix r(PI/50); Matrix temp(midx, midy,true); temp = t1*r*t2; for(i=0;i<200;i++){ ::Sleep(50); MidCir(pDC, a.getx(), a.gety(), b.getx(), b.gety(), white); a = temp*a; b = temp*b; MidCir(pDC, a.getx(), a.gety(), b.getx(), b.gety(), COLOR);} for(i=0;i<200;i++){ ::Sleep(50); MidCir(pDC,a.getx(), a.gety(), b.getx(), b.gety(), white); a = temp*a; b = temp*b; MidCir(pDC, a.getx(), a.gety(), b.getx(), b.gety(), COLOR);} time=5;} void CGraphicsView::OnUpdateXuanzhuan(CCmdUI* pCmdUI){ pCmdUI->SetCheck(WHAT_TO_DO==ID_XUANZHUAN);} void CGraphicsView::OnScale(){ WHAT_TO_DO=ID_SCALE; OnClear();CClientDC dc(this);CDC* pDC=&dc; time=0;int i,white=RGB(255,255,255), point[4][2]={{300,250},{400,250},{300,300},{400,300}};float sx=0.9,sy=0.85;int midx=(point[0][0]+point[3][0])/2,midy=(point[0][1]+point[3][1])/2;Matrix s1(sx,sy),s2(1/sx,1/sy);Matrix t1(midx, midy,true), t2(-midx,-midy,true); Matrix a(point[0][0],point[0][1]), b(point[1][0],point[1][1]);Matrix c(point[2][0],point[2][1]), d(point[3][0],point[3][1]);Matrix temp(midx, midy,true);temp = t1*s1*t2;DDALine(pDC,a.getx(),a.gety(),b.getx(),b.gety(),COLOR);DDALine(pDC,a.getx(),a.gety(),c.getx(),c.gety(),COLOR);DDALine(pDC,c.getx(),c.gety(),d.getx(),d.gety(),COLOR);DDALine(pDC,d.getx(),d.gety(),b.getx(),b.gety(),COLOR);for(i=0;i<20;i++){ ::Sleep(30); DDALine(pDC,a.getx(),a.gety(),b.getx(),b.gety(),white); DDALine(pDC,a.getx(),a.gety(),c.getx(),c.gety(),white); DDALine(pDC,c.getx(),c.gety(),d.getx(),d.gety(),white); DDALine(pDC,d.getx(),d.gety(),b.getx(),b.gety(),white); a=temp*a; b=temp*b; c=temp*c; d=temp*d; DDALine(pDC,a.getx(),a.gety(),b.getx(),b.gety(),COLOR); DDALine(pDC,a.getx(),a.gety(),c.getx(),c.gety(),COLOR); DDALine(pDC,c.getx(),c.gety(),d.getx(),d.gety(),COLOR); DDALine(pDC,d.getx(),d.gety(),b.getx(),b.gety(),COLOR);} temp = t1*s2*t2;for(i=0;i<20;i++){ ::Sleep(30); DDALine(pDC,a.getx(),a.gety(),b.getx(),b.gety(),white); DDALine(pDC,a.getx(),a.gety(),c.getx(),c.gety(),white); DDALine(pDC,c.getx(),c.gety(),d.getx(),d.gety(),white); DDALine(pDC,d.getx(),d.gety(),b.getx(),b.gety(),white); a=temp*a; b=temp*b; c=temp*c; d=temp*d; DDALine(pDC,a.getx(),a.gety(),b.getx(),b.gety(),COLOR); DDALine(pDC,a.getx(),a.gety(),c.getx(),c.gety(),COLOR); DDALine(pDC,c.getx(),c.gety(),d.getx(),d.gety(),COLOR); DDALine(pDC,d.getx(),d.gety(),b.getx(),b.gety(),COLOR);} time=5;} void CGraphicsView::OnUpdateScale(CCmdUI* pCmdUI){ pCmdUI->SetCheck(WHAT_TO_DO==ID_SCALE);} 4.7 三維圖形的變換 主要實(shí)現(xiàn)三維圖形的上下左右平移,分別繞X軸Y軸Z軸的旋轉(zhuǎn),放大和縮小,以及正方體六個(gè)面的顏色變換,除此之外,還可以選擇背景顏色的改變 4.7.1 部分代碼如下: void CGraphicsView::OnAoduomianti(){ WHAT_TO_DO=ID_AODUOMIANTI;CDrawDLG dlg1;dlg1.DoModal();} void CGraphicsView::OnUpdateAoduomianti(CCmdUI* pCmdUI){ pCmdUI->SetCheck(WHAT_TO_DO==ID_AODUOMIANTI);} void CDrawDLG::OnPaint() { CPaintDC dc(this);// device context for painting CWnd *pWnd=GetDlgItem(IDC_DRAW);pWnd->UpdateWindow();// CDC *PDC=pWnd->GetDC();Draw();} void CDrawDLG::Draw(){ CWnd *pWnd=GetDlgItem(IDC_DRAW);pWnd->UpdateWindow();CDC *pDC=pWnd->GetDC();CRect rect;pWnd->GetClientRect(rect);D v[8]={ {-fs,-fs,fs},{-fs,fs,fs},{fs,fs,fs},{fs,-fs,fs},{-fs,-fs,-fs},{-fs,fs,-fs},{fs,fs,-fs},{fs,-fs,-fs} },d[8]; POINT p0[4],p1[4],p2[4],p3[4],p4[4],p5[4],w[8];int z[8]; for(int i=0;i<8;i++){ d[i].x=v[i].x; d[i].y=(int)(v[i].y*cos(a*DU)-v[i].z*sin(a*DU)); d[i].z=(int)(v[i].y*sin(a*DU)+v[i].z*cos(a*DU)); v[i].x=(int)(d[i].x*cos(b*DU)+d[i].z*sin(b*DU)); v[i].y=d[i].y; v[i].z=(int)(d[i].z*cos(b*DU)-d[i].x*sin(b*DU)); d[i].x=(int)(v[i].x*cos(c*DU)-v[i].y*sin(c*DU)); d[i].y=(int)(v[i].x*sin(c*DU)+v[i].y*cos(c*DU)); d[i].z=v[i].z; w[i].x=d[i].x+cx; w[i].y=d[i].y+cy; z[i]=d[i].z;} p0[0]=w[0];p0[1]=w[1];p0[2]=w[2];p0[3]=w[3];p1[0]=w[4];p1[1]=w[5];p1[2]=w[6];p1[3]=w[7]; p2[0]=w[0];p2[1]=w[1];p2[2]=w[5];p2[3]=w[4];p3[0]=w[1];p3[1]=w[2];p3[2]=w[6];p3[3]=w[5];p4[0]=w[2];p4[1]=w[3];p4[2]=w[7];p4[3]=w[6];p5[0]=w[0];p5[1]=w[3];p5[2]=w[7];p5[3]=w[4];switch(Maxnum(z,7)){ case 0:fill(p0,p2,p5,0,2,5);break; case 1:fill(p0,p2,p3,0,2,3);break; case 2:fill(p0,p3,p4,0,3,4);break; case 3:fill(p0,p4,p5,0,4,5);break; case 4:fill(p1,p2,p5,1,2,5);break; case 5:fill(p1,p2,p3,1,2,3);break; case 6:fill(p1,p3,p4,1,3,4);break; case 7:fill(p1,p4,p5,1,4,5);break;}} BOOL CDrawDLG::OnInitDialog(){ CDialog::OnInitDialog();m_scroll1.SetScrollRange(-180,180);m_scroll1.SetScrollPos(0);m_scroll2.SetScrollRange(-180,180);m_scroll2.SetScrollPos(0);m_scroll3.SetScrollRange(-180,180);m_scroll3.SetScrollPos(0);m_scroll4.SetScrollRange(0,350);m_scroll4.SetScrollPos(200);m_scroll5.SetScrollRange(0,300);m_scroll5.SetScrollPos(115);m_scroll6.SetScrollRange(0.00,300.00);m_scroll6.SetScrollPos(50.00);a=b=c=0;fs=50.00;SetTimer(1,100,NULL);Ctrl=0;cx=200;cy=115;COLOR1=RGB(123,234,43);COLOR2=RGB(123,123,0);COLOR3=RGB(123,24,235);COLOR4=RGB(0,123,95);COLOR5=RGB(23,234,34);COLOR6=RGB(234,124,0);COLOR7=RGB(0,43,98);return TRUE;// return TRUE unless you set the focus to a control} void CDrawDLG::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar){ int nID=pScrollBar->GetDlgCtrlID();switch(nID){ case IDC_SCROLLBAR1: a=pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_LINELEFT: a--;break; case SB_LINERIGHT: a++;break; case SB_PAGELEFT: a-=10;break; case SB_PAGERIGHT: a+=10;break; case SB_THUMBTRACK: a=nPos;break;} if(a<-180)a=180; if(a>180)a=-180; pScrollBar->SetScrollPos(a); break;case IDC_SCROLLBAR2: b=pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_LINELEFT: b--;break; case SB_LINERIGHT: b++;break; case SB_PAGELEFT: b-=10;break; case SB_PAGERIGHT: b+=10;break; case SB_THUMBTRACK: b=nPos;break;} if(b<-180)b=180; if(b>180)b=-180; pScrollBar->SetScrollPos(b); break;case IDC_SCROLLBAR3: c=pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_LINELEFT: c--;break; case SB_LINERIGHT: c++;break; case SB_PAGELEFT: c-=10;break; case SB_PAGERIGHT: c+=10;break; case SB_THUMBTRACK: c=nPos;break;} if(c<-180)c=180; if(c>180)c=-180; pScrollBar->SetScrollPos(c); break;case IDC_SCROLLBAR4: cx=pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_LINELEFT: cx--;break; case SB_LINERIGHT: cx++;break; case SB_PAGELEFT: cx-=10;break; case SB_PAGERIGHT: cx+=10;break; case SB_THUMBTRACK: cx=nPos;break;} if(cx<0)cx=200; if(cx>350)cx=200; pScrollBar->SetScrollPos(cx); break;case IDC_SCROLLBAR5: cy=pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_LINELEFT: cy--;break; case SB_LINERIGHT: cy++;break; case SB_PAGELEFT: cy-=10;break; case SB_PAGERIGHT: cy+=10;break; case SB_THUMBTRACK: cy=nPos;break;} if(cy<0)cy=300; if(cy>300)cy=0; pScrollBar->SetScrollPos(cy); break; case IDC_SCROLLBAR6: fs=pScrollBar->GetScrollPos(); switch(nSBCode) { case SB_LINELEFT: fs--;break; case SB_LINERIGHT: fs++;break; case SB_PAGELEFT: fs-=0.55;break; case SB_PAGERIGHT: fs+=0.55;break; case SB_THUMBTRACK: fs=nPos;break;} if(fs<0)fs=50; if(fs>300)fs=50; pScrollBar->SetScrollPos(fs); break;// UpdateData(FALSE);} // Invalidate();Draw();CDialog::OnHScroll(nSBCode, nPos, pScrollBar);} void CDrawDLG::OnOK(){ KillTimer(1); CDialog::OnOK();} int CDrawDLG::Maxnum(int *p, int n){ int max=p[0];int x;for(int i=0;i<=n;i++){ if(max<=p[i]) { max=p[i];x=i;} } return x;} void CDrawDLG::fill(POINT *x, POINT *y, POINT *z, int i,int j,int q){ CWnd *pWnd=GetDlgItem(IDC_DRAW);pWnd->UpdateWindow();CDC *pDC=pWnd->GetDC();CRect rect;pWnd->GetClientRect(rect); CDC dcmem;dcmem.CreateCompatibleDC(pDC);CBitmap bmp,*oldbmp;bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());oldbmp=dcmem.SelectObject(&bmp);CBrush brush[6];brush[0].CreateSolidBrush(COLOR1);brush[1].CreateSolidBrush(COLOR2);brush[2].CreateSolidBrush(COLOR3);brush[3].CreateSolidBrush(COLOR4);brush[4].CreateSolidBrush(COLOR5);brush[5].CreateSolidBrush(COLOR6);CBrush *oldbrush=dcmem.SelectObject(&brush[i]);dcmem.FillSolidRect(rect,COLOR7);dcmem.Polygon(x,4);dcmem.SelectObject(&brush[j]);dcmem.Polygon(y,4);dcmem.SelectObject(&brush[q]);dcmem.Polygon(z,4);dcmem.SelectObject(oldbrush);for(int b=0;b<6;b++)brush[b].DeleteObject();pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(), &dcmem,0,0,SRCCOPY);dcmem.SelectObject(oldbmp);bmp.DeleteObject();dcmem.DeleteDC();} 4.7.2 運(yùn)行結(jié)果如下: (1)實(shí)現(xiàn)多面體的上下左右平移(2)實(shí)現(xiàn)多面體的繞軸旋轉(zhuǎn): (3)實(shí)現(xiàn)多面體的放大縮小: (4)實(shí)現(xiàn)多面體及背景的顏色設(shè)置: (5)三維圖形變換整體圖形 五、實(shí)驗(yàn)心得體會(huì) 在本次課程設(shè)計(jì)過程中,基本掌握了計(jì)算機(jī)圖形學(xué)關(guān)于圖形繪制變換的基礎(chǔ)知識(shí),DDA法畫直線和中心點(diǎn)法畫圓及橢圓的方法,還對(duì)圖形的變換及需要用到的一系列的函數(shù)有了相應(yīng)的理解,也了解的很多有關(guān)于圖形學(xué)中三維圖形的變換的知識(shí)。不過都只是皮毛而已,從中鍛煉了自己的動(dòng)手做實(shí)驗(yàn)的能力,但同時(shí)也讓自己看清了自己的水平,以便在以后的生活里多加強(qiáng)有關(guān)這方面的學(xué)習(xí),從而提升自己在圖形學(xué)方面的知識(shí)水平。 在本次課程設(shè)計(jì)中,設(shè)計(jì)方案存在著很多的死板化的實(shí)現(xiàn)方法,也是很不人性化的一點(diǎn),只提供了畫一種曲線的方法,且畫出的曲線只能移動(dòng),此為本次設(shè)計(jì)方案的不足之一;然后就是能實(shí)現(xiàn)曲面和多邊形的繪制,卻沒有對(duì)應(yīng)的實(shí)現(xiàn)繪制好圖形后直接對(duì)其進(jìn)行平移、選擇等變換,此為設(shè)計(jì)方案不足之二。再者就是三維圖形只能實(shí)現(xiàn)變換不能實(shí)現(xiàn)繪制,此為設(shè)計(jì)方案不足之三。鑒于個(gè)人能力真的有限,所以只能設(shè)計(jì)出此種級(jí)別的效果了。因?yàn)閷?shí)驗(yàn)重要的只是思想過程,效果的不美觀只能是因?yàn)閷W(xué)習(xí)的知識(shí)還遠(yuǎn)遠(yuǎn)不夠,所以不能設(shè)計(jì)出完美的全面的圖形繪制變換程序。 經(jīng)過此次設(shè)計(jì),使我學(xué)到了很多東西,在沒有開始做程序之前,沒有任何思路,不知道該從哪里入手,可能是因?yàn)樽约浩綍r(shí)不認(rèn)真聽課的緣故。后來經(jīng)過上網(wǎng)查詢資料,翻閱參考書,在別人做的程序的啟發(fā)下,才有了做此程序設(shè)計(jì)的眉目。在設(shè)計(jì)過程中遇到了很多的問題,在這里需要感謝王征風(fēng)老師的幫助和指導(dǎo),以及同學(xué)的幫助,最后一個(gè)個(gè)問題都被解決了,寫出了完整的程序設(shè)計(jì)。最后也發(fā)現(xiàn),其實(shí)只要努力,寫出一個(gè)設(shè)計(jì)不是很困難,重要的是自己在寫程序的過程中,要會(huì)學(xué)習(xí),會(huì)查閱資料。這次的課程設(shè)計(jì)讓我學(xué)習(xí)到了很多,以后我會(huì)努力提高自己在圖形學(xué)方面的知識(shí)水平。 Good morning ladies and gentlemen, I’m Eva.Welcome to BYD Technology City.It’s a great honor to have the opportunity to give you a short introduction.Baoding, as the hometown of many celebrities, has a history of 3000 years, also known as an important fortress in ancient China.The name of the city came from “protecting the capital and stabilizing the nation”.Nowadays, there are 17 colleges and universities , and 120 technology platforms in Baoding, which provide us an inexhaustible supply of personnel in demand.Meanwhile, our advanced manufacturing industry cluster is taking shape, including world leading companies like Great Wall Motor Company Ltd.and Yingli Solar, laying solid foundation for the development of BYD Technology City.As we all know, a proper opportunity is also vital.2014, the coordinated development of beijing-tianjin-hebei had become a national strategy, which will definitely lead to an economic boom in Baoding.That’s an unprecedented opportunity for us.As we can see in this picture, Baoding , Beijing, Tianjin formed a triangle, the distance between each two of them is approximately 140kms, which gives Baoding an unparalleled advantage.In April 2015,BYD Technology City had been included in the Coordinated development of Beijing-Tianjin-Hebei Outline, which made it a national strategy platform that can ease the pressure of Beijing and Tianjin, and put the technology ideas produced in Beijing and Tianjin into practice.After background briefing, lets have a look at the specific plan of BYD Technology City.Our short term plan is “a city with two areas and five towns”, with a total area of 385 square kilometers, as you can see in the picture.The “two areas” are the main area in the left, and the culture and tourism area in the right.Our five technology towns located at the green corridor between the two regions, attracting famous foreign and domestic companies.The long term plan is to expand the city to “1+n” parks, forming an organic whole.The red part is the main area, which has a very convenient traffic with Baoding east station in its center.The green part is the culture and tourism area, which is a peninsula with enchanting scenes.Let’s take a closer look at the main area.We have comprehensive area, modern commercial area, research and education area, industry area, Guogongying cultural village and residential area.In this map we can see the splendid traffic system.We have 7 express ways, 4 railways, Beijing new airport under planning and the high-speed rail from Baigou to it.This splendid external traffic system connected BYD technology city with the world.We also have a convenient internal one, with Baiyangdian boulevard, central boulevard , Baoxin boulevard , Xuqing fast road and Ronggao fast road.There are also Jinggangao express way and Jingguang passenger dedicated line running through the main area.Reasonable industry arrangement along with good transportation and traffic provide vast development space to all our business friends.High-end equipment manufacturing, new energy, health and new generation of IT industries are the main ones in the main area, while the culture and tourism area focuses on creative industries and modern agriculture.As the biggest wet land in Hebei Province, Baiyangdian has a great influence on the climate of the surrounding areas.With ecological restoration as its principle, BYD Technology city has planned an ecology network system to improve the basic environment.So that we can attract people we need.Here is our last picture.A picture about beautiful villages and four demonstration parks of modern agriculture, which will boost the economy and promote the living standard.Let’s take a brief look at the sand table.This is where we are now.This is Hebei University.This is Baoding College.Here is Baoding east station.The area surrounded by the red line is the main area I just introduced.We can see our five technology towns scattered in the green corridor.To the far right is the culture and tourism area.Now we have prepared a short video for you, so that you can have a better view of BYD Technology City.It is a privilege to have you as our honorable guests.I wish you a wonderful and successful trip in China.Thank you for your time!第五篇:展廳講解稿英文版