計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)指導(dǎo)書2011_第1頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)指導(dǎo)書2011_第2頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)指導(dǎo)書2011_第3頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)指導(dǎo)書2011_第4頁
計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)指導(dǎo)書2011_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)指導(dǎo)書2011PAGEPAGE1《計(jì)算機(jī)圖形學(xué)》實(shí)驗(yàn)指導(dǎo)書主講:宋春花教材:計(jì)算機(jī)圖形學(xué)適應(yīng)專業(yè):軟件工程總學(xué)時(shí):40學(xué)時(shí)實(shí)驗(yàn)學(xué)時(shí):10一、實(shí)驗(yàn)?zāi)康暮鸵蟆队?jì)算機(jī)圖形學(xué)》是計(jì)算機(jī)專業(yè)本科生的一門理論性、技術(shù)性、應(yīng)用性較強(qiáng)的專業(yè)課程。實(shí)驗(yàn)?zāi)康氖牵和ㄟ^上機(jī)實(shí)踐,讓學(xué)生更好地了解和掌握計(jì)算機(jī)圖形學(xué)的基本圖形生成的各種算法、對各種算法加以比較,同時(shí)在實(shí)踐中發(fā)現(xiàn)問題、解決問題,給學(xué)生以新的啟迪,培養(yǎng)學(xué)生的創(chuàng)新能力和實(shí)際動手能力。實(shí)驗(yàn)要求:1、采用VC++程序開發(fā)環(huán)境和OpenGL圖形庫進(jìn)行課程實(shí)驗(yàn),通過實(shí)驗(yàn)掌握基本圖元-直線和圓弧生成算法;掌握曲線和曲面的基本繪制方法;掌握圖形變換算法;掌握規(guī)則和不規(guī)則實(shí)體的建模技術(shù);掌握真實(shí)感繪圖技術(shù);能夠綜合利用上述技術(shù),進(jìn)行一定復(fù)雜虛擬場景的設(shè)計(jì)。為后續(xù)的課程奠定良好的基礎(chǔ)。2、上機(jī)實(shí)驗(yàn)前,要求完成實(shí)驗(yàn)報(bào)告的實(shí)驗(yàn)?zāi)康?、理論基礎(chǔ)、算法設(shè)計(jì)及源程序初稿。實(shí)驗(yàn)程序調(diào)試過程中,可以互相討論、檢查程序中存在的問題。實(shí)驗(yàn)完成之后,應(yīng)思考算法與源程序的評價(jià)與改進(jìn)及對結(jié)果的影響等分析,提交實(shí)驗(yàn)源程序和實(shí)驗(yàn)報(bào)告。并要求用正規(guī)的實(shí)驗(yàn)報(bào)告紙和封面裝訂整齊,按時(shí)上交。二、實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境要求:硬件:普通PC386以上微機(jī);軟件:操作系統(tǒng):Windows98/2000;開發(fā)語言:TurboC、VisualC++6.0、OpenGl,或其它學(xué)生掌握的高級語言。三、實(shí)驗(yàn)項(xiàng)目為加強(qiáng)學(xué)生對計(jì)算機(jī)圖形學(xué)理論知識的進(jìn)一步理解,本實(shí)驗(yàn)設(shè)計(jì)了五次實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容力求理論性和實(shí)用性的緊密結(jié)合。實(shí)驗(yàn)一、二、三、四為基礎(chǔ)性實(shí)驗(yàn),通過編程實(shí)現(xiàn)圖形生成及處理變換的各種基本算法,從而使學(xué)生進(jìn)一步理解和牢固掌握圖形學(xué)中重要的理論知識,同時(shí)使用當(dāng)前流行的圖形和游戲開發(fā)工具OPENGL,實(shí)現(xiàn)相應(yīng)的功能,讓學(xué)生理解圖形理論的實(shí)際應(yīng)用;實(shí)驗(yàn)五為應(yīng)用性實(shí)驗(yàn),采用OPENGL對規(guī)則實(shí)體和不規(guī)則實(shí)體進(jìn)行建模。該實(shí)驗(yàn)旨在提高學(xué)生的綜合動手能力和創(chuàng)新能力,為以后從事圖形、游戲及軟件開發(fā)工作打下良好的基礎(chǔ)。實(shí)驗(yàn)一:二維基本圖形生成的算法實(shí)現(xiàn)實(shí)驗(yàn)二:圖形的裁剪實(shí)驗(yàn)三:幾何圖形變換實(shí)驗(yàn)實(shí)驗(yàn)四:BEZIER曲線和B樣條曲線的繪制實(shí)驗(yàn)五:采用OPENGL進(jìn)行實(shí)體建模實(shí)驗(yàn)一、二維基本圖形生成的算法實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn),進(jìn)一步理解和掌握DDA和中點(diǎn)算法,Bresenham算法;掌握DDA和中點(diǎn)算法,中點(diǎn)算法,Bresenham算法算法生成直線段的基本過程。掌握中點(diǎn)畫圓的算法。通過編程,會在VC++環(huán)境下完成用DDA、中點(diǎn)算法實(shí)現(xiàn)直線段的繪制和中點(diǎn)算法實(shí)現(xiàn)圓的繪制。實(shí)驗(yàn)屬性該實(shí)驗(yàn)為驗(yàn)證性實(shí)驗(yàn)。實(shí)驗(yàn)學(xué)時(shí)2學(xué)時(shí),必做實(shí)驗(yàn)。實(shí)驗(yàn)內(nèi)容用DDA算法或中點(diǎn)(Besenham)算法實(shí)現(xiàn)直線段的繪制。用中點(diǎn)(Besenham)算法實(shí)現(xiàn)橢圓或圓的繪制。實(shí)驗(yàn)步驟算法、原理清晰,有詳細(xì)的設(shè)計(jì)步驟;依據(jù)算法、步驟或程序流程圖,用VC++語言編寫源程序;編輯源程序并進(jìn)行調(diào)試;進(jìn)行運(yùn)行測試,并結(jié)合情況進(jìn)行調(diào)整;對運(yùn)行結(jié)果進(jìn)行保存與分析;打印源程序或把源程序以文件的形式提交;按格式書寫實(shí)驗(yàn)報(bào)告。原理分析DDA算法分析假設(shè)直線的起點(diǎn)坐標(biāo)為P1(x1,y1),終點(diǎn)坐標(biāo)為P2(x2,y2),x方向的增量為△x=x2-x1;y方向上增量為△y=y(tǒng)2-y1,直線的斜率為k=△y/△x當(dāng)△x>△y時(shí),讓x從x1到x2變化,每步遞增1,那么,x的變化可以表示為xi+1=xi+1,y的變化可以表示為yi+1=y(tǒng)i+k用上式可求得圖中直線P1P2和y向網(wǎng)格線的交點(diǎn),但顯示時(shí)要用舍入找到最靠近交點(diǎn)處的象素點(diǎn)耒表示。當(dāng)△x<△y時(shí),讓y遞增1,x作相應(yīng)變化。綜合考慮,按照從(x1,y1)到(x2,y2)方向不同,分8個象限。對于方向在第1a象限內(nèi)的直線而言,取增量值Dx=1,Dy=m。對于方向在第1b象限內(nèi)的直線而言,取增量值Dy=1,Dx=1/m。直線Bresenham算法分析設(shè)直線從起點(diǎn)(x1,y1)到終點(diǎn)(x2,y2)。直線可表示為:方程y=mx+b,其中b=y1-m*x1,m=(y2-y1)/(x2-x1)=dy/dx;此處的討論先將直線方向限于1a象限,在這種情況下,當(dāng)直線光柵化時(shí),x每次都增加1個單元,即xi+1=xi+1而y的相應(yīng)增加值應(yīng)當(dāng)小于1。為了光柵化,yi+1只可能選擇右圖中兩種位置之一。yi+1的位置選擇yi+1=yi或者yi+1=yi+1,選擇的原則是看精確值y與yi及yi+1的距離d1及d2的大小而定。計(jì)算公式為y=m(xi+1)+b(1)d1=y-yi(2)d2=yi+1-y(3)如果d1-d2>0,則yi+1=yi+1,否則yi+1=yi。將式(1)、(2)、(3)代入d1-d2,再用dx乘等式兩邊,并以Pi=(d1-d2)dx代入上述等式,得Pi=2xidy-2yidx+2dy+(2b-1)dxd1-d2是用以判斷符號的誤差。由于在1a象限,dx總大于0,所以Pi仍舊可以用作判斷符號的誤差。Pi+1為Pi+1=Pi+2dy-2(yi+1-yi)dx求誤差的初值P1,可將x1、y1和b代入式(2.4)中的xi、yi而得到P1=2dy-dx綜述上面的推導(dǎo),第1a象限內(nèi)的直線Bresenham算法思想如下:⒈畫點(diǎn)(x1,y1),dx=x2-x1,dy=y2-y1,計(jì)算誤差初值P1=2dy-dx,i=1;⒉求直線的下一點(diǎn)位置xi+1=xi+1如果Pi>0,則yi+1=yi+1,否則yi+1=yi;⒊畫點(diǎn)(xi+1,yi+1);⒋求下一個誤差Pi+1,如果Pi>0,則Pi+1=Pi+2dy-2dx,否則Pi+1=Pi+2dy;⒌i=i+1;如果i<dx+1則轉(zhuǎn)步驟2;否則結(jié)束操作。附注說明:有關(guān)的源碼:DDA算法:voidCmyView::OnDdaline(){CDC*pDC=GetDC();//獲得設(shè)備指針intxa=,ya=,xb=,yb=,c=RGB(255,0,0);intx,y;floatdx,dy,k;dx=(float)(xb-xa),dy=(float)(yb-ya);k=dy/dx;y=ya;if(abs(k)>1){for(x=xa;x<=xb;x++){pDC->SetPixel(x,int(y+0.5),c);y=y+k;}else{for(y=ya;y<=yb;y++){pDC->SetPixel(int(x+0.5),y,c);x=x+1/k;}ReleaseDC(pDC);}//中點(diǎn)生成直線算法voidCmyView::OnMidPointline(){CDC*pDC=GetDC();//獲得設(shè)備指針intxa=,ya=,xb=,yb=,c=RGB(255,0,0);floata,b,d1,d2,d,x,y;a=ya-yb,b=xb-xa,d=2*a+b;d1=2*a,d2=2*a+b;x=xa,y=ya;pDC->SetPixel(x,y,c);while(x<xb){if(d<0){x++,y++,d+=d2;}else{x++,d+=d1;}pDC->SetPixel(x,y,c);}ReleaseDC(pDC);}//Bresenham直線算法voidCmyView::OnBresenhamline(){CDC*pDC=GetDC();//獲得設(shè)備指針intx1=,y1=,x2=,y2=,c=RGB(255,0,0);ints1,s2,interchange;floatx,y,deltax,deltay,f,temp;x=x1;y=y1;deltax=abs(x2-x1);dletay=abs(y2-y1);if(x2-x1>=0)s1=1;elses1=-1;if(y2-y1>=0)s2=1;elses2=-1;if(deltay>deltax){temp=deltax;deltax=deltay;deltay=temp;interchange=1;}elseinterchage=0;f=2*deltay-deltax;pDC->SetPixel(x,y,c);for(i=1;i<=deltax;i++){if(f>=0){if(interchange==1)x+=s1;elsey+=s2;pDC->SetPixel(x,y,c);f=f-2*deltax;}else{if(interchange==1)y+=s2;elsex+=s1;f=f+2*deltay;}}ReleaseDC(pDC);}圓的Bresenham算法設(shè)圓的半徑為r。先考慮圓心在(0,0),并從x=0、y=r,開始的順時(shí)針方向的1/8圓周的生成過程。在這種情況下,x每步增加1,從x=0開始,到x=y結(jié)束。即有xi+1=xi+1相應(yīng)的yi+1則在兩種可能中選擇:yi+1=yi或者yi+1=yi-1選擇的原則是考察精確值y是靠近yi還是靠近yi-1(如右圖),計(jì)算式為y2=r2-(xi+1)2d1=yi2-y2=yi2-r2+(xi+1)2d2=y2-(yi-1)2=r2-(xi+1)2-(yi-1)2令pi=d1-d2,并代入d1、d2,則有pi=2(xi+1)2+yi2+(yi-1)2-2r2pi稱為誤差。如果pi<0則yi+1=yi,否則yi+1=yi-1。pi的遞歸式為pi+1=pi+4xi+6+2(yi2+1-yi2)-2(yi+1-yi)pi的初值由上式代入xi=0,yi=r而得p1=3-2r根據(jù)上面的推導(dǎo),圓周生成算法思想如下:⒈求誤差初值,p1=3-2r,i=1,畫點(diǎn)(0,r);⒉求下一個光柵位置,其中xi+1=xi+1,如果pi<0則yi+1=yi,否則yi+1=yi-1;⒊畫點(diǎn)(xi+1,yi+1);⒋計(jì)算下一個誤差,如果pi<0則pi+1=pi+4xi+6,否則pi+1=pi+4(xi-yi)+10;⒌i=i+1,如果x=y則結(jié)束,否則返回步驟2。附注說明:有關(guān)的源碼:中點(diǎn)畫圓算法:voidCMyView::OnMidpointCircle(){CDC*pDC=GetDC();intxc=,yc=,r=,c=0;intx,y;floatd;x=0,y=r,d=1.25-r;描點(diǎn)(x,y)以及其他七個對稱點(diǎn);while(x<=y){if(d<0)d+=2*x+3;else{d+=2*(x-y)-5;y--;}x++;描點(diǎn)(x,y)以及其他七個對稱點(diǎn);}}Bresenham畫圓算法:voidCMyView::OnBresenhmaCircle(){CDC*pDC=GetDC();intxc=,yc=,r=,c=0;intx=0,y=r,p=3-2*r;while(x<y){描點(diǎn)(x,y)以及其他七個對稱點(diǎn);if(p<0)p+=4*x+6;else{p+=4*(x-y)+10;y--;}x++;}if(x==y)描點(diǎn)(x,y)以及其他七個對稱點(diǎn);}

實(shí)驗(yàn)二、圖形的裁剪實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn),進(jìn)一步理解和掌握Cohen_Sutherland裁剪算法;掌握用Cohen_Sutherland裁剪算法裁減多邊形的基本過程通過編程,會在VC++環(huán)境下用Sutherland_Hogman算法編程實(shí)現(xiàn)用矩形窗口對多邊形的裁剪。實(shí)驗(yàn)屬性該實(shí)驗(yàn)為驗(yàn)證性實(shí)驗(yàn)。實(shí)驗(yàn)學(xué)時(shí)2學(xué)時(shí),必做實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容用Cohen_Sutherland算法編程實(shí)現(xiàn)用矩形窗口對直線的裁剪。實(shí)驗(yàn)步驟算法、原理清晰,有詳細(xì)的設(shè)計(jì)步驟;依據(jù)算法、步驟或程序流程圖,用VC++語言編寫源程序;編輯源程序并進(jìn)行調(diào)試;進(jìn)行運(yùn)行測試,并結(jié)合情況進(jìn)行調(diào)整;對運(yùn)行結(jié)果進(jìn)行保存與分析;打印源程序或把源程序以文件的形式提交;按格式書寫實(shí)驗(yàn)報(bào)告。原理分析Cohen-Sutherland直線剪裁算法以區(qū)域編碼為基礎(chǔ),將窗口及其周圍的,8個方向以4bit的二進(jìn)制數(shù)進(jìn)行編碼。右圖所示的編碼方法將窗口及其鄰域分為5個區(qū)域:⑴內(nèi)域:區(qū)域(0000)。⑵上域:區(qū)域(1001,1000,1010)。⑶下域:區(qū)域(0101,0100,0110)。⑷左域:區(qū)域(1001,0001,0101)。⑸右域:區(qū)域(1010,0010,0110)。當(dāng)線段的兩個端點(diǎn)的編碼的邏輯“與”非零時(shí),線段為顯然不可見的,對某線段的兩個端點(diǎn)的區(qū)號進(jìn)行位與運(yùn)算,可知這兩個端點(diǎn)是否同在視區(qū)的上、下、左、右;該算法的思想是:對于每條線段P1P2分為三種情況處理。(1)若P1P2完全在窗口內(nèi),則顯示該線段P1P2簡稱“取”之。(2)若P1P2明顯在窗口外,則丟棄該線段,簡稱“棄”之。(3)若線段既不滿足“取”的條件,也不滿足“棄”的條件,則在交點(diǎn)處把線段分為兩段。其中一段完全在窗口外,可棄之。然后對另一段重復(fù)上述處理。裁剪一條線段時(shí),先求出P1P2所在的區(qū)號code1,code2。若code1=0,且code2=0,則線段P1P2在窗口內(nèi),應(yīng)取之。若按位與運(yùn)算code1&code2≠0,則說明兩個端點(diǎn)同在窗口的上方、下方、左方或右方??膳袛嗑€段完全在窗口外,可棄之。否則,按第三種情況處理。求出線段與窗口某邊的交點(diǎn),在交點(diǎn)處把線段一分為二,其中必有一段在窗口外,可棄之。在對另一段重復(fù)上述處理。在實(shí)現(xiàn)本算法時(shí),不必把線段與每條窗口邊界依次求交,只要按順序檢測到端點(diǎn)的編碼不為0,才把線段與對應(yīng)的窗口邊界求交。附注說明:1、有關(guān)的源碼:Cohen-Sutherland裁減算法#defineLEFT1#defineRIGHT2#defineBOTTOM4#defineTOP8intencode(floatx,floaty){intc=0;

