版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 圖形學(xué)課程設(shè)計 </b></p><p> 課程設(shè)計名稱:各種二維圖形裁剪技術(shù)研究</p><p> 姓名: </p><p><b> 學(xué)號:</b></p><p><b> 學(xué)院:基礎(chǔ)學(xué)院</b></p>
2、<p> 班級:信息與計算科學(xué)2010-1</p><p><b> 指導(dǎo)老師:</b></p><p><b> 小組成員: </b></p><p><b> 目錄</b></p><p> 摘要 ……………………………………………………………2<
3、/p><p> 二維圖形裁剪……………………………………………………2</p><p> 2.1 裁剪的原理 …………………………………………………2</p><p> 2.2 裁剪的分類…………………………………………………3</p><p> 2.2.1.線段的裁剪………………………………………………3</p><
4、p> 2.2.2多邊形的裁剪……………………………………………5</p><p> 2.2.3.圓和曲線的裁剪…………………………………………6</p><p> 算法 ……………………………………………………………6</p><p> 3.1 裁剪算法………………………………………………………7</p><p> 3.2 裁
5、剪圓算法…………………………………………………9</p><p> 3.3 裁剪窗口是圓算法…………………………………………… 11</p><p> 4、心得體會…………………………………………………………12</p><p> 5、參考文獻(xiàn)…………………………………………………………12</p><p> 6、功能實(shí)現(xiàn)效果的圖片展
6、示……………………………………13</p><p><b> 1、摘要</b></p><p> 近幾十年來,計算機(jī)圖形學(xué)有了引人矚目的發(fā)展,它已廣泛應(yīng)用于計算機(jī)輔助設(shè)計、電視廣告、動畫和仿真等許多領(lǐng)域并發(fā)揮著重要作用??梢哉f計算機(jī)圖形學(xué)已經(jīng)發(fā)展成為一門成熟的學(xué)科。在各種實(shí)踐應(yīng)用中,計算機(jī)圖形學(xué)的許多基礎(chǔ)算法發(fā)揮著不可替代的重要作用,因此不斷提高和完善圖形學(xué)的基礎(chǔ)
7、算法至關(guān)重要。</p><p> 計算機(jī)圖形學(xué)是研究在計算機(jī)中如何構(gòu)造圖形,并把圖形的描述數(shù)據(jù)(數(shù)學(xué)模型)通過指定的算法轉(zhuǎn)化為圖形顯示的學(xué)科。目前,計算機(jī)圖形學(xué)的主要研究對象包括:點(diǎn)、線、面——二維圖形學(xué):體——三維圖形學(xué)以及場等的數(shù)學(xué)構(gòu)造方法與其圖形顯示以及它們的變化情況。</p><p><b> 2、二維圖形裁剪</b></p><p&g
8、t; 在使用計算機(jī)處理圖形信息時,計算機(jī)內(nèi)部存儲的圖形往往比較大,而屏幕顯示的只是圖的一部分。因此需要確定圖形中哪些部分落在顯示區(qū)之內(nèi),哪些落在顯示區(qū)之外,以便只顯示落在顯示區(qū)內(nèi)的那部分圖形。</p><p> 從數(shù)據(jù)集合中抽取所需信息即識別指定區(qū)域內(nèi)或區(qū)域外的圖形部分的過程稱為裁剪算法,簡稱裁剪。它是計算機(jī)圖形學(xué)中許多重要問題的基礎(chǔ)。裁剪典型的用途是確定場景或畫面中位于給定區(qū)域之內(nèi)的部分。這一區(qū)域稱為裁剪窗
9、口。</p><p> 最簡單的裁剪方法是把各種圖形掃描轉(zhuǎn)換為點(diǎn)之后,再判斷各點(diǎn)是否在窗口內(nèi)。但那樣太費(fèi)時,一般不可取。這是因?yàn)橛行﹫D形組成部分全部在窗口外,可以完全排除,不必進(jìn)行掃描轉(zhuǎn)換。</p><p> 所以,一般采用先裁剪再掃描轉(zhuǎn)換的方法。</p><p> 裁剪的應(yīng)用包括:從定義的場景中抽取出用于觀察的部分;在三維視圖中標(biāo)識出可見面:防止線段或?qū)ο蟮?/p>
10、邊界混淆;使用實(shí)體造型來創(chuàng)建對象;顯示多窗口的環(huán)境;允許選擇圖形一部分進(jìn)行復(fù)制、移動或刪除等繪圖操作。對于不同的應(yīng)用,裁剪窗口可以是多邊形或包含有曲線邊界。 </p><p><b> 2.1裁剪的原理</b></p><p> 裁剪的基本目的是判斷圖形元素是否部分或全部落在窗口區(qū)域之內(nèi),如果是,則進(jìn)一步求出位于窗口內(nèi)的部分。裁剪處理包括兩個方面:判斷圖形元素是否
11、在窗口內(nèi)以及求圖形元素與窗口的交。</p><p> 一般把窗口定義為矩形,由上、下、左、右四條邊圍成,即:(xL,yB),(xR,yT)。裁剪的實(shí)質(zhì)就是決定圖形中哪些點(diǎn)、線段、文字以及多邊形在窗口之內(nèi)。</p><p> 對于點(diǎn)(x,y),只要判斷兩對不等式:</p><p> xL≤x≤xR,yB≤y≤yT</p><p> 若四
12、個不等式均成立。則點(diǎn)在矩形窗口之內(nèi);否則,點(diǎn)在矩形窗口之外。</p><p><b> 裁剪的分類</b></p><p> 裁剪算法大致包括對以下圖形的裁剪:</p><p> ●線段的裁剪(線段)</p><p> ●區(qū)域的裁剪(多邊形)</p><p> ●區(qū)域的裁剪(圓和曲線)&
13、lt;/p><p> 2.2.1線段的裁剪</p><p> 線段與窗口的關(guān)系有如下三種:</p><p> ?。?)線段在窗口內(nèi),線段不需剪裁,完全可見;</p><p> ?。?)線段在窗口外,即線段不需剪裁,完全不可見;</p><p> ?。?)線段部分在窗口內(nèi),部分在窗口外,即需要求出線段與窗框的交點(diǎn),并將窗
14、口外的線段部分剪裁掉,只可見窗口內(nèi)的直線部分。</p><p> 線段的裁剪算法就是要找出位于窗口內(nèi)部的起始點(diǎn)和終止點(diǎn)的坐標(biāo)。因矢量裁剪法對尋找起點(diǎn)和終點(diǎn)坐標(biāo)的處理方法相同,下面以求始點(diǎn)坐標(biāo)為例來說明線段矢量裁剪方法。</p><p> 在右圖中,窗口的四條邊界把XOY平面分成九個區(qū)域,分別用1到9對這九個窗口編號,設(shè)5號區(qū)域?yàn)橄鄳?yīng)的可見窗口區(qū),窗口的左下角點(diǎn)坐標(biāo)(minX,minY)
15、,右上角點(diǎn)坐標(biāo)為(maxX,maxY)。有一條矢量線段S,其起、終點(diǎn)的坐標(biāo)分別為(Xs,Ys)和(Xe,Ye),則對線段S按矢量裁剪的算法步驟如下:</p><p> 1、若線段完全位于區(qū)域5以外的任意區(qū)域內(nèi)或落在(1,2,3)(3,6,9)(7,8,9)(1,4,7)中任意一區(qū)域組內(nèi),即滿足下述條件之一:</p><p> 則線段S不在窗口內(nèi),不必作進(jìn)一步的求交點(diǎn)處理,否則轉(zhuǎn)下一步。
16、 2、若線段S滿足minX≤Xs≤maxX且minX≤Ys≤maxY ,則線段的起點(diǎn)在窗口內(nèi),新的起點(diǎn)坐標(biāo)(X,Y)即為(Xs,Ys);否則,按以下各步判斷S與窗口的關(guān)系以及解算其新起點(diǎn)坐標(biāo)(X,Y)。 3、若Xs<minX,即起點(diǎn)(Xs,Ys)位于窗口左邊界的左邊,則:</p><p> 此時要作以下判斷:
17、; (1) 若起點(diǎn)(minY≤Y≤maxY),則(X,Y)求解有效; (2) 若起點(diǎn)(Xs,Ys)位于4區(qū),且Xs>minY或Y>maxY,則線段S與窗口無交點(diǎn); (3) 若Y>maxY且Ys>maxY或者Y>
18、;minY且Ys<minY,則線段起點(diǎn)位于1或7區(qū)內(nèi),這時還有兩種情況: (a)當(dāng)起點(diǎn)在1區(qū)且Ye>maxY或當(dāng)起點(diǎn)位于7區(qū)且Ye< minY時,線段與窗口沒有交點(diǎn);否則還需作下面的判別; (b)若Ys<minY,則:<
19、;/p><p> 若Ys>maxY,則:</p><p> 用(4-2-2)和(4-2-3)式求出的X若滿足minX≤X≤maxX,則(X,Y)的求解有效,否則線段與窗口仍無交點(diǎn)。 4、當(dāng)Xs>maxX ,即線段起點(diǎn)位于窗口右界的右邊,可仿照上述過程求出線段與右邊界的交點(diǎn)。 5、若起點(diǎn)(Xs,Ys)位于2或
20、8區(qū)時,求解線段與窗口邊界的交點(diǎn)公式為(4-2-4)和(4-2-5)式。</p><p> 用式(4-2-4)和(4-2-5)求解得X在滿足minX≤X≤maxX時才有效,否則線段不在窗口內(nèi)。 同理,可求解出線段在窗口內(nèi)新的終點(diǎn)坐標(biāo)。 2.2.2 多邊形的裁剪 多邊形是計算機(jī)制圖中常用的圖形元素,大到行政區(qū)域,
21、小到各種地物圖塊,都是多邊形元素。 多邊形的裁剪比直線要復(fù)雜得多。因?yàn)榻?jīng)過裁剪后,多邊形的輪廓線仍要閉合,而裁剪后的邊數(shù)可能增加,也可能減少,或者被裁剪成幾個多邊形,這樣必須適當(dāng)?shù)夭迦氪翱谶吔绮拍鼙3侄噙呅蔚姆忾]性。這就使得多邊形的裁剪不能簡單地用裁剪直線的方法來實(shí)現(xiàn)。 對于多邊形的裁剪,人們研究出了多種算法,其中薩瑟蘭德-霍奇曼(S
22、utherland-Hodgman)算法是根據(jù)相對于一條邊界線裁剪多邊形比較容易這一點(diǎn),把整個多邊形先相對于窗口的第一條邊界裁剪,然后再把形成的新多邊形相對于窗口的第二條裁剪,如此進(jìn)行到窗口的最后一條邊界,從而把多邊形相對于窗口的全部邊界進(jìn)行了裁剪。</p><p> 其算法描述為: 1.取多邊形頂點(diǎn)Pi(i=1,2,…,n) ,將其相對于窗口的第一條邊界進(jìn)行判別
23、,若點(diǎn)Pi位于邊界的靠窗口一側(cè),則把Pi記錄到要輸出的多邊形頂點(diǎn)中,否則不作記錄。 2.檢查Pi點(diǎn)與Pi-1點(diǎn)(i=1時,檢查Pi與Pn點(diǎn))是否位于窗口邊界的同一側(cè)。若是,Pi點(diǎn)記錄與否,隨Pi-1點(diǎn)是否記錄而定;否則計算出PiPi-1與窗口邊界的交點(diǎn),并將它記錄到要輸出的多邊形的頂點(diǎn)中去。 3.如此而已判別所有的頂點(diǎn)P1P2…Pn后,得到一
24、個新的多邊形Q11,Q12,…,Qm,然后用新的多邊形重復(fù)上述步驟1、2,依次對窗口的第二、第三和第四條邊界進(jìn)行判別,判別完后得到的多邊形Q14,Q24,…,Qm4即為裁剪的最后結(jié)果。</p><p> 如上圖所示,演示了多邊形的裁剪過程:</p><p> ?。?)首先對窗口的右邊界進(jìn)行判別,從多邊形的頂點(diǎn)P1開始依次判斷。P1在右邊界不可見一側(cè),故不記錄P1點(diǎn),且P1和P6在右邊界同
25、側(cè),則也不與右邊界求交點(diǎn)。 P2點(diǎn)在右邊界可見一側(cè),且P2和P1在右邊界異側(cè),因此求出P2P1與右邊界交點(diǎn)記作Q1,同時把P2點(diǎn)記錄下來作為(Q2)。 P3點(diǎn)在右邊界不可見一側(cè),但P3和P2在右邊界異側(cè),因此求出P3P2與右邊界交點(diǎn)記作Q3。
26、160; P4點(diǎn)在右邊界可見一側(cè),且P4和P3在右邊界異側(cè),因此求出P4P3與右邊界交點(diǎn)記作Q4,同時把P4點(diǎn)記錄下來作為(Q5)。 P5點(diǎn)在右邊界不可見一側(cè),但P5和P4在右邊界異側(cè),因此求出P5P4的右邊界交占記作Q6。 P6點(diǎn)在右邊界不可見一側(cè),且P6和P5在右邊界同側(cè),因此不求
27、交點(diǎn)也不記錄P6點(diǎn)。 這樣就得到了新多邊形Q1,(Q2),Q3,Q4,(Q5),Q6 (2)把新得到的多邊形Q1,(Q2),Q3,Q4,(Q5),Q6對窗口的下邊界進(jìn)行判斷,同理可得到新的多邊形Q1,(Q2),Q3,Q4,Q5,Q6 (3)新得到的多邊形與窗口左邊<
28、/p><p><b> 3、算法</b></p><p><b> 3.1裁剪算法</b></p><p> procedure TComputerGrapicsMainForm.Clip1Click(Sender: TObject);</p><p><b> var</b&g
29、t;</p><p> i,j,Outside,Clip:Integer;</p><p> xystring:string;</p><p> Label tryagain;</p><p> Label NextLine;</p><p><b> begin</b></p&
30、gt;<p> //Window's coordinates</p><p> W1:=90;W2:=270;w3:=40;w4:=160;</p><p> //x coordinates y coordinates</p><p> XY_Lines[1,1,1]:=110; XY_Lines[1,1,2]:
31、=10;</p><p> XY_Lines[1,2,1]:=290; XY_Lines[1,2,2]:=70;</p><p> XY_Lines[2,1,1]:=290; XY_Lines[2,1,2]:=70;</p><p> XY_Lines[2,2,1]:=250; XY_Lines[2,2,2]:=190;</p><p
32、> XY_Lines[3,1,1]:=250; XY_Lines[3,1,2]:=190;</p><p> XY_Lines[3,2,1]:=70; XY_Lines[3,2,2]:=130;</p><p> XY_Lines[4,1,1]:=70; XY_Lines[4,1,2]:=130;</p><p> XY_Lines[4,2,
33、1]:=110; XY_Lines[4,2,2]:=10;</p><p> XY_Lines[5,1,1]:=160; XY_Lines[5,1,2]:=10;</p><p> XY_Lines[5,2,1]:=160; XY_Lines[5,2,2]:=180;</p><p> XY_Lines[6,1,1]:=10; XY_Lines[6,
34、1,2]:=100;</p><p> XY_Lines[6,2,1]:=300; XY_Lines[6,2,2]:=100;</p><p> XY_Lines[7,1,1]:=10; XY_Lines[7,1,2]:=10;</p><p> XY_Lines[7,2,1]:=30; XY_Lines[7,2,2]:=70;</p>&
35、lt;p> XY_Lines[8,1,1]:=120; XY_Lines[8,1,2]:=70;</p><p> XY_Lines[8,2,1]:=250; XY_Lines[8,2,2]:=150;</p><p> Canvas.Pen.Color := clRed;//Draw 6 lines in red color</p><p> F
36、or i:=1 to 8 do</p><p><b> begin</b></p><p> Canvas.MoveTo(10+XY_Lines[i,1,1],400-XY_Lines[i,1,2]);</p><p> Canvas.LineTo(10+XY_Lines[i,2,1],400-XY_Lines[i,2,2]);<
37、/p><p> end; //Draw clipping retangle window in yellow</p><p> Canvas.Pen.Color := clYellow;//Draw window in yellow color</p><p> Canvas.MoveTo(10+90,400-40);</p><p>
38、Canvas.LineTo(10+270,400-40);</p><p> Canvas.MoveTo(10+270,400-40);</p><p> Canvas.LineTo(10+270,400-160);</p><p> Canvas.MoveTo(10+270,400-160);</p><p> Canvas.Lin
39、eTo(10+90,400-160);</p><p> Canvas.MoveTo(10+90,400-160);</p><p> Canvas.LineTo(10+90,400-40);</p><p> for i:=1 to 8 do</p><p><b> begin</b></p>
40、<p> for j:=1 to 2 do</p><p><b> begin</b></p><p> X[j]:=XY_Lines[i,j,1];Y[j]:=XY_Lines[i,j,2];</p><p> GetCodes(Sender,X[j],Y[j],j);//check points of lines is
41、outside the window?</p><p> XYString:=IntToStr(L[j])</p><p> +','+IntToStr(R[J])+</p><p> ','+IntToStr(B[J])+</p><p> ','+IntToStr(T[j]);<
42、;/p><p> Memo1.Lines.add(XYString);//Show x,y coordinates to have a check</p><p><b> end;</b></p><p> for j:=1 to 2 do</p><p><b> begin</b><
43、/p><p><b> tryagain:</b></p><p> Outside:=L[1]*L[2]+R[1]*R[2]+B[1]*B[2]+T[1]*T[2];</p><p> if outside<>0 then goto NextLine;</p><p> if Outside=0 the
44、n //the lines is inside the window</p><p><b> begin</b></p><p> Clip:=L[j]+R[j]+B[j]+T[j];</p><p> if Clip<>0 then //Get new cliped coordinates of lines&l
45、t;/p><p><b> begin</b></p><p> ClipSubProgram(sender,j);goto tryagain;</p><p><b> end;</b></p><p><b> end;</b></p><p>
46、<b> end;</b></p><p> //Draw Cliped lines in blue color</p><p> Canvas.Pen.Color:=clBlue;</p><p> Canvas.MoveTo(10+trunc(X[1]),400-trunc(Y[1]));</p><p>
47、 Canvas.LineTo(10+trunc(X[2]),400-trunc(Y[2]));</p><p><b> NextLine:</b></p><p><b> end;</b></p><p><b> end;</b></p><p><b>
48、 3.2裁剪圓算法</b></p><p> Procedure TComputerGrapicsMainForm.ClipCircle1Click(Sender: TObject);</p><p><b> var</b></p><p> i,j,x0,y0,RADIUS,Outside,Clip:Integer;&l
49、t;/p><p> xystring:string;</p><p> Label tryagain;</p><p> Label NextLine;</p><p><b> begin</b></p><p> //Window's coordinates</p>
50、<p> W1:=90;W2:=270;w3:=40;w4:=160;</p><p> x0:=120;y0:=70; RADIUS:=120;</p><p> //x coordinates y coordinates</p><p> XY_Lines[1,1,1]:=110; XY_Lines[1,1,2]:=
51、10;</p><p> XY_Lines[1,2,1]:=290; XY_Lines[1,2,2]:=70;</p><p> XY_Lines[2,1,1]:=290; XY_Lines[2,1,2]:=70;</p><p> XY_Lines[2,2,1]:=250; XY_Lines[2,2,2]:=190;</p><p&
52、gt; XY_Lines[3,1,1]:=250; XY_Lines[3,1,2]:=190;</p><p> XY_Lines[3,2,1]:=70; XY_Lines[3,2,2]:=130;</p><p> XY_Lines[4,1,1]:=70; XY_Lines[4,1,2]:=130;</p><p> XY_Lines[4,2,1
53、]:=110; XY_Lines[4,2,2]:=10;</p><p> XY_Lines[5,1,1]:=160; XY_Lines[5,1,2]:=10;</p><p> XY_Lines[5,2,1]:=160; XY_Lines[5,2,2]:=180;</p><p> XY_Lines[6,1,1]:=10; XY_Lines[6,1
54、,2]:=100;</p><p> XY_Lines[6,2,1]:=300; XY_Lines[6,2,2]:=100;</p><p> XY_Lines[7,1,1]:=10; XY_Lines[7,1,2]:=10;</p><p> XY_Lines[7,2,1]:=30; XY_Lines[7,2,2]:=70;</p>&l
55、t;p> XY_Lines[8,1,1]:=120; XY_Lines[8,1,2]:=70;</p><p> XY_Lines[8,2,1]:=250; XY_Lines[8,2,2]:=150;</p><p> Canvas.Pen.Color := clRed;//Draw 6 lines in red color</p><p> Fo
56、r i:=1 to 8 do</p><p><b> begin</b></p><p> Canvas.MoveTo(10+XY_Lines[i,1,1],400-XY_Lines[i,1,2]);</p><p> Canvas.LineTo(10+XY_Lines[i,2,1],400-XY_Lines[i,2,2]);</
57、p><p> end; //Draw clipping retangle window in yellow</p><p> Canvas.Pen.Color := clYellow;//Draw window in yellow color</p><p> Canvas.MoveTo(10+90,400-40);</p><p> C
58、anvas.LineTo(10+270,400-40);</p><p> Canvas.MoveTo(10+270,400-40);</p><p> Canvas.LineTo(10+270,400-160);</p><p> Canvas.MoveTo(10+270,400-160);</p><p> Canvas.Line
59、To(10+90,400-160);</p><p> Canvas.MoveTo(10+90,400-160);</p><p> Canvas.LineTo(10+90,400-40);</p><p> for i:=1 to 360 do</p><p><b> begin</b></p>
60、<p> XY_Lines[i,1,1]:=x0+TRUNC(RADIUS*cos(i*3.14159/180));</p><p> XY_Lines[i,1,2]:=y0+TRUNC(RADIUS*sin(i*3.14159/180));</p><p> XY_Lines[i,2,1]:=x0+TRUNC(RADIUS*cos((i-1)*3.14159/180))
61、;</p><p> XY_Lines[i,2,2]:=y0+TRUNC(RADIUS*sin((i-1)*3.14159/180));</p><p> for j:=1 to 2 do</p><p><b> begin</b></p><p> X[j]:=XY_Lines[i,j,1];Y[j]:=XY
62、_Lines[i,j,2];</p><p> GetCodes(Sender,X[j],Y[j],j);//check points of lines is outside the window?</p><p> XYString:=IntToStr(L[j])</p><p> +','+IntToStr(R[J])+</p>
63、<p> ','+IntToStr(B[J])+</p><p> ','+IntToStr(T[j]);</p><p> Memo1.Lines.add(XYString);//Show x,y coordinates to have a check</p><p><b> end;</b&
64、gt;</p><p> for j:=1 to 2 do</p><p><b> begin</b></p><p><b> tryagain:</b></p><p> Outside:=L[1]*L[2]+R[1]*R[2]+B[1]*B[2]+T[1]*T[2];</p&g
65、t;<p> if outside<>0 then goto NextLine;</p><p> if Outside=0 then //the lines is inside the window</p><p><b> begin</b></p><p> Clip:=L[j]+R[j]+B[j]
66、+T[j];</p><p> if Clip<>0 then //Get new cliped coordinates of lines</p><p><b> begin</b></p><p> ClipSubProgram(sender,j);goto tryagain;</p><p>
67、;<b> end;</b></p><p><b> end;</b></p><p><b> end;</b></p><p> //Draw Cliped lines in blue color</p><p> Canvas.Pen.Color:=clBlu
68、e;</p><p> Canvas.MoveTo(10+trunc(X[1]),400-trunc(Y[1]));</p><p> Canvas.LineTo(10+trunc(X[2]),400-trunc(Y[2]));</p><p><b> NextLine:</b></p><p><b>
69、; end;</b></p><p><b> end;</b></p><p> 3.3裁剪窗口是圓算法</p><p> Procedure TComputerGrapicsMainForm.CircleWindow1Click(Sender: TObject);</p><p><b>
70、; var</b></p><p> x0,y0,Radius:integer;</p><p> x1,y1,x2,y2,length:integer;</p><p> i:integer;</p><p> X,Y,dx,dy,Distance:Single;</p><p><b&g
71、t; begin</b></p><p> x0:=120;y0:=70; Radius:=120;</p><p> canvas.Brush.Style:=bsClear;</p><p> canvas.Ellipse(x0-Radius,y0-Radius,x0+Radius,y0+Radius);</p><p>
72、; x1:=0;y1:=0;x2:=250;y2:=350;</p><p> if (abs(x2-x1)>=abs(y2-y1)) then</p><p> length:=abs(x2-x1)</p><p> else length:=abs(y2-y1);</p><p> dx:=(x2-x1)/length;&
73、lt;/p><p> dy:=(y2-y1)/length;</p><p> x:=x1+0.5; //here still can be discussed</p><p> y:=y1+0.5; //here still can be discussed</p><p> for i:=1 to length do</p>
74、;<p><b> begin</b></p><p> Distance:=sqrt((x0-x)*(x0-x)+(y0-y)*(y0-y));</p><p> if (Distance<Radius) then</p><p> canvas.Pixels [trunc(x),trunc(y)]:= clRed
75、;//Draw line in red color</p><p><b> y:=y+dy;</b></p><p><b> x:=x+dx;</b></p><p><b> end;</b></p><p><b> end;</b><
76、;/p><p><b> end.</b></p><p><b> 4、心得體會</b></p><p> 學(xué)習(xí)圖形學(xué)已經(jīng)一個學(xué)期了,但是感覺沒有學(xué)到真正的知識。但是最近一星期的課程學(xué)習(xí)讓我受益匪淺,,使我更加扎實(shí)的掌握了有關(guān)計算機(jī)圖形學(xué)方面的知識,學(xué)會了一些簡單的delphi程序語言設(shè)計,并且感覺這是一種樂趣,開始喜
77、歡這門課程了。</p><p> 雖然在課程設(shè)計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過親自動手制作,不斷改正,不斷領(lǐng)悟,不斷獲取,使我們掌握的知識不再是紙上談兵?! ∥疑羁腆w會到這門課程并不是輕而易舉就可也學(xué)好的,學(xué)習(xí)這門課程不僅需要細(xì)心嚴(yán)謹(jǐn)?shù)膽B(tài)度,還需要充分發(fā)揮我們的想象力,讓理論和實(shí)踐充分的結(jié)合在
78、一起,才能達(dá)到事半功倍的效果。細(xì)節(jié)決定成敗這句話在程序設(shè)計中最恰當(dāng)不過了,因?yàn)橐粋€小小的錯誤就可以使你的整個的程序無法進(jìn)行,有時候絞盡腦汁也沒能找出錯誤所在,只好老老實(shí)實(shí)的從新進(jìn)行編寫工作。所以課程不僅理論性強(qiáng),實(shí)際操作性更強(qiáng),沒有一個好的心態(tài)很難學(xué)好這門課程。我們學(xué)習(xí)的不僅是科學(xué)的方法,還包括用什么樣的態(tài)度去對待這門課程,并且讓自理論性和實(shí)踐性在自身得到充分的發(fā)揮,用細(xì)心嚴(yán)謹(jǐn)?shù)膽B(tài)度去認(rèn)識事物,且希望通過這次的實(shí)踐操作可以讓我更好地學(xué)習(xí)
79、。</p><p><b> 5、參考文獻(xiàn)</b></p><p> 1、Delphi實(shí)用程序100例 段興主編 唐一丁等編著 人民郵電出版社;</p><p> 2、Delphi開發(fā)答疑300問 張增強(qiáng)編著 人民郵電出版社;</p><p> 3、Delphi數(shù)字圖像處理及高級運(yùn)用 劉俊主編 科學(xué)出版社;
80、</p><p> 4、計算機(jī)圖形學(xué)算法基礎(chǔ) David F.Rogers著 機(jī)械工業(yè)出版社</p><p> 5、計算機(jī)圖形學(xué)的二維裁剪算法研究 單會秋</p><p> 6、功能實(shí)現(xiàn)效果的圖片展示</p><p><b> 基本界面</b></p><p> 1
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二維圖形的裁剪算法研究與改進(jìn).pdf
- 計算機(jī)圖形學(xué)中的二維裁剪算法研究.pdf
- 課程設(shè)計--二維數(shù)控精密工作臺
- plc課程設(shè)計--二維平動機(jī)械手
- 人機(jī)與機(jī)構(gòu)技能設(shè)計-人體二維模板課程設(shè)計
- 課程設(shè)計---二維數(shù)控精密精密工作臺設(shè)計
- barsky直線裁剪算法計算機(jī)圖形學(xué)課程設(shè)計
- linux內(nèi)核裁剪課程設(shè)計
- 兩種二維線裁剪算法的研究.pdf
- 二維圖像的小波降噪與壓縮課程設(shè)計報告
- matlab二維圖形注釋命令
- 課程設(shè)計說明書--通用二維運(yùn)動平臺設(shè)計
- 二維圖形加速引擎的設(shè)計與實(shí)現(xiàn).pdf
- 二維軟件課程整體教學(xué)設(shè)計
- 利用matlab繪制二維函數(shù)圖形
- 課程設(shè)計---基于lpc2104的二維數(shù)控平臺控制系統(tǒng)設(shè)計
- mooc課程設(shè)計應(yīng)用研究——以二維動畫制作為例
- 模塊三復(fù)雜二維圖形的繪制
- 二維碼圖形創(chuàng)意空間的研究
- 二維CAD圖形水印算法研究.pdf
評論
0/150
提交評論