圖形學(xué)直線(xiàn),圓試驗(yàn)報(bào)告_第1頁(yè)
圖形學(xué)直線(xiàn),圓試驗(yàn)報(bào)告_第2頁(yè)
圖形學(xué)直線(xiàn),圓試驗(yàn)報(bào)告_第3頁(yè)
圖形學(xué)直線(xiàn),圓試驗(yàn)報(bào)告_第4頁(yè)
圖形學(xué)直線(xiàn),圓試驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn):直線(xiàn)及圓的掃描轉(zhuǎn)換姓名:龍澤學(xué)號(hào):20141090068 學(xué)院:職繼學(xué)院指導(dǎo)教師:吳昊課程:計(jì)算機(jī)圖形學(xué).實(shí)驗(yàn)內(nèi)容:直線(xiàn)Bresenham算法.實(shí)驗(yàn)設(shè)計(jì)輸入:直線(xiàn)段的兩個(gè)端點(diǎn),起始點(diǎn)(X0,Y0),終點(diǎn)(X1,Y1),線(xiàn)段的顏色(color)處理過(guò)程:.輸入線(xiàn)段的兩個(gè)端點(diǎn)坐標(biāo)和畫(huà)線(xiàn)顏色:x1,y1,x2,y2,color;.設(shè)置象素坐標(biāo)初值:x=x1,y=y1;.設(shè)置初始誤差判別值:p=2?Ay-Ax;.分別計(jì)算:Ax=x2-x1、Ay=y2-y1;.然后對(duì)起點(diǎn)和終點(diǎn)的x和y的大小的比較,以判斷直線(xiàn)的斜率;.循環(huán)實(shí)現(xiàn)直線(xiàn)的生成;.輸出:顯示以(X0,Y0)和(X1,Y1)為端點(diǎn)的直線(xiàn)段,顏色為color三.程序清單實(shí)驗(yàn)代碼如下:#include<windows.h>#include<GL/glut.h>〃初始化OpenGL場(chǎng)景voidmyinit(void)(glClearColor(250.0,250.0,250.0,0.0);//將背景置成黑色glMatrixMode(GL_PROJECTION);gluOrtho2D(0,500,0,500);//設(shè)置投影變換,使用正交投影)voidsetPixel(intx,inty,intcolor)〃在指定位置(x,y)繪制點(diǎn)圖元(glBegin(GL_POINTS);glVertex2i(x,y);//繪制點(diǎn)的坐標(biāo)glEnd();)//bresenha繪制直線(xiàn)的方法voidBresenhamline(intx1,inty1,intx2,inty2,intcolor)//輸入線(xiàn)段的兩個(gè)端點(diǎn)坐標(biāo)和畫(huà)線(xiàn)顏色(intx,y,dx,dy,s1,s2,p,temp,interchange,i;x=x1;y=y1;//設(shè)置象素坐標(biāo)初值dx=abs(x2-x1);dy=abs(y2-y1);//分別計(jì)算之間的差值if(x2>x1)s1=1;elses1=-1;if(y2>y1)s2=1;elses2=-1; //判斷起點(diǎn)和終點(diǎn)的位置,以確定是該加一個(gè)單位還是該減一個(gè)單位if(dy>dx)//y方向增長(zhǎng)快,將總步數(shù)設(shè)為y2-y1,每一步的y值為:y=y+1(temp=dx;dx=dy;dy=temp;interchange=1;)elseinterchange=0;//x方向增長(zhǎng)快,將總步數(shù)設(shè)為x2-x1,每一步的x值為:x=x+1p=2*dy-dx;//設(shè)置初始誤差判別值for(i=1;i<=dx;i++)(setPixel(x,y,color);if(p>=0)(if(interchange==0)y=y+s2;elsex=x+1;p=p-2*dx;)if(interchange==0)x=x+s1;elsey=y+s2;p=p+2*dy;))〃用戶(hù)的繪圖過(guò)程voiddisplay(void)(glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除緩存glColor3f(0,0,255); //給定直線(xiàn)的顏色Bresenhamline(50,150,400,300,0);//給定直線(xiàn)的起點(diǎn)坐標(biāo)和重點(diǎn)坐標(biāo)glFlush(); 〃繪圖結(jié)束)〃主過(guò)程://初始化Windows的窗口界面//并初始化OpenGL場(chǎng)景,繪圖intmain(intargc,char**argv)(glutInit(&argc,argv);//初始化glutglutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//初始化顯示模式,采用單緩存,RGB彩色系統(tǒng)glutInitWindowSize(500,500); //初始化窗口大小glutInitWindowPosition(100,100);//初始化窗口位置glutCreateWindow("第一個(gè)OpenGL程序"); //創(chuàng)建窗口myinit(); //自定義初始化glutDisplayFunc(display); //注冊(cè)顯示函數(shù)glutMainLoop(); //進(jìn)入OpenGL的主循環(huán)。開(kāi)始工作return0;)最后經(jīng)過(guò)多次調(diào)試以后,運(yùn)行的結(jié)果如下圖所示:.實(shí)驗(yàn)內(nèi)容:中點(diǎn)算法生成圓.實(shí)驗(yàn)設(shè)計(jì)輸入:圓半徑「、圓心々0,y0),圓的顏色(color)處理過(guò)程:.確定初值:x=0,y=r、d=5/4-r;.While(x<=y)(利用八分對(duì)稱(chēng)性,用規(guī)定的顏色color畫(huà)八個(gè)象素點(diǎn)(x,y);若d20(y=y-1;d=d+2(x-y)+5);)否則d=d+2x+3;x=x+1;).程序依次執(zhí)行,最后的到圓。輸出:顯示以60,丫0)為圓心,r為半徑,顏色為(color)的圓。三.程序清單實(shí)驗(yàn)代碼如下:#include<windows.h>#include<GL/glut.h>//初始化OpenGL場(chǎng)景voidmyinit(void)(glClearColor(250.0,250.0,250.0,0.0); 〃將背景置成黑色glMatrixMode(GL_PROJECTION);gluOrtho2D(0,500,0,500); //設(shè)置投影變換,使用正交投影)voidputpixel(intx,inty,intcolor)(glBegin(GL_POINTS);glVertex2i(x,y);//繪制點(diǎn)的坐標(biāo)glEnd();)voidputdot(intx0,inty0,intx,inty,intcolor)(putpixel(x0+x,y0+y,color);putpixel(x0+x,y0-y,color);putpixel(x0-x,y0+y,color);putpixel(x0-x,y0-y,color);putpixel(x0+y,y0+x,color);putpixel(x0+y,y0-x,color);putpixel(x0-y,y0+x,color);putpixel(x0-y,y0-x,color);)//中點(diǎn)畫(huà)圓的算法voidMidpointCircle(intx0,inty0,intr,intcolor)(intx,y;floatd;x=0;y=r;d=5.0/4-r;//確定初值while(x<=y)(putdot(x0,y0,x,y,color);if(d<0)d+=x*2.0+3;else{d+=2.0*(x-y)+5;y--;)x++;)//用戶(hù)的繪圖過(guò)程voiddisplay(void)(glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除緩存glColor3f(0,0,1.0f);//給圓的顏色MidpointCircle(250,250,150,0);//給圓的原點(diǎn)坐標(biāo)和半徑glFlush(); 〃繪圖結(jié)束)//〃主過(guò)程://初始化Windows的窗口界面//并初始化OpenGL場(chǎng)景,繪圖intmain(intargc,char**argv)(glutInit(&argc,argv);//初始化glutglutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//初始化顯示模式,采用單緩存,RGB彩色系統(tǒng)glutInitWindowSize(500,500); //初始化窗口大小glutInitWindowPosition(100,100);//初始

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論