if(x<XL)c|=LEFT;

if(x>XR)c|=RIGHT;

if(x<YB)c|=BOTTOM;

if(x<YT)c|=TOP;

retrunc;}void

CS_LineClip(x1,y1,x2,y2,XL,XR,YB,YT)//floatx1,y1,x2,y2,XL,XR,YB,YT;(x1,y1)(x2,y2)為線段的端點(diǎn)坐標(biāo),其他四個參數(shù)定義窗口的邊界{intcode1,code2,code;

code1=encode(x1,y1);

code2=encode(x2,y2);

while(code1!=0||code2!=0)

{if(code1&code2!=0)return;

code=code1;

if(code1==0)code=code2;

if(LEFT&code!=0){x=XL;

y=y1+(y2-y1)*(XL-x1)/(x2-x1);}

elseif(RIGHT&code!=0)

{x=XR;

y=y1+(y2-y1)*(XR-x1)/(x2-x1);}

elseif(BOTTOM&code!=0)

{y=YB;x=x1+(x2-x1)*(YB-y1)/(y2-y1);}elseif(TOP&code!=0){y=YT;

x=x1+(x2-x1)*(YT-y1)/(y2-y1);}

if(code==code1){

x1=x;y1=y;code1=encode(x,y);}else{x2=x;y2=y;code2=encode(x,y);}

}

