版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
lessonfour2.2
圓與橢圓掃描轉(zhuǎn)換算法1第二章第二節(jié)第1頁(yè)1、園特征依據(jù)圓方程:(x2+y2)=R2用掃描線方式生成圓時(shí),會(huì)出現(xiàn)x方向增量取1,則y=±(R2-x2)1/2,這種方法,既增加了運(yùn)算復(fù)雜性,又會(huì)產(chǎn)生點(diǎn)集疏密不均現(xiàn)象:當(dāng)x=0時(shí),圓周上切線斜率為零;當(dāng)x靠近R時(shí),圓周上切線斜率趨向無(wú)窮大,所以出現(xiàn)靠近y軸處點(diǎn)集較密集、平坦,但靠近x軸處間隔較大、陡直。為了克服這一現(xiàn)象,能夠使x值改變范圍從0到R/21/2,即處為止,同時(shí)對(duì)于每一組(x,y)值,利用對(duì)稱求出其它7個(gè)點(diǎn)坐標(biāo)。yx2第二章第二節(jié)第2頁(yè)圓八對(duì)稱性圓被定義為到給定中心位置(xc,yc)距離為r點(diǎn)集。圓心位于原點(diǎn)圓有四條對(duì)稱軸x=0,y=0,x=y和x=-y。若已知圓弧上一點(diǎn)(x,y),能夠得到其關(guān)于四條對(duì)稱軸其它7個(gè)點(diǎn),這種性質(zhì)稱為圓八對(duì)稱性。所以,只要掃描轉(zhuǎn)換八分之一圓弧,就能夠求出整個(gè)圓弧象素集。voidCirclePoints(intx,inty,intcolor){drawpixel(x,y,color);drawpixel(y,x,color);drawpixel(-x,y,color);drawpixel(y,-x,color);drawpixel(x,-y,color);drawpixel(-y,x,color);drawpixel(-x,-y,color);drawpixel(-y,-x,color);}3第二章第二節(jié)第3頁(yè)中點(diǎn)畫圓法
假如我們結(jié)構(gòu)函數(shù)
F(x,y)=x2+y2-R2,則對(duì)于圓上點(diǎn)有F(x,y)=0,對(duì)于圓外點(diǎn)有F(x,y)>0,對(duì)于圓內(nèi)點(diǎn)F(x,y)<0。與中點(diǎn)畫線法一樣,結(jié)構(gòu)判別式:d=F(M)=F(xp+1,yp-0.5)=(xp+1)2+(yp-0.5)2-R2若
d<0,則應(yīng)取P1為下一象素,而且再下一象素判別式為:d=F(xp+2,yp-0.5)=(xp+2)2+(yp-0.5)2-R2=d+2xp+3若d≥0,則應(yīng)取P2為下一象素,而且下一象素判別式為d=F(xp+2,yp-1.5)=(xp+2)2+(yp-1.5)2-R2=d+2(xp-yp)+5我們這里討論第一個(gè)象素是(0,R),判別式d初始值為:d0=F(1,R-0.5)=1.25-R4第二章第二節(jié)第4頁(yè)中點(diǎn)畫圓算法MidPointCircle(intr,intcolor){intx,y;floatd;x=0;y=r;d=1.25-r;circlepoints(x,y,color);while(x<=y){if(d<0)d+=2*x+3;else{d+=2*(x-y)+5;y--;}x++;circlepoints(x,y,color);}}5第二章第二節(jié)第5頁(yè)Bresenham圓算法Bresenham圓算法基本思想是尋找最靠近于實(shí)際圓周上點(diǎn)?,F(xiàn)僅討論八分之一圓周,
即x從0到R/21/2范圍,
所以F,G情況無(wú)須列入在內(nèi)。
對(duì)于Pi-1下一點(diǎn)Pi只有兩種可能,
即Si(xi-1+1,yi-1)和Ti(xi-1+1,yi-1-1)
誤差公式:D(Si)=(xi-1+1)2+(yi-1)2-R2
D(Ti)=(xi-1+1)2+(yi-1-1)2-R2
當(dāng)|D(Si)|≥|D(Ti)|,則Ti更靠近于圓周,選擇Ti
當(dāng)|D(Si)|<|D(Ti)|,則Si更靠近于圓周,選擇Si
令di=|D(Si)|-|D(Ti)|
則
di≥0,取Ti
di<0,取SiPi-1ABDEFGSiTi6第二章第二節(jié)第6頁(yè)圓生成算法原理情況C:因?yàn)镾i在圓外,所以D(Si)>0,因?yàn)門i在圓內(nèi),所以D(Ti)<0所以di=D(Si)+D(Ti)情況A,B:①?gòu)膱A上看,Si更靠近于圓周,選擇Si(應(yīng)屬于di<0情況)②因?yàn)镾i,Ti都在圓內(nèi)或圓上,即D(Si)≤0,D(Ti)<0,所以用式di=D(Si)+D(Ti)(di<0,取Si)判別即可。情況D,E:①?gòu)膱A上看,Ti更靠近于圓周,選擇Ti(應(yīng)屬于di>0情況)②因?yàn)镾i,Ti都在圓外或圓上,即D(Si)>0,D(Ti)≥0,所以用式di=D(Si)+D(Ti)(di>0,取Ti)判別即可??偠灾贸?,只要計(jì)算下式di=D(Si)+D(Ti)符號(hào),便可選定Si或Ti作為下一點(diǎn)。Pi-1ABCDEFGSiTi7第二章第二節(jié)第7頁(yè)圓生成算法改進(jìn)
設(shè)x0=0,y0=R,
則S1為(1,R),T1為(1,R-1),
d1=(12+R2-R2)+[(12+(R-1)2-R2]=3-2R
設(shè)Pi-1為(xi-1,yi-1),則取下一點(diǎn)
Si
(xi-1+1,yi-1),Ti
(xi-1+1,yi-1-1),
則:di=[(xi-1+1)2+yi-12-R2]+[(xi-1+1)2+(yi-1-1)2-R2]
假設(shè)di<0,則取Si作為下一點(diǎn),
即Pi(xi-1+1,yi-1)且Si+1為(xi-1+2,yi-1),Ti+1為(xi-1+2,yi-1-1), 則:di+1=[(xi-1+2)2+(yi-1)2-R2]+[(xi-1+2)2+(yi-1-1)2-R2]
di+1-di=4xi-1+6
di+1=di+4xi-1+68第二章第二節(jié)第8頁(yè)圓生成算法改進(jìn)假設(shè)di≥0,則取Ti作為下一點(diǎn),
即Pi(xi-1+1,yi-1-1)則第i+1次兩個(gè)可能點(diǎn)為
Si+1
(xi-1+2,yi-1-1),Ti+1
(xi-1+2,yi-1-2)
di+1=[(xi-1+2)2+(yi-1-1)2-R2]+[(xi-1+2)2+(yi-1-2)2-R2]
di+1-di=4(xi-1-yi-1)+10
di+1=di+4(xi-1-yi-1)+10
即得di遞歸式:
d1=3-2R
(x0=0,y0=R)
di+1=di+4xi-1+6
當(dāng)di<0時(shí),取Si(xi-1+1,yi)
di+1=di+4(xi-1-yi-1)+10 當(dāng)di≥0時(shí),取Ti(xi-1+1,yi-1)9第二章第二節(jié)第9頁(yè)圓生成算法描述置第一點(diǎn)坐標(biāo):x=0,y=R置初始誤差:d=3-2Rwhilex<ydo
begin
輸出點(diǎn)(x,y)以及其它7點(diǎn)(y,x),(-x,y),
(-y,x),(-y,-x),(-x,-y),(x,-y),(y,-x)
ifd<0thend=d+4·x+6
elsed=d+4·(x-y)+10,y=y-1
x=x+1
endif
x=ythen輸出點(diǎn)(x,y)以及(-x,y),(-x,-y),(x,-y)endofalgorithm10第二章第二節(jié)第10頁(yè)2、橢圓特征橢圓被定義為到兩個(gè)定點(diǎn)(焦點(diǎn))距離之和等于常數(shù)點(diǎn)集合。橢圓上任意點(diǎn)p(x,y)到兩個(gè)焦點(diǎn)距離記為d1和d2,那么,橢圓方程可表示為:d1+d2=常數(shù)設(shè)兩個(gè)焦點(diǎn)坐標(biāo)F1=(x1,y1)和F2=(x2,y2)來(lái)表示橢圓方程: [(x-x1)2+(y-y1)2]1/2+[(x-x2)2+(y-y2)2]1/2=常數(shù)改寫橢圓方程,則通用橢圓方程: Ax2+By2+Cxy+Dx+Ey+F=011第二章第二節(jié)第11頁(yè)標(biāo)準(zhǔn)位置橢圓:長(zhǎng)軸和短軸與X和Y軸平行,橢圓中心可在(xc,yc)。標(biāo)準(zhǔn)位置橢圓方程: [(x-xc)/rx]2+[(y-yc)/ry]2=1 其中:rx和ry分別為長(zhǎng)半軸和短半軸。極坐標(biāo)表示: x=xc+rxcosθ,y=yc+rysinθ標(biāo)準(zhǔn)位置橢圓其在四分象限是對(duì)稱,所以我們只需要計(jì)算一個(gè)四分象限橢圓曲線位置,然后依據(jù)對(duì)稱性得到其余部分。12第二章第二節(jié)第12頁(yè)3.5.2中點(diǎn)橢圓算法首先計(jì)算橢圓中心在(0,0)標(biāo)準(zhǔn)位置橢圓曲線第一分象限曲線部分位置像素(x,y),然后將點(diǎn)變換到橢圓中心在(xc,yc)。依據(jù)前面DDA算法討論,當(dāng)|m|≤1時(shí),取x方向單位步長(zhǎng)(1或-1),相反,取y方向單位步長(zhǎng)(1或-1)。所以,對(duì)于第一分象限橢圓曲線分成兩部分:一部分曲線斜率絕對(duì)值小于1和斜率絕對(duì)值大于1。并分別對(duì)兩段曲線分別取x方向步長(zhǎng)和y方向取步長(zhǎng).13第二章第二節(jié)第13頁(yè)這里可選擇(0,ry)或(rx,0)作為起點(diǎn)開始算法。以從(0,ry)開始從左到右進(jìn)行。橢圓函數(shù)作為決議參數(shù): fellipse(x,y)=ry2x2+rx2y2-rx2ry2
該函數(shù)含有以下特征: <0(x,y)位于橢圓邊界內(nèi)fellipse(x,y)=0(x,y)位于橢圓邊界上 >0(x,y)位于橢圓邊界外橢圓函數(shù)fellipse(x,y)作為中點(diǎn)橢圓算法決議參數(shù)。在每個(gè)取樣位置,按照橢圓函數(shù)在沿橢圓軌跡兩個(gè)候選像素點(diǎn)中點(diǎn)求值符號(hào)選擇下一個(gè)像素
14第二章第二節(jié)第14頁(yè)從(0,ry)開始,在x方向取單位步長(zhǎng)1直到斜率變?yōu)椤?1。橢圓斜率: dy/dx=-ry2x/rx2y兩段曲線采取不一樣算法分界點(diǎn): 2ry2x=2rx2y對(duì)于第1段曲線設(shè)用該算法計(jì)算出點(diǎn)(xk,yk),下一個(gè)點(diǎn)(xk+1,yk+1)為A(xk+1,yk)或B(xk+1,yk-1),即右邊點(diǎn)或右下點(diǎn)。依據(jù)以下決議參數(shù)符號(hào)判斷:15第二章第二節(jié)第15頁(yè) p1k=fellipse(xk+1,yk-0.5)=ry2(xk+1)2+rx2(yk-0.5)2-rx2ry2
下一點(diǎn)判斷:當(dāng)p1k<0,取A(xk+1,yk),yk+1=yk當(dāng)p1k≥0,取B(xk+1,yk-1),yk+1=yk-1其中xk+1=xk+1遞歸表示式:p1k+1=p1k+2ry2(xk+1)+ry2+rx2[(yk+1-0.5)2-(yk-0.5)2]16第二章第二節(jié)第16頁(yè)初始決議參數(shù):將(x0,y0)=(0,ry)帶入:p10=fellipse(1,ry-0.5)=ry2-rx2ry+rx2/4該橢圓第一分象限第一部分橢圓曲線中點(diǎn)算法表示:p10=ry2-rx2ry+rx2/4xk+1=xk+1yk+1=yk,p1k+1=p1k+2ry2xk+1+ry2當(dāng)p1k<0yk+1=yk-1,p1k+1=p1k+2ry2xk+1+ry2-2rx2yk+1當(dāng)p1k≥017第二章第二節(jié)第17頁(yè)決議參數(shù)增量=2ry2xk+1+ry2當(dāng)p1k<02ry2xk+1+ry2-2rx2yk+1當(dāng)p1k≥0對(duì)于2ry2xk+1和2rx2yk+1本身又是一個(gè)增量表示式,2ry2xk+1增量一直為2ry2,而2rx2yk+1增量為0(當(dāng)p1k<0)或-2rx2(當(dāng)p1k≥0),在起始位置(x0,y0)=(0,ry),2ry2xk+1和2rx2yk+1初始值分別為0和2rx2ry。18第二章第二節(jié)第18頁(yè)然而對(duì)于第一分象限第2段曲線,取y方向單位步長(zhǎng)。在每一步,計(jì)算決議參數(shù)時(shí)取兩個(gè)候選水平像素中點(diǎn)。設(shè)前一步取(xk,yk),下一個(gè)點(diǎn)(xk+1,yk+1)選擇:B(xk,yk-1)或A(xk+1,yk-1),即下邊點(diǎn)或右下點(diǎn)。M(xk+0/5,yk-1)為AB中點(diǎn)。依據(jù)以下決議參數(shù)符號(hào)判斷:p2k=fellipse(xk+0.5,yk-1)=ry2(xk+0.5)2+rx2(yk-1)2-rx2ry2
19第二章第二節(jié)第19頁(yè)取點(diǎn)判斷:p2k≤0,取(xk+1,yk-1),(xk+1,yk+1)=(xk+1,yk-1),即右下點(diǎn)Ap2k>0,取(xk,yk-1),(xk+1,yk+1)=(xk,yk-1),即下邊點(diǎn)B遞歸表示式: p2k+1=p2k-2rx2(yk-1)+rx2+ry2[(xk+1+0.5)2-(xk+0.5)2]20第二章第二節(jié)第20頁(yè)當(dāng)從第一分象限橢圓第1段曲線進(jìn)入第2段曲線時(shí),采取p2k作為決議參數(shù),此時(shí),p2k初始點(diǎn)為第段曲線最終計(jì)算點(diǎn),設(shè)為(x0,y0)。則第二部分曲線初始決議參數(shù):p20=fellipse(x0+0.5,y0-1)=ry2(x0+0.5)2+rx2(y0-1)2-rx2ry2
21第二章第二節(jié)第21頁(yè)該橢圓第一分象限第2段橢圓曲線中點(diǎn)算法表示: p20=ry2(x0+0.5)2+rx2(y0-1)2-rx2ry2yk+1=yk-1xk+1=xk,p2k+1=p2k-2rx2yk+1+rx2,當(dāng)p2k>0xk+1=xk+1,p2k+1=p2k-rx2yk+1+rx2+2ry2xk+1當(dāng)p2k≤022第二章第二節(jié)第22頁(yè)決議參數(shù)增量=-2rx2yk+1+rx2當(dāng)p2k>0-2rx2yk+1+rx2+2ry2xk+1當(dāng)p2k≤0對(duì)于2rx2yk+1和2ry2xk+1本身又是一個(gè)增量表示式,2rx2yk+1增量一直為-2rx2,而2ry2xk+1增量為0(當(dāng)p2k>0)或2ry2(當(dāng)p2k≤0),在起始位置(x0,y0),2rx2yk+1和2ry2xk+1初始值分別為2rx2y0和2ry2x0。23第二章第二節(jié)第23頁(yè)中點(diǎn)橢圓算法步驟:1.輸入rx,ry和橢圓中心(xc,yc),并得到中心在原點(diǎn)橢圓上第一個(gè)點(diǎn)。2.計(jì)算第一分象限第1段橢圓曲線決議參數(shù)初值:p10=ry2-rx2ry+rx2/43.在第1段曲線每個(gè)xk處,從k=0開始,完成以下測(cè)試:假如當(dāng)p1k<0,則下一個(gè)點(diǎn)為(xk+1,yk+1)=(xk+1,yk),且:p1k+1=p1k+2ry2(xk+1)+ry2,不然,下一個(gè)點(diǎn)為(xk+1,yk+1)=(xk+1,yk-1),且:p1k+1=p1k+2ry2(xk+1)+ry2-2rx2(yk-1)。且循環(huán)至2ry2x≥2rx2y,循環(huán)結(jié)束得到最終點(diǎn)(x0,y0)。24第二章第二節(jié)第24頁(yè)4.使用第1段曲線計(jì)算最終得到點(diǎn)(x0,y0),來(lái)計(jì)算第2段曲線初始決議參數(shù): p20=ry2(x0+0.5)2+rx2(y0-1)2-rx2ry25.在第2段曲線每個(gè)yk處,從k=0開始,完成以下檢測(cè):假如p2k>0,則下一個(gè)點(diǎn)為(xk+1,yk+1)=(xk,yk-1),且p2k+1=p2k-2rx2(yk-1)+rx2,不然下一個(gè)點(diǎn)為(xk+1,yk+1)=(xk+1,yk-1),且p2k+1=p2k-2rx2(yk-1)+rx2+2ry2(xk+1),且循環(huán)至2rx2y=0即y=0。6.確定其它三個(gè)分象限中對(duì)稱點(diǎn)。7.將每個(gè)計(jì)算出像素位置(x,y)移到中心在(xc,yc)橢圓軌跡上,并按坐標(biāo)畫點(diǎn):x=x+xc,y=y+yc。25第二章第二節(jié)第25頁(yè)中點(diǎn)橢圓算法C實(shí)現(xiàn)#defineROUND(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年室內(nèi)裝修設(shè)計(jì)技術(shù)保密合同3篇
- 二零二五年度煤炭行業(yè)供應(yīng)鏈金融服務(wù)合同4篇
- 2025年度車輛質(zhì)押典當(dāng)保險(xiǎn)服務(wù)合同4篇
- 植物園2025年度園林工具采購(gòu)合同2篇
- 2025年度住宅小區(qū)車位租賃與共享停車服務(wù)合同8篇
- 二零二四印刷品物流配送服務(wù)合同3篇
- 2025年度車輛維修保養(yǎng)服務(wù)合同標(biāo)準(zhǔn)版8篇
- 2025版木屋裝配式建筑構(gòu)件生產(chǎn)與安裝合同4篇
- 二零二四年度學(xué)校餐廳員工勞動(dòng)合同與員工休息及休假規(guī)定3篇
- 2025年度醫(yī)療健康項(xiàng)目投標(biāo)失敗風(fēng)險(xiǎn)控制與合同保障合同4篇
- 油氣行業(yè)人才需求預(yù)測(cè)-洞察分析
- 《數(shù)據(jù)采集技術(shù)》課件-Scrapy 框架的基本操作
- 2025年河北省單招語(yǔ)文模擬測(cè)試二(原卷版)
- 高一化學(xué)《活潑的金屬單質(zhì)-鈉》分層練習(xí)含答案解析
- 圖書館前臺(tái)接待工作總結(jié)
- 衛(wèi)生院藥品管理制度
- 理論力學(xué)智慧樹知到期末考試答案章節(jié)答案2024年中國(guó)石油大學(xué)(華東)
- 2024老年人靜脈血栓栓塞癥防治中國(guó)專家共識(shí)(完整版)
- 四年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 上海市12校2023-2024學(xué)年高考生物一模試卷含解析
- 儲(chǔ)能電站火災(zāi)應(yīng)急預(yù)案演練
評(píng)論
0/150
提交評(píng)論