2021年計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得word版_第1頁
2021年計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得word版_第2頁
2021年計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得word版_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、精編word版 下載可編輯酒算機(jī)圖形學(xué)是20世紀(jì)60年代以后,隨著計(jì)算機(jī)技術(shù)(包括計(jì)算機(jī)硬件技術(shù)和軟件技術(shù))的發(fā)展和完善而形成的一門新興學(xué)科。下面是為大家收集整理的計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得,歡迎大家閱讀。計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得篇1一、實(shí)驗(yàn)?zāi)康牧私饬河褩澦惴ê途幋a裁剪算法并利用該算法思想實(shí)現(xiàn)某一圖形或直線段的裁剪,加深對梁友棟算法和編碼裁剪算法的理解。二、實(shí)驗(yàn)內(nèi)容利用梁友棟算法(參數(shù)化線段裁剪算法)或編碼裁剪算法變成實(shí)現(xiàn)對直線段或者任一圖形的裁剪。三、實(shí)驗(yàn)原理梁友棟算法簡介如下設(shè)線段兩端點(diǎn)坐標(biāo)分別為p1(x1,y1)和p2(x2,y2),則其參數(shù)化直線方程可寫成下列形式0u1當(dāng)u=0時(shí),得點(diǎn)p1,當(dāng)u

2、=1時(shí),得點(diǎn)p2。線段的裁剪條件可以由下面的不等式表示 wxlx1uxwxr;wyby1uywyt這四個(gè)不等式可以表示為upkqk k=1,2,3,4其中,參數(shù)p,q定義為p1-x, q1x1wxlp2x, q2wxrx1p3-y, q3y1wybp4y, q4wyty1下標(biāo)k=1,2,3,4分別對應(yīng)裁剪窗口的左、右、下、上四條邊界線。如果線段平行于裁剪窗口的某兩邊界,則必有相應(yīng)的pk0,如果還滿足qk0,則線段的端點(diǎn)位于窗口外部,即線段在窗口外,應(yīng)該舍棄。如果qk0,線段在窗口內(nèi)。當(dāng)pk0時(shí),直線是從裁剪窗口第k條邊界線的內(nèi)部延伸到外部。當(dāng)pk不等于零時(shí),可以計(jì)算出線段與第k條裁剪窗口邊界線

3、的交點(diǎn)參數(shù) 根據(jù)定義,對于每條線段,pk中必有兩個(gè)小于零,而另兩個(gè)大于零。對于小于零的pk,直線同第k條裁剪窗口邊線是從外到內(nèi)相遇的,此時(shí)如果線段同第k條裁剪窗口邊界線有交點(diǎn)的話,是參數(shù)u從0變大時(shí)遇到的,這時(shí)計(jì)算出相應(yīng)的rk值,取0和各個(gè)rk值之中的最大值記為u1。與此相反,對于大于零的pk,計(jì)算出相應(yīng)的rk值,取1和各個(gè)rk值之中的最小值記為u2。兩個(gè)參數(shù)u1和u2定義了在裁剪窗口內(nèi)的線段部分。如果u1u2,則線段完全落在裁剪窗口之外,應(yīng)被舍棄。否則被裁剪線段可見部分的端點(diǎn)由參數(shù)u1和u2計(jì)算出來。四、實(shí)驗(yàn)環(huán)境windows xp visualc+0五、實(shí)驗(yàn)步驟盔入visualc+0環(huán)境,

4、在菜單中選擇“filenewprojects”,然后選擇“mfcappwizard(exe)”新建一個(gè)工程文件單擊“ok”,在彈出的對話框中選擇“single document”,單擊“finish”,在visualc+0編程界面中選擇cmyview單擊右鍵,選擇“add member function”,在彈出的對話框中添寫“void”和函數(shù)名。/ 圖形裁減view.cpp : implementation of the cmyview class/#include stdafx.h#include 圖形裁減.h#include 圖形裁減doc.h#include 圖形裁減view.h#if

5、def _debug#define new debug_new#undef this_filestatic char this_file=_file_;#endif/ cmyviewimplement_dyncreate(cmyview, cview)begin_message_map(cmyview, cview)/afx_msg_map(cmyview)/ note - the classwizard will add and remove mapping macros here./ do not edit what you see in these blocks of generated

6、 code!/afx_msg_map/ standard printing commandson_command(id_file_print, cview:onfileprint)on_command(id_file_print_direct, cview:onfileprint)on_command(id_file_print_preview, cview:onfileprintpreview)end_message_map/ cmyview construction/destructioncmyview:cmyview/ todo: add construction code herecm

