




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)三圓的生成算法的實(shí)現(xiàn)班級信計學(xué)號51姓名程芳超分?jǐn)?shù)一、實(shí)驗(yàn)?zāi)康暮鸵螅?、掌握圓的生成算法的基本原理2、熟悉圓的生成算法,利用Turbor實(shí)現(xiàn)中點(diǎn)畫圓算法、圓的Bresenham算法。二、實(shí)驗(yàn)內(nèi)容:1、熟悉圓上的8個對稱點(diǎn)的算法,利用中點(diǎn)畫圓算法畫圓并在屏幕上顯示出來;2、使用Bresenham畫圓法生成一個圓;3、利用line()函數(shù)畫圓:.圓的參數(shù)方程;圓心為o(x0,y0)。以下為各程序的實(shí)現(xiàn)代碼:1、中點(diǎn)畫圓算法:運(yùn)行結(jié)果為:#include"Conio.h"#include"graphics.h"#include"stdio.h"#include"math.h"#defineclosegrclosegraph#definexo300#defineyo250#defineDELTA1.0#definemax100typedefstruct{intx;inty;}Point;typedefstruct{intpointNum;Point*vertices;}Polygon;voidinitgr(void){intgd=DETECT,gm=0;registerbgidriver(EGAVGA_driver);initgraph(&gd,&gm,"");}voidputpixels(intx,inty,intcolor,intn){inti,j;for(i=-n/2;i<=n/2;i++)for(j=-n/2;j<=n/2;j++)putpixel(x+j,y+i,color);}voidputpixelt(intx,inty,intcolor,inti){inta[8]={1,1,1,1,0,0,0,0};if(a[i%8])putpixel(x,y,color);}voidEllipsePoints(intx,inty,intcolor){putpixel(xo+x,yo+y,color);putpixel(xo-x,yo+y,color);putpixel(xo+x,yo-y,color);putpixel(xo-x,yo-y,color);}voidCirclePoints(intx,inty,intcolor){putpixel(xo+x,yo+y,color);putpixel(xo+y,yo+x,color);putpixel(xo-y,yo+x,color);putpixel(xo-x,yo+y,color);putpixel(xo+y,yo-x,color);putpixel(xo+x,yo-y,color);putpixel(xo-x,yo-y,color);putpixel(xo-y,yo-x,color);}voidMidPointCircle1(intradius,intcolor){intx,y;floatd;x=0;y=radius;d=5.0/4-radius;CirclePoints(x,y,color);while(y>x){if(d<=0)d+=2.0*x+3;else{d+=2.0*(x-y)+5;y--;}x++;CirclePoints(x,y,color);}}main(){initgr();cleardevice();MidPointCircle1(150,4);getch();closegraph();}運(yùn)行結(jié)果為:2圓的Bresenham算法:#include<graphics.h>#include<stdio.h>#include<conio.h>#include<math.h>voidBresenhamCircle(xc,yc,radius,color)intxc,yc,radius,color;{intx,y,d;x=0;y=radius;d=3-2*radius;while(x<y){plot_circle_points(xc,yc,x,y,color);if(d<0)d+=4*x+6;else{d+=4*(x-y)+10;y--;}x++;}if(x==y)plot_circle_points(xc,yc,x,y,color);}plot_circle_points(xc,yc,x,y,color)intxc,yc,x,y,color;{putpixel(xc+x,yc+y,color);putpixel(xc-x,yc+y,color);putpixel(xc+x,yc-y,color);putpixel(xc-x,yc-y,color);putpixel(xc+y,yc+x,color);putpixel(xc-y,yc+x,color);putpixel(xc+y,yc-x,color);putpixel(xc-y,yc-x,color);}main(){inta,b,c,e;intgraphdriver=DETECT;intgraphmode=0;initgraph(&graphdriver,&graphmode,"");cleardevice();a=300;b=300;c=150;e=3;BresenhamCircle(a,b,c,e);getch();closegraph();}運(yùn)行結(jié)果為:3、利用line()函數(shù)畫圓#include<stdio.h>#include<stdlib.h>#include<math.h>#include<conio.h>#include<graphics.h>main(){inti,r,xx[46],yy[46],x0,y0;floatt=360/45*3.14/180;intgdriver=DETECT,gmode;initgraph(&gdriver,&gmode,"");cleardevice();setbkcolor(14);setcolor(4);x0=300;y0=250;r=200;for(i=0;i<46;i++){xx[i]=x0+r*cos(i*t);yy[i]=y0-r*sin(i*t);}for(i=0;i<45;i++)line(xx[i],yy[i],xx[i+1],yy[i+1]);settextstyle(1,0,5);outtextxy(300,200,"O");line(300,250,500,250);getch();closegraph();return0;}運(yùn)行結(jié)果為:三、實(shí)驗(yàn)結(jié)果分析1、顯示圓上的8個對稱點(diǎn)的算法如下:voidCirclePoints(intx,inty,intcolor){putpixel(x,y,color);putpixel(y,x,color);putpixel(-x,y,color);putpixel(y,-x,color);putpixel(x,-y,color);putpixel(-y,x,color);putpixel(-x,-y,color);putpixel(-y,-x,color);}若已知圓弧上一點(diǎn)(x,y),可以得到其關(guān)于4條對稱軸的其他七個點(diǎn),因此要掃描轉(zhuǎn)換1/8圓弧就可以求出表示整個圓弧的像素集。2、圓的Bresenham算法:分析出來點(diǎn)(x,y),(x,-y),(-x,y),(-x,-y),(y,x),(y,-x),(-y,x),(-y,-x)的另外7個點(diǎn)。關(guān)于中心畫圓算法,通過計算x=0到x=y的1/8圓的范圍,然后通過對稱原理得到其他7/8個點(diǎn)的信息。這里和Bresenham算法有很多相似之處,同樣有一個決定下一個位置的關(guān)鍵值d來做權(quán)衡處理。在中點(diǎn)畫圓算法中,通過平移的方法將假設(shè)圓心在坐標(biāo)原點(diǎn),然后計算,最后再平移到真實(shí)原心位置。3、在Bresenham算法中,只需做加法和乘4的乘法,因此遠(yuǎn)的Bresenham算法運(yùn)行速度很快,適宜在硬件上實(shí)現(xiàn)。4、t的值不同,所畫圓的圓滑程度不同,圓心位置可隨坐標(biāo)改變。5、兩種算法生成一點(diǎn)所需的計算量比較每種循環(huán)中各種運(yùn)算次數(shù)總和畫一個八分或四分圓的總運(yùn)算次數(shù)畫每一點(diǎn)所需要的平均運(yùn)算次數(shù)比較加法移位Bresenham法2(d<0)215(R-R/)6+(1)5=RR2(d>=0)316中點(diǎn)算法2(d<0)215(R-R/)7+(1)5=2R-3R/5(2R-3R/)/(R/)4.82(d>=0)327通過實(shí)際的程序運(yùn)行進(jìn)行比較,結(jié)論是中點(diǎn)畫圓法速度比較快,就算法本身而言,該算法仍可以在某些方面進(jìn)行改進(jìn),如
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024古代文學(xué)史核心知識點(diǎn)試題及答案
- 營養(yǎng)師在寵物護(hù)理中的角色試題及答案
- CPBA考試真實(shí)案例試題及答案
- 藥物作用機(jī)制解析試題及答案
- 2024年語文基礎(chǔ)鞏固試題及答案
- 2024年二手車評估師考試試題及答案
- 統(tǒng)計學(xué)考試難題分析及答案
- 2024年汽車維修工崗位職責(zé)及要求試題及答案
- 2024年藥物相互作用防范試題及答案
- 江西省贛州市龍南市2023-2024學(xué)年八年級下學(xué)期期中考試英語試題(含答案)
- GB/T 40073-2021潛水器金屬耐壓殼外壓強(qiáng)度試驗(yàn)方法
- GB/T 3292.1-2008紡織品紗線條干不勻試驗(yàn)方法第1部分:電容法
- 驅(qū)動橋畢業(yè)設(shè)計
- 2023機(jī)關(guān)公文寫作與處理PPT模板
- 基坑支護(hù)、降水及土方開挖專項施工方案
- 幼兒數(shù)字1-100字帖練習(xí)
- 細(xì)胞生物學(xué)-7細(xì)胞信號轉(zhuǎn)導(dǎo)課件
- 攪拌站安全培訓(xùn)試卷
- 茶葉市場營銷講義
- 走進(jìn)中國傳統(tǒng)節(jié)日 詳細(xì)版課件
- 乙肝兩對半ppt課件
評論
0/150
提交評論