displayline(x1,y1,x2,y2);}實(shí)驗(yàn)三、幾何圖形變換實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn),運(yùn)用計(jì)算機(jī)圖形學(xué)的知識、原理和算法;掌握二維和三維圖形幾何變換;通過使用VC++編程環(huán)境實(shí)現(xiàn)圖形幾何變換;實(shí)驗(yàn)屬性該實(shí)驗(yàn)為驗(yàn)證性實(shí)驗(yàn)。實(shí)驗(yàn)學(xué)時(shí)2學(xué)時(shí),必做實(shí)驗(yàn)實(shí)驗(yàn)內(nèi)容在VC++編程環(huán)境下建立二維平面圖形(長方形)實(shí)現(xiàn)其縮放、平移、旋轉(zhuǎn)幾何變換;在VC++編程環(huán)境下建立三維立方體,實(shí)現(xiàn)縮放、平移、旋轉(zhuǎn)等幾何變換,。實(shí)驗(yàn)步驟算法、原理清晰,有詳細(xì)的設(shè)計(jì)步驟;依據(jù)算法、步驟或程序流程圖,用VC++語言編寫源程序;編輯源程序并進(jìn)行調(diào)試;進(jìn)行特殊模式的運(yùn)行測試,并結(jié)合情況進(jìn)行調(diào)整;對運(yùn)行結(jié)果進(jìn)行保存與分析;打印源程序或把源程序以文件的形式提交;按格式書寫實(shí)驗(yàn)報(bào)告?;A(chǔ)知識及原理二維變換矩陣二維幾何變換包括平移、旋轉(zhuǎn)和變比3種基本變換,變換公式都可以表示為3×3的變換矩陣和齊次坐標(biāo)相乘的形式。分別為:1平移的矩陣運(yùn)算表示:2旋轉(zhuǎn)的矩陣運(yùn)算表示為:[x′y′1]=[xy1]3變比的矩陣運(yùn)算表示為:[x′y′1]=[xy1]、三維變換矩陣三維幾何變換包括平移、旋轉(zhuǎn)和變比。三維幾何變換可以表示為公式,或三維齊次坐標(biāo)和4×4變換矩陣的乘積。下面分別以公式,矩陣乘積和簡記符號來描述三維幾何變換。并記變換前物體的坐標(biāo)為x,y,z;變換后物體的坐標(biāo)為x′,y′,z′。一、平移設(shè)Tx,Ty,Tz是物體在三個坐標(biāo)方向上的移動量,則有公式:x′=x+Txy′=y(tǒng)+Tyz′=z+Tz矩陣運(yùn)算表達(dá)為:[x′y′z′1]=[xyz1]二、旋轉(zhuǎn)旋轉(zhuǎn)分為三種基本旋轉(zhuǎn):繞z軸旋轉(zhuǎn),繞x軸旋轉(zhuǎn),繞y軸旋轉(zhuǎn)。在下述旋轉(zhuǎn)變換公式中,設(shè)旋轉(zhuǎn)的參考點(diǎn)在所繞的軸上,繞軸轉(zhuǎn)θ角,方向是從軸所指處往原點(diǎn)看的逆時(shí)針方向(見下圖形)。

繞z繞z軸旋轉(zhuǎn)繞x軸旋轉(zhuǎn)

1繞z軸旋轉(zhuǎn)的公式為:x′=xcosθ-ysinθy′=xsinθ+ycosθz′=z矩陣運(yùn)算的表達(dá)為:[x′y′z1]=[xyz1]2繞x軸旋轉(zhuǎn)的公式為:x′=x

溫馨提示

  • 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

提交評論