7、yview:cmyviewbool cmyview:precreatewindow(createstruct& cs)/ todo: modify the window class or styles here by modifying/ the createstruct csreturn cview:precreatewindow(cs);/ cmyview drawingvoid cmyview:ondraw(cdc* pdc)cmydoc* pdoc=getdocument;assert_valid(pdoc);lineclip;/ todo: add draw code for nat

8、ive data here/ cmyview printingbool cmyview:onprepareprinting(cprintinfo* pinfo)/ default preparationreturn doprepareprinting(pinfo);void cmyview:onbeginprinting(cdc* , cprintinfo* )/ todo: add extra initialization before printingvoid cmyview:onendprinting(cdc* , cprintinfo* )/ todo: add cleanup aft

9、er printing/ cmyview diagnostics#ifdef _debugvoid cmyview:assertvalid constcview:assertvalid;void cmyview:dump(cdumpcontext& dc) constcview:dump(dc);cmydoc* cmyview:getdocument / non-debug version is inlineassert(m_pdocument-iskindof(runtime_class(cmydoc);return (cmydoc*)m_pdocument;#endif /_debug/

10、cmyview message handlersvoid cmyview:lineclip/使用梁友棟-basky直線裁剪算法cdc* pdc=getdc;/取得繪圖設(shè)備環(huán)境上下文指針/設(shè)置不同顏色畫筆cpen newpen1(ps_solid,0,rgb(183,198,0);/窗口顏色cpen newpen2(ps_solid,0,rgb(0,0,1);/待裁剪線段顏色cpen newpen3(ps_solid,0,rgb(160,1,255);/裁剪后可見線段顏色/輔助變量float p4,q4,u4;float u1,u2,r4;int x1,y1,x2,y2,x0,y0,x3,y3;

11、int dx,dy,k;int wxl=300,wxr=450,wyb=100,wyt=400;/繪制裁剪窗口pdc-selectobject(&newpen1);pdc-rectangle(wxl,wyt,wxr,wyb);x1=100;y1=200;x2=600;y2=400;/繪制被裁剪線段pdc-selectobject(&newpen2);pdc-moveto(x1,y1);pdc-lineto(x2,y2);/計(jì)算dx=x2-x1;dy=y2-y1;p0=(float)-dx;p1=(float)dx;p2=(float)-dy;p3=(float)(dy);q0=(float)(

12、x1-wxl);q1=(float)(wxr-x1);q2=(float)(y1-wyb);q3=(float)(wyt-y1);for(k=0;k4;k+)if (pk=0)/垂直或水平線段,由不為0的另外兩個(gè)參數(shù)確定可見部分uk=1000;elserk=qk/pk;if(pkrk)0:rk;/取用0與rk中的大值elseuk=(rk1)rk:1;/取用1與rk中的小值/參數(shù)在0-1之間變化,超出為無效參數(shù)u1=0.0;u2=0;for(k=0;k4;k+)if(pku1)uk:u1;/取用0與uk中的大值elseu2=(uk/滿足條件為可見部分線段if(u1selectobject(&ne

13、wpen3);pdc-moveto(x0,y0);pdc-lineto(x3,y3);六、實(shí)驗(yàn)結(jié)果與分析本圖中矩形內(nèi)紫色線段為裁剪之后可見線段,外部的黑色線段部分為帶裁剪部分。七、實(shí)驗(yàn)中遇到的問題及解決方法對于visualc+0的工程文件即mfc的環(huán)境不熟悉,開始時(shí)編寫視圖view下的程序在步驟上尚有困難,不知道該怎樣使用該環(huán)境,再參考了一些相關(guān)書籍和求教于其他人之后,這個(gè)問題得到了解決。最初只是在后面添加了自編程序,并沒有在“ondraw”里面加入該程序的調(diào)用,程序編譯沒有錯(cuò)誤,但運(yùn)行后只是一個(gè)窗口,并沒有圖像,后來在同學(xué)的幫助下發(fā)現(xiàn)了這個(gè)錯(cuò)誤,改正后程序順利運(yùn)行。程序編寫過程中的語法不再是

14、問題,偶爾有疏忽的時(shí)候,編譯時(shí)一般就能改正了。在程序編寫時(shí)對于點(diǎn)的坐標(biāo)值不是很注意,隨意定義了一些點(diǎn),造成直線畫到了圖形的外面。計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得篇2酒算機(jī)圖形學(xué)是利用計(jì)算機(jī)研究圖形的表示、生成、處理和顯示的科學(xué)。簡單地說,計(jì)算機(jī)圖形學(xué)的主要研究內(nèi)容就是研究如何在計(jì)算機(jī)中表示圖形、以及利用計(jì)算機(jī)進(jìn)行圖形的計(jì)算、處理和顯示的相關(guān)原理與算法。圖形通常由點(diǎn)、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。從處理技術(shù)上來看,圖形主要分為兩類,一類是基于線條信息表示的,如工程圖、等高線地圖、曲面的線框圖等,另一類是明暗圖,也就是通常所說的真實(shí)感圖形。經(jīng)過30多年的發(fā)展,計(jì)算機(jī)圖形學(xué)已成為

15、計(jì)算機(jī)科學(xué)中最為活躍的分支之一,并得到廣泛的應(yīng)用。在科技高度發(fā)展的今天,計(jì)算機(jī)在人們之中的作用越來越突出。而c語言作為一種計(jì)算機(jī)的語言,我們學(xué)習(xí)它,有助于我們更好的了解計(jì)算機(jī),更好的學(xué)習(xí)計(jì)算機(jī)圖形學(xué)。因此,c語言對我們計(jì)算機(jī)圖形學(xué)的學(xué)習(xí)尤其重要,而我們也需要一定的c語言基礎(chǔ)知識。在這個(gè)學(xué)期里,我們班級的學(xué)生在計(jì)算機(jī)圖形學(xué)老師何老師的帶領(lǐng)下進(jìn)行了計(jì)算機(jī)圖形學(xué)的上機(jī)實(shí)踐學(xué)習(xí)。在這之前,我們已經(jīng)對c語言這門課程學(xué)習(xí)了一個(gè)學(xué)期,對其有了一定的了解和掌握,這對我們計(jì)算機(jī)圖形的學(xué)習(xí)打下了良好的基礎(chǔ)。但是,萬事開頭難,在計(jì)算機(jī)圖形學(xué)的上機(jī)實(shí)踐的過程中還是遇到了一些問題。上機(jī)實(shí)驗(yàn)是學(xué)習(xí)計(jì)算機(jī)圖形學(xué)必不可少的實(shí)

16、踐環(huán)節(jié),上課學(xué)習(xí)到的知識都需要通過c語言編程做出程序來真正掌握它。對于計(jì)算機(jī)圖形學(xué)的學(xué)習(xí)目的,可以概括為圖形的表示、圖形的生成、圖形的處理和顯示,這些都必須通過充分的實(shí)際上機(jī)操作才能完成。我們上機(jī)實(shí)驗(yàn)總共包括七個(gè), 每個(gè)實(shí)驗(yàn)之前老師都會給我們做詳細(xì)的介紹,具體的操作步驟老師也給了一個(gè)參考書,這樣的話,我們在上機(jī)過程中也省去了很多麻煩,節(jié)約了很多時(shí)間。因此,我們才有了充裕的時(shí)間來理解實(shí)驗(yàn)原理,并結(jié)合自己的想象力,編寫出屬于自己的程序。學(xué)習(xí)計(jì)算機(jī)圖形學(xué)除了課堂講授以外,必須保證有不少于課堂講授學(xué)時(shí)的上機(jī)時(shí)間。因?yàn)閷W(xué)時(shí)所限,課程安排在周四晚上統(tǒng)一上機(jī)實(shí)驗(yàn),所以我們需要有效地利用上機(jī)實(shí)驗(yàn)的機(jī)會,盡快掌

17、握理解計(jì)算機(jī)圖形學(xué)的基礎(chǔ)知識,為今后的繼續(xù)學(xué)習(xí)打下一個(gè)良好的基礎(chǔ)。課程上機(jī)實(shí)驗(yàn)的目的,不僅僅是驗(yàn)證教材和講課的內(nèi)容、檢查自己所編的程序是否正確,課程安排的上機(jī)實(shí)驗(yàn)的目的可以概括為如下幾個(gè)方面居深對課堂講授內(nèi)容的理解課堂上要講授許多關(guān)于計(jì)算機(jī)圖形學(xué)的知識和原理,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c程序這個(gè)工具解決實(shí)際學(xué)習(xí)中的問題,通過多次上機(jī)練習(xí),在理解的基礎(chǔ)上就會自然而然地掌握計(jì)算機(jī)圖形學(xué)圖形生成的算法和處理方式。對于一些內(nèi)容自己認(rèn)為在課堂上聽懂了,但上機(jī)實(shí)踐中會發(fā)現(xiàn)原來理解的偏差,編寫出來的程序無法運(yùn)行,這是由于大部分學(xué)生c語言基礎(chǔ)只是不夠牢固的原因。學(xué)習(xí)計(jì)算機(jī)

18、圖形學(xué)不能停留在學(xué)習(xí)它的程序語言,而是利用學(xué)到的知識編寫c語言程序來驗(yàn)證自己的想法,深入理解圖形生成的原理,解決實(shí)際問題。即把c語言作為工具,描述解決實(shí)際問題的步驟,由計(jì)算機(jī)幫助我們解題。只有通過上機(jī)才能檢驗(yàn)自己是否掌握c語言、自己編寫的程序是否能夠正確運(yùn)行、對計(jì)算機(jī)的理解是否到位。通過上機(jī)實(shí)驗(yàn)來驗(yàn)證自己編制的程序是否正確,恐怕是大多數(shù)同學(xué)在完成老師作業(yè)時(shí)的心態(tài)。但是在程序設(shè)計(jì)領(lǐng)域里這是一定要克服的傳統(tǒng)的、錯(cuò)誤的想法。因?yàn)樵谶@種思想支配下,可能你會想辦法去掩蓋程序中的錯(cuò)誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。而且計(jì)算機(jī)圖形學(xué)上機(jī)實(shí)驗(yàn)是依附在c語言編程基礎(chǔ)之上的,我們對圖形生成算法的理解要通過

19、c程序才能體現(xiàn)出來。通過這次為數(shù)不多的幾天計(jì)算機(jī)實(shí)踐學(xué)習(xí),我們鞏固了一些關(guān)于c語言的知識,理解了我們計(jì)算機(jī)圖形學(xué)的理論知識,這對我們將來到社會工作將會有莫大的幫助。同時(shí)它讓我知道計(jì)算機(jī)圖形的強(qiáng)大和瑰麗之處,雖然我們學(xué)的都是基本的生成算法,但是通過老師展示的幾個(gè)計(jì)算機(jī)圖形學(xué)高級程序,我們才了解到計(jì)算機(jī)圖形學(xué)可以做出非常華麗的視覺效果,而且只要你努力,任何東西都不會太難。最后,還是很慶幸能學(xué)到計(jì)算機(jī)圖形學(xué)這樣的一門課程,在學(xué)習(xí)本課程的同時(shí),已經(jīng)涉及了很多的學(xué)科,讓我們更有能力成為全方位、多特色的新世紀(jì)人才。編程能力、思維能力都獲得了提高,真是一舉多得。計(jì)算機(jī)圖形學(xué)學(xué)習(xí)心得篇3酒算機(jī)圖形學(xué)是20世紀(jì)

20、60年代以后,隨著計(jì)算機(jī)技術(shù)(包括計(jì)算機(jī)硬件技術(shù)和軟件技術(shù))的發(fā)展和完善而形成的一門新興學(xué)科。至今,計(jì)算機(jī)圖形學(xué)已在建筑,機(jī)械,電子,造船,航空,汽車,輕工,廣告,藝術(shù)等領(lǐng)域得到了廣泛的應(yīng)用??梢哉f,它幾乎影響了所有涉及領(lǐng)域,沖擊和改變著傳統(tǒng)的設(shè)計(jì)模式。一打開計(jì)算機(jī),人們首先接觸到的就是計(jì)算機(jī)圖形學(xué)的內(nèi)容,因?yàn)橛?jì)算機(jī)的用戶界面已廣泛使用了計(jì)算機(jī)圖形技術(shù)。事實(shí)上,計(jì)算機(jī)圖形技術(shù)已深入到各個(gè)領(lǐng)域。計(jì)算機(jī)圖形的生成一般包括兩種方法程序繪圖和交互繪圖。所謂程序繪圖,就是先用計(jì)算機(jī)語言(例如c語言)編好繪圖程序,然后運(yùn)行該程序并繪出圖形。而交互繪圖則是應(yīng)用交互式圖形軟件,通過交互命令(鍵盤命令,菜單命令

21、等)由計(jì)算機(jī)生成圖形。程序繪圖是交互式繪圖的基礎(chǔ)。掘單地說,計(jì)算機(jī)圖形學(xué)的主要研究內(nèi)容就是研究如何在計(jì)算機(jī)中表示圖形、以及利用計(jì)算機(jī)進(jìn)行圖形的計(jì)算、處理和顯示的相關(guān)原理與算法。圖形通常由點(diǎn)、線、面、體等幾何元素和灰度、色彩、線型、線寬等非幾何屬性組成。從處理技術(shù)上來看,圖形主要分為兩類,一類是基于線條信息表示的,如工程圖、等高線地圖、曲面的線框圖等,另一類是明暗圖,也就是通常所說的真實(shí)感圖形。 計(jì)算機(jī)圖形學(xué)一個(gè)主要的目的就是要利用計(jì)算機(jī)產(chǎn)生令人心悅目的真實(shí)感圖形。為此,必須建立圖形所描述的場景的幾何表示,再用某種光照模型,計(jì)算在假想的光源、紋理、材質(zhì)屬性下的光照明效果。所以計(jì)算機(jī)圖形學(xué)與另一門

22、學(xué)科計(jì)算機(jī)輔助幾何設(shè)計(jì)有著密切的關(guān)系。事實(shí)上,圖形學(xué)也把可以表示幾何場景的曲線曲面造型技術(shù)和實(shí)體造型技術(shù)作為其主要的研究內(nèi)容。同時(shí),真實(shí)感圖形計(jì)算的結(jié)果是以數(shù)字圖像的方式提供的,計(jì)算機(jī)圖形學(xué)也就和圖像處理有著密切的關(guān)系。這學(xué)期我們主要學(xué)習(xí)了mfc圖形編程,學(xué)習(xí)了 vc+圖形程序設(shè)計(jì)基礎(chǔ)。從中學(xué)習(xí)了如何建立mfc項(xiàng)目和簡單的輸入與輸出。三視圖即主視圖、俯視圖、側(cè)視圖是分別將三維立體對正面、水平面和側(cè)面作正投影得到的三個(gè)基本視圖。用計(jì)算機(jī)繪制立體圖的三視圖的具體步驟卡立三維空間坐標(biāo)系,這里定義一個(gè)右手直角坐標(biāo)系,即z軸正向朝上。在這個(gè)定義的坐標(biāo)系下,確定三維立體上各點(diǎn)的位置坐標(biāo),同時(shí)引入 齊次坐標(biāo)

23、。 求出所作變換相應(yīng)的四階變換矩陣,一般根據(jù)變換前后圖形上點(diǎn)的幾何關(guān)系或由已知的變換矩陣求得??髯儞Q寫出矩陣表示式,通過運(yùn)算求得三維立體上各點(diǎn)(x, y, z)竟變換后的相應(yīng)點(diǎn)(x , y)或(y , z)或(x , z),一般是二維點(diǎn)的齊次坐標(biāo)。有變換后的所有二維點(diǎn)繪出三維立體投影后的平面圖形,即為主視圖、俯視圖或側(cè)視圖。在右手直角坐標(biāo)系中,將三維立體向xoz面(正面v)作正投影,得到主視圖。由投影變換前后三維立體上點(diǎn)到主視圖上點(diǎn)的關(guān)系,可知此投影變換的變換矩陣為10tv=0 0 000000100001tv主視圖的投影變換矩陣,簡稱投影矩陣。若已知三維立體上 n 個(gè)點(diǎn)(xi , yi

24、, zi),則各點(diǎn)的齊次坐標(biāo)可寫成 n4 階矩陣,主視圖的投影變換矩陣表示式為x1y1z111000x10z11x0z1 x2y2z21220000=0010 xyz10001x0z1nnnnn在繪圖時(shí),只要取x=xi , y=zi (i=1,2,n),就可在屏幕上繪出三維立體的主視圖三維立體向xoy面(水平面h)作正投影得到俯視圖。其投影變換矩陣 1000 0100 t=0000 0001為了使俯視圖與主視圖也畫在一個(gè)平面內(nèi),就要使h面繞x軸負(fù)方向轉(zhuǎn)90o,此旋轉(zhuǎn)變換矩陣為100000-10 tx= 0100 0001為了使俯視圖與主視圖間有一定的間距,還要使h面沿負(fù)z方向平移一段距離z0。其變換矩陣為 1000 0100 t=0010 00-z01因此俯視圖的投影變換矩陣為上面三個(gè)變換矩陣的連乘積,即100010001000 t=ttt=0100 00-100100hx000001000010 00-z1000100010 1000 00-10=0000 00-z1 0俯視圖的投影變換矩陣表示為x1y1z11x10(-y1-z0)1xyz11000x0(-y-z)1 2220200-102 =0000 00-z1 0xnynzn1xn0(-yn-z0)1由此得到三維立體的俯視圖上n個(gè)點(diǎn)(xi , -yi-z0) (

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論