版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
2.2圓的生成算法2.2.1基礎知識
給出圓心坐標(xc,yc)r,逐點畫出一個圓周的公式有下列兩種:⒈直角坐標法
(xxc)2+(yyc)2=r2由上式導出:
當xxc從r到r作加1遞增時,就可以求出對應的圓周點的y坐標。但是這樣求出的圓周上的點是不均勻的,xxc越大,對應生成圓周點之間的圓周距離也就越長。因此,所生成的圓不美觀。12.2圓的生成算法2.2.1基礎知識(續(xù))
⒉極坐標法
x=xc+r·cosθ,y=yc+r·sinθ
當θ從0到π作遞增時,由此式便可求出圓周上均勻分布的360個點的(x,y)坐標。利用圓周坐標的對稱性,此算法還可以簡化。將圓周分為8個象限(圖2.3),只要將第1a象限中的圓周光柵點求出,其余7部分圓周就可以通過對稱法則計算出來。
圖2.3圓心在(0,0)點圓周生成時的對稱變換22.2圓的生成算法2.2.2圓的Bresenham算法
設圓的半徑為r。先考慮圓心在(0,0),并從x=0、y=r開始的順時針方向的1/8圓周的生成過程。在這種情況下,x每步增加1,從x=0開始,到x=y結(jié)束。即有
xi+1=xi+1
yi+1=yi或者yi+1=yi1選擇的原則是考察精確值y是靠近yi還是靠近yi1(圖2.4),計算式為y2=r2(xi+1)2d1=yi2y2=yi2r2+(xi+1)2d2=y2(yi1)2=r2(xi+1)2(yi1)2圖2.4y的位置
32.2圓的生成算法令pi=d1d2,并代入d1、d2,則有
pi=2(xi+1)2+yi2+(yi1)22r2(2.6)pi稱為誤差。如果pi<0則yi+1=yi,否則yi+1=yi1。pi的遞歸式為
pi+1=pi+4xi
+6+2(yi2+1yi2)2(yi+1yi)(2.7)pi的初值由式(2.6)代入xi=0,yi=r而得
p1=32r(2.8)根據(jù)上面的推導,圓周生成算法思想如下:⒈求誤差初值,p1=32r,i=1,畫點(0,r);⒉求下一個光柵位置,其中xi+1=xi+1,如果pi<0則yi+1=yi,否則yi+1=yi1;⒊畫點(xi+1,yi+1);⒋計算下一個誤差,如果pi<0則pi+1=pi+4xi+6,否則pi+1=pi+4(xiyi)+10;⒌i=i+1,如果x=y則結(jié)束,否則返回步驟2。42.2圓的生成算法
圓的Bresenham算法的程序?qū)崿F(xiàn)如下:
circle(xc,yc,radius,c)intxc,yc,radius,c;{intx,y,p;x=0;y=radius;p=32*radius;
while(x<y){plot_circle_points(xc,yc,x,y,c);if(p<0)p=p+4*x+6;else{p=p+4*(xy)+10;y=1;}x+=1;}
52.2圓的生成算法if(x==y)plot_circle_points(xc,yc,x,y,c);}plot_circle_points(xc,yc,x,y,c)intxc,yc,x,y,c;{set_pixel(xc+x,yc+y,c);set_pixel(xcx,yc+y,c);set_pixel(xc+x,ycy,c);set_pixel(xcx,ycy,c);set_pixel(xc+y,yc+x,c);
set_pixel(xcy,yc+x,c);set_pixel(xc+y,ycx,c);set_pixel(xcy,ycx,c);}62.3區(qū)域填充算法2.3.1基礎知識
區(qū)域填充即給出一個區(qū)域的邊界,要求對邊界范圍內(nèi)的所有像素單元賦予指定的顏色代碼。區(qū)域填充中最常用的是多邊形填色。
多邊形的表示方法頂點表示點陣表示7圖2.5掃描線與多邊形相交
圖2.6光柵化后直線變成離散點
多邊形填色一個首要的問題,是判斷一個像素是在多邊形內(nèi)還是多邊形外。數(shù)學上提供的方法是“掃描交點的奇偶數(shù)判斷法”。(掃描線與邊界相交奇數(shù)次后進入該多邊形,相交偶數(shù)次后走出該多邊形。)
2.3區(qū)域填充算法2.3.1基礎知識(續(xù))
82.3區(qū)域填充算法填色算法分為兩大類:
⒈掃描線填色(Scan-LineFilling)算法。這類算法建立在多邊形邊界的矢量形式數(shù)據(jù)之上,可用于程序填色,也可用于交互填色。⒉種子填色(SeedFilling)算法。這類算法建立在多邊形邊界的圖像形式數(shù)據(jù)之上,并還需提供多邊形邊界內(nèi)一點的坐標。所以,它一般只能用于人機交互填色,而難以用于程序填色。92.3區(qū)域填充算法2.3.2掃描線填色算法
算法的基本思想:多邊形以n、x_array、y_array的形式給出,其中,x_array、y_array中存放著多邊形的n個頂點的x,y坐標。用水平掃描線從上到下掃描由點線段構(gòu)成的多段定義成的多邊形。每根掃描線與多邊形各邊產(chǎn)生一系列交點。這些交點按照x坐標進行分類,將分類后的交點成對取出,作為兩個端點,以所需要填的色彩畫水平直線。多邊形被掃描完畢后,填色也就完成。102.3區(qū)域填充算法2.3.2掃描線填色算法(續(xù))
需要解決或改進的問題:⒈左、右頂點處理。左頂點2:y1<y2<y3
右頂點2:y1>y2>y3其中y1、y2、y3是3個相鄰的頂點的y坐標。當掃描線與多邊形的每個頂點相交時,會同時產(chǎn)生2個交點。這時,填色就會因掃描交點的奇偶計數(shù)出錯而出現(xiàn)錯誤。圖2.7多邊形的頂點
對所有左、右頂點作如下處理:左、右頂點的入邊(以該頂點為終點的那條邊,即1–2邊)之終點刪去。對于左頂點,入邊端點(x1,y1)、(x2,y2)修改為(x1,y1)、(,y21);對于右頂點,入邊端點(x1,y1)、(x2,y2)修改為(x1,y1)、(,y2+1);112.3區(qū)域填充算法2.3.2掃描線填色算法(續(xù))
⒉
水平邊處理。水平邊(y1=y2)與水平掃描線重合無法求交點。因此,將水平邊畫出后刪去,不參加求交點及求交點以后的操作。
⒊掃描線與邊的求交點方法采用遞歸算法。以(x1,y1)、(x2,y2)為端點的邊與第i+1條掃描線的交點為此式表示交點不為(x1,y1)。否則,交點為(x1,y1)。⒋
減少求交計算量,采用活性邊表。對于一根掃描線而言,與之相交的邊只占多邊形全部邊的一部分,每根掃描線與多邊形所有邊求交的操作是一種浪費,需要加以改進。122.3區(qū)域填充算法
活性邊表(ActiveListofSide)的采用將多邊形的邊分成兩個子集:與當前掃描線相交的邊的集合,以及與當前掃描線不相交的邊的集合。對后者不必進行求交運算,這樣就提高了算法的效率。圖2.8活性邊表及其指針的表示
132.3區(qū)域填充算法在上述線性表上加入兩個指針first和last,形成活性邊表?;钚赃叡碇忻總€元素的內(nèi)容包括以下四項:邊的maxy值;與當前掃描線相交的點的x坐標值;邊的y方向當前總長y2-y1;邊的斜率的倒數(shù)1/m。活性邊表在每根掃描線掃描之后刷新。調(diào)整first和last指針之間的參加求交運算的邊元素的值;調(diào)整first和last指針,以便使新邊進入激活范圍?;钚赃叡順?gòu)成方法如下:將經(jīng)過左、右頂點處理并剔除水平邊后的多邊形各邊按照maxy值排序,存入一個線性表中。14程序結(jié)構(gòu)見課本32頁。掃描線填色算法優(yōu)、缺點:優(yōu)點:對于每個象素只訪問一次,輸入輸出的要求可降為最少;缺點:對于各種表的維持和排序的耗費大。掃描線(y=4):623057.540.5
ymaxxΔy1/m掃描線(y=3):322-25740.5
p3p4
p2p3012345678
7654321p1p2p3p4p5p4p5p2p315邊填充算法(區(qū)域掃描轉(zhuǎn)換算法)基本思想:對每條掃描線和多邊形邊的交點,將該掃描線上交點右方的所有像素取補。(對每條邊作處理的順序隨意)p1p2p3p4p5算法優(yōu)、缺點:優(yōu)點:簡單,適用于具有禎緩存的圖形系統(tǒng);缺點:每個象素可能被訪問多次,輸入輸出的量大。16柵欄填充算法對于每條掃描線與多邊形邊的交點,將交點與柵欄之間的像素取補。柵欄線優(yōu)點:減少了訪問次數(shù)172.3區(qū)域填充算法
種子填色又稱邊界填色(BoundaryFilling)。它的功能是,給出多邊形光柵化后的邊界位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物制品穩(wěn)定性試驗安全性指標監(jiān)測
- 深度解析(2026)《GBT 20564.11-2017汽車用高強度冷連軋鋼板及鋼帶 第11部分:碳錳鋼》
- Java開發(fā)工程師筆試題集含答案
- 生命早期1000天肥胖預防策略
- 生成式AI輔助的應急方案決策
- 實驗室技術(shù)員招聘面試題及高頻考點含答案
- 物流工程師面試題庫及操作技巧指南
- 深度解析(2026)《GBT 19360-2003工業(yè)用金屬穿孔板 技術(shù)要求和檢驗方法》
- 回訪專員面試題庫及答案解析
- 深度解析(2026)GBT 19187-2016合成生橡膠抽樣檢查程序
- 中華人民共和國特種設備安全法培訓課件
- 肥皂盒塑料模具設計說明書
- FANUC.PMC的編程培訓課件
- 五星級酒店燈光設計顧問合同
- 22 個專業(yè) 95 個病種中醫(yī)臨床路徑(合訂本)
- 醫(yī)學院大學--心臟損傷課件
- GB/T 25333-2010內(nèi)燃、電力機車標記
- IBM-I2詳細介紹課件
- 第八章-景觀生態(tài)學與生物多樣性保護-2課件
- 華南理工大學數(shù)字電子技術(shù)試卷(含答案)
- 國開旅游經(jīng)濟學第2章自測試題及答案
評論
0/150
提交評論